#pragma once

#include "Globals.h"
#include "../Defines.h"

namespace Block
{
	enum class Type
	{
		AcaciaButton,
		AcaciaDoor,
		AcaciaFence,
		AcaciaFenceGate,
		AcaciaLeaves,
		AcaciaLog,
		AcaciaPlanks,
		AcaciaPressurePlate,
		AcaciaSapling,
		AcaciaSign,
		AcaciaSlab,
		AcaciaStairs,
		AcaciaTrapdoor,
		AcaciaWallSign,
		AcaciaWood,
		ActivatorRail,
		Air,
		Allium,
		AncientDebris,
		Andesite,
		AndesiteSlab,
		AndesiteStairs,
		AndesiteWall,
		Anvil,
		AttachedMelonStem,
		AttachedPumpkinStem,
		AzureBluet,
		Bamboo,
		BambooSapling,
		Barrel,
		Barrier,
		Basalt,
		Beacon,
		Bedrock,
		BeeNest,
		Beehive,
		Beetroots,
		Bell,
		BirchButton,
		BirchDoor,
		BirchFence,
		BirchFenceGate,
		BirchLeaves,
		BirchLog,
		BirchPlanks,
		BirchPressurePlate,
		BirchSapling,
		BirchSign,
		BirchSlab,
		BirchStairs,
		BirchTrapdoor,
		BirchWallSign,
		BirchWood,
		BlackBanner,
		BlackBed,
		BlackCarpet,
		BlackConcrete,
		BlackConcretePowder,
		BlackGlazedTerracotta,
		BlackShulkerBox,
		BlackStainedGlass,
		BlackStainedGlassPane,
		BlackTerracotta,
		BlackWallBanner,
		BlackWool,
		Blackstone,
		BlackstoneSlab,
		BlackstoneStairs,
		BlackstoneWall,
		BlastFurnace,
		BlueBanner,
		BlueBed,
		BlueCarpet,
		BlueConcrete,
		BlueConcretePowder,
		BlueGlazedTerracotta,
		BlueIce,
		BlueOrchid,
		BlueShulkerBox,
		BlueStainedGlass,
		BlueStainedGlassPane,
		BlueTerracotta,
		BlueWallBanner,
		BlueWool,
		BoneBlock,
		Bookshelf,
		BrainCoral,
		BrainCoralBlock,
		BrainCoralFan,
		BrainCoralWallFan,
		BrewingStand,
		BrickSlab,
		BrickStairs,
		BrickWall,
		Bricks,
		BrownBanner,
		BrownBed,
		BrownCarpet,
		BrownConcrete,
		BrownConcretePowder,
		BrownGlazedTerracotta,
		BrownMushroom,
		BrownMushroomBlock,
		BrownShulkerBox,
		BrownStainedGlass,
		BrownStainedGlassPane,
		BrownTerracotta,
		BrownWallBanner,
		BrownWool,
		BubbleColumn,
		BubbleCoral,
		BubbleCoralBlock,
		BubbleCoralFan,
		BubbleCoralWallFan,
		Cactus,
		Cake,
		Campfire,
		Carrots,
		CartographyTable,
		CarvedPumpkin,
		Cauldron,
		CaveAir,
		Chain,
		ChainCommandBlock,
		Chest,
		ChippedAnvil,
		ChiseledNetherBricks,
		ChiseledPolishedBlackstone,
		ChiseledQuartzBlock,
		ChiseledRedSandstone,
		ChiseledSandstone,
		ChiseledStoneBricks,
		ChorusFlower,
		ChorusPlant,
		Clay,
		CoalBlock,
		CoalOre,
		CoarseDirt,
		Cobblestone,
		CobblestoneSlab,
		CobblestoneStairs,
		CobblestoneWall,
		Cobweb,
		Cocoa,
		CommandBlock,
		Comparator,
		Composter,
		Conduit,
		Cornflower,
		CrackedNetherBricks,
		CrackedPolishedBlackstoneBricks,
		CrackedStoneBricks,
		CraftingTable,
		CreeperHead,
		CreeperWallHead,
		CrimsonButton,
		CrimsonDoor,
		CrimsonFence,
		CrimsonFenceGate,
		CrimsonFungus,
		CrimsonHyphae,
		CrimsonNylium,
		CrimsonPlanks,
		CrimsonPressurePlate,
		CrimsonRoots,
		CrimsonSign,
		CrimsonSlab,
		CrimsonStairs,
		CrimsonStem,
		CrimsonTrapdoor,
		CrimsonWallSign,
		CryingObsidian,
		CutRedSandstone,
		CutRedSandstoneSlab,
		CutSandstone,
		CutSandstoneSlab,
		CyanBanner,
		CyanBed,
		CyanCarpet,
		CyanConcrete,
		CyanConcretePowder,
		CyanGlazedTerracotta,
		CyanShulkerBox,
		CyanStainedGlass,
		CyanStainedGlassPane,
		CyanTerracotta,
		CyanWallBanner,
		CyanWool,
		DamagedAnvil,
		Dandelion,
		DarkOakButton,
		DarkOakDoor,
		DarkOakFence,
		DarkOakFenceGate,
		DarkOakLeaves,
		DarkOakLog,
		DarkOakPlanks,
		DarkOakPressurePlate,
		DarkOakSapling,
		DarkOakSign,
		DarkOakSlab,
		DarkOakStairs,
		DarkOakTrapdoor,
		DarkOakWallSign,
		DarkOakWood,
		DarkPrismarine,
		DarkPrismarineSlab,
		DarkPrismarineStairs,
		DaylightDetector,
		DeadBrainCoral,
		DeadBrainCoralBlock,
		DeadBrainCoralFan,
		DeadBrainCoralWallFan,
		DeadBubbleCoral,
		DeadBubbleCoralBlock,
		DeadBubbleCoralFan,
		DeadBubbleCoralWallFan,
		DeadBush,
		DeadFireCoral,
		DeadFireCoralBlock,
		DeadFireCoralFan,
		DeadFireCoralWallFan,
		DeadHornCoral,
		DeadHornCoralBlock,
		DeadHornCoralFan,
		DeadHornCoralWallFan,
		DeadTubeCoral,
		DeadTubeCoralBlock,
		DeadTubeCoralFan,
		DeadTubeCoralWallFan,
		DetectorRail,
		DiamondBlock,
		DiamondOre,
		Diorite,
		DioriteSlab,
		DioriteStairs,
		DioriteWall,
		Dirt,
		Dispenser,
		DragonEgg,
		DragonHead,
		DragonWallHead,
		DriedKelpBlock,
		Dropper,
		EmeraldBlock,
		EmeraldOre,
		EnchantingTable,
		EndGateway,
		EndPortal,
		EndPortalFrame,
		EndRod,
		EndStone,
		EndStoneBrickSlab,
		EndStoneBrickStairs,
		EndStoneBrickWall,
		EndStoneBricks,
		EnderChest,
		Farmland,
		Fern,
		Fire,
		FireCoral,
		FireCoralBlock,
		FireCoralFan,
		FireCoralWallFan,
		FletchingTable,
		FlowerPot,
		FrostedIce,
		Furnace,
		GildedBlackstone,
		Glass,
		GlassPane,
		Glowstone,
		GoldBlock,
		GoldOre,
		Granite,
		GraniteSlab,
		GraniteStairs,
		GraniteWall,
		Grass,
		GrassBlock,
		GrassPath,
		Gravel,
		GrayBanner,
		GrayBed,
		GrayCarpet,
		GrayConcrete,
		GrayConcretePowder,
		GrayGlazedTerracotta,
		GrayShulkerBox,
		GrayStainedGlass,
		GrayStainedGlassPane,
		GrayTerracotta,
		GrayWallBanner,
		GrayWool,
		GreenBanner,
		GreenBed,
		GreenCarpet,
		GreenConcrete,
		GreenConcretePowder,
		GreenGlazedTerracotta,
		GreenShulkerBox,
		GreenStainedGlass,
		GreenStainedGlassPane,
		GreenTerracotta,
		GreenWallBanner,
		GreenWool,
		Grindstone,
		HayBale,
		HeavyWeightedPressurePlate,
		HoneyBlock,
		HoneycombBlock,
		Hopper,
		HornCoral,
		HornCoralBlock,
		HornCoralFan,
		HornCoralWallFan,
		Ice,
		InfestedChiseledStoneBricks,
		InfestedCobblestone,
		InfestedCrackedStoneBricks,
		InfestedMossyStoneBricks,
		InfestedStone,
		InfestedStoneBricks,
		IronBars,
		IronBlock,
		IronDoor,
		IronOre,
		IronTrapdoor,
		JackOLantern,
		Jigsaw,
		Jukebox,
		JungleButton,
		JungleDoor,
		JungleFence,
		JungleFenceGate,
		JungleLeaves,
		JungleLog,
		JunglePlanks,
		JunglePressurePlate,
		JungleSapling,
		JungleSign,
		JungleSlab,
		JungleStairs,
		JungleTrapdoor,
		JungleWallSign,
		JungleWood,
		Kelp,
		KelpPlant,
		Ladder,
		Lantern,
		LapisBlock,
		LapisOre,
		LargeFern,
		Lava,
		Lectern,
		Lever,
		LightBlueBanner,
		LightBlueBed,
		LightBlueCarpet,
		LightBlueConcrete,
		LightBlueConcretePowder,
		LightBlueGlazedTerracotta,
		LightBlueShulkerBox,
		LightBlueStainedGlass,
		LightBlueStainedGlassPane,
		LightBlueTerracotta,
		LightBlueWallBanner,
		LightBlueWool,
		LightGrayBanner,
		LightGrayBed,
		LightGrayCarpet,
		LightGrayConcrete,
		LightGrayConcretePowder,
		LightGrayGlazedTerracotta,
		LightGrayShulkerBox,
		LightGrayStainedGlass,
		LightGrayStainedGlassPane,
		LightGrayTerracotta,
		LightGrayWallBanner,
		LightGrayWool,
		LightWeightedPressurePlate,
		Lilac,
		LilyOfTheValley,
		LilyPad,
		LimeBanner,
		LimeBed,
		LimeCarpet,
		LimeConcrete,
		LimeConcretePowder,
		LimeGlazedTerracotta,
		LimeShulkerBox,
		LimeStainedGlass,
		LimeStainedGlassPane,
		LimeTerracotta,
		LimeWallBanner,
		LimeWool,
		Lodestone,
		Loom,
		MagentaBanner,
		MagentaBed,
		MagentaCarpet,
		MagentaConcrete,
		MagentaConcretePowder,
		MagentaGlazedTerracotta,
		MagentaShulkerBox,
		MagentaStainedGlass,
		MagentaStainedGlassPane,
		MagentaTerracotta,
		MagentaWallBanner,
		MagentaWool,
		MagmaBlock,
		Melon,
		MelonStem,
		MossyCobblestone,
		MossyCobblestoneSlab,
		MossyCobblestoneStairs,
		MossyCobblestoneWall,
		MossyStoneBrickSlab,
		MossyStoneBrickStairs,
		MossyStoneBrickWall,
		MossyStoneBricks,
		MovingPiston,
		MushroomStem,
		Mycelium,
		NetherBrickFence,
		NetherBrickSlab,
		NetherBrickStairs,
		NetherBrickWall,
		NetherBricks,
		NetherGoldOre,
		NetherPortal,
		NetherQuartzOre,
		NetherSprouts,
		NetherWart,
		NetherWartBlock,
		NetheriteBlock,
		Netherrack,
		NoteBlock,
		OakButton,
		OakDoor,
		OakFence,
		OakFenceGate,
		OakLeaves,
		OakLog,
		OakPlanks,
		OakPressurePlate,
		OakSapling,
		OakSign,
		OakSlab,
		OakStairs,
		OakTrapdoor,
		OakWallSign,
		OakWood,
		Observer,
		Obsidian,
		OrangeBanner,
		OrangeBed,
		OrangeCarpet,
		OrangeConcrete,
		OrangeConcretePowder,
		OrangeGlazedTerracotta,
		OrangeShulkerBox,
		OrangeStainedGlass,
		OrangeStainedGlassPane,
		OrangeTerracotta,
		OrangeTulip,
		OrangeWallBanner,
		OrangeWool,
		OxeyeDaisy,
		PackedIce,
		Peony,
		PetrifiedOakSlab,
		PinkBanner,
		PinkBed,
		PinkCarpet,
		PinkConcrete,
		PinkConcretePowder,
		PinkGlazedTerracotta,
		PinkShulkerBox,
		PinkStainedGlass,
		PinkStainedGlassPane,
		PinkTerracotta,
		PinkTulip,
		PinkWallBanner,
		PinkWool,
		Piston,
		PistonHead,
		PlayerHead,
		PlayerWallHead,
		Podzol,
		PolishedAndesite,
		PolishedAndesiteSlab,
		PolishedAndesiteStairs,
		PolishedBasalt,
		PolishedBlackstone,
		PolishedBlackstoneBrickSlab,
		PolishedBlackstoneBrickStairs,
		PolishedBlackstoneBrickWall,
		PolishedBlackstoneBricks,
		PolishedBlackstoneButton,
		PolishedBlackstonePressurePlate,
		PolishedBlackstoneSlab,
		PolishedBlackstoneStairs,
		PolishedBlackstoneWall,
		PolishedDiorite,
		PolishedDioriteSlab,
		PolishedDioriteStairs,
		PolishedGranite,
		PolishedGraniteSlab,
		PolishedGraniteStairs,
		Poppy,
		Potatoes,
		PottedAcaciaSapling,
		PottedAllium,
		PottedAzureBluet,
		PottedBamboo,
		PottedBirchSapling,
		PottedBlueOrchid,
		PottedBrownMushroom,
		PottedCactus,
		PottedCornflower,
		PottedCrimsonFungus,
		PottedCrimsonRoots,
		PottedDandelion,
		PottedDarkOakSapling,
		PottedDeadBush,
		PottedFern,
		PottedJungleSapling,
		PottedLilyOfTheValley,
		PottedOakSapling,
		PottedOrangeTulip,
		PottedOxeyeDaisy,
		PottedPinkTulip,
		PottedPoppy,
		PottedRedMushroom,
		PottedRedTulip,
		PottedSpruceSapling,
		PottedWarpedFungus,
		PottedWarpedRoots,
		PottedWhiteTulip,
		PottedWitherRose,
		PoweredRail,
		Prismarine,
		PrismarineBrickSlab,
		PrismarineBrickStairs,
		PrismarineBricks,
		PrismarineSlab,
		PrismarineStairs,
		PrismarineWall,
		Pumpkin,
		PumpkinStem,
		PurpleBanner,
		PurpleBed,
		PurpleCarpet,
		PurpleConcrete,
		PurpleConcretePowder,
		PurpleGlazedTerracotta,
		PurpleShulkerBox,
		PurpleStainedGlass,
		PurpleStainedGlassPane,
		PurpleTerracotta,
		PurpleWallBanner,
		PurpleWool,
		PurpurBlock,
		PurpurPillar,
		PurpurSlab,
		PurpurStairs,
		QuartzBlock,
		QuartzBricks,
		QuartzPillar,
		QuartzSlab,
		QuartzStairs,
		Rail,
		RedBanner,
		RedBed,
		RedCarpet,
		RedConcrete,
		RedConcretePowder,
		RedGlazedTerracotta,
		RedMushroom,
		RedMushroomBlock,
		RedNetherBrickSlab,
		RedNetherBrickStairs,
		RedNetherBrickWall,
		RedNetherBricks,
		RedSand,
		RedSandstone,
		RedSandstoneSlab,
		RedSandstoneStairs,
		RedSandstoneWall,
		RedShulkerBox,
		RedStainedGlass,
		RedStainedGlassPane,
		RedTerracotta,
		RedTulip,
		RedWallBanner,
		RedWool,
		RedstoneBlock,
		RedstoneLamp,
		RedstoneOre,
		RedstoneTorch,
		RedstoneWallTorch,
		RedstoneWire,
		Repeater,
		RepeatingCommandBlock,
		RespawnAnchor,
		RoseBush,
		Sand,
		Sandstone,
		SandstoneSlab,
		SandstoneStairs,
		SandstoneWall,
		Scaffolding,
		SeaLantern,
		SeaPickle,
		Seagrass,
		Shroomlight,
		ShulkerBox,
		SkeletonSkull,
		SkeletonWallSkull,
		SlimeBlock,
		SmithingTable,
		Smoker,
		SmoothQuartz,
		SmoothQuartzSlab,
		SmoothQuartzStairs,
		SmoothRedSandstone,
		SmoothRedSandstoneSlab,
		SmoothRedSandstoneStairs,
		SmoothSandstone,
		SmoothSandstoneSlab,
		SmoothSandstoneStairs,
		SmoothStone,
		SmoothStoneSlab,
		Snow,
		SnowBlock,
		SoulCampfire,
		SoulFire,
		SoulLantern,
		SoulSand,
		SoulSoil,
		SoulTorch,
		SoulWallTorch,
		Spawner,
		Sponge,
		SpruceButton,
		SpruceDoor,
		SpruceFence,
		SpruceFenceGate,
		SpruceLeaves,
		SpruceLog,
		SprucePlanks,
		SprucePressurePlate,
		SpruceSapling,
		SpruceSign,
		SpruceSlab,
		SpruceStairs,
		SpruceTrapdoor,
		SpruceWallSign,
		SpruceWood,
		StickyPiston,
		Stone,
		StoneBrickSlab,
		StoneBrickStairs,
		StoneBrickWall,
		StoneBricks,
		StoneButton,
		StonePressurePlate,
		StoneSlab,
		StoneStairs,
		Stonecutter,
		StrippedAcaciaLog,
		StrippedAcaciaWood,
		StrippedBirchLog,
		StrippedBirchWood,
		StrippedCrimsonHyphae,
		StrippedCrimsonStem,
		StrippedDarkOakLog,
		StrippedDarkOakWood,
		StrippedJungleLog,
		StrippedJungleWood,
		StrippedOakLog,
		StrippedOakWood,
		StrippedSpruceLog,
		StrippedSpruceWood,
		StrippedWarpedHyphae,
		StrippedWarpedStem,
		StructureBlock,
		StructureVoid,
		SugarCane,
		Sunflower,
		SweetBerryBush,
		TNT,
		TallGrass,
		TallSeagrass,
		Target,
		Terracotta,
		Torch,
		TrappedChest,
		Tripwire,
		TripwireHook,
		TubeCoral,
		TubeCoralBlock,
		TubeCoralFan,
		TubeCoralWallFan,
		TurtleEgg,
		TwistingVines,
		TwistingVinesPlant,
		Vine,
		VoidAir,
		WallTorch,
		WarpedButton,
		WarpedDoor,
		WarpedFence,
		WarpedFenceGate,
		WarpedFungus,
		WarpedHyphae,
		WarpedNylium,
		WarpedPlanks,
		WarpedPressurePlate,
		WarpedRoots,
		WarpedSign,
		WarpedSlab,
		WarpedStairs,
		WarpedStem,
		WarpedTrapdoor,
		WarpedWallSign,
		WarpedWartBlock,
		Water,
		WeepingVines,
		WeepingVinesPlant,
		WetSponge,
		Wheat,
		WhiteBanner,
		WhiteBed,
		WhiteCarpet,
		WhiteConcrete,
		WhiteConcretePowder,
		WhiteGlazedTerracotta,
		WhiteShulkerBox,
		WhiteStainedGlass,
		WhiteStainedGlassPane,
		WhiteTerracotta,
		WhiteTulip,
		WhiteWallBanner,
		WhiteWool,
		WitherRose,
		WitherSkeletonSkull,
		WitherSkeletonWallSkull,
		YellowBanner,
		YellowBed,
		YellowCarpet,
		YellowConcrete,
		YellowConcretePowder,
		YellowGlazedTerracotta,
		YellowShulkerBox,
		YellowStainedGlass,
		YellowStainedGlassPane,
		YellowTerracotta,
		YellowWallBanner,
		YellowWool,
		ZombieHead,
		ZombieWallHead
	};
	enum Type Type(short ID);
	bool Is(short ID, enum Type Type);
	namespace AcaciaButton
	{
		enum class Face
		{
			Floor,
			Wall,
			Ceiling
		};
		constexpr short AcaciaButton(enum Face Face, eBlockFace Facing, bool Powered)
		{
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6442;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6443;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6444;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6445;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6446;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6447;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6448;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 6449;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6450;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6451;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6452;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6453;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6454;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6455;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6456;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 6457;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6458;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6459;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6460;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6461;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6462;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6463;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6464;
			return 6465;
		}
		short AcaciaButton();
		enum Face Face(short ID);
		eBlockFace Facing(short ID);
		bool Powered(short ID);
	}
	namespace AcaciaDoor
	{
		enum class Half
		{
			Upper,
			Lower
		};
		enum class Hinge
		{
			Left,
			Right
		};
		constexpr short AcaciaDoor(eBlockFace Facing, enum Half Half, enum Hinge Hinge, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8930;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8931;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8932;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8933;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8934;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8935;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 8936;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 8937;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 8938;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 8939;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 8940;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 8941;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 8942;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 8943;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 8944;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 8945;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8946;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8947;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8948;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8949;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8950;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8951;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 8952;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 8953;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 8954;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 8955;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 8956;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 8957;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 8958;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 8959;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 8960;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 8961;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8962;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8963;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8964;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8965;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8966;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8967;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 8968;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 8969;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 8970;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 8971;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 8972;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 8973;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 8974;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 8975;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 8976;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 8977;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8978;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8979;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8980;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8981;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8982;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8983;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 8984;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 8985;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 8986;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 8987;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 8988;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 8989;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 8990;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 8991;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 8992;
			return 8993;
		}
		short AcaciaDoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Hinge Hinge(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace AcaciaFence
	{
		constexpr short AcaciaFence(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 8676;
			if (East && North && South && !West) return 8677;
			if (East && North && !South && West) return 8680;
			if (East && North && !South && !West) return 8681;
			if (East && !North && South && West) return 8684;
			if (East && !North && South && !West) return 8685;
			if (East && !North && !South && West) return 8688;
			if (East && !North && !South && !West) return 8689;
			if (!East && North && South && West) return 8692;
			if (!East && North && South && !West) return 8693;
			if (!East && North && !South && West) return 8696;
			if (!East && North && !South && !West) return 8697;
			if (!East && !North && South && West) return 8700;
			if (!East && !North && South && !West) return 8701;
			if (!East && !North && !South && West) return 8704;
			return 8705;
		}
		short AcaciaFence();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace AcaciaFenceGate
	{
		constexpr short AcaciaFenceGate(eBlockFace Facing, bool InWall, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && Open && Powered) return 8514;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && Open && !Powered) return 8515;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && !Open && Powered) return 8516;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && !Open && !Powered) return 8517;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && Open && Powered) return 8518;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && Open && !Powered) return 8519;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && !Open && Powered) return 8520;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && !Open && !Powered) return 8521;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && Open && Powered) return 8522;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && Open && !Powered) return 8523;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && !Open && Powered) return 8524;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && !Open && !Powered) return 8525;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && Open && Powered) return 8526;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && Open && !Powered) return 8527;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && !Open && Powered) return 8528;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && !Open && !Powered) return 8529;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && Open && Powered) return 8530;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && Open && !Powered) return 8531;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && !Open && Powered) return 8532;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && !Open && !Powered) return 8533;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && Open && Powered) return 8534;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && Open && !Powered) return 8535;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && !Open && Powered) return 8536;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && !Open && !Powered) return 8537;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && Open && Powered) return 8538;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && Open && !Powered) return 8539;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && !Open && Powered) return 8540;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && !Open && !Powered) return 8541;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && Open && Powered) return 8542;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && Open && !Powered) return 8543;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && !Open && Powered) return 8544;
			return 8545;
		}
		short AcaciaFenceGate();
		eBlockFace Facing(short ID);
		bool InWall(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace AcaciaLeaves
	{
		constexpr short AcaciaLeaves(unsigned char Distance, bool Persistent)
		{
			if (Distance == 1 && Persistent) return 201;
			if (Distance == 1 && !Persistent) return 202;
			if (Distance == 2 && Persistent) return 203;
			if (Distance == 2 && !Persistent) return 204;
			if (Distance == 3 && Persistent) return 205;
			if (Distance == 3 && !Persistent) return 206;
			if (Distance == 4 && Persistent) return 207;
			if (Distance == 4 && !Persistent) return 208;
			if (Distance == 5 && Persistent) return 209;
			if (Distance == 5 && !Persistent) return 210;
			if (Distance == 6 && Persistent) return 211;
			if (Distance == 6 && !Persistent) return 212;
			if (Distance == 7 && Persistent) return 213;
			return 214;
		}
		short AcaciaLeaves();
		unsigned char Distance(short ID);
		bool Persistent(short ID);
	}
	namespace AcaciaLog
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short AcaciaLog(enum Axis Axis)
		{
			if (Axis == Axis::X) return 85;
			if (Axis == Axis::Y) return 86;
			return 87;
		}
		short AcaciaLog();
		enum Axis Axis(short ID);
	}
	namespace AcaciaPlanks
	{
		constexpr short AcaciaPlanks()
		{
			return 19;
		}
	}
	namespace AcaciaPressurePlate
	{
		constexpr short AcaciaPressurePlate(bool Powered)
		{
			if (Powered) return 3881;
			return 3882;
		}
		short AcaciaPressurePlate();
		bool Powered(short ID);
	}
	namespace AcaciaSapling
	{
		constexpr short AcaciaSapling(unsigned char Stage)
		{
			if (Stage == 0) return 29;
			return 30;
		}
		short AcaciaSapling();
		unsigned char Stage(short ID);
	}
	namespace AcaciaSign
	{
		constexpr short AcaciaSign(unsigned char Rotation)
		{
			if (Rotation == 0) return 3478;
			if (Rotation == 1) return 3480;
			if (Rotation == 2) return 3482;
			if (Rotation == 3) return 3484;
			if (Rotation == 4) return 3486;
			if (Rotation == 5) return 3488;
			if (Rotation == 6) return 3490;
			if (Rotation == 7) return 3492;
			if (Rotation == 8) return 3494;
			if (Rotation == 9) return 3496;
			if (Rotation == 10) return 3498;
			if (Rotation == 11) return 3500;
			if (Rotation == 12) return 3502;
			if (Rotation == 13) return 3504;
			if (Rotation == 14) return 3506;
			return 3508;
		}
		short AcaciaSign();
		unsigned char Rotation(short ID);
	}
	namespace AcaciaSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short AcaciaSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8325;
			if (Type == Type::Bottom) return 8327;
			return 8329;
		}
		short AcaciaSlab();
		enum Type Type(short ID);
	}
	namespace AcaciaStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short AcaciaStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 7376;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 7378;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 7380;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 7382;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 7384;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 7386;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7388;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 7390;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7392;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 7394;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 7396;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 7398;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 7400;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 7402;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 7404;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 7406;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7408;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 7410;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7412;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 7414;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 7416;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 7418;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 7420;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 7422;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 7424;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 7426;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7428;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 7430;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7432;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 7434;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 7436;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 7438;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 7440;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 7442;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 7444;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 7446;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7448;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 7450;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7452;
			return 7454;
		}
		short AcaciaStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace AcaciaTrapdoor
	{
		enum class Half
		{
			Top,
			Bottom
		};
		constexpr short AcaciaTrapdoor(eBlockFace Facing, enum Half Half, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && Powered) return 4368;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && !Powered) return 4370;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && Powered) return 4372;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && !Powered) return 4374;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && Powered) return 4376;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && !Powered) return 4378;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && Powered) return 4380;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && !Powered) return 4382;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && Powered) return 4384;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && !Powered) return 4386;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && Powered) return 4388;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && !Powered) return 4390;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && Powered) return 4392;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && !Powered) return 4394;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && Powered) return 4396;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && !Powered) return 4398;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && Powered) return 4400;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && !Powered) return 4402;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && Powered) return 4404;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && !Powered) return 4406;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && Powered) return 4408;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && !Powered) return 4410;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && Powered) return 4412;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && !Powered) return 4414;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && Powered) return 4416;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && !Powered) return 4418;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && Powered) return 4420;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && !Powered) return 4422;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && Powered) return 4424;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && !Powered) return 4426;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && !Open && Powered) return 4428;
			return 4430;
		}
		short AcaciaTrapdoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace AcaciaWallSign
	{
		constexpr short AcaciaWallSign(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 3760;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 3762;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 3764;
			return 3766;
		}
		short AcaciaWallSign();
		eBlockFace Facing(short ID);
	}
	namespace AcaciaWood
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short AcaciaWood(enum Axis Axis)
		{
			if (Axis == Axis::X) return 121;
			if (Axis == Axis::Y) return 122;
			return 123;
		}
		short AcaciaWood();
		enum Axis Axis(short ID);
	}
	namespace ActivatorRail
	{
		enum class Shape
		{
			NorthSouth,
			EastWest,
			AscendingEast,
			AscendingWest,
			AscendingNorth,
			AscendingSouth
		};
		constexpr short ActivatorRail(bool Powered, enum Shape Shape)
		{
			if (Powered && Shape == Shape::NorthSouth) return 6823;
			if (Powered && Shape == Shape::EastWest) return 6824;
			if (Powered && Shape == Shape::AscendingEast) return 6825;
			if (Powered && Shape == Shape::AscendingWest) return 6826;
			if (Powered && Shape == Shape::AscendingNorth) return 6827;
			if (Powered && Shape == Shape::AscendingSouth) return 6828;
			if (!Powered && Shape == Shape::NorthSouth) return 6829;
			if (!Powered && Shape == Shape::EastWest) return 6830;
			if (!Powered && Shape == Shape::AscendingEast) return 6831;
			if (!Powered && Shape == Shape::AscendingWest) return 6832;
			if (!Powered && Shape == Shape::AscendingNorth) return 6833;
			return 6834;
		}
		short ActivatorRail();
		bool Powered(short ID);
		enum Shape Shape(short ID);
	}
	namespace Air
	{
		constexpr short Air()
		{
			return -0;
		}
	}
	namespace Allium
	{
		constexpr short Allium()
		{
			return 1415;
		}
	}
	namespace AncientDebris
	{
		constexpr short AncientDebris()
		{
			return 15827;
		}
	}
	namespace Andesite
	{
		constexpr short Andesite()
		{
			return 6;
		}
	}
	namespace AndesiteSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short AndesiteSlab(enum Type Type)
		{
			if (Type == Type::Top) return 10844;
			if (Type == Type::Bottom) return 10846;
			return 10848;
		}
		short AndesiteSlab();
		enum Type Type(short ID);
	}
	namespace AndesiteStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short AndesiteStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 10470;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 10472;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 10474;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 10476;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 10478;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 10480;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10482;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10484;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10486;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10488;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 10490;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 10492;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 10494;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 10496;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 10498;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 10500;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10502;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10504;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10506;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 10508;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 10510;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 10512;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 10514;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 10516;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 10518;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 10520;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10522;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10524;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10526;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10528;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 10530;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 10532;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 10534;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 10536;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 10538;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 10540;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10542;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10544;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10546;
			return 10548;
		}
		short AndesiteStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace AndesiteWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short AndesiteWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 13138;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 13139;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 13140;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 13144;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 13145;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 13146;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 13150;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 13151;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 13152;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 13156;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 13157;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 13158;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 13162;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 13163;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 13164;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 13168;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 13169;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 13170;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 13174;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 13175;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 13176;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 13180;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 13181;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 13182;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 13186;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 13187;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 13188;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 13192;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 13193;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 13194;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 13198;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 13199;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 13200;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 13204;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 13205;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 13206;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 13210;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 13211;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 13212;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 13216;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 13217;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 13218;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 13222;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 13223;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 13224;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 13228;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 13229;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 13230;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 13234;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 13235;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 13236;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 13240;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 13241;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 13242;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 13246;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 13247;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 13248;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 13252;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 13253;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 13254;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 13258;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 13259;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 13260;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 13264;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 13265;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 13266;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 13270;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 13271;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 13272;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 13276;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 13277;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 13278;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 13282;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 13283;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 13284;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 13288;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 13289;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 13290;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 13294;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 13295;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 13296;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 13300;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 13301;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 13302;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 13306;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 13307;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 13308;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 13312;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 13313;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 13314;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 13318;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 13319;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 13320;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 13324;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 13325;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 13326;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 13330;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 13331;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 13332;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 13336;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 13337;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 13338;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 13342;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 13343;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 13344;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 13348;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 13349;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 13350;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 13354;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 13355;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 13356;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 13360;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 13361;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 13362;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 13366;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 13367;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 13368;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 13372;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 13373;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 13374;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 13378;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 13379;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 13380;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 13384;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 13385;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 13386;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 13390;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 13391;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 13392;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 13396;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 13397;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 13398;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 13402;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 13403;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 13404;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 13408;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 13409;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 13410;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 13414;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 13415;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 13416;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 13420;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 13421;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 13422;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 13426;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 13427;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 13428;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 13432;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 13433;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 13434;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 13438;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 13439;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 13440;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 13444;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 13445;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 13446;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 13450;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 13451;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 13452;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 13456;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 13457;
			return 13458;
		}
		short AndesiteWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace Anvil
	{
		constexpr short Anvil(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 6610;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 6611;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 6612;
			return 6613;
		}
		short Anvil();
		eBlockFace Facing(short ID);
	}
	namespace AttachedMelonStem
	{
		constexpr short AttachedMelonStem(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 4768;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 4769;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 4770;
			return 4771;
		}
		short AttachedMelonStem();
		eBlockFace Facing(short ID);
	}
	namespace AttachedPumpkinStem
	{
		constexpr short AttachedPumpkinStem(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 4764;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 4765;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 4766;
			return 4767;
		}
		short AttachedPumpkinStem();
		eBlockFace Facing(short ID);
	}
	namespace AzureBluet
	{
		constexpr short AzureBluet()
		{
			return 1416;
		}
	}
	namespace Bamboo
	{
		enum class Leaves
		{
			None,
			Small,
			Large
		};
		constexpr short Bamboo(unsigned char Age, enum Leaves Leaves, unsigned char Stage)
		{
			if (Age == 0 && Leaves == Leaves::None && Stage == 0) return 9652;
			if (Age == 0 && Leaves == Leaves::None && Stage == 1) return 9653;
			if (Age == 0 && Leaves == Leaves::Small && Stage == 0) return 9654;
			if (Age == 0 && Leaves == Leaves::Small && Stage == 1) return 9655;
			if (Age == 0 && Leaves == Leaves::Large && Stage == 0) return 9656;
			if (Age == 0 && Leaves == Leaves::Large && Stage == 1) return 9657;
			if (Age == 1 && Leaves == Leaves::None && Stage == 0) return 9658;
			if (Age == 1 && Leaves == Leaves::None && Stage == 1) return 9659;
			if (Age == 1 && Leaves == Leaves::Small && Stage == 0) return 9660;
			if (Age == 1 && Leaves == Leaves::Small && Stage == 1) return 9661;
			if (Age == 1 && Leaves == Leaves::Large && Stage == 0) return 9662;
			return 9663;
		}
		short Bamboo();
		unsigned char Age(short ID);
		enum Leaves Leaves(short ID);
		unsigned char Stage(short ID);
	}
	namespace BambooSapling
	{
		constexpr short BambooSapling()
		{
			return 9651;
		}
	}
	namespace Barrel
	{
		constexpr short Barrel(eBlockFace Facing, bool Open)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Open) return 14791;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Open) return 14792;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Open) return 14793;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Open) return 14794;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Open) return 14795;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Open) return 14796;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Open) return 14797;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Open) return 14798;
			if (Facing == eBlockFace::BLOCK_FACE_YP && Open) return 14799;
			if (Facing == eBlockFace::BLOCK_FACE_YP && !Open) return 14800;
			if (Facing == eBlockFace::BLOCK_FACE_YM && Open) return 14801;
			return 14802;
		}
		short Barrel();
		eBlockFace Facing(short ID);
		bool Open(short ID);
	}
	namespace Barrier
	{
		constexpr short Barrier()
		{
			return 7536;
		}
	}
	namespace Basalt
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short Basalt(enum Axis Axis)
		{
			if (Axis == Axis::X) return 4002;
			if (Axis == Axis::Y) return 4003;
			return 4004;
		}
		short Basalt();
		enum Axis Axis(short ID);
	}
	namespace Beacon
	{
		constexpr short Beacon()
		{
			return 5656;
		}
	}
	namespace Bedrock
	{
		constexpr short Bedrock()
		{
			return 33;
		}
	}
	namespace BeeNest
	{
		constexpr short BeeNest(eBlockFace Facing, unsigned char HoneyLevel)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && HoneyLevel == 0) return 15776;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && HoneyLevel == 1) return 15777;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && HoneyLevel == 2) return 15778;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && HoneyLevel == 3) return 15779;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && HoneyLevel == 4) return 15780;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && HoneyLevel == 5) return 15781;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && HoneyLevel == 0) return 15782;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && HoneyLevel == 1) return 15783;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && HoneyLevel == 2) return 15784;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && HoneyLevel == 3) return 15785;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && HoneyLevel == 4) return 15786;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && HoneyLevel == 5) return 15787;
			if (Facing == eBlockFace::BLOCK_FACE_XM && HoneyLevel == 0) return 15788;
			if (Facing == eBlockFace::BLOCK_FACE_XM && HoneyLevel == 1) return 15789;
			if (Facing == eBlockFace::BLOCK_FACE_XM && HoneyLevel == 2) return 15790;
			if (Facing == eBlockFace::BLOCK_FACE_XM && HoneyLevel == 3) return 15791;
			if (Facing == eBlockFace::BLOCK_FACE_XM && HoneyLevel == 4) return 15792;
			if (Facing == eBlockFace::BLOCK_FACE_XM && HoneyLevel == 5) return 15793;
			if (Facing == eBlockFace::BLOCK_FACE_XP && HoneyLevel == 0) return 15794;
			if (Facing == eBlockFace::BLOCK_FACE_XP && HoneyLevel == 1) return 15795;
			if (Facing == eBlockFace::BLOCK_FACE_XP && HoneyLevel == 2) return 15796;
			if (Facing == eBlockFace::BLOCK_FACE_XP && HoneyLevel == 3) return 15797;
			if (Facing == eBlockFace::BLOCK_FACE_XP && HoneyLevel == 4) return 15798;
			return 15799;
		}
		short BeeNest();
		eBlockFace Facing(short ID);
		unsigned char HoneyLevel(short ID);
	}
	namespace Beehive
	{
		constexpr short Beehive(eBlockFace Facing, unsigned char HoneyLevel)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && HoneyLevel == 0) return 15800;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && HoneyLevel == 1) return 15801;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && HoneyLevel == 2) return 15802;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && HoneyLevel == 3) return 15803;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && HoneyLevel == 4) return 15804;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && HoneyLevel == 5) return 15805;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && HoneyLevel == 0) return 15806;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && HoneyLevel == 1) return 15807;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && HoneyLevel == 2) return 15808;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && HoneyLevel == 3) return 15809;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && HoneyLevel == 4) return 15810;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && HoneyLevel == 5) return 15811;
			if (Facing == eBlockFace::BLOCK_FACE_XM && HoneyLevel == 0) return 15812;
			if (Facing == eBlockFace::BLOCK_FACE_XM && HoneyLevel == 1) return 15813;
			if (Facing == eBlockFace::BLOCK_FACE_XM && HoneyLevel == 2) return 15814;
			if (Facing == eBlockFace::BLOCK_FACE_XM && HoneyLevel == 3) return 15815;
			if (Facing == eBlockFace::BLOCK_FACE_XM && HoneyLevel == 4) return 15816;
			if (Facing == eBlockFace::BLOCK_FACE_XM && HoneyLevel == 5) return 15817;
			if (Facing == eBlockFace::BLOCK_FACE_XP && HoneyLevel == 0) return 15818;
			if (Facing == eBlockFace::BLOCK_FACE_XP && HoneyLevel == 1) return 15819;
			if (Facing == eBlockFace::BLOCK_FACE_XP && HoneyLevel == 2) return 15820;
			if (Facing == eBlockFace::BLOCK_FACE_XP && HoneyLevel == 3) return 15821;
			if (Facing == eBlockFace::BLOCK_FACE_XP && HoneyLevel == 4) return 15822;
			return 15823;
		}
		short Beehive();
		eBlockFace Facing(short ID);
		unsigned char HoneyLevel(short ID);
	}
	namespace Beetroots
	{
		constexpr short Beetroots(unsigned char Age)
		{
			if (Age == 0) return 9219;
			if (Age == 1) return 9220;
			if (Age == 2) return 9221;
			return 9222;
		}
		short Beetroots();
		unsigned char Age(short ID);
	}
	namespace Bell
	{
		enum class Attachment
		{
			Floor,
			Ceiling,
			SingleWall,
			DoubleWall
		};
		constexpr short Bell(enum Attachment Attachment, eBlockFace Facing, bool Powered)
		{
			if (Attachment == Attachment::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 14854;
			if (Attachment == Attachment::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 14855;
			if (Attachment == Attachment::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 14856;
			if (Attachment == Attachment::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 14857;
			if (Attachment == Attachment::Floor && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 14858;
			if (Attachment == Attachment::Floor && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 14859;
			if (Attachment == Attachment::Floor && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 14860;
			if (Attachment == Attachment::Floor && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 14861;
			if (Attachment == Attachment::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 14862;
			if (Attachment == Attachment::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 14863;
			if (Attachment == Attachment::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 14864;
			if (Attachment == Attachment::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 14865;
			if (Attachment == Attachment::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 14866;
			if (Attachment == Attachment::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 14867;
			if (Attachment == Attachment::Ceiling && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 14868;
			if (Attachment == Attachment::Ceiling && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 14869;
			if (Attachment == Attachment::SingleWall && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 14870;
			if (Attachment == Attachment::SingleWall && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 14871;
			if (Attachment == Attachment::SingleWall && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 14872;
			if (Attachment == Attachment::SingleWall && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 14873;
			if (Attachment == Attachment::SingleWall && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 14874;
			if (Attachment == Attachment::SingleWall && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 14875;
			if (Attachment == Attachment::SingleWall && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 14876;
			if (Attachment == Attachment::SingleWall && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 14877;
			if (Attachment == Attachment::DoubleWall && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 14878;
			if (Attachment == Attachment::DoubleWall && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 14879;
			if (Attachment == Attachment::DoubleWall && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 14880;
			if (Attachment == Attachment::DoubleWall && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 14881;
			if (Attachment == Attachment::DoubleWall && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 14882;
			if (Attachment == Attachment::DoubleWall && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 14883;
			if (Attachment == Attachment::DoubleWall && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 14884;
			return 14885;
		}
		short Bell();
		enum Attachment Attachment(short ID);
		eBlockFace Facing(short ID);
		bool Powered(short ID);
	}
	namespace BirchButton
	{
		enum class Face
		{
			Floor,
			Wall,
			Ceiling
		};
		constexpr short BirchButton(enum Face Face, eBlockFace Facing, bool Powered)
		{
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6394;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6395;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6396;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6397;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6398;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6399;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6400;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 6401;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6402;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6403;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6404;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6405;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6406;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6407;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6408;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 6409;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6410;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6411;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6412;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6413;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6414;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6415;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6416;
			return 6417;
		}
		short BirchButton();
		enum Face Face(short ID);
		eBlockFace Facing(short ID);
		bool Powered(short ID);
	}
	namespace BirchDoor
	{
		enum class Half
		{
			Upper,
			Lower
		};
		enum class Hinge
		{
			Left,
			Right
		};
		constexpr short BirchDoor(eBlockFace Facing, enum Half Half, enum Hinge Hinge, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8802;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8803;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8804;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8805;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8806;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8807;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 8808;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 8809;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 8810;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 8811;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 8812;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 8813;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 8814;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 8815;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 8816;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 8817;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8818;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8819;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8820;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8821;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8822;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8823;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 8824;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 8825;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 8826;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 8827;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 8828;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 8829;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 8830;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 8831;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 8832;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 8833;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8834;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8835;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8836;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8837;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8838;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8839;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 8840;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 8841;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 8842;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 8843;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 8844;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 8845;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 8846;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 8847;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 8848;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 8849;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8850;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8851;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8852;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8853;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8854;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8855;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 8856;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 8857;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 8858;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 8859;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 8860;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 8861;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 8862;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 8863;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 8864;
			return 8865;
		}
		short BirchDoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Hinge Hinge(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace BirchFence
	{
		constexpr short BirchFence(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 8612;
			if (East && North && South && !West) return 8613;
			if (East && North && !South && West) return 8616;
			if (East && North && !South && !West) return 8617;
			if (East && !North && South && West) return 8620;
			if (East && !North && South && !West) return 8621;
			if (East && !North && !South && West) return 8624;
			if (East && !North && !South && !West) return 8625;
			if (!East && North && South && West) return 8628;
			if (!East && North && South && !West) return 8629;
			if (!East && North && !South && West) return 8632;
			if (!East && North && !South && !West) return 8633;
			if (!East && !North && South && West) return 8636;
			if (!East && !North && South && !West) return 8637;
			if (!East && !North && !South && West) return 8640;
			return 8641;
		}
		short BirchFence();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace BirchFenceGate
	{
		constexpr short BirchFenceGate(eBlockFace Facing, bool InWall, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && Open && Powered) return 8450;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && Open && !Powered) return 8451;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && !Open && Powered) return 8452;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && !Open && !Powered) return 8453;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && Open && Powered) return 8454;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && Open && !Powered) return 8455;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && !Open && Powered) return 8456;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && !Open && !Powered) return 8457;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && Open && Powered) return 8458;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && Open && !Powered) return 8459;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && !Open && Powered) return 8460;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && !Open && !Powered) return 8461;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && Open && Powered) return 8462;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && Open && !Powered) return 8463;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && !Open && Powered) return 8464;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && !Open && !Powered) return 8465;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && Open && Powered) return 8466;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && Open && !Powered) return 8467;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && !Open && Powered) return 8468;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && !Open && !Powered) return 8469;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && Open && Powered) return 8470;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && Open && !Powered) return 8471;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && !Open && Powered) return 8472;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && !Open && !Powered) return 8473;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && Open && Powered) return 8474;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && Open && !Powered) return 8475;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && !Open && Powered) return 8476;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && !Open && !Powered) return 8477;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && Open && Powered) return 8478;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && Open && !Powered) return 8479;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && !Open && Powered) return 8480;
			return 8481;
		}
		short BirchFenceGate();
		eBlockFace Facing(short ID);
		bool InWall(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace BirchLeaves
	{
		constexpr short BirchLeaves(unsigned char Distance, bool Persistent)
		{
			if (Distance == 1 && Persistent) return 173;
			if (Distance == 1 && !Persistent) return 174;
			if (Distance == 2 && Persistent) return 175;
			if (Distance == 2 && !Persistent) return 176;
			if (Distance == 3 && Persistent) return 177;
			if (Distance == 3 && !Persistent) return 178;
			if (Distance == 4 && Persistent) return 179;
			if (Distance == 4 && !Persistent) return 180;
			if (Distance == 5 && Persistent) return 181;
			if (Distance == 5 && !Persistent) return 182;
			if (Distance == 6 && Persistent) return 183;
			if (Distance == 6 && !Persistent) return 184;
			if (Distance == 7 && Persistent) return 185;
			return 186;
		}
		short BirchLeaves();
		unsigned char Distance(short ID);
		bool Persistent(short ID);
	}
	namespace BirchLog
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short BirchLog(enum Axis Axis)
		{
			if (Axis == Axis::X) return 79;
			if (Axis == Axis::Y) return 80;
			return 81;
		}
		short BirchLog();
		enum Axis Axis(short ID);
	}
	namespace BirchPlanks
	{
		constexpr short BirchPlanks()
		{
			return 17;
		}
	}
	namespace BirchPressurePlate
	{
		constexpr short BirchPressurePlate(bool Powered)
		{
			if (Powered) return 3877;
			return 3878;
		}
		short BirchPressurePlate();
		bool Powered(short ID);
	}
	namespace BirchSapling
	{
		constexpr short BirchSapling(unsigned char Stage)
		{
			if (Stage == 0) return 25;
			return 26;
		}
		short BirchSapling();
		unsigned char Stage(short ID);
	}
	namespace BirchSign
	{
		constexpr short BirchSign(unsigned char Rotation)
		{
			if (Rotation == 0) return 3446;
			if (Rotation == 1) return 3448;
			if (Rotation == 2) return 3450;
			if (Rotation == 3) return 3452;
			if (Rotation == 4) return 3454;
			if (Rotation == 5) return 3456;
			if (Rotation == 6) return 3458;
			if (Rotation == 7) return 3460;
			if (Rotation == 8) return 3462;
			if (Rotation == 9) return 3464;
			if (Rotation == 10) return 3466;
			if (Rotation == 11) return 3468;
			if (Rotation == 12) return 3470;
			if (Rotation == 13) return 3472;
			if (Rotation == 14) return 3474;
			return 3476;
		}
		short BirchSign();
		unsigned char Rotation(short ID);
	}
	namespace BirchSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short BirchSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8313;
			if (Type == Type::Bottom) return 8315;
			return 8317;
		}
		short BirchSlab();
		enum Type Type(short ID);
	}
	namespace BirchStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short BirchStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 5485;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 5487;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 5489;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 5491;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 5493;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 5495;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5497;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 5499;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5501;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 5503;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 5505;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 5507;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 5509;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 5511;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 5513;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 5515;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5517;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 5519;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5521;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 5523;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 5525;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 5527;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 5529;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 5531;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 5533;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 5535;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5537;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 5539;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5541;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 5543;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 5545;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 5547;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 5549;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 5551;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 5553;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 5555;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5557;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 5559;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5561;
			return 5563;
		}
		short BirchStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace BirchTrapdoor
	{
		enum class Half
		{
			Top,
			Bottom
		};
		constexpr short BirchTrapdoor(eBlockFace Facing, enum Half Half, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && Powered) return 4240;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && !Powered) return 4242;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && Powered) return 4244;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && !Powered) return 4246;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && Powered) return 4248;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && !Powered) return 4250;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && Powered) return 4252;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && !Powered) return 4254;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && Powered) return 4256;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && !Powered) return 4258;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && Powered) return 4260;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && !Powered) return 4262;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && Powered) return 4264;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && !Powered) return 4266;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && Powered) return 4268;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && !Powered) return 4270;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && Powered) return 4272;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && !Powered) return 4274;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && Powered) return 4276;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && !Powered) return 4278;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && Powered) return 4280;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && !Powered) return 4282;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && Powered) return 4284;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && !Powered) return 4286;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && Powered) return 4288;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && !Powered) return 4290;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && Powered) return 4292;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && !Powered) return 4294;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && Powered) return 4296;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && !Powered) return 4298;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && !Open && Powered) return 4300;
			return 4302;
		}
		short BirchTrapdoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace BirchWallSign
	{
		constexpr short BirchWallSign(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 3752;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 3754;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 3756;
			return 3758;
		}
		short BirchWallSign();
		eBlockFace Facing(short ID);
	}
	namespace BirchWood
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short BirchWood(enum Axis Axis)
		{
			if (Axis == Axis::X) return 115;
			if (Axis == Axis::Y) return 116;
			return 117;
		}
		short BirchWood();
		enum Axis Axis(short ID);
	}
	namespace BlackBanner
	{
		constexpr short BlackBanner(unsigned char Rotation)
		{
			if (Rotation == 0) return 8137;
			if (Rotation == 1) return 8138;
			if (Rotation == 2) return 8139;
			if (Rotation == 3) return 8140;
			if (Rotation == 4) return 8141;
			if (Rotation == 5) return 8142;
			if (Rotation == 6) return 8143;
			if (Rotation == 7) return 8144;
			if (Rotation == 8) return 8145;
			if (Rotation == 9) return 8146;
			if (Rotation == 10) return 8147;
			if (Rotation == 11) return 8148;
			if (Rotation == 12) return 8149;
			if (Rotation == 13) return 8150;
			if (Rotation == 14) return 8151;
			return 8152;
		}
		short BlackBanner();
		unsigned char Rotation(short ID);
	}
	namespace BlackBed
	{
		enum class Part
		{
			Head,
			Foot
		};
		constexpr short BlackBed(eBlockFace Facing, bool Occupied, enum Part Part)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Head) return 1289;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Foot) return 1290;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Head) return 1291;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Foot) return 1292;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Head) return 1293;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Foot) return 1294;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Head) return 1295;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Foot) return 1296;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Head) return 1297;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Foot) return 1298;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Head) return 1299;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Foot) return 1300;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Head) return 1301;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Foot) return 1302;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Occupied && Part == Part::Head) return 1303;
			return 1304;
		}
		short BlackBed();
		eBlockFace Facing(short ID);
		bool Occupied(short ID);
		enum Part Part(short ID);
	}
	namespace BlackCarpet
	{
		constexpr short BlackCarpet()
		{
			return 7881;
		}
	}
	namespace BlackConcrete
	{
		constexpr short BlackConcrete()
		{
			return 9453;
		}
	}
	namespace BlackConcretePowder
	{
		constexpr short BlackConcretePowder()
		{
			return 9469;
		}
	}
	namespace BlackGlazedTerracotta
	{
		constexpr short BlackGlazedTerracotta(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9434;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9435;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9436;
			return 9437;
		}
		short BlackGlazedTerracotta();
		eBlockFace Facing(short ID);
	}
	namespace BlackShulkerBox
	{
		constexpr short BlackShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9368;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9369;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9370;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9371;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9372;
			return 9373;
		}
		short BlackShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace BlackStainedGlass
	{
		constexpr short BlackStainedGlass()
		{
			return 4110;
		}
	}
	namespace BlackStainedGlassPane
	{
		constexpr short BlackStainedGlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 7345;
			if (East && North && South && !West) return 7346;
			if (East && North && !South && West) return 7349;
			if (East && North && !South && !West) return 7350;
			if (East && !North && South && West) return 7353;
			if (East && !North && South && !West) return 7354;
			if (East && !North && !South && West) return 7357;
			if (East && !North && !South && !West) return 7358;
			if (!East && North && South && West) return 7361;
			if (!East && North && South && !West) return 7362;
			if (!East && North && !South && West) return 7365;
			if (!East && North && !South && !West) return 7366;
			if (!East && !North && South && West) return 7369;
			if (!East && !North && South && !West) return 7370;
			if (!East && !North && !South && West) return 7373;
			return 7374;
		}
		short BlackStainedGlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace BlackTerracotta
	{
		constexpr short BlackTerracotta()
		{
			return 6862;
		}
	}
	namespace BlackWallBanner
	{
		constexpr short BlackWallBanner(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 8213;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 8214;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 8215;
			return 8216;
		}
		short BlackWallBanner();
		eBlockFace Facing(short ID);
	}
	namespace BlackWool
	{
		constexpr short BlackWool()
		{
			return 1399;
		}
	}
	namespace Blackstone
	{
		constexpr short Blackstone()
		{
			return 15839;
		}
	}
	namespace BlackstoneSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short BlackstoneSlab(enum Type Type)
		{
			if (Type == Type::Top) return 16245;
			if (Type == Type::Bottom) return 16247;
			return 16249;
		}
		short BlackstoneSlab();
		enum Type Type(short ID);
	}
	namespace BlackstoneStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short BlackstoneStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 15841;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 15843;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 15845;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 15847;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 15849;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 15851;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 15853;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 15855;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 15857;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 15859;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 15861;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 15863;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 15865;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 15867;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 15869;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 15871;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 15873;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 15875;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 15877;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 15879;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 15881;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 15883;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 15885;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 15887;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 15889;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 15891;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 15893;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 15895;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 15897;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 15899;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 15901;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 15903;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 15905;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 15907;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 15909;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 15911;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 15913;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 15915;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 15917;
			return 15919;
		}
		short BlackstoneStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace BlackstoneWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short BlackstoneWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 15923;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 15924;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 15925;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 15929;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 15930;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 15931;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 15935;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 15936;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 15937;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 15941;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 15942;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 15943;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 15947;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 15948;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 15949;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 15953;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 15954;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 15955;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 15959;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 15960;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 15961;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 15965;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 15966;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 15967;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 15971;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 15972;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 15973;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 15977;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 15978;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 15979;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 15983;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 15984;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 15985;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 15989;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 15990;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 15991;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 15995;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 15996;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 15997;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 16001;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 16002;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 16003;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 16007;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 16008;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 16009;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 16013;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 16014;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 16015;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 16019;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 16020;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 16021;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 16025;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 16026;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 16027;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 16031;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 16032;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 16033;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 16037;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 16038;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 16039;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 16043;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 16044;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 16045;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 16049;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 16050;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 16051;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 16055;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 16056;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 16057;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 16061;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 16062;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 16063;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 16067;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 16068;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 16069;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 16073;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 16074;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 16075;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 16079;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 16080;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 16081;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 16085;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 16086;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 16087;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 16091;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 16092;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 16093;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 16097;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 16098;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 16099;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 16103;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 16104;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 16105;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 16109;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 16110;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 16111;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 16115;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 16116;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 16117;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 16121;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 16122;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 16123;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 16127;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 16128;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 16129;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 16133;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 16134;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 16135;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 16139;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 16140;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 16141;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 16145;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 16146;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 16147;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 16151;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 16152;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 16153;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 16157;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 16158;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 16159;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 16163;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 16164;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 16165;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 16169;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 16170;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 16171;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 16175;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 16176;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 16177;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 16181;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 16182;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 16183;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 16187;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 16188;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 16189;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 16193;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 16194;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 16195;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 16199;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 16200;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 16201;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 16205;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 16206;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 16207;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 16211;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 16212;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 16213;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 16217;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 16218;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 16219;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 16223;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 16224;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 16225;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 16229;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 16230;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 16231;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 16235;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 16236;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 16237;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 16241;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 16242;
			return 16243;
		}
		short BlackstoneWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace BlastFurnace
	{
		constexpr short BlastFurnace(eBlockFace Facing, bool Lit)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Lit) return 14811;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Lit) return 14812;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Lit) return 14813;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Lit) return 14814;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Lit) return 14815;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Lit) return 14816;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Lit) return 14817;
			return 14818;
		}
		short BlastFurnace();
		eBlockFace Facing(short ID);
		bool Lit(short ID);
	}
	namespace BlueBanner
	{
		constexpr short BlueBanner(unsigned char Rotation)
		{
			if (Rotation == 0) return 8073;
			if (Rotation == 1) return 8074;
			if (Rotation == 2) return 8075;
			if (Rotation == 3) return 8076;
			if (Rotation == 4) return 8077;
			if (Rotation == 5) return 8078;
			if (Rotation == 6) return 8079;
			if (Rotation == 7) return 8080;
			if (Rotation == 8) return 8081;
			if (Rotation == 9) return 8082;
			if (Rotation == 10) return 8083;
			if (Rotation == 11) return 8084;
			if (Rotation == 12) return 8085;
			if (Rotation == 13) return 8086;
			if (Rotation == 14) return 8087;
			return 8088;
		}
		short BlueBanner();
		unsigned char Rotation(short ID);
	}
	namespace BlueBed
	{
		enum class Part
		{
			Head,
			Foot
		};
		constexpr short BlueBed(eBlockFace Facing, bool Occupied, enum Part Part)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Head) return 1225;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Foot) return 1226;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Head) return 1227;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Foot) return 1228;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Head) return 1229;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Foot) return 1230;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Head) return 1231;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Foot) return 1232;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Head) return 1233;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Foot) return 1234;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Head) return 1235;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Foot) return 1236;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Head) return 1237;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Foot) return 1238;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Occupied && Part == Part::Head) return 1239;
			return 1240;
		}
		short BlueBed();
		eBlockFace Facing(short ID);
		bool Occupied(short ID);
		enum Part Part(short ID);
	}
	namespace BlueCarpet
	{
		constexpr short BlueCarpet()
		{
			return 7877;
		}
	}
	namespace BlueConcrete
	{
		constexpr short BlueConcrete()
		{
			return 9449;
		}
	}
	namespace BlueConcretePowder
	{
		constexpr short BlueConcretePowder()
		{
			return 9465;
		}
	}
	namespace BlueGlazedTerracotta
	{
		constexpr short BlueGlazedTerracotta(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9418;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9419;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9420;
			return 9421;
		}
		short BlueGlazedTerracotta();
		eBlockFace Facing(short ID);
	}
	namespace BlueIce
	{
		constexpr short BlueIce()
		{
			return 9648;
		}
	}
	namespace BlueOrchid
	{
		constexpr short BlueOrchid()
		{
			return 1414;
		}
	}
	namespace BlueShulkerBox
	{
		constexpr short BlueShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9344;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9345;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9346;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9347;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9348;
			return 9349;
		}
		short BlueShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace BlueStainedGlass
	{
		constexpr short BlueStainedGlass()
		{
			return 4106;
		}
	}
	namespace BlueStainedGlassPane
	{
		constexpr short BlueStainedGlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 7217;
			if (East && North && South && !West) return 7218;
			if (East && North && !South && West) return 7221;
			if (East && North && !South && !West) return 7222;
			if (East && !North && South && West) return 7225;
			if (East && !North && South && !West) return 7226;
			if (East && !North && !South && West) return 7229;
			if (East && !North && !South && !West) return 7230;
			if (!East && North && South && West) return 7233;
			if (!East && North && South && !West) return 7234;
			if (!East && North && !South && West) return 7237;
			if (!East && North && !South && !West) return 7238;
			if (!East && !North && South && West) return 7241;
			if (!East && !North && South && !West) return 7242;
			if (!East && !North && !South && West) return 7245;
			return 7246;
		}
		short BlueStainedGlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace BlueTerracotta
	{
		constexpr short BlueTerracotta()
		{
			return 6858;
		}
	}
	namespace BlueWallBanner
	{
		constexpr short BlueWallBanner(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 8197;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 8198;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 8199;
			return 8200;
		}
		short BlueWallBanner();
		eBlockFace Facing(short ID);
	}
	namespace BlueWool
	{
		constexpr short BlueWool()
		{
			return 1395;
		}
	}
	namespace BoneBlock
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short BoneBlock(enum Axis Axis)
		{
			if (Axis == Axis::X) return 9256;
			if (Axis == Axis::Y) return 9257;
			return 9258;
		}
		short BoneBlock();
		enum Axis Axis(short ID);
	}
	namespace Bookshelf
	{
		constexpr short Bookshelf()
		{
			return 1432;
		}
	}
	namespace BrainCoral
	{
		constexpr short BrainCoral()
		{
			return 9533;
		}
	}
	namespace BrainCoralBlock
	{
		constexpr short BrainCoralBlock()
		{
			return 9516;
		}
	}
	namespace BrainCoralFan
	{
		constexpr short BrainCoralFan()
		{
			return 9553;
		}
	}
	namespace BrainCoralWallFan
	{
		constexpr short BrainCoralWallFan(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9609;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9611;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9613;
			return 9615;
		}
		short BrainCoralWallFan();
		eBlockFace Facing(short ID);
	}
	namespace BrewingStand
	{
		constexpr short BrewingStand(bool HasBottle_0, bool HasBottle_1, bool HasBottle_2)
		{
			if (HasBottle_0 && HasBottle_1 && HasBottle_2) return 5133;
			if (HasBottle_0 && HasBottle_1 && !HasBottle_2) return 5134;
			if (HasBottle_0 && !HasBottle_1 && HasBottle_2) return 5135;
			if (HasBottle_0 && !HasBottle_1 && !HasBottle_2) return 5136;
			if (!HasBottle_0 && HasBottle_1 && HasBottle_2) return 5137;
			if (!HasBottle_0 && HasBottle_1 && !HasBottle_2) return 5138;
			if (!HasBottle_0 && !HasBottle_1 && HasBottle_2) return 5139;
			return 5140;
		}
		short BrewingStand();
		bool HasBottle_0(short ID);
		bool HasBottle_1(short ID);
		bool HasBottle_2(short ID);
	}
	namespace BrickSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short BrickSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8373;
			if (Type == Type::Bottom) return 8375;
			return 8377;
		}
		short BrickSlab();
		enum Type Type(short ID);
	}
	namespace BrickStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short BrickStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 4853;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 4855;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 4857;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 4859;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 4861;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 4863;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 4865;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 4867;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 4869;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 4871;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 4873;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 4875;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 4877;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 4879;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 4881;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 4883;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 4885;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 4887;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 4889;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 4891;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 4893;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 4895;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 4897;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 4899;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 4901;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 4903;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 4905;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 4907;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 4909;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 4911;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 4913;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 4915;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 4917;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 4919;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 4921;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 4923;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 4925;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 4927;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 4929;
			return 4931;
		}
		short BrickStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace BrickWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short BrickWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 10870;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 10871;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 10872;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 10876;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 10877;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 10878;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 10882;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 10883;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 10884;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 10888;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 10889;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 10890;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 10894;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 10895;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 10896;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 10900;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 10901;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 10902;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 10906;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 10907;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 10908;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 10912;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 10913;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 10914;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 10918;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 10919;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 10920;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 10924;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 10925;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 10926;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 10930;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 10931;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 10932;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 10936;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 10937;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 10938;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 10942;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 10943;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 10944;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 10948;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 10949;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 10950;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 10954;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 10955;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 10956;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 10960;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 10961;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 10962;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 10966;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 10967;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 10968;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 10972;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 10973;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 10974;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 10978;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 10979;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 10980;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 10984;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 10985;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 10986;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 10990;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 10991;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 10992;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 10996;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 10997;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 10998;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 11002;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 11003;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 11004;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 11008;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 11009;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 11010;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 11014;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 11015;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 11016;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 11020;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 11021;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 11022;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 11026;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 11027;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 11028;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 11032;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 11033;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 11034;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 11038;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 11039;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 11040;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 11044;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 11045;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 11046;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 11050;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 11051;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 11052;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 11056;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 11057;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 11058;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 11062;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 11063;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 11064;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 11068;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 11069;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 11070;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 11074;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 11075;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 11076;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 11080;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 11081;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 11082;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 11086;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 11087;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 11088;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 11092;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 11093;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 11094;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 11098;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 11099;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 11100;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 11104;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 11105;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 11106;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 11110;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 11111;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 11112;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 11116;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 11117;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 11118;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 11122;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 11123;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 11124;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 11128;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 11129;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 11130;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 11134;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 11135;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 11136;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 11140;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 11141;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 11142;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 11146;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 11147;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 11148;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 11152;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 11153;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 11154;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 11158;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 11159;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 11160;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 11164;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 11165;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 11166;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 11170;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 11171;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 11172;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 11176;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 11177;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 11178;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 11182;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 11183;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 11184;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 11188;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 11189;
			return 11190;
		}
		short BrickWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace Bricks
	{
		constexpr short Bricks()
		{
			return 1429;
		}
	}
	namespace BrownBanner
	{
		constexpr short BrownBanner(unsigned char Rotation)
		{
			if (Rotation == 0) return 8089;
			if (Rotation == 1) return 8090;
			if (Rotation == 2) return 8091;
			if (Rotation == 3) return 8092;
			if (Rotation == 4) return 8093;
			if (Rotation == 5) return 8094;
			if (Rotation == 6) return 8095;
			if (Rotation == 7) return 8096;
			if (Rotation == 8) return 8097;
			if (Rotation == 9) return 8098;
			if (Rotation == 10) return 8099;
			if (Rotation == 11) return 8100;
			if (Rotation == 12) return 8101;
			if (Rotation == 13) return 8102;
			if (Rotation == 14) return 8103;
			return 8104;
		}
		short BrownBanner();
		unsigned char Rotation(short ID);
	}
	namespace BrownBed
	{
		enum class Part
		{
			Head,
			Foot
		};
		constexpr short BrownBed(eBlockFace Facing, bool Occupied, enum Part Part)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Head) return 1241;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Foot) return 1242;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Head) return 1243;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Foot) return 1244;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Head) return 1245;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Foot) return 1246;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Head) return 1247;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Foot) return 1248;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Head) return 1249;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Foot) return 1250;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Head) return 1251;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Foot) return 1252;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Head) return 1253;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Foot) return 1254;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Occupied && Part == Part::Head) return 1255;
			return 1256;
		}
		short BrownBed();
		eBlockFace Facing(short ID);
		bool Occupied(short ID);
		enum Part Part(short ID);
	}
	namespace BrownCarpet
	{
		constexpr short BrownCarpet()
		{
			return 7878;
		}
	}
	namespace BrownConcrete
	{
		constexpr short BrownConcrete()
		{
			return 9450;
		}
	}
	namespace BrownConcretePowder
	{
		constexpr short BrownConcretePowder()
		{
			return 9466;
		}
	}
	namespace BrownGlazedTerracotta
	{
		constexpr short BrownGlazedTerracotta(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9422;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9423;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9424;
			return 9425;
		}
		short BrownGlazedTerracotta();
		eBlockFace Facing(short ID);
	}
	namespace BrownMushroom
	{
		constexpr short BrownMushroom()
		{
			return 1425;
		}
	}
	namespace BrownMushroomBlock
	{
		constexpr short BrownMushroomBlock(bool Down, bool East, bool North, bool South, bool Up, bool West)
		{
			if (Down && East && North && South && Up && West) return 4505;
			if (Down && East && North && South && Up && !West) return 4506;
			if (Down && East && North && South && !Up && West) return 4507;
			if (Down && East && North && South && !Up && !West) return 4508;
			if (Down && East && North && !South && Up && West) return 4509;
			if (Down && East && North && !South && Up && !West) return 4510;
			if (Down && East && North && !South && !Up && West) return 4511;
			if (Down && East && North && !South && !Up && !West) return 4512;
			if (Down && East && !North && South && Up && West) return 4513;
			if (Down && East && !North && South && Up && !West) return 4514;
			if (Down && East && !North && South && !Up && West) return 4515;
			if (Down && East && !North && South && !Up && !West) return 4516;
			if (Down && East && !North && !South && Up && West) return 4517;
			if (Down && East && !North && !South && Up && !West) return 4518;
			if (Down && East && !North && !South && !Up && West) return 4519;
			if (Down && East && !North && !South && !Up && !West) return 4520;
			if (Down && !East && North && South && Up && West) return 4521;
			if (Down && !East && North && South && Up && !West) return 4522;
			if (Down && !East && North && South && !Up && West) return 4523;
			if (Down && !East && North && South && !Up && !West) return 4524;
			if (Down && !East && North && !South && Up && West) return 4525;
			if (Down && !East && North && !South && Up && !West) return 4526;
			if (Down && !East && North && !South && !Up && West) return 4527;
			if (Down && !East && North && !South && !Up && !West) return 4528;
			if (Down && !East && !North && South && Up && West) return 4529;
			if (Down && !East && !North && South && Up && !West) return 4530;
			if (Down && !East && !North && South && !Up && West) return 4531;
			if (Down && !East && !North && South && !Up && !West) return 4532;
			if (Down && !East && !North && !South && Up && West) return 4533;
			if (Down && !East && !North && !South && Up && !West) return 4534;
			if (Down && !East && !North && !South && !Up && West) return 4535;
			if (Down && !East && !North && !South && !Up && !West) return 4536;
			if (!Down && East && North && South && Up && West) return 4537;
			if (!Down && East && North && South && Up && !West) return 4538;
			if (!Down && East && North && South && !Up && West) return 4539;
			if (!Down && East && North && South && !Up && !West) return 4540;
			if (!Down && East && North && !South && Up && West) return 4541;
			if (!Down && East && North && !South && Up && !West) return 4542;
			if (!Down && East && North && !South && !Up && West) return 4543;
			if (!Down && East && North && !South && !Up && !West) return 4544;
			if (!Down && East && !North && South && Up && West) return 4545;
			if (!Down && East && !North && South && Up && !West) return 4546;
			if (!Down && East && !North && South && !Up && West) return 4547;
			if (!Down && East && !North && South && !Up && !West) return 4548;
			if (!Down && East && !North && !South && Up && West) return 4549;
			if (!Down && East && !North && !South && Up && !West) return 4550;
			if (!Down && East && !North && !South && !Up && West) return 4551;
			if (!Down && East && !North && !South && !Up && !West) return 4552;
			if (!Down && !East && North && South && Up && West) return 4553;
			if (!Down && !East && North && South && Up && !West) return 4554;
			if (!Down && !East && North && South && !Up && West) return 4555;
			if (!Down && !East && North && South && !Up && !West) return 4556;
			if (!Down && !East && North && !South && Up && West) return 4557;
			if (!Down && !East && North && !South && Up && !West) return 4558;
			if (!Down && !East && North && !South && !Up && West) return 4559;
			if (!Down && !East && North && !South && !Up && !West) return 4560;
			if (!Down && !East && !North && South && Up && West) return 4561;
			if (!Down && !East && !North && South && Up && !West) return 4562;
			if (!Down && !East && !North && South && !Up && West) return 4563;
			if (!Down && !East && !North && South && !Up && !West) return 4564;
			if (!Down && !East && !North && !South && Up && West) return 4565;
			if (!Down && !East && !North && !South && Up && !West) return 4566;
			if (!Down && !East && !North && !South && !Up && West) return 4567;
			return 4568;
		}
		short BrownMushroomBlock();
		bool Down(short ID);
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool Up(short ID);
		bool West(short ID);
	}
	namespace BrownShulkerBox
	{
		constexpr short BrownShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9350;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9351;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9352;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9353;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9354;
			return 9355;
		}
		short BrownShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace BrownStainedGlass
	{
		constexpr short BrownStainedGlass()
		{
			return 4107;
		}
	}
	namespace BrownStainedGlassPane
	{
		constexpr short BrownStainedGlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 7249;
			if (East && North && South && !West) return 7250;
			if (East && North && !South && West) return 7253;
			if (East && North && !South && !West) return 7254;
			if (East && !North && South && West) return 7257;
			if (East && !North && South && !West) return 7258;
			if (East && !North && !South && West) return 7261;
			if (East && !North && !South && !West) return 7262;
			if (!East && North && South && West) return 7265;
			if (!East && North && South && !West) return 7266;
			if (!East && North && !South && West) return 7269;
			if (!East && North && !South && !West) return 7270;
			if (!East && !North && South && West) return 7273;
			if (!East && !North && South && !West) return 7274;
			if (!East && !North && !South && West) return 7277;
			return 7278;
		}
		short BrownStainedGlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace BrownTerracotta
	{
		constexpr short BrownTerracotta()
		{
			return 6859;
		}
	}
	namespace BrownWallBanner
	{
		constexpr short BrownWallBanner(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 8201;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 8202;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 8203;
			return 8204;
		}
		short BrownWallBanner();
		eBlockFace Facing(short ID);
	}
	namespace BrownWool
	{
		constexpr short BrownWool()
		{
			return 1396;
		}
	}
	namespace BubbleColumn
	{
		constexpr short BubbleColumn(bool Drag)
		{
			if (Drag) return 9667;
			return 9668;
		}
		short BubbleColumn();
		bool Drag(short ID);
	}
	namespace BubbleCoral
	{
		constexpr short BubbleCoral()
		{
			return 9535;
		}
	}
	namespace BubbleCoralBlock
	{
		constexpr short BubbleCoralBlock()
		{
			return 9517;
		}
	}
	namespace BubbleCoralFan
	{
		constexpr short BubbleCoralFan()
		{
			return 9555;
		}
	}
	namespace BubbleCoralWallFan
	{
		constexpr short BubbleCoralWallFan(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9617;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9619;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9621;
			return 9623;
		}
		short BubbleCoralWallFan();
		eBlockFace Facing(short ID);
	}
	namespace Cactus
	{
		constexpr short Cactus(unsigned char Age)
		{
			if (Age == 0) return 3931;
			if (Age == 1) return 3932;
			if (Age == 2) return 3933;
			if (Age == 3) return 3934;
			if (Age == 4) return 3935;
			if (Age == 5) return 3936;
			if (Age == 6) return 3937;
			if (Age == 7) return 3938;
			if (Age == 8) return 3939;
			if (Age == 9) return 3940;
			if (Age == 10) return 3941;
			if (Age == 11) return 3942;
			if (Age == 12) return 3943;
			if (Age == 13) return 3944;
			if (Age == 14) return 3945;
			return 3946;
		}
		short Cactus();
		unsigned char Age(short ID);
	}
	namespace Cake
	{
		constexpr short Cake(unsigned char Bites)
		{
			if (Bites == 0) return 4024;
			if (Bites == 1) return 4025;
			if (Bites == 2) return 4026;
			if (Bites == 3) return 4027;
			if (Bites == 4) return 4028;
			if (Bites == 5) return 4029;
			return 4030;
		}
		short Cake();
		unsigned char Bites(short ID);
	}
	namespace Campfire
	{
		constexpr short Campfire(eBlockFace Facing, bool Lit, bool SignalFire)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Lit && SignalFire) return 14891;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Lit && !SignalFire) return 14893;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Lit && SignalFire) return 14895;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Lit && !SignalFire) return 14897;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Lit && SignalFire) return 14899;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Lit && !SignalFire) return 14901;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Lit && SignalFire) return 14903;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Lit && !SignalFire) return 14905;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Lit && SignalFire) return 14907;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Lit && !SignalFire) return 14909;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Lit && SignalFire) return 14911;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Lit && !SignalFire) return 14913;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Lit && SignalFire) return 14915;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Lit && !SignalFire) return 14917;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Lit && SignalFire) return 14919;
			return 14921;
		}
		short Campfire();
		eBlockFace Facing(short ID);
		bool Lit(short ID);
		bool SignalFire(short ID);
	}
	namespace Carrots
	{
		constexpr short Carrots(unsigned char Age)
		{
			if (Age == 0) return 6330;
			if (Age == 1) return 6331;
			if (Age == 2) return 6332;
			if (Age == 3) return 6333;
			if (Age == 4) return 6334;
			if (Age == 5) return 6335;
			if (Age == 6) return 6336;
			return 6337;
		}
		short Carrots();
		unsigned char Age(short ID);
	}
	namespace CartographyTable
	{
		constexpr short CartographyTable()
		{
			return 14819;
		}
	}
	namespace CarvedPumpkin
	{
		constexpr short CarvedPumpkin(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 4016;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 4017;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 4018;
			return 4019;
		}
		short CarvedPumpkin();
		eBlockFace Facing(short ID);
	}
	namespace Cauldron
	{
		constexpr short Cauldron(unsigned char Level)
		{
			if (Level == 0) return 5141;
			if (Level == 1) return 5142;
			if (Level == 2) return 5143;
			return 5144;
		}
		short Cauldron();
		unsigned char Level(short ID);
	}
	namespace CaveAir
	{
		constexpr short CaveAir()
		{
			return 9666;
		}
	}
	namespace Chain
	{
		constexpr short Chain()
		{
			return 4730;
		}
	}
	namespace ChainCommandBlock
	{
		constexpr short ChainCommandBlock(bool Conditional, eBlockFace Facing)
		{
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_ZM) return 9237;
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_XP) return 9238;
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_ZP) return 9239;
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_XM) return 9240;
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_YP) return 9241;
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_YM) return 9242;
			if (!Conditional && Facing == eBlockFace::BLOCK_FACE_ZM) return 9243;
			if (!Conditional && Facing == eBlockFace::BLOCK_FACE_XP) return 9244;
			if (!Conditional && Facing == eBlockFace::BLOCK_FACE_ZP) return 9245;
			if (!Conditional && Facing == eBlockFace::BLOCK_FACE_XM) return 9246;
			if (!Conditional && Facing == eBlockFace::BLOCK_FACE_YP) return 9247;
			return 9248;
		}
		short ChainCommandBlock();
		bool Conditional(short ID);
		eBlockFace Facing(short ID);
	}
	namespace Chest
	{
		enum class Type
		{
			Single,
			Left,
			Right
		};
		constexpr short Chest(eBlockFace Facing, enum Type Type)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Type == Type::Single) return 2035;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Type == Type::Left) return 2037;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Type == Type::Right) return 2039;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Type == Type::Single) return 2041;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Type == Type::Left) return 2043;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Type == Type::Right) return 2045;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Type == Type::Single) return 2047;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Type == Type::Left) return 2049;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Type == Type::Right) return 2051;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Type == Type::Single) return 2053;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Type == Type::Left) return 2055;
			return 2057;
		}
		short Chest();
		eBlockFace Facing(short ID);
		enum Type Type(short ID);
	}
	namespace ChippedAnvil
	{
		constexpr short ChippedAnvil(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 6614;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 6615;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 6616;
			return 6617;
		}
		short ChippedAnvil();
		eBlockFace Facing(short ID);
	}
	namespace ChiseledNetherBricks
	{
		constexpr short ChiseledNetherBricks()
		{
			return 17101;
		}
	}
	namespace ChiseledPolishedBlackstone
	{
		constexpr short ChiseledPolishedBlackstone()
		{
			return 16253;
		}
	}
	namespace ChiseledQuartzBlock
	{
		constexpr short ChiseledQuartzBlock()
		{
			return 6739;
		}
	}
	namespace ChiseledRedSandstone
	{
		constexpr short ChiseledRedSandstone()
		{
			return 8218;
		}
	}
	namespace ChiseledSandstone
	{
		constexpr short ChiseledSandstone()
		{
			return 247;
		}
	}
	namespace ChiseledStoneBricks
	{
		constexpr short ChiseledStoneBricks()
		{
			return 4498;
		}
	}
	namespace ChorusFlower
	{
		constexpr short ChorusFlower(unsigned char Age)
		{
			if (Age == 0) return 9128;
			if (Age == 1) return 9129;
			if (Age == 2) return 9130;
			if (Age == 3) return 9131;
			if (Age == 4) return 9132;
			return 9133;
		}
		short ChorusFlower();
		unsigned char Age(short ID);
	}
	namespace ChorusPlant
	{
		constexpr short ChorusPlant(bool Down, bool East, bool North, bool South, bool Up, bool West)
		{
			if (Down && East && North && South && Up && West) return 9064;
			if (Down && East && North && South && Up && !West) return 9065;
			if (Down && East && North && South && !Up && West) return 9066;
			if (Down && East && North && South && !Up && !West) return 9067;
			if (Down && East && North && !South && Up && West) return 9068;
			if (Down && East && North && !South && Up && !West) return 9069;
			if (Down && East && North && !South && !Up && West) return 9070;
			if (Down && East && North && !South && !Up && !West) return 9071;
			if (Down && East && !North && South && Up && West) return 9072;
			if (Down && East && !North && South && Up && !West) return 9073;
			if (Down && East && !North && South && !Up && West) return 9074;
			if (Down && East && !North && South && !Up && !West) return 9075;
			if (Down && East && !North && !South && Up && West) return 9076;
			if (Down && East && !North && !South && Up && !West) return 9077;
			if (Down && East && !North && !South && !Up && West) return 9078;
			if (Down && East && !North && !South && !Up && !West) return 9079;
			if (Down && !East && North && South && Up && West) return 9080;
			if (Down && !East && North && South && Up && !West) return 9081;
			if (Down && !East && North && South && !Up && West) return 9082;
			if (Down && !East && North && South && !Up && !West) return 9083;
			if (Down && !East && North && !South && Up && West) return 9084;
			if (Down && !East && North && !South && Up && !West) return 9085;
			if (Down && !East && North && !South && !Up && West) return 9086;
			if (Down && !East && North && !South && !Up && !West) return 9087;
			if (Down && !East && !North && South && Up && West) return 9088;
			if (Down && !East && !North && South && Up && !West) return 9089;
			if (Down && !East && !North && South && !Up && West) return 9090;
			if (Down && !East && !North && South && !Up && !West) return 9091;
			if (Down && !East && !North && !South && Up && West) return 9092;
			if (Down && !East && !North && !South && Up && !West) return 9093;
			if (Down && !East && !North && !South && !Up && West) return 9094;
			if (Down && !East && !North && !South && !Up && !West) return 9095;
			if (!Down && East && North && South && Up && West) return 9096;
			if (!Down && East && North && South && Up && !West) return 9097;
			if (!Down && East && North && South && !Up && West) return 9098;
			if (!Down && East && North && South && !Up && !West) return 9099;
			if (!Down && East && North && !South && Up && West) return 9100;
			if (!Down && East && North && !South && Up && !West) return 9101;
			if (!Down && East && North && !South && !Up && West) return 9102;
			if (!Down && East && North && !South && !Up && !West) return 9103;
			if (!Down && East && !North && South && Up && West) return 9104;
			if (!Down && East && !North && South && Up && !West) return 9105;
			if (!Down && East && !North && South && !Up && West) return 9106;
			if (!Down && East && !North && South && !Up && !West) return 9107;
			if (!Down && East && !North && !South && Up && West) return 9108;
			if (!Down && East && !North && !South && Up && !West) return 9109;
			if (!Down && East && !North && !South && !Up && West) return 9110;
			if (!Down && East && !North && !South && !Up && !West) return 9111;
			if (!Down && !East && North && South && Up && West) return 9112;
			if (!Down && !East && North && South && Up && !West) return 9113;
			if (!Down && !East && North && South && !Up && West) return 9114;
			if (!Down && !East && North && South && !Up && !West) return 9115;
			if (!Down && !East && North && !South && Up && West) return 9116;
			if (!Down && !East && North && !South && Up && !West) return 9117;
			if (!Down && !East && North && !South && !Up && West) return 9118;
			if (!Down && !East && North && !South && !Up && !West) return 9119;
			if (!Down && !East && !North && South && Up && West) return 9120;
			if (!Down && !East && !North && South && Up && !West) return 9121;
			if (!Down && !East && !North && South && !Up && West) return 9122;
			if (!Down && !East && !North && South && !Up && !West) return 9123;
			if (!Down && !East && !North && !South && Up && West) return 9124;
			if (!Down && !East && !North && !South && Up && !West) return 9125;
			if (!Down && !East && !North && !South && !Up && West) return 9126;
			return 9127;
		}
		short ChorusPlant();
		bool Down(short ID);
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool Up(short ID);
		bool West(short ID);
	}
	namespace Clay
	{
		constexpr short Clay()
		{
			return 3947;
		}
	}
	namespace CoalBlock
	{
		constexpr short CoalBlock()
		{
			return 7883;
		}
	}
	namespace CoalOre
	{
		constexpr short CoalOre()
		{
			return 71;
		}
	}
	namespace CoarseDirt
	{
		constexpr short CoarseDirt()
		{
			return 11;
		}
	}
	namespace Cobblestone
	{
		constexpr short Cobblestone()
		{
			return 14;
		}
	}
	namespace CobblestoneSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short CobblestoneSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8367;
			if (Type == Type::Bottom) return 8369;
			return 8371;
		}
		short CobblestoneSlab();
		enum Type Type(short ID);
	}
	namespace CobblestoneStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short CobblestoneStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 3656;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 3658;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 3660;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 3662;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 3664;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 3666;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 3668;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 3670;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 3672;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 3674;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 3676;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 3678;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 3680;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 3682;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 3684;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 3686;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 3688;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 3690;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 3692;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 3694;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 3696;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 3698;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 3700;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 3702;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 3704;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 3706;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 3708;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 3710;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 3712;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 3714;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 3716;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 3718;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 3720;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 3722;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 3724;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 3726;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 3728;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 3730;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 3732;
			return 3734;
		}
		short CobblestoneStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace CobblestoneWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short CobblestoneWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 5660;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 5661;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 5662;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 5666;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 5667;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 5668;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 5672;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 5673;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 5674;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 5678;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 5679;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 5680;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 5684;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 5685;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 5686;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 5690;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 5691;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 5692;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 5696;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 5697;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 5698;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 5702;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 5703;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 5704;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 5708;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 5709;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 5710;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 5714;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 5715;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 5716;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 5720;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 5721;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 5722;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 5726;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 5727;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 5728;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 5732;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 5733;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 5734;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 5738;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 5739;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 5740;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 5744;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 5745;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 5746;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 5750;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 5751;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 5752;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 5756;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 5757;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 5758;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 5762;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 5763;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 5764;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 5768;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 5769;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 5770;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 5774;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 5775;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 5776;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 5780;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 5781;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 5782;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 5786;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 5787;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 5788;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 5792;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 5793;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 5794;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 5798;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 5799;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 5800;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 5804;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 5805;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 5806;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 5810;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 5811;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 5812;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 5816;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 5817;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 5818;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 5822;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 5823;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 5824;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 5828;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 5829;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 5830;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 5834;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 5835;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 5836;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 5840;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 5841;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 5842;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 5846;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 5847;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 5848;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 5852;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 5853;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 5854;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 5858;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 5859;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 5860;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 5864;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 5865;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 5866;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 5870;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 5871;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 5872;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 5876;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 5877;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 5878;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 5882;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 5883;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 5884;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 5888;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 5889;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 5890;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 5894;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 5895;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 5896;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 5900;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 5901;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 5902;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 5906;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 5907;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 5908;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 5912;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 5913;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 5914;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 5918;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 5919;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 5920;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 5924;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 5925;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 5926;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 5930;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 5931;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 5932;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 5936;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 5937;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 5938;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 5942;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 5943;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 5944;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 5948;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 5949;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 5950;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 5954;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 5955;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 5956;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 5960;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 5961;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 5962;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 5966;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 5967;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 5968;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 5972;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 5973;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 5974;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 5978;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 5979;
			return 5980;
		}
		short CobblestoneWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace Cobweb
	{
		constexpr short Cobweb()
		{
			return 1341;
		}
	}
	namespace Cocoa
	{
		constexpr short Cocoa(unsigned char Age, eBlockFace Facing)
		{
			if (Age == 0 && Facing == eBlockFace::BLOCK_FACE_ZM) return 5158;
			if (Age == 0 && Facing == eBlockFace::BLOCK_FACE_ZP) return 5159;
			if (Age == 0 && Facing == eBlockFace::BLOCK_FACE_XM) return 5160;
			if (Age == 0 && Facing == eBlockFace::BLOCK_FACE_XP) return 5161;
			if (Age == 1 && Facing == eBlockFace::BLOCK_FACE_ZM) return 5162;
			if (Age == 1 && Facing == eBlockFace::BLOCK_FACE_ZP) return 5163;
			if (Age == 1 && Facing == eBlockFace::BLOCK_FACE_XM) return 5164;
			if (Age == 1 && Facing == eBlockFace::BLOCK_FACE_XP) return 5165;
			if (Age == 2 && Facing == eBlockFace::BLOCK_FACE_ZM) return 5166;
			if (Age == 2 && Facing == eBlockFace::BLOCK_FACE_ZP) return 5167;
			if (Age == 2 && Facing == eBlockFace::BLOCK_FACE_XM) return 5168;
			return 5169;
		}
		short Cocoa();
		unsigned char Age(short ID);
		eBlockFace Facing(short ID);
	}
	namespace CommandBlock
	{
		constexpr short CommandBlock(bool Conditional, eBlockFace Facing)
		{
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_ZM) return 5644;
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_XP) return 5645;
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_ZP) return 5646;
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_XM) return 5647;
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_YP) return 5648;
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_YM) return 5649;
			if (!Conditional && Facing == eBlockFace::BLOCK_FACE_ZM) return 5650;
			if (!Conditional && Facing == eBlockFace::BLOCK_FACE_XP) return 5651;
			if (!Conditional && Facing == eBlockFace::BLOCK_FACE_ZP) return 5652;
			if (!Conditional && Facing == eBlockFace::BLOCK_FACE_XM) return 5653;
			if (!Conditional && Facing == eBlockFace::BLOCK_FACE_YP) return 5654;
			return 5655;
		}
		short CommandBlock();
		bool Conditional(short ID);
		eBlockFace Facing(short ID);
	}
	namespace Comparator
	{
		enum class Mode
		{
			Compare,
			Subtract
		};
		constexpr short Comparator(eBlockFace Facing, enum Mode Mode, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Mode == Mode::Compare && Powered) return 6678;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Mode == Mode::Compare && !Powered) return 6679;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Mode == Mode::Subtract && Powered) return 6680;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Mode == Mode::Subtract && !Powered) return 6681;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Mode == Mode::Compare && Powered) return 6682;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Mode == Mode::Compare && !Powered) return 6683;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Mode == Mode::Subtract && Powered) return 6684;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Mode == Mode::Subtract && !Powered) return 6685;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Mode == Mode::Compare && Powered) return 6686;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Mode == Mode::Compare && !Powered) return 6687;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Mode == Mode::Subtract && Powered) return 6688;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Mode == Mode::Subtract && !Powered) return 6689;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Mode == Mode::Compare && Powered) return 6690;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Mode == Mode::Compare && !Powered) return 6691;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Mode == Mode::Subtract && Powered) return 6692;
			return 6693;
		}
		short Comparator();
		eBlockFace Facing(short ID);
		enum Mode Mode(short ID);
		bool Powered(short ID);
	}
	namespace Composter
	{
		constexpr short Composter(unsigned char Level)
		{
			if (Level == 0) return 15751;
			if (Level == 1) return 15752;
			if (Level == 2) return 15753;
			if (Level == 3) return 15754;
			if (Level == 4) return 15755;
			if (Level == 5) return 15756;
			if (Level == 6) return 15757;
			if (Level == 7) return 15758;
			return 15759;
		}
		short Composter();
		unsigned char Level(short ID);
	}
	namespace Conduit
	{
		constexpr short Conduit()
		{
			return 9650;
		}
	}
	namespace Cornflower
	{
		constexpr short Cornflower()
		{
			return 1422;
		}
	}
	namespace CrackedNetherBricks
	{
		constexpr short CrackedNetherBricks()
		{
			return 17102;
		}
	}
	namespace CrackedPolishedBlackstoneBricks
	{
		constexpr short CrackedPolishedBlackstoneBricks()
		{
			return 16252;
		}
	}
	namespace CrackedStoneBricks
	{
		constexpr short CrackedStoneBricks()
		{
			return 4497;
		}
	}
	namespace CraftingTable
	{
		constexpr short CraftingTable()
		{
			return 3356;
		}
	}
	namespace CreeperHead
	{
		constexpr short CreeperHead(unsigned char Rotation)
		{
			if (Rotation == 0) return 6570;
			if (Rotation == 1) return 6571;
			if (Rotation == 2) return 6572;
			if (Rotation == 3) return 6573;
			if (Rotation == 4) return 6574;
			if (Rotation == 5) return 6575;
			if (Rotation == 6) return 6576;
			if (Rotation == 7) return 6577;
			if (Rotation == 8) return 6578;
			if (Rotation == 9) return 6579;
			if (Rotation == 10) return 6580;
			if (Rotation == 11) return 6581;
			if (Rotation == 12) return 6582;
			if (Rotation == 13) return 6583;
			if (Rotation == 14) return 6584;
			return 6585;
		}
		short CreeperHead();
		unsigned char Rotation(short ID);
	}
	namespace CreeperWallHead
	{
		constexpr short CreeperWallHead(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 6586;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 6587;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 6588;
			return 6589;
		}
		short CreeperWallHead();
		eBlockFace Facing(short ID);
	}
	namespace CrimsonButton
	{
		enum class Face
		{
			Floor,
			Wall,
			Ceiling
		};
		constexpr short CrimsonButton(enum Face Face, eBlockFace Facing, bool Powered)
		{
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 15479;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 15480;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 15481;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 15482;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 15483;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 15484;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 15485;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 15486;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 15487;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 15488;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 15489;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 15490;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 15491;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 15492;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 15493;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 15494;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 15495;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 15496;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 15497;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 15498;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 15499;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 15500;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 15501;
			return 15502;
		}
		short CrimsonButton();
		enum Face Face(short ID);
		eBlockFace Facing(short ID);
		bool Powered(short ID);
	}
	namespace CrimsonDoor
	{
		enum class Half
		{
			Upper,
			Lower
		};
		enum class Hinge
		{
			Left,
			Right
		};
		constexpr short CrimsonDoor(eBlockFace Facing, enum Half Half, enum Hinge Hinge, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 15527;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 15528;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 15529;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 15530;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 15531;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 15532;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 15533;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 15534;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 15535;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 15536;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 15537;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 15538;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 15539;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 15540;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 15541;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 15542;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 15543;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 15544;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 15545;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 15546;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 15547;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 15548;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 15549;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 15550;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 15551;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 15552;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 15553;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 15554;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 15555;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 15556;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 15557;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 15558;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 15559;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 15560;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 15561;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 15562;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 15563;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 15564;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 15565;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 15566;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 15567;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 15568;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 15569;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 15570;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 15571;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 15572;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 15573;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 15574;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 15575;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 15576;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 15577;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 15578;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 15579;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 15580;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 15581;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 15582;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 15583;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 15584;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 15585;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 15586;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 15587;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 15588;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 15589;
			return 15590;
		}
		short CrimsonDoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Hinge Hinge(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace CrimsonFence
	{
		constexpr short CrimsonFence(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 15065;
			if (East && North && South && !West) return 15066;
			if (East && North && !South && West) return 15069;
			if (East && North && !South && !West) return 15070;
			if (East && !North && South && West) return 15073;
			if (East && !North && South && !West) return 15074;
			if (East && !North && !South && West) return 15077;
			if (East && !North && !South && !West) return 15078;
			if (!East && North && South && West) return 15081;
			if (!East && North && South && !West) return 15082;
			if (!East && North && !South && West) return 15085;
			if (!East && North && !South && !West) return 15086;
			if (!East && !North && South && West) return 15089;
			if (!East && !North && South && !West) return 15090;
			if (!East && !North && !South && West) return 15093;
			return 15094;
		}
		short CrimsonFence();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace CrimsonFenceGate
	{
		constexpr short CrimsonFenceGate(eBlockFace Facing, bool InWall, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && Open && Powered) return 15255;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && Open && !Powered) return 15256;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && !Open && Powered) return 15257;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && !Open && !Powered) return 15258;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && Open && Powered) return 15259;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && Open && !Powered) return 15260;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && !Open && Powered) return 15261;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && !Open && !Powered) return 15262;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && Open && Powered) return 15263;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && Open && !Powered) return 15264;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && !Open && Powered) return 15265;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && !Open && !Powered) return 15266;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && Open && Powered) return 15267;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && Open && !Powered) return 15268;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && !Open && Powered) return 15269;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && !Open && !Powered) return 15270;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && Open && Powered) return 15271;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && Open && !Powered) return 15272;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && !Open && Powered) return 15273;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && !Open && !Powered) return 15274;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && Open && Powered) return 15275;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && Open && !Powered) return 15276;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && !Open && Powered) return 15277;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && !Open && !Powered) return 15278;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && Open && Powered) return 15279;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && Open && !Powered) return 15280;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && !Open && Powered) return 15281;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && !Open && !Powered) return 15282;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && Open && Powered) return 15283;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && Open && !Powered) return 15284;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && !Open && Powered) return 15285;
			return 15286;
		}
		short CrimsonFenceGate();
		eBlockFace Facing(short ID);
		bool InWall(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace CrimsonFungus
	{
		constexpr short CrimsonFungus()
		{
			return 14988;
		}
	}
	namespace CrimsonHyphae
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short CrimsonHyphae(enum Axis Axis)
		{
			if (Axis == Axis::X) return 14981;
			if (Axis == Axis::Y) return 14982;
			return 14983;
		}
		short CrimsonHyphae();
		enum Axis Axis(short ID);
	}
	namespace CrimsonNylium
	{
		constexpr short CrimsonNylium()
		{
			return 14987;
		}
	}
	namespace CrimsonPlanks
	{
		constexpr short CrimsonPlanks()
		{
			return 15045;
		}
	}
	namespace CrimsonPressurePlate
	{
		constexpr short CrimsonPressurePlate(bool Powered)
		{
			if (Powered) return 15059;
			return 15060;
		}
		short CrimsonPressurePlate();
		bool Powered(short ID);
	}
	namespace CrimsonRoots
	{
		constexpr short CrimsonRoots()
		{
			return 15044;
		}
	}
	namespace CrimsonSign
	{
		constexpr short CrimsonSign(unsigned char Rotation)
		{
			if (Rotation == 0) return 15656;
			if (Rotation == 1) return 15658;
			if (Rotation == 2) return 15660;
			if (Rotation == 3) return 15662;
			if (Rotation == 4) return 15664;
			if (Rotation == 5) return 15666;
			if (Rotation == 6) return 15668;
			if (Rotation == 7) return 15670;
			if (Rotation == 8) return 15672;
			if (Rotation == 9) return 15674;
			if (Rotation == 10) return 15676;
			if (Rotation == 11) return 15678;
			if (Rotation == 12) return 15680;
			if (Rotation == 13) return 15682;
			if (Rotation == 14) return 15684;
			return 15686;
		}
		short CrimsonSign();
		unsigned char Rotation(short ID);
	}
	namespace CrimsonSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short CrimsonSlab(enum Type Type)
		{
			if (Type == Type::Top) return 15048;
			if (Type == Type::Bottom) return 15050;
			return 15052;
		}
		short CrimsonSlab();
		enum Type Type(short ID);
	}
	namespace CrimsonStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short CrimsonStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 15320;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 15322;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 15324;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 15326;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 15328;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 15330;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 15332;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 15334;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 15336;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 15338;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 15340;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 15342;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 15344;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 15346;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 15348;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 15350;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 15352;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 15354;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 15356;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 15358;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 15360;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 15362;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 15364;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 15366;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 15368;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 15370;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 15372;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 15374;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 15376;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 15378;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 15380;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 15382;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 15384;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 15386;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 15388;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 15390;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 15392;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 15394;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 15396;
			return 15398;
		}
		short CrimsonStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace CrimsonStem
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short CrimsonStem(enum Axis Axis)
		{
			if (Axis == Axis::X) return 14975;
			if (Axis == Axis::Y) return 14976;
			return 14977;
		}
		short CrimsonStem();
		enum Axis Axis(short ID);
	}
	namespace CrimsonTrapdoor
	{
		enum class Half
		{
			Top,
			Bottom
		};
		constexpr short CrimsonTrapdoor(eBlockFace Facing, enum Half Half, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && Powered) return 15128;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && !Powered) return 15130;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && Powered) return 15132;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && !Powered) return 15134;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && Powered) return 15136;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && !Powered) return 15138;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && Powered) return 15140;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && !Powered) return 15142;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && Powered) return 15144;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && !Powered) return 15146;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && Powered) return 15148;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && !Powered) return 15150;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && Powered) return 15152;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && !Powered) return 15154;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && Powered) return 15156;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && !Powered) return 15158;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && Powered) return 15160;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && !Powered) return 15162;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && Powered) return 15164;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && !Powered) return 15166;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && Powered) return 15168;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && !Powered) return 15170;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && Powered) return 15172;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && !Powered) return 15174;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && Powered) return 15176;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && !Powered) return 15178;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && Powered) return 15180;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && !Powered) return 15182;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && Powered) return 15184;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && !Powered) return 15186;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && !Open && Powered) return 15188;
			return 15190;
		}
		short CrimsonTrapdoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace CrimsonWallSign
	{
		constexpr short CrimsonWallSign(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 15720;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 15722;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 15724;
			return 15726;
		}
		short CrimsonWallSign();
		eBlockFace Facing(short ID);
	}
	namespace CryingObsidian
	{
		constexpr short CryingObsidian()
		{
			return 15828;
		}
	}
	namespace CutRedSandstone
	{
		constexpr short CutRedSandstone()
		{
			return 8219;
		}
	}
	namespace CutRedSandstoneSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short CutRedSandstoneSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8403;
			if (Type == Type::Bottom) return 8405;
			return 8407;
		}
		short CutRedSandstoneSlab();
		enum Type Type(short ID);
	}
	namespace CutSandstone
	{
		constexpr short CutSandstone()
		{
			return 248;
		}
	}
	namespace CutSandstoneSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short CutSandstoneSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8355;
			if (Type == Type::Bottom) return 8357;
			return 8359;
		}
		short CutSandstoneSlab();
		enum Type Type(short ID);
	}
	namespace CyanBanner
	{
		constexpr short CyanBanner(unsigned char Rotation)
		{
			if (Rotation == 0) return 8041;
			if (Rotation == 1) return 8042;
			if (Rotation == 2) return 8043;
			if (Rotation == 3) return 8044;
			if (Rotation == 4) return 8045;
			if (Rotation == 5) return 8046;
			if (Rotation == 6) return 8047;
			if (Rotation == 7) return 8048;
			if (Rotation == 8) return 8049;
			if (Rotation == 9) return 8050;
			if (Rotation == 10) return 8051;
			if (Rotation == 11) return 8052;
			if (Rotation == 12) return 8053;
			if (Rotation == 13) return 8054;
			if (Rotation == 14) return 8055;
			return 8056;
		}
		short CyanBanner();
		unsigned char Rotation(short ID);
	}
	namespace CyanBed
	{
		enum class Part
		{
			Head,
			Foot
		};
		constexpr short CyanBed(eBlockFace Facing, bool Occupied, enum Part Part)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Head) return 1193;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Foot) return 1194;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Head) return 1195;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Foot) return 1196;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Head) return 1197;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Foot) return 1198;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Head) return 1199;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Foot) return 1200;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Head) return 1201;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Foot) return 1202;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Head) return 1203;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Foot) return 1204;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Head) return 1205;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Foot) return 1206;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Occupied && Part == Part::Head) return 1207;
			return 1208;
		}
		short CyanBed();
		eBlockFace Facing(short ID);
		bool Occupied(short ID);
		enum Part Part(short ID);
	}
	namespace CyanCarpet
	{
		constexpr short CyanCarpet()
		{
			return 7875;
		}
	}
	namespace CyanConcrete
	{
		constexpr short CyanConcrete()
		{
			return 9447;
		}
	}
	namespace CyanConcretePowder
	{
		constexpr short CyanConcretePowder()
		{
			return 9463;
		}
	}
	namespace CyanGlazedTerracotta
	{
		constexpr short CyanGlazedTerracotta(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9410;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9411;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9412;
			return 9413;
		}
		short CyanGlazedTerracotta();
		eBlockFace Facing(short ID);
	}
	namespace CyanShulkerBox
	{
		constexpr short CyanShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9332;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9333;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9334;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9335;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9336;
			return 9337;
		}
		short CyanShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace CyanStainedGlass
	{
		constexpr short CyanStainedGlass()
		{
			return 4104;
		}
	}
	namespace CyanStainedGlassPane
	{
		constexpr short CyanStainedGlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 7153;
			if (East && North && South && !West) return 7154;
			if (East && North && !South && West) return 7157;
			if (East && North && !South && !West) return 7158;
			if (East && !North && South && West) return 7161;
			if (East && !North && South && !West) return 7162;
			if (East && !North && !South && West) return 7165;
			if (East && !North && !South && !West) return 7166;
			if (!East && North && South && West) return 7169;
			if (!East && North && South && !West) return 7170;
			if (!East && North && !South && West) return 7173;
			if (!East && North && !South && !West) return 7174;
			if (!East && !North && South && West) return 7177;
			if (!East && !North && South && !West) return 7178;
			if (!East && !North && !South && West) return 7181;
			return 7182;
		}
		short CyanStainedGlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace CyanTerracotta
	{
		constexpr short CyanTerracotta()
		{
			return 6856;
		}
	}
	namespace CyanWallBanner
	{
		constexpr short CyanWallBanner(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 8189;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 8190;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 8191;
			return 8192;
		}
		short CyanWallBanner();
		eBlockFace Facing(short ID);
	}
	namespace CyanWool
	{
		constexpr short CyanWool()
		{
			return 1393;
		}
	}
	namespace DamagedAnvil
	{
		constexpr short DamagedAnvil(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 6618;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 6619;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 6620;
			return 6621;
		}
		short DamagedAnvil();
		eBlockFace Facing(short ID);
	}
	namespace Dandelion
	{
		constexpr short Dandelion()
		{
			return 1412;
		}
	}
	namespace DarkOakButton
	{
		enum class Face
		{
			Floor,
			Wall,
			Ceiling
		};
		constexpr short DarkOakButton(enum Face Face, eBlockFace Facing, bool Powered)
		{
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6466;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6467;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6468;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6469;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6470;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6471;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6472;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 6473;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6474;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6475;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6476;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6477;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6478;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6479;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6480;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 6481;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6482;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6483;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6484;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6485;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6486;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6487;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6488;
			return 6489;
		}
		short DarkOakButton();
		enum Face Face(short ID);
		eBlockFace Facing(short ID);
		bool Powered(short ID);
	}
	namespace DarkOakDoor
	{
		enum class Half
		{
			Upper,
			Lower
		};
		enum class Hinge
		{
			Left,
			Right
		};
		constexpr short DarkOakDoor(eBlockFace Facing, enum Half Half, enum Hinge Hinge, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8994;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8995;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8996;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8997;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8998;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8999;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 9000;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 9001;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 9002;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 9003;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 9004;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 9005;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 9006;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 9007;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 9008;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 9009;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 9010;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 9011;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 9012;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 9013;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 9014;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 9015;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 9016;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 9017;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 9018;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 9019;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 9020;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 9021;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 9022;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 9023;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 9024;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 9025;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 9026;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 9027;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 9028;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 9029;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 9030;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 9031;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 9032;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 9033;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 9034;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 9035;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 9036;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 9037;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 9038;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 9039;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 9040;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 9041;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 9042;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 9043;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 9044;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 9045;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 9046;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 9047;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 9048;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 9049;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 9050;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 9051;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 9052;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 9053;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 9054;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 9055;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 9056;
			return 9057;
		}
		short DarkOakDoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Hinge Hinge(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace DarkOakFence
	{
		constexpr short DarkOakFence(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 8708;
			if (East && North && South && !West) return 8709;
			if (East && North && !South && West) return 8712;
			if (East && North && !South && !West) return 8713;
			if (East && !North && South && West) return 8716;
			if (East && !North && South && !West) return 8717;
			if (East && !North && !South && West) return 8720;
			if (East && !North && !South && !West) return 8721;
			if (!East && North && South && West) return 8724;
			if (!East && North && South && !West) return 8725;
			if (!East && North && !South && West) return 8728;
			if (!East && North && !South && !West) return 8729;
			if (!East && !North && South && West) return 8732;
			if (!East && !North && South && !West) return 8733;
			if (!East && !North && !South && West) return 8736;
			return 8737;
		}
		short DarkOakFence();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace DarkOakFenceGate
	{
		constexpr short DarkOakFenceGate(eBlockFace Facing, bool InWall, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && Open && Powered) return 8546;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && Open && !Powered) return 8547;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && !Open && Powered) return 8548;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && !Open && !Powered) return 8549;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && Open && Powered) return 8550;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && Open && !Powered) return 8551;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && !Open && Powered) return 8552;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && !Open && !Powered) return 8553;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && Open && Powered) return 8554;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && Open && !Powered) return 8555;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && !Open && Powered) return 8556;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && !Open && !Powered) return 8557;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && Open && Powered) return 8558;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && Open && !Powered) return 8559;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && !Open && Powered) return 8560;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && !Open && !Powered) return 8561;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && Open && Powered) return 8562;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && Open && !Powered) return 8563;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && !Open && Powered) return 8564;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && !Open && !Powered) return 8565;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && Open && Powered) return 8566;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && Open && !Powered) return 8567;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && !Open && Powered) return 8568;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && !Open && !Powered) return 8569;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && Open && Powered) return 8570;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && Open && !Powered) return 8571;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && !Open && Powered) return 8572;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && !Open && !Powered) return 8573;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && Open && Powered) return 8574;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && Open && !Powered) return 8575;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && !Open && Powered) return 8576;
			return 8577;
		}
		short DarkOakFenceGate();
		eBlockFace Facing(short ID);
		bool InWall(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace DarkOakLeaves
	{
		constexpr short DarkOakLeaves(unsigned char Distance, bool Persistent)
		{
			if (Distance == 1 && Persistent) return 215;
			if (Distance == 1 && !Persistent) return 216;
			if (Distance == 2 && Persistent) return 217;
			if (Distance == 2 && !Persistent) return 218;
			if (Distance == 3 && Persistent) return 219;
			if (Distance == 3 && !Persistent) return 220;
			if (Distance == 4 && Persistent) return 221;
			if (Distance == 4 && !Persistent) return 222;
			if (Distance == 5 && Persistent) return 223;
			if (Distance == 5 && !Persistent) return 224;
			if (Distance == 6 && Persistent) return 225;
			if (Distance == 6 && !Persistent) return 226;
			if (Distance == 7 && Persistent) return 227;
			return 228;
		}
		short DarkOakLeaves();
		unsigned char Distance(short ID);
		bool Persistent(short ID);
	}
	namespace DarkOakLog
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short DarkOakLog(enum Axis Axis)
		{
			if (Axis == Axis::X) return 88;
			if (Axis == Axis::Y) return 89;
			return 90;
		}
		short DarkOakLog();
		enum Axis Axis(short ID);
	}
	namespace DarkOakPlanks
	{
		constexpr short DarkOakPlanks()
		{
			return 20;
		}
	}
	namespace DarkOakPressurePlate
	{
		constexpr short DarkOakPressurePlate(bool Powered)
		{
			if (Powered) return 3883;
			return 3884;
		}
		short DarkOakPressurePlate();
		bool Powered(short ID);
	}
	namespace DarkOakSapling
	{
		constexpr short DarkOakSapling(unsigned char Stage)
		{
			if (Stage == 0) return 31;
			return 32;
		}
		short DarkOakSapling();
		unsigned char Stage(short ID);
	}
	namespace DarkOakSign
	{
		constexpr short DarkOakSign(unsigned char Rotation)
		{
			if (Rotation == 0) return 3542;
			if (Rotation == 1) return 3544;
			if (Rotation == 2) return 3546;
			if (Rotation == 3) return 3548;
			if (Rotation == 4) return 3550;
			if (Rotation == 5) return 3552;
			if (Rotation == 6) return 3554;
			if (Rotation == 7) return 3556;
			if (Rotation == 8) return 3558;
			if (Rotation == 9) return 3560;
			if (Rotation == 10) return 3562;
			if (Rotation == 11) return 3564;
			if (Rotation == 12) return 3566;
			if (Rotation == 13) return 3568;
			if (Rotation == 14) return 3570;
			return 3572;
		}
		short DarkOakSign();
		unsigned char Rotation(short ID);
	}
	namespace DarkOakSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short DarkOakSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8331;
			if (Type == Type::Bottom) return 8333;
			return 8335;
		}
		short DarkOakSlab();
		enum Type Type(short ID);
	}
	namespace DarkOakStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short DarkOakStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 7456;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 7458;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 7460;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 7462;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 7464;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 7466;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7468;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 7470;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7472;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 7474;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 7476;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 7478;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 7480;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 7482;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 7484;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 7486;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7488;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 7490;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7492;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 7494;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 7496;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 7498;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 7500;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 7502;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 7504;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 7506;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7508;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 7510;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7512;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 7514;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 7516;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 7518;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 7520;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 7522;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 7524;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 7526;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7528;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 7530;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7532;
			return 7534;
		}
		short DarkOakStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace DarkOakTrapdoor
	{
		enum class Half
		{
			Top,
			Bottom
		};
		constexpr short DarkOakTrapdoor(eBlockFace Facing, enum Half Half, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && Powered) return 4432;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && !Powered) return 4434;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && Powered) return 4436;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && !Powered) return 4438;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && Powered) return 4440;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && !Powered) return 4442;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && Powered) return 4444;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && !Powered) return 4446;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && Powered) return 4448;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && !Powered) return 4450;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && Powered) return 4452;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && !Powered) return 4454;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && Powered) return 4456;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && !Powered) return 4458;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && Powered) return 4460;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && !Powered) return 4462;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && Powered) return 4464;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && !Powered) return 4466;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && Powered) return 4468;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && !Powered) return 4470;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && Powered) return 4472;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && !Powered) return 4474;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && Powered) return 4476;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && !Powered) return 4478;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && Powered) return 4480;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && !Powered) return 4482;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && Powered) return 4484;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && !Powered) return 4486;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && Powered) return 4488;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && !Powered) return 4490;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && !Open && Powered) return 4492;
			return 4494;
		}
		short DarkOakTrapdoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace DarkOakWallSign
	{
		constexpr short DarkOakWallSign(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 3776;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 3778;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 3780;
			return 3782;
		}
		short DarkOakWallSign();
		eBlockFace Facing(short ID);
	}
	namespace DarkOakWood
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short DarkOakWood(enum Axis Axis)
		{
			if (Axis == Axis::X) return 124;
			if (Axis == Axis::Y) return 125;
			return 126;
		}
		short DarkOakWood();
		enum Axis Axis(short ID);
	}
	namespace DarkPrismarine
	{
		constexpr short DarkPrismarine()
		{
			return 7603;
		}
	}
	namespace DarkPrismarineSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short DarkPrismarineSlab(enum Type Type)
		{
			if (Type == Type::Top) return 7857;
			if (Type == Type::Bottom) return 7859;
			return 7861;
		}
		short DarkPrismarineSlab();
		enum Type Type(short ID);
	}
	namespace DarkPrismarineStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short DarkPrismarineStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 7765;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 7767;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 7769;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 7771;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 7773;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 7775;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7777;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 7779;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7781;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 7783;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 7785;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 7787;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 7789;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 7791;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 7793;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 7795;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7797;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 7799;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7801;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 7803;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 7805;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 7807;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 7809;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 7811;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 7813;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 7815;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7817;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 7819;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7821;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 7823;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 7825;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 7827;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 7829;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 7831;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 7833;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 7835;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7837;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 7839;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7841;
			return 7843;
		}
		short DarkPrismarineStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace DaylightDetector
	{
		constexpr short DaylightDetector(bool Inverted, unsigned char Power)
		{
			if (Inverted && Power == 0) return 6694;
			if (Inverted && Power == 1) return 6695;
			if (Inverted && Power == 2) return 6696;
			if (Inverted && Power == 3) return 6697;
			if (Inverted && Power == 4) return 6698;
			if (Inverted && Power == 5) return 6699;
			if (Inverted && Power == 6) return 6700;
			if (Inverted && Power == 7) return 6701;
			if (Inverted && Power == 8) return 6702;
			if (Inverted && Power == 9) return 6703;
			if (Inverted && Power == 10) return 6704;
			if (Inverted && Power == 11) return 6705;
			if (Inverted && Power == 12) return 6706;
			if (Inverted && Power == 13) return 6707;
			if (Inverted && Power == 14) return 6708;
			if (Inverted && Power == 15) return 6709;
			if (!Inverted && Power == 0) return 6710;
			if (!Inverted && Power == 1) return 6711;
			if (!Inverted && Power == 2) return 6712;
			if (!Inverted && Power == 3) return 6713;
			if (!Inverted && Power == 4) return 6714;
			if (!Inverted && Power == 5) return 6715;
			if (!Inverted && Power == 6) return 6716;
			if (!Inverted && Power == 7) return 6717;
			if (!Inverted && Power == 8) return 6718;
			if (!Inverted && Power == 9) return 6719;
			if (!Inverted && Power == 10) return 6720;
			if (!Inverted && Power == 11) return 6721;
			if (!Inverted && Power == 12) return 6722;
			if (!Inverted && Power == 13) return 6723;
			if (!Inverted && Power == 14) return 6724;
			return 6725;
		}
		short DaylightDetector();
		bool Inverted(short ID);
		unsigned char Power(short ID);
	}
	namespace DeadBrainCoral
	{
		constexpr short DeadBrainCoral()
		{
			return 9523;
		}
	}
	namespace DeadBrainCoralBlock
	{
		constexpr short DeadBrainCoralBlock()
		{
			return 9511;
		}
	}
	namespace DeadBrainCoralFan
	{
		constexpr short DeadBrainCoralFan()
		{
			return 9543;
		}
	}
	namespace DeadBrainCoralWallFan
	{
		constexpr short DeadBrainCoralWallFan(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9569;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9571;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9573;
			return 9575;
		}
		short DeadBrainCoralWallFan();
		eBlockFace Facing(short ID);
	}
	namespace DeadBubbleCoral
	{
		constexpr short DeadBubbleCoral()
		{
			return 9525;
		}
	}
	namespace DeadBubbleCoralBlock
	{
		constexpr short DeadBubbleCoralBlock()
		{
			return 9512;
		}
	}
	namespace DeadBubbleCoralFan
	{
		constexpr short DeadBubbleCoralFan()
		{
			return 9545;
		}
	}
	namespace DeadBubbleCoralWallFan
	{
		constexpr short DeadBubbleCoralWallFan(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9577;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9579;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9581;
			return 9583;
		}
		short DeadBubbleCoralWallFan();
		eBlockFace Facing(short ID);
	}
	namespace DeadBush
	{
		constexpr short DeadBush()
		{
			return 1344;
		}
	}
	namespace DeadFireCoral
	{
		constexpr short DeadFireCoral()
		{
			return 9527;
		}
	}
	namespace DeadFireCoralBlock
	{
		constexpr short DeadFireCoralBlock()
		{
			return 9513;
		}
	}
	namespace DeadFireCoralFan
	{
		constexpr short DeadFireCoralFan()
		{
			return 9547;
		}
	}
	namespace DeadFireCoralWallFan
	{
		constexpr short DeadFireCoralWallFan(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9585;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9587;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9589;
			return 9591;
		}
		short DeadFireCoralWallFan();
		eBlockFace Facing(short ID);
	}
	namespace DeadHornCoral
	{
		constexpr short DeadHornCoral()
		{
			return 9529;
		}
	}
	namespace DeadHornCoralBlock
	{
		constexpr short DeadHornCoralBlock()
		{
			return 9514;
		}
	}
	namespace DeadHornCoralFan
	{
		constexpr short DeadHornCoralFan()
		{
			return 9549;
		}
	}
	namespace DeadHornCoralWallFan
	{
		constexpr short DeadHornCoralWallFan(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9593;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9595;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9597;
			return 9599;
		}
		short DeadHornCoralWallFan();
		eBlockFace Facing(short ID);
	}
	namespace DeadTubeCoral
	{
		constexpr short DeadTubeCoral()
		{
			return 9521;
		}
	}
	namespace DeadTubeCoralBlock
	{
		constexpr short DeadTubeCoralBlock()
		{
			return 9510;
		}
	}
	namespace DeadTubeCoralFan
	{
		constexpr short DeadTubeCoralFan()
		{
			return 9541;
		}
	}
	namespace DeadTubeCoralWallFan
	{
		constexpr short DeadTubeCoralWallFan(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9561;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9563;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9565;
			return 9567;
		}
		short DeadTubeCoralWallFan();
		eBlockFace Facing(short ID);
	}
	namespace DetectorRail
	{
		enum class Shape
		{
			NorthSouth,
			EastWest,
			AscendingEast,
			AscendingWest,
			AscendingNorth,
			AscendingSouth
		};
		constexpr short DetectorRail(bool Powered, enum Shape Shape)
		{
			if (Powered && Shape == Shape::NorthSouth) return 1317;
			if (Powered && Shape == Shape::EastWest) return 1318;
			if (Powered && Shape == Shape::AscendingEast) return 1319;
			if (Powered && Shape == Shape::AscendingWest) return 1320;
			if (Powered && Shape == Shape::AscendingNorth) return 1321;
			if (Powered && Shape == Shape::AscendingSouth) return 1322;
			if (!Powered && Shape == Shape::NorthSouth) return 1323;
			if (!Powered && Shape == Shape::EastWest) return 1324;
			if (!Powered && Shape == Shape::AscendingEast) return 1325;
			if (!Powered && Shape == Shape::AscendingWest) return 1326;
			if (!Powered && Shape == Shape::AscendingNorth) return 1327;
			return 1328;
		}
		short DetectorRail();
		bool Powered(short ID);
		enum Shape Shape(short ID);
	}
	namespace DiamondBlock
	{
		constexpr short DiamondBlock()
		{
			return 3355;
		}
	}
	namespace DiamondOre
	{
		constexpr short DiamondOre()
		{
			return 3354;
		}
	}
	namespace Diorite
	{
		constexpr short Diorite()
		{
			return 4;
		}
	}
	namespace DioriteSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short DioriteSlab(enum Type Type)
		{
			if (Type == Type::Top) return 10862;
			if (Type == Type::Bottom) return 10864;
			return 10866;
		}
		short DioriteSlab();
		enum Type Type(short ID);
	}
	namespace DioriteStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short DioriteStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 10710;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 10712;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 10714;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 10716;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 10718;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 10720;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10722;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10724;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10726;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10728;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 10730;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 10732;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 10734;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 10736;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 10738;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 10740;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10742;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10744;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10746;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 10748;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 10750;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 10752;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 10754;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 10756;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 10758;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 10760;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10762;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10764;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10766;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10768;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 10770;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 10772;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 10774;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 10776;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 10778;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 10780;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10782;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10784;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10786;
			return 10788;
		}
		short DioriteStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace DioriteWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short DioriteWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 14434;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 14435;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 14436;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 14440;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 14441;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 14442;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 14446;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 14447;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 14448;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 14452;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 14453;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 14454;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 14458;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 14459;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 14460;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 14464;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 14465;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 14466;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 14470;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 14471;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 14472;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 14476;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 14477;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 14478;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 14482;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 14483;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 14484;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 14488;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 14489;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 14490;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 14494;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 14495;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 14496;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 14500;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 14501;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 14502;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 14506;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 14507;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 14508;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 14512;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 14513;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 14514;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 14518;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 14519;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 14520;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 14524;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 14525;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 14526;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 14530;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 14531;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 14532;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 14536;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 14537;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 14538;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 14542;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 14543;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 14544;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 14548;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 14549;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 14550;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 14554;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 14555;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 14556;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 14560;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 14561;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 14562;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 14566;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 14567;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 14568;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 14572;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 14573;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 14574;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 14578;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 14579;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 14580;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 14584;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 14585;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 14586;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 14590;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 14591;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 14592;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 14596;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 14597;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 14598;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 14602;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 14603;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 14604;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 14608;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 14609;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 14610;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 14614;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 14615;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 14616;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 14620;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 14621;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 14622;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 14626;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 14627;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 14628;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 14632;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 14633;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 14634;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 14638;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 14639;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 14640;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 14644;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 14645;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 14646;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 14650;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 14651;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 14652;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 14656;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 14657;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 14658;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 14662;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 14663;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 14664;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 14668;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 14669;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 14670;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 14674;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 14675;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 14676;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 14680;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 14681;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 14682;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 14686;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 14687;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 14688;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 14692;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 14693;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 14694;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 14698;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 14699;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 14700;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 14704;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 14705;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 14706;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 14710;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 14711;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 14712;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 14716;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 14717;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 14718;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 14722;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 14723;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 14724;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 14728;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 14729;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 14730;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 14734;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 14735;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 14736;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 14740;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 14741;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 14742;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 14746;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 14747;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 14748;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 14752;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 14753;
			return 14754;
		}
		short DioriteWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace Dirt
	{
		constexpr short Dirt()
		{
			return 10;
		}
	}
	namespace Dispenser
	{
		constexpr short Dispenser(eBlockFace Facing, bool Triggered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Triggered) return 234;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Triggered) return 235;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Triggered) return 236;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Triggered) return 237;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Triggered) return 238;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Triggered) return 239;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Triggered) return 240;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Triggered) return 241;
			if (Facing == eBlockFace::BLOCK_FACE_YP && Triggered) return 242;
			if (Facing == eBlockFace::BLOCK_FACE_YP && !Triggered) return 243;
			if (Facing == eBlockFace::BLOCK_FACE_YM && Triggered) return 244;
			return 245;
		}
		short Dispenser();
		eBlockFace Facing(short ID);
		bool Triggered(short ID);
	}
	namespace DragonEgg
	{
		constexpr short DragonEgg()
		{
			return 5155;
		}
	}
	namespace DragonHead
	{
		constexpr short DragonHead(unsigned char Rotation)
		{
			if (Rotation == 0) return 6590;
			if (Rotation == 1) return 6591;
			if (Rotation == 2) return 6592;
			if (Rotation == 3) return 6593;
			if (Rotation == 4) return 6594;
			if (Rotation == 5) return 6595;
			if (Rotation == 6) return 6596;
			if (Rotation == 7) return 6597;
			if (Rotation == 8) return 6598;
			if (Rotation == 9) return 6599;
			if (Rotation == 10) return 6600;
			if (Rotation == 11) return 6601;
			if (Rotation == 12) return 6602;
			if (Rotation == 13) return 6603;
			if (Rotation == 14) return 6604;
			return 6605;
		}
		short DragonHead();
		unsigned char Rotation(short ID);
	}
	namespace DragonWallHead
	{
		constexpr short DragonWallHead(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 6606;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 6607;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 6608;
			return 6609;
		}
		short DragonWallHead();
		eBlockFace Facing(short ID);
	}
	namespace DriedKelpBlock
	{
		constexpr short DriedKelpBlock()
		{
			return 9497;
		}
	}
	namespace Dropper
	{
		constexpr short Dropper(eBlockFace Facing, bool Triggered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Triggered) return 6835;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Triggered) return 6836;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Triggered) return 6837;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Triggered) return 6838;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Triggered) return 6839;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Triggered) return 6840;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Triggered) return 6841;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Triggered) return 6842;
			if (Facing == eBlockFace::BLOCK_FACE_YP && Triggered) return 6843;
			if (Facing == eBlockFace::BLOCK_FACE_YP && !Triggered) return 6844;
			if (Facing == eBlockFace::BLOCK_FACE_YM && Triggered) return 6845;
			return 6846;
		}
		short Dropper();
		eBlockFace Facing(short ID);
		bool Triggered(short ID);
	}
	namespace EmeraldBlock
	{
		constexpr short EmeraldBlock()
		{
			return 5403;
		}
	}
	namespace EmeraldOre
	{
		constexpr short EmeraldOre()
		{
			return 5250;
		}
	}
	namespace EnchantingTable
	{
		constexpr short EnchantingTable()
		{
			return 5132;
		}
	}
	namespace EndGateway
	{
		constexpr short EndGateway()
		{
			return 9224;
		}
	}
	namespace EndPortal
	{
		constexpr short EndPortal()
		{
			return 5145;
		}
	}
	namespace EndPortalFrame
	{
		constexpr short EndPortalFrame(bool Eye, eBlockFace Facing)
		{
			if (Eye && Facing == eBlockFace::BLOCK_FACE_ZM) return 5146;
			if (Eye && Facing == eBlockFace::BLOCK_FACE_ZP) return 5147;
			if (Eye && Facing == eBlockFace::BLOCK_FACE_XM) return 5148;
			if (Eye && Facing == eBlockFace::BLOCK_FACE_XP) return 5149;
			if (!Eye && Facing == eBlockFace::BLOCK_FACE_ZM) return 5150;
			if (!Eye && Facing == eBlockFace::BLOCK_FACE_ZP) return 5151;
			if (!Eye && Facing == eBlockFace::BLOCK_FACE_XM) return 5152;
			return 5153;
		}
		short EndPortalFrame();
		bool Eye(short ID);
		eBlockFace Facing(short ID);
	}
	namespace EndRod
	{
		constexpr short EndRod(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9058;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9059;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9060;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9061;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9062;
			return 9063;
		}
		short EndRod();
		eBlockFace Facing(short ID);
	}
	namespace EndStone
	{
		constexpr short EndStone()
		{
			return 5154;
		}
	}
	namespace EndStoneBrickSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short EndStoneBrickSlab(enum Type Type)
		{
			if (Type == Type::Top) return 10820;
			if (Type == Type::Bottom) return 10822;
			return 10824;
		}
		short EndStoneBrickSlab();
		enum Type Type(short ID);
	}
	namespace EndStoneBrickStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short EndStoneBrickStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 10070;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 10072;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 10074;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 10076;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 10078;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 10080;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10082;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10084;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10086;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10088;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 10090;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 10092;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 10094;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 10096;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 10098;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 10100;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10102;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10104;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10106;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 10108;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 10110;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 10112;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 10114;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 10116;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 10118;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 10120;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10122;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10124;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10126;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10128;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 10130;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 10132;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 10134;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 10136;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 10138;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 10140;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10142;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10144;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10146;
			return 10148;
		}
		short EndStoneBrickStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace EndStoneBrickWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short EndStoneBrickWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 14110;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 14111;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 14112;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 14116;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 14117;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 14118;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 14122;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 14123;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 14124;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 14128;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 14129;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 14130;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 14134;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 14135;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 14136;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 14140;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 14141;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 14142;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 14146;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 14147;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 14148;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 14152;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 14153;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 14154;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 14158;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 14159;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 14160;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 14164;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 14165;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 14166;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 14170;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 14171;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 14172;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 14176;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 14177;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 14178;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 14182;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 14183;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 14184;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 14188;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 14189;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 14190;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 14194;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 14195;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 14196;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 14200;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 14201;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 14202;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 14206;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 14207;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 14208;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 14212;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 14213;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 14214;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 14218;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 14219;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 14220;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 14224;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 14225;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 14226;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 14230;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 14231;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 14232;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 14236;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 14237;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 14238;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 14242;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 14243;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 14244;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 14248;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 14249;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 14250;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 14254;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 14255;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 14256;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 14260;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 14261;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 14262;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 14266;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 14267;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 14268;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 14272;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 14273;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 14274;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 14278;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 14279;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 14280;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 14284;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 14285;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 14286;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 14290;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 14291;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 14292;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 14296;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 14297;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 14298;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 14302;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 14303;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 14304;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 14308;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 14309;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 14310;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 14314;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 14315;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 14316;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 14320;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 14321;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 14322;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 14326;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 14327;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 14328;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 14332;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 14333;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 14334;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 14338;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 14339;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 14340;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 14344;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 14345;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 14346;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 14350;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 14351;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 14352;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 14356;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 14357;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 14358;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 14362;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 14363;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 14364;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 14368;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 14369;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 14370;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 14374;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 14375;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 14376;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 14380;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 14381;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 14382;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 14386;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 14387;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 14388;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 14392;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 14393;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 14394;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 14398;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 14399;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 14400;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 14404;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 14405;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 14406;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 14410;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 14411;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 14412;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 14416;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 14417;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 14418;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 14422;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 14423;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 14424;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 14428;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 14429;
			return 14430;
		}
		short EndStoneBrickWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace EndStoneBricks
	{
		constexpr short EndStoneBricks()
		{
			return 9218;
		}
	}
	namespace EnderChest
	{
		constexpr short EnderChest(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 5252;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 5254;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 5256;
			return 5258;
		}
		short EnderChest();
		eBlockFace Facing(short ID);
	}
	namespace Farmland
	{
		constexpr short Farmland(unsigned char Moisture)
		{
			if (Moisture == 0) return 3365;
			if (Moisture == 1) return 3366;
			if (Moisture == 2) return 3367;
			if (Moisture == 3) return 3368;
			if (Moisture == 4) return 3369;
			if (Moisture == 5) return 3370;
			if (Moisture == 6) return 3371;
			return 3372;
		}
		short Farmland();
		unsigned char Moisture(short ID);
	}
	namespace Fern
	{
		constexpr short Fern()
		{
			return 1343;
		}
	}
	namespace Fire
	{
		constexpr short Fire(unsigned char Age, bool East, bool North, bool South, bool Up, bool West)
		{
			if (Age == 0 && East && North && South && Up && West) return 1440;
			if (Age == 0 && East && North && South && Up && !West) return 1441;
			if (Age == 0 && East && North && South && !Up && West) return 1442;
			if (Age == 0 && East && North && South && !Up && !West) return 1443;
			if (Age == 0 && East && North && !South && Up && West) return 1444;
			if (Age == 0 && East && North && !South && Up && !West) return 1445;
			if (Age == 0 && East && North && !South && !Up && West) return 1446;
			if (Age == 0 && East && North && !South && !Up && !West) return 1447;
			if (Age == 0 && East && !North && South && Up && West) return 1448;
			if (Age == 0 && East && !North && South && Up && !West) return 1449;
			if (Age == 0 && East && !North && South && !Up && West) return 1450;
			if (Age == 0 && East && !North && South && !Up && !West) return 1451;
			if (Age == 0 && East && !North && !South && Up && West) return 1452;
			if (Age == 0 && East && !North && !South && Up && !West) return 1453;
			if (Age == 0 && East && !North && !South && !Up && West) return 1454;
			if (Age == 0 && East && !North && !South && !Up && !West) return 1455;
			if (Age == 0 && !East && North && South && Up && West) return 1456;
			if (Age == 0 && !East && North && South && Up && !West) return 1457;
			if (Age == 0 && !East && North && South && !Up && West) return 1458;
			if (Age == 0 && !East && North && South && !Up && !West) return 1459;
			if (Age == 0 && !East && North && !South && Up && West) return 1460;
			if (Age == 0 && !East && North && !South && Up && !West) return 1461;
			if (Age == 0 && !East && North && !South && !Up && West) return 1462;
			if (Age == 0 && !East && North && !South && !Up && !West) return 1463;
			if (Age == 0 && !East && !North && South && Up && West) return 1464;
			if (Age == 0 && !East && !North && South && Up && !West) return 1465;
			if (Age == 0 && !East && !North && South && !Up && West) return 1466;
			if (Age == 0 && !East && !North && South && !Up && !West) return 1467;
			if (Age == 0 && !East && !North && !South && Up && West) return 1468;
			if (Age == 0 && !East && !North && !South && Up && !West) return 1469;
			if (Age == 0 && !East && !North && !South && !Up && West) return 1470;
			if (Age == 0 && !East && !North && !South && !Up && !West) return 1471;
			if (Age == 1 && East && North && South && Up && West) return 1472;
			if (Age == 1 && East && North && South && Up && !West) return 1473;
			if (Age == 1 && East && North && South && !Up && West) return 1474;
			if (Age == 1 && East && North && South && !Up && !West) return 1475;
			if (Age == 1 && East && North && !South && Up && West) return 1476;
			if (Age == 1 && East && North && !South && Up && !West) return 1477;
			if (Age == 1 && East && North && !South && !Up && West) return 1478;
			if (Age == 1 && East && North && !South && !Up && !West) return 1479;
			if (Age == 1 && East && !North && South && Up && West) return 1480;
			if (Age == 1 && East && !North && South && Up && !West) return 1481;
			if (Age == 1 && East && !North && South && !Up && West) return 1482;
			if (Age == 1 && East && !North && South && !Up && !West) return 1483;
			if (Age == 1 && East && !North && !South && Up && West) return 1484;
			if (Age == 1 && East && !North && !South && Up && !West) return 1485;
			if (Age == 1 && East && !North && !South && !Up && West) return 1486;
			if (Age == 1 && East && !North && !South && !Up && !West) return 1487;
			if (Age == 1 && !East && North && South && Up && West) return 1488;
			if (Age == 1 && !East && North && South && Up && !West) return 1489;
			if (Age == 1 && !East && North && South && !Up && West) return 1490;
			if (Age == 1 && !East && North && South && !Up && !West) return 1491;
			if (Age == 1 && !East && North && !South && Up && West) return 1492;
			if (Age == 1 && !East && North && !South && Up && !West) return 1493;
			if (Age == 1 && !East && North && !South && !Up && West) return 1494;
			if (Age == 1 && !East && North && !South && !Up && !West) return 1495;
			if (Age == 1 && !East && !North && South && Up && West) return 1496;
			if (Age == 1 && !East && !North && South && Up && !West) return 1497;
			if (Age == 1 && !East && !North && South && !Up && West) return 1498;
			if (Age == 1 && !East && !North && South && !Up && !West) return 1499;
			if (Age == 1 && !East && !North && !South && Up && West) return 1500;
			if (Age == 1 && !East && !North && !South && Up && !West) return 1501;
			if (Age == 1 && !East && !North && !South && !Up && West) return 1502;
			if (Age == 1 && !East && !North && !South && !Up && !West) return 1503;
			if (Age == 2 && East && North && South && Up && West) return 1504;
			if (Age == 2 && East && North && South && Up && !West) return 1505;
			if (Age == 2 && East && North && South && !Up && West) return 1506;
			if (Age == 2 && East && North && South && !Up && !West) return 1507;
			if (Age == 2 && East && North && !South && Up && West) return 1508;
			if (Age == 2 && East && North && !South && Up && !West) return 1509;
			if (Age == 2 && East && North && !South && !Up && West) return 1510;
			if (Age == 2 && East && North && !South && !Up && !West) return 1511;
			if (Age == 2 && East && !North && South && Up && West) return 1512;
			if (Age == 2 && East && !North && South && Up && !West) return 1513;
			if (Age == 2 && East && !North && South && !Up && West) return 1514;
			if (Age == 2 && East && !North && South && !Up && !West) return 1515;
			if (Age == 2 && East && !North && !South && Up && West) return 1516;
			if (Age == 2 && East && !North && !South && Up && !West) return 1517;
			if (Age == 2 && East && !North && !South && !Up && West) return 1518;
			if (Age == 2 && East && !North && !South && !Up && !West) return 1519;
			if (Age == 2 && !East && North && South && Up && West) return 1520;
			if (Age == 2 && !East && North && South && Up && !West) return 1521;
			if (Age == 2 && !East && North && South && !Up && West) return 1522;
			if (Age == 2 && !East && North && South && !Up && !West) return 1523;
			if (Age == 2 && !East && North && !South && Up && West) return 1524;
			if (Age == 2 && !East && North && !South && Up && !West) return 1525;
			if (Age == 2 && !East && North && !South && !Up && West) return 1526;
			if (Age == 2 && !East && North && !South && !Up && !West) return 1527;
			if (Age == 2 && !East && !North && South && Up && West) return 1528;
			if (Age == 2 && !East && !North && South && Up && !West) return 1529;
			if (Age == 2 && !East && !North && South && !Up && West) return 1530;
			if (Age == 2 && !East && !North && South && !Up && !West) return 1531;
			if (Age == 2 && !East && !North && !South && Up && West) return 1532;
			if (Age == 2 && !East && !North && !South && Up && !West) return 1533;
			if (Age == 2 && !East && !North && !South && !Up && West) return 1534;
			if (Age == 2 && !East && !North && !South && !Up && !West) return 1535;
			if (Age == 3 && East && North && South && Up && West) return 1536;
			if (Age == 3 && East && North && South && Up && !West) return 1537;
			if (Age == 3 && East && North && South && !Up && West) return 1538;
			if (Age == 3 && East && North && South && !Up && !West) return 1539;
			if (Age == 3 && East && North && !South && Up && West) return 1540;
			if (Age == 3 && East && North && !South && Up && !West) return 1541;
			if (Age == 3 && East && North && !South && !Up && West) return 1542;
			if (Age == 3 && East && North && !South && !Up && !West) return 1543;
			if (Age == 3 && East && !North && South && Up && West) return 1544;
			if (Age == 3 && East && !North && South && Up && !West) return 1545;
			if (Age == 3 && East && !North && South && !Up && West) return 1546;
			if (Age == 3 && East && !North && South && !Up && !West) return 1547;
			if (Age == 3 && East && !North && !South && Up && West) return 1548;
			if (Age == 3 && East && !North && !South && Up && !West) return 1549;
			if (Age == 3 && East && !North && !South && !Up && West) return 1550;
			if (Age == 3 && East && !North && !South && !Up && !West) return 1551;
			if (Age == 3 && !East && North && South && Up && West) return 1552;
			if (Age == 3 && !East && North && South && Up && !West) return 1553;
			if (Age == 3 && !East && North && South && !Up && West) return 1554;
			if (Age == 3 && !East && North && South && !Up && !West) return 1555;
			if (Age == 3 && !East && North && !South && Up && West) return 1556;
			if (Age == 3 && !East && North && !South && Up && !West) return 1557;
			if (Age == 3 && !East && North && !South && !Up && West) return 1558;
			if (Age == 3 && !East && North && !South && !Up && !West) return 1559;
			if (Age == 3 && !East && !North && South && Up && West) return 1560;
			if (Age == 3 && !East && !North && South && Up && !West) return 1561;
			if (Age == 3 && !East && !North && South && !Up && West) return 1562;
			if (Age == 3 && !East && !North && South && !Up && !West) return 1563;
			if (Age == 3 && !East && !North && !South && Up && West) return 1564;
			if (Age == 3 && !East && !North && !South && Up && !West) return 1565;
			if (Age == 3 && !East && !North && !South && !Up && West) return 1566;
			if (Age == 3 && !East && !North && !South && !Up && !West) return 1567;
			if (Age == 4 && East && North && South && Up && West) return 1568;
			if (Age == 4 && East && North && South && Up && !West) return 1569;
			if (Age == 4 && East && North && South && !Up && West) return 1570;
			if (Age == 4 && East && North && South && !Up && !West) return 1571;
			if (Age == 4 && East && North && !South && Up && West) return 1572;
			if (Age == 4 && East && North && !South && Up && !West) return 1573;
			if (Age == 4 && East && North && !South && !Up && West) return 1574;
			if (Age == 4 && East && North && !South && !Up && !West) return 1575;
			if (Age == 4 && East && !North && South && Up && West) return 1576;
			if (Age == 4 && East && !North && South && Up && !West) return 1577;
			if (Age == 4 && East && !North && South && !Up && West) return 1578;
			if (Age == 4 && East && !North && South && !Up && !West) return 1579;
			if (Age == 4 && East && !North && !South && Up && West) return 1580;
			if (Age == 4 && East && !North && !South && Up && !West) return 1581;
			if (Age == 4 && East && !North && !South && !Up && West) return 1582;
			if (Age == 4 && East && !North && !South && !Up && !West) return 1583;
			if (Age == 4 && !East && North && South && Up && West) return 1584;
			if (Age == 4 && !East && North && South && Up && !West) return 1585;
			if (Age == 4 && !East && North && South && !Up && West) return 1586;
			if (Age == 4 && !East && North && South && !Up && !West) return 1587;
			if (Age == 4 && !East && North && !South && Up && West) return 1588;
			if (Age == 4 && !East && North && !South && Up && !West) return 1589;
			if (Age == 4 && !East && North && !South && !Up && West) return 1590;
			if (Age == 4 && !East && North && !South && !Up && !West) return 1591;
			if (Age == 4 && !East && !North && South && Up && West) return 1592;
			if (Age == 4 && !East && !North && South && Up && !West) return 1593;
			if (Age == 4 && !East && !North && South && !Up && West) return 1594;
			if (Age == 4 && !East && !North && South && !Up && !West) return 1595;
			if (Age == 4 && !East && !North && !South && Up && West) return 1596;
			if (Age == 4 && !East && !North && !South && Up && !West) return 1597;
			if (Age == 4 && !East && !North && !South && !Up && West) return 1598;
			if (Age == 4 && !East && !North && !South && !Up && !West) return 1599;
			if (Age == 5 && East && North && South && Up && West) return 1600;
			if (Age == 5 && East && North && South && Up && !West) return 1601;
			if (Age == 5 && East && North && South && !Up && West) return 1602;
			if (Age == 5 && East && North && South && !Up && !West) return 1603;
			if (Age == 5 && East && North && !South && Up && West) return 1604;
			if (Age == 5 && East && North && !South && Up && !West) return 1605;
			if (Age == 5 && East && North && !South && !Up && West) return 1606;
			if (Age == 5 && East && North && !South && !Up && !West) return 1607;
			if (Age == 5 && East && !North && South && Up && West) return 1608;
			if (Age == 5 && East && !North && South && Up && !West) return 1609;
			if (Age == 5 && East && !North && South && !Up && West) return 1610;
			if (Age == 5 && East && !North && South && !Up && !West) return 1611;
			if (Age == 5 && East && !North && !South && Up && West) return 1612;
			if (Age == 5 && East && !North && !South && Up && !West) return 1613;
			if (Age == 5 && East && !North && !South && !Up && West) return 1614;
			if (Age == 5 && East && !North && !South && !Up && !West) return 1615;
			if (Age == 5 && !East && North && South && Up && West) return 1616;
			if (Age == 5 && !East && North && South && Up && !West) return 1617;
			if (Age == 5 && !East && North && South && !Up && West) return 1618;
			if (Age == 5 && !East && North && South && !Up && !West) return 1619;
			if (Age == 5 && !East && North && !South && Up && West) return 1620;
			if (Age == 5 && !East && North && !South && Up && !West) return 1621;
			if (Age == 5 && !East && North && !South && !Up && West) return 1622;
			if (Age == 5 && !East && North && !South && !Up && !West) return 1623;
			if (Age == 5 && !East && !North && South && Up && West) return 1624;
			if (Age == 5 && !East && !North && South && Up && !West) return 1625;
			if (Age == 5 && !East && !North && South && !Up && West) return 1626;
			if (Age == 5 && !East && !North && South && !Up && !West) return 1627;
			if (Age == 5 && !East && !North && !South && Up && West) return 1628;
			if (Age == 5 && !East && !North && !South && Up && !West) return 1629;
			if (Age == 5 && !East && !North && !South && !Up && West) return 1630;
			if (Age == 5 && !East && !North && !South && !Up && !West) return 1631;
			if (Age == 6 && East && North && South && Up && West) return 1632;
			if (Age == 6 && East && North && South && Up && !West) return 1633;
			if (Age == 6 && East && North && South && !Up && West) return 1634;
			if (Age == 6 && East && North && South && !Up && !West) return 1635;
			if (Age == 6 && East && North && !South && Up && West) return 1636;
			if (Age == 6 && East && North && !South && Up && !West) return 1637;
			if (Age == 6 && East && North && !South && !Up && West) return 1638;
			if (Age == 6 && East && North && !South && !Up && !West) return 1639;
			if (Age == 6 && East && !North && South && Up && West) return 1640;
			if (Age == 6 && East && !North && South && Up && !West) return 1641;
			if (Age == 6 && East && !North && South && !Up && West) return 1642;
			if (Age == 6 && East && !North && South && !Up && !West) return 1643;
			if (Age == 6 && East && !North && !South && Up && West) return 1644;
			if (Age == 6 && East && !North && !South && Up && !West) return 1645;
			if (Age == 6 && East && !North && !South && !Up && West) return 1646;
			if (Age == 6 && East && !North && !South && !Up && !West) return 1647;
			if (Age == 6 && !East && North && South && Up && West) return 1648;
			if (Age == 6 && !East && North && South && Up && !West) return 1649;
			if (Age == 6 && !East && North && South && !Up && West) return 1650;
			if (Age == 6 && !East && North && South && !Up && !West) return 1651;
			if (Age == 6 && !East && North && !South && Up && West) return 1652;
			if (Age == 6 && !East && North && !South && Up && !West) return 1653;
			if (Age == 6 && !East && North && !South && !Up && West) return 1654;
			if (Age == 6 && !East && North && !South && !Up && !West) return 1655;
			if (Age == 6 && !East && !North && South && Up && West) return 1656;
			if (Age == 6 && !East && !North && South && Up && !West) return 1657;
			if (Age == 6 && !East && !North && South && !Up && West) return 1658;
			if (Age == 6 && !East && !North && South && !Up && !West) return 1659;
			if (Age == 6 && !East && !North && !South && Up && West) return 1660;
			if (Age == 6 && !East && !North && !South && Up && !West) return 1661;
			if (Age == 6 && !East && !North && !South && !Up && West) return 1662;
			if (Age == 6 && !East && !North && !South && !Up && !West) return 1663;
			if (Age == 7 && East && North && South && Up && West) return 1664;
			if (Age == 7 && East && North && South && Up && !West) return 1665;
			if (Age == 7 && East && North && South && !Up && West) return 1666;
			if (Age == 7 && East && North && South && !Up && !West) return 1667;
			if (Age == 7 && East && North && !South && Up && West) return 1668;
			if (Age == 7 && East && North && !South && Up && !West) return 1669;
			if (Age == 7 && East && North && !South && !Up && West) return 1670;
			if (Age == 7 && East && North && !South && !Up && !West) return 1671;
			if (Age == 7 && East && !North && South && Up && West) return 1672;
			if (Age == 7 && East && !North && South && Up && !West) return 1673;
			if (Age == 7 && East && !North && South && !Up && West) return 1674;
			if (Age == 7 && East && !North && South && !Up && !West) return 1675;
			if (Age == 7 && East && !North && !South && Up && West) return 1676;
			if (Age == 7 && East && !North && !South && Up && !West) return 1677;
			if (Age == 7 && East && !North && !South && !Up && West) return 1678;
			if (Age == 7 && East && !North && !South && !Up && !West) return 1679;
			if (Age == 7 && !East && North && South && Up && West) return 1680;
			if (Age == 7 && !East && North && South && Up && !West) return 1681;
			if (Age == 7 && !East && North && South && !Up && West) return 1682;
			if (Age == 7 && !East && North && South && !Up && !West) return 1683;
			if (Age == 7 && !East && North && !South && Up && West) return 1684;
			if (Age == 7 && !East && North && !South && Up && !West) return 1685;
			if (Age == 7 && !East && North && !South && !Up && West) return 1686;
			if (Age == 7 && !East && North && !South && !Up && !West) return 1687;
			if (Age == 7 && !East && !North && South && Up && West) return 1688;
			if (Age == 7 && !East && !North && South && Up && !West) return 1689;
			if (Age == 7 && !East && !North && South && !Up && West) return 1690;
			if (Age == 7 && !East && !North && South && !Up && !West) return 1691;
			if (Age == 7 && !East && !North && !South && Up && West) return 1692;
			if (Age == 7 && !East && !North && !South && Up && !West) return 1693;
			if (Age == 7 && !East && !North && !South && !Up && West) return 1694;
			if (Age == 7 && !East && !North && !South && !Up && !West) return 1695;
			if (Age == 8 && East && North && South && Up && West) return 1696;
			if (Age == 8 && East && North && South && Up && !West) return 1697;
			if (Age == 8 && East && North && South && !Up && West) return 1698;
			if (Age == 8 && East && North && South && !Up && !West) return 1699;
			if (Age == 8 && East && North && !South && Up && West) return 1700;
			if (Age == 8 && East && North && !South && Up && !West) return 1701;
			if (Age == 8 && East && North && !South && !Up && West) return 1702;
			if (Age == 8 && East && North && !South && !Up && !West) return 1703;
			if (Age == 8 && East && !North && South && Up && West) return 1704;
			if (Age == 8 && East && !North && South && Up && !West) return 1705;
			if (Age == 8 && East && !North && South && !Up && West) return 1706;
			if (Age == 8 && East && !North && South && !Up && !West) return 1707;
			if (Age == 8 && East && !North && !South && Up && West) return 1708;
			if (Age == 8 && East && !North && !South && Up && !West) return 1709;
			if (Age == 8 && East && !North && !South && !Up && West) return 1710;
			if (Age == 8 && East && !North && !South && !Up && !West) return 1711;
			if (Age == 8 && !East && North && South && Up && West) return 1712;
			if (Age == 8 && !East && North && South && Up && !West) return 1713;
			if (Age == 8 && !East && North && South && !Up && West) return 1714;
			if (Age == 8 && !East && North && South && !Up && !West) return 1715;
			if (Age == 8 && !East && North && !South && Up && West) return 1716;
			if (Age == 8 && !East && North && !South && Up && !West) return 1717;
			if (Age == 8 && !East && North && !South && !Up && West) return 1718;
			if (Age == 8 && !East && North && !South && !Up && !West) return 1719;
			if (Age == 8 && !East && !North && South && Up && West) return 1720;
			if (Age == 8 && !East && !North && South && Up && !West) return 1721;
			if (Age == 8 && !East && !North && South && !Up && West) return 1722;
			if (Age == 8 && !East && !North && South && !Up && !West) return 1723;
			if (Age == 8 && !East && !North && !South && Up && West) return 1724;
			if (Age == 8 && !East && !North && !South && Up && !West) return 1725;
			if (Age == 8 && !East && !North && !South && !Up && West) return 1726;
			if (Age == 8 && !East && !North && !South && !Up && !West) return 1727;
			if (Age == 9 && East && North && South && Up && West) return 1728;
			if (Age == 9 && East && North && South && Up && !West) return 1729;
			if (Age == 9 && East && North && South && !Up && West) return 1730;
			if (Age == 9 && East && North && South && !Up && !West) return 1731;
			if (Age == 9 && East && North && !South && Up && West) return 1732;
			if (Age == 9 && East && North && !South && Up && !West) return 1733;
			if (Age == 9 && East && North && !South && !Up && West) return 1734;
			if (Age == 9 && East && North && !South && !Up && !West) return 1735;
			if (Age == 9 && East && !North && South && Up && West) return 1736;
			if (Age == 9 && East && !North && South && Up && !West) return 1737;
			if (Age == 9 && East && !North && South && !Up && West) return 1738;
			if (Age == 9 && East && !North && South && !Up && !West) return 1739;
			if (Age == 9 && East && !North && !South && Up && West) return 1740;
			if (Age == 9 && East && !North && !South && Up && !West) return 1741;
			if (Age == 9 && East && !North && !South && !Up && West) return 1742;
			if (Age == 9 && East && !North && !South && !Up && !West) return 1743;
			if (Age == 9 && !East && North && South && Up && West) return 1744;
			if (Age == 9 && !East && North && South && Up && !West) return 1745;
			if (Age == 9 && !East && North && South && !Up && West) return 1746;
			if (Age == 9 && !East && North && South && !Up && !West) return 1747;
			if (Age == 9 && !East && North && !South && Up && West) return 1748;
			if (Age == 9 && !East && North && !South && Up && !West) return 1749;
			if (Age == 9 && !East && North && !South && !Up && West) return 1750;
			if (Age == 9 && !East && North && !South && !Up && !West) return 1751;
			if (Age == 9 && !East && !North && South && Up && West) return 1752;
			if (Age == 9 && !East && !North && South && Up && !West) return 1753;
			if (Age == 9 && !East && !North && South && !Up && West) return 1754;
			if (Age == 9 && !East && !North && South && !Up && !West) return 1755;
			if (Age == 9 && !East && !North && !South && Up && West) return 1756;
			if (Age == 9 && !East && !North && !South && Up && !West) return 1757;
			if (Age == 9 && !East && !North && !South && !Up && West) return 1758;
			if (Age == 9 && !East && !North && !South && !Up && !West) return 1759;
			if (Age == 10 && East && North && South && Up && West) return 1760;
			if (Age == 10 && East && North && South && Up && !West) return 1761;
			if (Age == 10 && East && North && South && !Up && West) return 1762;
			if (Age == 10 && East && North && South && !Up && !West) return 1763;
			if (Age == 10 && East && North && !South && Up && West) return 1764;
			if (Age == 10 && East && North && !South && Up && !West) return 1765;
			if (Age == 10 && East && North && !South && !Up && West) return 1766;
			if (Age == 10 && East && North && !South && !Up && !West) return 1767;
			if (Age == 10 && East && !North && South && Up && West) return 1768;
			if (Age == 10 && East && !North && South && Up && !West) return 1769;
			if (Age == 10 && East && !North && South && !Up && West) return 1770;
			if (Age == 10 && East && !North && South && !Up && !West) return 1771;
			if (Age == 10 && East && !North && !South && Up && West) return 1772;
			if (Age == 10 && East && !North && !South && Up && !West) return 1773;
			if (Age == 10 && East && !North && !South && !Up && West) return 1774;
			if (Age == 10 && East && !North && !South && !Up && !West) return 1775;
			if (Age == 10 && !East && North && South && Up && West) return 1776;
			if (Age == 10 && !East && North && South && Up && !West) return 1777;
			if (Age == 10 && !East && North && South && !Up && West) return 1778;
			if (Age == 10 && !East && North && South && !Up && !West) return 1779;
			if (Age == 10 && !East && North && !South && Up && West) return 1780;
			if (Age == 10 && !East && North && !South && Up && !West) return 1781;
			if (Age == 10 && !East && North && !South && !Up && West) return 1782;
			if (Age == 10 && !East && North && !South && !Up && !West) return 1783;
			if (Age == 10 && !East && !North && South && Up && West) return 1784;
			if (Age == 10 && !East && !North && South && Up && !West) return 1785;
			if (Age == 10 && !East && !North && South && !Up && West) return 1786;
			if (Age == 10 && !East && !North && South && !Up && !West) return 1787;
			if (Age == 10 && !East && !North && !South && Up && West) return 1788;
			if (Age == 10 && !East && !North && !South && Up && !West) return 1789;
			if (Age == 10 && !East && !North && !South && !Up && West) return 1790;
			if (Age == 10 && !East && !North && !South && !Up && !West) return 1791;
			if (Age == 11 && East && North && South && Up && West) return 1792;
			if (Age == 11 && East && North && South && Up && !West) return 1793;
			if (Age == 11 && East && North && South && !Up && West) return 1794;
			if (Age == 11 && East && North && South && !Up && !West) return 1795;
			if (Age == 11 && East && North && !South && Up && West) return 1796;
			if (Age == 11 && East && North && !South && Up && !West) return 1797;
			if (Age == 11 && East && North && !South && !Up && West) return 1798;
			if (Age == 11 && East && North && !South && !Up && !West) return 1799;
			if (Age == 11 && East && !North && South && Up && West) return 1800;
			if (Age == 11 && East && !North && South && Up && !West) return 1801;
			if (Age == 11 && East && !North && South && !Up && West) return 1802;
			if (Age == 11 && East && !North && South && !Up && !West) return 1803;
			if (Age == 11 && East && !North && !South && Up && West) return 1804;
			if (Age == 11 && East && !North && !South && Up && !West) return 1805;
			if (Age == 11 && East && !North && !South && !Up && West) return 1806;
			if (Age == 11 && East && !North && !South && !Up && !West) return 1807;
			if (Age == 11 && !East && North && South && Up && West) return 1808;
			if (Age == 11 && !East && North && South && Up && !West) return 1809;
			if (Age == 11 && !East && North && South && !Up && West) return 1810;
			if (Age == 11 && !East && North && South && !Up && !West) return 1811;
			if (Age == 11 && !East && North && !South && Up && West) return 1812;
			if (Age == 11 && !East && North && !South && Up && !West) return 1813;
			if (Age == 11 && !East && North && !South && !Up && West) return 1814;
			if (Age == 11 && !East && North && !South && !Up && !West) return 1815;
			if (Age == 11 && !East && !North && South && Up && West) return 1816;
			if (Age == 11 && !East && !North && South && Up && !West) return 1817;
			if (Age == 11 && !East && !North && South && !Up && West) return 1818;
			if (Age == 11 && !East && !North && South && !Up && !West) return 1819;
			if (Age == 11 && !East && !North && !South && Up && West) return 1820;
			if (Age == 11 && !East && !North && !South && Up && !West) return 1821;
			if (Age == 11 && !East && !North && !South && !Up && West) return 1822;
			if (Age == 11 && !East && !North && !South && !Up && !West) return 1823;
			if (Age == 12 && East && North && South && Up && West) return 1824;
			if (Age == 12 && East && North && South && Up && !West) return 1825;
			if (Age == 12 && East && North && South && !Up && West) return 1826;
			if (Age == 12 && East && North && South && !Up && !West) return 1827;
			if (Age == 12 && East && North && !South && Up && West) return 1828;
			if (Age == 12 && East && North && !South && Up && !West) return 1829;
			if (Age == 12 && East && North && !South && !Up && West) return 1830;
			if (Age == 12 && East && North && !South && !Up && !West) return 1831;
			if (Age == 12 && East && !North && South && Up && West) return 1832;
			if (Age == 12 && East && !North && South && Up && !West) return 1833;
			if (Age == 12 && East && !North && South && !Up && West) return 1834;
			if (Age == 12 && East && !North && South && !Up && !West) return 1835;
			if (Age == 12 && East && !North && !South && Up && West) return 1836;
			if (Age == 12 && East && !North && !South && Up && !West) return 1837;
			if (Age == 12 && East && !North && !South && !Up && West) return 1838;
			if (Age == 12 && East && !North && !South && !Up && !West) return 1839;
			if (Age == 12 && !East && North && South && Up && West) return 1840;
			if (Age == 12 && !East && North && South && Up && !West) return 1841;
			if (Age == 12 && !East && North && South && !Up && West) return 1842;
			if (Age == 12 && !East && North && South && !Up && !West) return 1843;
			if (Age == 12 && !East && North && !South && Up && West) return 1844;
			if (Age == 12 && !East && North && !South && Up && !West) return 1845;
			if (Age == 12 && !East && North && !South && !Up && West) return 1846;
			if (Age == 12 && !East && North && !South && !Up && !West) return 1847;
			if (Age == 12 && !East && !North && South && Up && West) return 1848;
			if (Age == 12 && !East && !North && South && Up && !West) return 1849;
			if (Age == 12 && !East && !North && South && !Up && West) return 1850;
			if (Age == 12 && !East && !North && South && !Up && !West) return 1851;
			if (Age == 12 && !East && !North && !South && Up && West) return 1852;
			if (Age == 12 && !East && !North && !South && Up && !West) return 1853;
			if (Age == 12 && !East && !North && !South && !Up && West) return 1854;
			if (Age == 12 && !East && !North && !South && !Up && !West) return 1855;
			if (Age == 13 && East && North && South && Up && West) return 1856;
			if (Age == 13 && East && North && South && Up && !West) return 1857;
			if (Age == 13 && East && North && South && !Up && West) return 1858;
			if (Age == 13 && East && North && South && !Up && !West) return 1859;
			if (Age == 13 && East && North && !South && Up && West) return 1860;
			if (Age == 13 && East && North && !South && Up && !West) return 1861;
			if (Age == 13 && East && North && !South && !Up && West) return 1862;
			if (Age == 13 && East && North && !South && !Up && !West) return 1863;
			if (Age == 13 && East && !North && South && Up && West) return 1864;
			if (Age == 13 && East && !North && South && Up && !West) return 1865;
			if (Age == 13 && East && !North && South && !Up && West) return 1866;
			if (Age == 13 && East && !North && South && !Up && !West) return 1867;
			if (Age == 13 && East && !North && !South && Up && West) return 1868;
			if (Age == 13 && East && !North && !South && Up && !West) return 1869;
			if (Age == 13 && East && !North && !South && !Up && West) return 1870;
			if (Age == 13 && East && !North && !South && !Up && !West) return 1871;
			if (Age == 13 && !East && North && South && Up && West) return 1872;
			if (Age == 13 && !East && North && South && Up && !West) return 1873;
			if (Age == 13 && !East && North && South && !Up && West) return 1874;
			if (Age == 13 && !East && North && South && !Up && !West) return 1875;
			if (Age == 13 && !East && North && !South && Up && West) return 1876;
			if (Age == 13 && !East && North && !South && Up && !West) return 1877;
			if (Age == 13 && !East && North && !South && !Up && West) return 1878;
			if (Age == 13 && !East && North && !South && !Up && !West) return 1879;
			if (Age == 13 && !East && !North && South && Up && West) return 1880;
			if (Age == 13 && !East && !North && South && Up && !West) return 1881;
			if (Age == 13 && !East && !North && South && !Up && West) return 1882;
			if (Age == 13 && !East && !North && South && !Up && !West) return 1883;
			if (Age == 13 && !East && !North && !South && Up && West) return 1884;
			if (Age == 13 && !East && !North && !South && Up && !West) return 1885;
			if (Age == 13 && !East && !North && !South && !Up && West) return 1886;
			if (Age == 13 && !East && !North && !South && !Up && !West) return 1887;
			if (Age == 14 && East && North && South && Up && West) return 1888;
			if (Age == 14 && East && North && South && Up && !West) return 1889;
			if (Age == 14 && East && North && South && !Up && West) return 1890;
			if (Age == 14 && East && North && South && !Up && !West) return 1891;
			if (Age == 14 && East && North && !South && Up && West) return 1892;
			if (Age == 14 && East && North && !South && Up && !West) return 1893;
			if (Age == 14 && East && North && !South && !Up && West) return 1894;
			if (Age == 14 && East && North && !South && !Up && !West) return 1895;
			if (Age == 14 && East && !North && South && Up && West) return 1896;
			if (Age == 14 && East && !North && South && Up && !West) return 1897;
			if (Age == 14 && East && !North && South && !Up && West) return 1898;
			if (Age == 14 && East && !North && South && !Up && !West) return 1899;
			if (Age == 14 && East && !North && !South && Up && West) return 1900;
			if (Age == 14 && East && !North && !South && Up && !West) return 1901;
			if (Age == 14 && East && !North && !South && !Up && West) return 1902;
			if (Age == 14 && East && !North && !South && !Up && !West) return 1903;
			if (Age == 14 && !East && North && South && Up && West) return 1904;
			if (Age == 14 && !East && North && South && Up && !West) return 1905;
			if (Age == 14 && !East && North && South && !Up && West) return 1906;
			if (Age == 14 && !East && North && South && !Up && !West) return 1907;
			if (Age == 14 && !East && North && !South && Up && West) return 1908;
			if (Age == 14 && !East && North && !South && Up && !West) return 1909;
			if (Age == 14 && !East && North && !South && !Up && West) return 1910;
			if (Age == 14 && !East && North && !South && !Up && !West) return 1911;
			if (Age == 14 && !East && !North && South && Up && West) return 1912;
			if (Age == 14 && !East && !North && South && Up && !West) return 1913;
			if (Age == 14 && !East && !North && South && !Up && West) return 1914;
			if (Age == 14 && !East && !North && South && !Up && !West) return 1915;
			if (Age == 14 && !East && !North && !South && Up && West) return 1916;
			if (Age == 14 && !East && !North && !South && Up && !West) return 1917;
			if (Age == 14 && !East && !North && !South && !Up && West) return 1918;
			if (Age == 14 && !East && !North && !South && !Up && !West) return 1919;
			if (Age == 15 && East && North && South && Up && West) return 1920;
			if (Age == 15 && East && North && South && Up && !West) return 1921;
			if (Age == 15 && East && North && South && !Up && West) return 1922;
			if (Age == 15 && East && North && South && !Up && !West) return 1923;
			if (Age == 15 && East && North && !South && Up && West) return 1924;
			if (Age == 15 && East && North && !South && Up && !West) return 1925;
			if (Age == 15 && East && North && !South && !Up && West) return 1926;
			if (Age == 15 && East && North && !South && !Up && !West) return 1927;
			if (Age == 15 && East && !North && South && Up && West) return 1928;
			if (Age == 15 && East && !North && South && Up && !West) return 1929;
			if (Age == 15 && East && !North && South && !Up && West) return 1930;
			if (Age == 15 && East && !North && South && !Up && !West) return 1931;
			if (Age == 15 && East && !North && !South && Up && West) return 1932;
			if (Age == 15 && East && !North && !South && Up && !West) return 1933;
			if (Age == 15 && East && !North && !South && !Up && West) return 1934;
			if (Age == 15 && East && !North && !South && !Up && !West) return 1935;
			if (Age == 15 && !East && North && South && Up && West) return 1936;
			if (Age == 15 && !East && North && South && Up && !West) return 1937;
			if (Age == 15 && !East && North && South && !Up && West) return 1938;
			if (Age == 15 && !East && North && South && !Up && !West) return 1939;
			if (Age == 15 && !East && North && !South && Up && West) return 1940;
			if (Age == 15 && !East && North && !South && Up && !West) return 1941;
			if (Age == 15 && !East && North && !South && !Up && West) return 1942;
			if (Age == 15 && !East && North && !South && !Up && !West) return 1943;
			if (Age == 15 && !East && !North && South && Up && West) return 1944;
			if (Age == 15 && !East && !North && South && Up && !West) return 1945;
			if (Age == 15 && !East && !North && South && !Up && West) return 1946;
			if (Age == 15 && !East && !North && South && !Up && !West) return 1947;
			if (Age == 15 && !East && !North && !South && Up && West) return 1948;
			if (Age == 15 && !East && !North && !South && Up && !West) return 1949;
			if (Age == 15 && !East && !North && !South && !Up && West) return 1950;
			return 1951;
		}
		short Fire();
		unsigned char Age(short ID);
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool Up(short ID);
		bool West(short ID);
	}
	namespace FireCoral
	{
		constexpr short FireCoral()
		{
			return 9537;
		}
	}
	namespace FireCoralBlock
	{
		constexpr short FireCoralBlock()
		{
			return 9518;
		}
	}
	namespace FireCoralFan
	{
		constexpr short FireCoralFan()
		{
			return 9557;
		}
	}
	namespace FireCoralWallFan
	{
		constexpr short FireCoralWallFan(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9625;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9627;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9629;
			return 9631;
		}
		short FireCoralWallFan();
		eBlockFace Facing(short ID);
	}
	namespace FletchingTable
	{
		constexpr short FletchingTable()
		{
			return 14820;
		}
	}
	namespace FlowerPot
	{
		constexpr short FlowerPot()
		{
			return 6305;
		}
	}
	namespace FrostedIce
	{
		constexpr short FrostedIce(unsigned char Age)
		{
			if (Age == 0) return 9249;
			if (Age == 1) return 9250;
			if (Age == 2) return 9251;
			return 9252;
		}
		short FrostedIce();
		unsigned char Age(short ID);
	}
	namespace Furnace
	{
		constexpr short Furnace(eBlockFace Facing, bool Lit)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Lit) return 3373;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Lit) return 3374;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Lit) return 3375;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Lit) return 3376;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Lit) return 3377;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Lit) return 3378;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Lit) return 3379;
			return 3380;
		}
		short Furnace();
		eBlockFace Facing(short ID);
		bool Lit(short ID);
	}
	namespace GildedBlackstone
	{
		constexpr short GildedBlackstone()
		{
			return 16664;
		}
	}
	namespace Glass
	{
		constexpr short Glass()
		{
			return 231;
		}
	}
	namespace GlassPane
	{
		constexpr short GlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 4733;
			if (East && North && South && !West) return 4734;
			if (East && North && !South && West) return 4737;
			if (East && North && !South && !West) return 4738;
			if (East && !North && South && West) return 4741;
			if (East && !North && South && !West) return 4742;
			if (East && !North && !South && West) return 4745;
			if (East && !North && !South && !West) return 4746;
			if (!East && North && South && West) return 4749;
			if (!East && North && South && !West) return 4750;
			if (!East && North && !South && West) return 4753;
			if (!East && North && !South && !West) return 4754;
			if (!East && !North && South && West) return 4757;
			if (!East && !North && South && !West) return 4758;
			if (!East && !North && !South && West) return 4761;
			return 4762;
		}
		short GlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace Glowstone
	{
		constexpr short Glowstone()
		{
			return 4013;
		}
	}
	namespace GoldBlock
	{
		constexpr short GoldBlock()
		{
			return 1427;
		}
	}
	namespace GoldOre
	{
		constexpr short GoldOre()
		{
			return 69;
		}
	}
	namespace Granite
	{
		constexpr short Granite()
		{
			return 2;
		}
	}
	namespace GraniteSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short GraniteSlab(enum Type Type)
		{
			if (Type == Type::Top) return 10838;
			if (Type == Type::Bottom) return 10840;
			return 10842;
		}
		short GraniteSlab();
		enum Type Type(short ID);
	}
	namespace GraniteStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short GraniteStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 10390;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 10392;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 10394;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 10396;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 10398;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 10400;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10402;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10404;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10406;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10408;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 10410;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 10412;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 10414;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 10416;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 10418;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 10420;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10422;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10424;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10426;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 10428;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 10430;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 10432;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 10434;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 10436;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 10438;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 10440;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10442;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10444;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10446;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10448;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 10450;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 10452;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 10454;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 10456;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 10458;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 10460;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10462;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10464;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10466;
			return 10468;
		}
		short GraniteStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace GraniteWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short GraniteWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 12166;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 12167;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 12168;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 12172;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 12173;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 12174;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 12178;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 12179;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 12180;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 12184;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 12185;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 12186;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 12190;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 12191;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 12192;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 12196;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 12197;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 12198;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 12202;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 12203;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 12204;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 12208;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 12209;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 12210;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 12214;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 12215;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 12216;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 12220;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 12221;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 12222;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 12226;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 12227;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 12228;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 12232;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 12233;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 12234;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 12238;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 12239;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 12240;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 12244;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 12245;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 12246;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 12250;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 12251;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 12252;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 12256;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 12257;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 12258;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 12262;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 12263;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 12264;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 12268;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 12269;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 12270;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 12274;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 12275;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 12276;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 12280;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 12281;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 12282;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 12286;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 12287;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 12288;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 12292;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 12293;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 12294;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 12298;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 12299;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 12300;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 12304;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 12305;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 12306;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 12310;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 12311;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 12312;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 12316;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 12317;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 12318;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 12322;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 12323;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 12324;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 12328;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 12329;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 12330;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 12334;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 12335;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 12336;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 12340;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 12341;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 12342;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 12346;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 12347;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 12348;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 12352;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 12353;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 12354;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 12358;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 12359;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 12360;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 12364;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 12365;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 12366;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 12370;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 12371;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 12372;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 12376;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 12377;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 12378;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 12382;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 12383;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 12384;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 12388;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 12389;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 12390;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 12394;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 12395;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 12396;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 12400;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 12401;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 12402;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 12406;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 12407;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 12408;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 12412;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 12413;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 12414;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 12418;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 12419;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 12420;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 12424;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 12425;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 12426;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 12430;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 12431;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 12432;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 12436;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 12437;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 12438;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 12442;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 12443;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 12444;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 12448;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 12449;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 12450;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 12454;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 12455;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 12456;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 12460;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 12461;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 12462;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 12466;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 12467;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 12468;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 12472;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 12473;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 12474;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 12478;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 12479;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 12480;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 12484;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 12485;
			return 12486;
		}
		short GraniteWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace Grass
	{
		constexpr short Grass()
		{
			return 1342;
		}
	}
	namespace GrassBlock
	{
		constexpr short GrassBlock(bool Snowy)
		{
			if (Snowy) return 8;
			return 9;
		}
		short GrassBlock();
		bool Snowy(short ID);
	}
	namespace GrassPath
	{
		constexpr short GrassPath()
		{
			return 9223;
		}
	}
	namespace Gravel
	{
		constexpr short Gravel()
		{
			return 68;
		}
	}
	namespace GrayBanner
	{
		constexpr short GrayBanner(unsigned char Rotation)
		{
			if (Rotation == 0) return 8009;
			if (Rotation == 1) return 8010;
			if (Rotation == 2) return 8011;
			if (Rotation == 3) return 8012;
			if (Rotation == 4) return 8013;
			if (Rotation == 5) return 8014;
			if (Rotation == 6) return 8015;
			if (Rotation == 7) return 8016;
			if (Rotation == 8) return 8017;
			if (Rotation == 9) return 8018;
			if (Rotation == 10) return 8019;
			if (Rotation == 11) return 8020;
			if (Rotation == 12) return 8021;
			if (Rotation == 13) return 8022;
			if (Rotation == 14) return 8023;
			return 8024;
		}
		short GrayBanner();
		unsigned char Rotation(short ID);
	}
	namespace GrayBed
	{
		enum class Part
		{
			Head,
			Foot
		};
		constexpr short GrayBed(eBlockFace Facing, bool Occupied, enum Part Part)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Head) return 1161;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Foot) return 1162;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Head) return 1163;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Foot) return 1164;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Head) return 1165;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Foot) return 1166;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Head) return 1167;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Foot) return 1168;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Head) return 1169;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Foot) return 1170;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Head) return 1171;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Foot) return 1172;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Head) return 1173;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Foot) return 1174;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Occupied && Part == Part::Head) return 1175;
			return 1176;
		}
		short GrayBed();
		eBlockFace Facing(short ID);
		bool Occupied(short ID);
		enum Part Part(short ID);
	}
	namespace GrayCarpet
	{
		constexpr short GrayCarpet()
		{
			return 7873;
		}
	}
	namespace GrayConcrete
	{
		constexpr short GrayConcrete()
		{
			return 9445;
		}
	}
	namespace GrayConcretePowder
	{
		constexpr short GrayConcretePowder()
		{
			return 9461;
		}
	}
	namespace GrayGlazedTerracotta
	{
		constexpr short GrayGlazedTerracotta(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9402;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9403;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9404;
			return 9405;
		}
		short GrayGlazedTerracotta();
		eBlockFace Facing(short ID);
	}
	namespace GrayShulkerBox
	{
		constexpr short GrayShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9320;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9321;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9322;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9323;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9324;
			return 9325;
		}
		short GrayShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace GrayStainedGlass
	{
		constexpr short GrayStainedGlass()
		{
			return 4102;
		}
	}
	namespace GrayStainedGlassPane
	{
		constexpr short GrayStainedGlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 7089;
			if (East && North && South && !West) return 7090;
			if (East && North && !South && West) return 7093;
			if (East && North && !South && !West) return 7094;
			if (East && !North && South && West) return 7097;
			if (East && !North && South && !West) return 7098;
			if (East && !North && !South && West) return 7101;
			if (East && !North && !South && !West) return 7102;
			if (!East && North && South && West) return 7105;
			if (!East && North && South && !West) return 7106;
			if (!East && North && !South && West) return 7109;
			if (!East && North && !South && !West) return 7110;
			if (!East && !North && South && West) return 7113;
			if (!East && !North && South && !West) return 7114;
			if (!East && !North && !South && West) return 7117;
			return 7118;
		}
		short GrayStainedGlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace GrayTerracotta
	{
		constexpr short GrayTerracotta()
		{
			return 6854;
		}
	}
	namespace GrayWallBanner
	{
		constexpr short GrayWallBanner(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 8181;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 8182;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 8183;
			return 8184;
		}
		short GrayWallBanner();
		eBlockFace Facing(short ID);
	}
	namespace GrayWool
	{
		constexpr short GrayWool()
		{
			return 1391;
		}
	}
	namespace GreenBanner
	{
		constexpr short GreenBanner(unsigned char Rotation)
		{
			if (Rotation == 0) return 8105;
			if (Rotation == 1) return 8106;
			if (Rotation == 2) return 8107;
			if (Rotation == 3) return 8108;
			if (Rotation == 4) return 8109;
			if (Rotation == 5) return 8110;
			if (Rotation == 6) return 8111;
			if (Rotation == 7) return 8112;
			if (Rotation == 8) return 8113;
			if (Rotation == 9) return 8114;
			if (Rotation == 10) return 8115;
			if (Rotation == 11) return 8116;
			if (Rotation == 12) return 8117;
			if (Rotation == 13) return 8118;
			if (Rotation == 14) return 8119;
			return 8120;
		}
		short GreenBanner();
		unsigned char Rotation(short ID);
	}
	namespace GreenBed
	{
		enum class Part
		{
			Head,
			Foot
		};
		constexpr short GreenBed(eBlockFace Facing, bool Occupied, enum Part Part)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Head) return 1257;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Foot) return 1258;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Head) return 1259;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Foot) return 1260;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Head) return 1261;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Foot) return 1262;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Head) return 1263;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Foot) return 1264;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Head) return 1265;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Foot) return 1266;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Head) return 1267;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Foot) return 1268;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Head) return 1269;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Foot) return 1270;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Occupied && Part == Part::Head) return 1271;
			return 1272;
		}
		short GreenBed();
		eBlockFace Facing(short ID);
		bool Occupied(short ID);
		enum Part Part(short ID);
	}
	namespace GreenCarpet
	{
		constexpr short GreenCarpet()
		{
			return 7879;
		}
	}
	namespace GreenConcrete
	{
		constexpr short GreenConcrete()
		{
			return 9451;
		}
	}
	namespace GreenConcretePowder
	{
		constexpr short GreenConcretePowder()
		{
			return 9467;
		}
	}
	namespace GreenGlazedTerracotta
	{
		constexpr short GreenGlazedTerracotta(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9426;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9427;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9428;
			return 9429;
		}
		short GreenGlazedTerracotta();
		eBlockFace Facing(short ID);
	}
	namespace GreenShulkerBox
	{
		constexpr short GreenShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9356;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9357;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9358;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9359;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9360;
			return 9361;
		}
		short GreenShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace GreenStainedGlass
	{
		constexpr short GreenStainedGlass()
		{
			return 4108;
		}
	}
	namespace GreenStainedGlassPane
	{
		constexpr short GreenStainedGlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 7281;
			if (East && North && South && !West) return 7282;
			if (East && North && !South && West) return 7285;
			if (East && North && !South && !West) return 7286;
			if (East && !North && South && West) return 7289;
			if (East && !North && South && !West) return 7290;
			if (East && !North && !South && West) return 7293;
			if (East && !North && !South && !West) return 7294;
			if (!East && North && South && West) return 7297;
			if (!East && North && South && !West) return 7298;
			if (!East && North && !South && West) return 7301;
			if (!East && North && !South && !West) return 7302;
			if (!East && !North && South && West) return 7305;
			if (!East && !North && South && !West) return 7306;
			if (!East && !North && !South && West) return 7309;
			return 7310;
		}
		short GreenStainedGlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace GreenTerracotta
	{
		constexpr short GreenTerracotta()
		{
			return 6860;
		}
	}
	namespace GreenWallBanner
	{
		constexpr short GreenWallBanner(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 8205;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 8206;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 8207;
			return 8208;
		}
		short GreenWallBanner();
		eBlockFace Facing(short ID);
	}
	namespace GreenWool
	{
		constexpr short GreenWool()
		{
			return 1397;
		}
	}
	namespace Grindstone
	{
		enum class Face
		{
			Floor,
			Wall,
			Ceiling
		};
		constexpr short Grindstone(enum Face Face, eBlockFace Facing)
		{
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM) return 14821;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP) return 14822;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM) return 14823;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP) return 14824;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM) return 14825;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP) return 14826;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM) return 14827;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP) return 14828;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM) return 14829;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP) return 14830;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM) return 14831;
			return 14832;
		}
		short Grindstone();
		enum Face Face(short ID);
		eBlockFace Facing(short ID);
	}
	namespace HayBale
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short HayBale(enum Axis Axis)
		{
			if (Axis == Axis::X) return 7863;
			if (Axis == Axis::Y) return 7864;
			return 7865;
		}
		short HayBale();
		enum Axis Axis(short ID);
	}
	namespace HeavyWeightedPressurePlate
	{
		constexpr short HeavyWeightedPressurePlate(unsigned char Power)
		{
			if (Power == 0) return 6662;
			if (Power == 1) return 6663;
			if (Power == 2) return 6664;
			if (Power == 3) return 6665;
			if (Power == 4) return 6666;
			if (Power == 5) return 6667;
			if (Power == 6) return 6668;
			if (Power == 7) return 6669;
			if (Power == 8) return 6670;
			if (Power == 9) return 6671;
			if (Power == 10) return 6672;
			if (Power == 11) return 6673;
			if (Power == 12) return 6674;
			if (Power == 13) return 6675;
			if (Power == 14) return 6676;
			return 6677;
		}
		short HeavyWeightedPressurePlate();
		unsigned char Power(short ID);
	}
	namespace HoneyBlock
	{
		constexpr short HoneyBlock()
		{
			return 15824;
		}
	}
	namespace HoneycombBlock
	{
		constexpr short HoneycombBlock()
		{
			return 15825;
		}
	}
	namespace Hopper
	{
		constexpr short Hopper(bool Enabled, eBlockFace Facing)
		{
			if (Enabled && Facing == eBlockFace::BLOCK_FACE_YM) return 6728;
			if (Enabled && Facing == eBlockFace::BLOCK_FACE_ZM) return 6729;
			if (Enabled && Facing == eBlockFace::BLOCK_FACE_ZP) return 6730;
			if (Enabled && Facing == eBlockFace::BLOCK_FACE_XM) return 6731;
			if (Enabled && Facing == eBlockFace::BLOCK_FACE_XP) return 6732;
			if (!Enabled && Facing == eBlockFace::BLOCK_FACE_YM) return 6733;
			if (!Enabled && Facing == eBlockFace::BLOCK_FACE_ZM) return 6734;
			if (!Enabled && Facing == eBlockFace::BLOCK_FACE_ZP) return 6735;
			if (!Enabled && Facing == eBlockFace::BLOCK_FACE_XM) return 6736;
			return 6737;
		}
		short Hopper();
		bool Enabled(short ID);
		eBlockFace Facing(short ID);
	}
	namespace HornCoral
	{
		constexpr short HornCoral()
		{
			return 9539;
		}
	}
	namespace HornCoralBlock
	{
		constexpr short HornCoralBlock()
		{
			return 9519;
		}
	}
	namespace HornCoralFan
	{
		constexpr short HornCoralFan()
		{
			return 9559;
		}
	}
	namespace HornCoralWallFan
	{
		constexpr short HornCoralWallFan(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9633;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9635;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9637;
			return 9639;
		}
		short HornCoralWallFan();
		eBlockFace Facing(short ID);
	}
	namespace Ice
	{
		constexpr short Ice()
		{
			return 3929;
		}
	}
	namespace InfestedChiseledStoneBricks
	{
		constexpr short InfestedChiseledStoneBricks()
		{
			return 4504;
		}
	}
	namespace InfestedCobblestone
	{
		constexpr short InfestedCobblestone()
		{
			return 4500;
		}
	}
	namespace InfestedCrackedStoneBricks
	{
		constexpr short InfestedCrackedStoneBricks()
		{
			return 4503;
		}
	}
	namespace InfestedMossyStoneBricks
	{
		constexpr short InfestedMossyStoneBricks()
		{
			return 4502;
		}
	}
	namespace InfestedStone
	{
		constexpr short InfestedStone()
		{
			return 4499;
		}
	}
	namespace InfestedStoneBricks
	{
		constexpr short InfestedStoneBricks()
		{
			return 4501;
		}
	}
	namespace IronBars
	{
		constexpr short IronBars(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 4699;
			if (East && North && South && !West) return 4700;
			if (East && North && !South && West) return 4703;
			if (East && North && !South && !West) return 4704;
			if (East && !North && South && West) return 4707;
			if (East && !North && South && !West) return 4708;
			if (East && !North && !South && West) return 4711;
			if (East && !North && !South && !West) return 4712;
			if (!East && North && South && West) return 4715;
			if (!East && North && South && !West) return 4716;
			if (!East && North && !South && West) return 4719;
			if (!East && North && !South && !West) return 4720;
			if (!East && !North && South && West) return 4723;
			if (!East && !North && South && !West) return 4724;
			if (!East && !North && !South && West) return 4727;
			return 4728;
		}
		short IronBars();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace IronBlock
	{
		constexpr short IronBlock()
		{
			return 1428;
		}
	}
	namespace IronDoor
	{
		enum class Half
		{
			Upper,
			Lower
		};
		enum class Hinge
		{
			Left,
			Right
		};
		constexpr short IronDoor(eBlockFace Facing, enum Half Half, enum Hinge Hinge, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 3809;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 3810;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 3811;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 3812;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 3813;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 3814;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 3815;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 3816;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 3817;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 3818;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 3819;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 3820;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 3821;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 3822;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 3823;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 3824;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 3825;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 3826;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 3827;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 3828;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 3829;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 3830;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 3831;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 3832;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 3833;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 3834;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 3835;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 3836;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 3837;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 3838;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 3839;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 3840;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 3841;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 3842;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 3843;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 3844;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 3845;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 3846;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 3847;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 3848;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 3849;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 3850;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 3851;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 3852;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 3853;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 3854;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 3855;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 3856;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 3857;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 3858;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 3859;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 3860;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 3861;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 3862;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 3863;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 3864;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 3865;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 3866;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 3867;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 3868;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 3869;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 3870;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 3871;
			return 3872;
		}
		short IronDoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Hinge Hinge(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace IronOre
	{
		constexpr short IronOre()
		{
			return 70;
		}
	}
	namespace IronTrapdoor
	{
		enum class Half
		{
			Top,
			Bottom
		};
		constexpr short IronTrapdoor(eBlockFace Facing, enum Half Half, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && Powered) return 7538;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && !Powered) return 7540;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && Powered) return 7542;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && !Powered) return 7544;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && Powered) return 7546;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && !Powered) return 7548;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && Powered) return 7550;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && !Powered) return 7552;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && Powered) return 7554;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && !Powered) return 7556;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && Powered) return 7558;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && !Powered) return 7560;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && Powered) return 7562;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && !Powered) return 7564;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && Powered) return 7566;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && !Powered) return 7568;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && Powered) return 7570;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && !Powered) return 7572;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && Powered) return 7574;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && !Powered) return 7576;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && Powered) return 7578;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && !Powered) return 7580;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && Powered) return 7582;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && !Powered) return 7584;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && Powered) return 7586;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && !Powered) return 7588;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && Powered) return 7590;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && !Powered) return 7592;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && Powered) return 7594;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && !Powered) return 7596;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && !Open && Powered) return 7598;
			return 7600;
		}
		short IronTrapdoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace JackOLantern
	{
		constexpr short JackOLantern(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 4020;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 4021;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 4022;
			return 4023;
		}
		short JackOLantern();
		eBlockFace Facing(short ID);
	}
	namespace Jigsaw
	{
		enum class Orientation
		{
			DownEast,
			DownNorth,
			DownSouth,
			DownWest,
			UpEast,
			UpNorth,
			UpSouth,
			UpWest,
			WestUp,
			EastUp,
			NorthUp,
			SouthUp
		};
		constexpr short Jigsaw(enum Orientation Orientation)
		{
			if (Orientation == Orientation::DownEast) return 15739;
			if (Orientation == Orientation::DownNorth) return 15740;
			if (Orientation == Orientation::DownSouth) return 15741;
			if (Orientation == Orientation::DownWest) return 15742;
			if (Orientation == Orientation::UpEast) return 15743;
			if (Orientation == Orientation::UpNorth) return 15744;
			if (Orientation == Orientation::UpSouth) return 15745;
			if (Orientation == Orientation::UpWest) return 15746;
			if (Orientation == Orientation::WestUp) return 15747;
			if (Orientation == Orientation::EastUp) return 15748;
			if (Orientation == Orientation::NorthUp) return 15749;
			return 15750;
		}
		short Jigsaw();
		enum Orientation Orientation(short ID);
	}
	namespace Jukebox
	{
		constexpr short Jukebox(bool HasRecord)
		{
			if (HasRecord) return 3964;
			return 3965;
		}
		short Jukebox();
		bool HasRecord(short ID);
	}
	namespace JungleButton
	{
		enum class Face
		{
			Floor,
			Wall,
			Ceiling
		};
		constexpr short JungleButton(enum Face Face, eBlockFace Facing, bool Powered)
		{
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6418;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6419;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6420;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6421;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6422;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6423;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6424;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 6425;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6426;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6427;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6428;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6429;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6430;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6431;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6432;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 6433;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6434;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6435;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6436;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6437;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6438;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6439;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6440;
			return 6441;
		}
		short JungleButton();
		enum Face Face(short ID);
		eBlockFace Facing(short ID);
		bool Powered(short ID);
	}
	namespace JungleDoor
	{
		enum class Half
		{
			Upper,
			Lower
		};
		enum class Hinge
		{
			Left,
			Right
		};
		constexpr short JungleDoor(eBlockFace Facing, enum Half Half, enum Hinge Hinge, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8866;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8867;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8868;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8869;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8870;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8871;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 8872;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 8873;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 8874;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 8875;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 8876;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 8877;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 8878;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 8879;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 8880;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 8881;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8882;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8883;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8884;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8885;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8886;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8887;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 8888;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 8889;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 8890;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 8891;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 8892;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 8893;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 8894;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 8895;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 8896;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 8897;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8898;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8899;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8900;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8901;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8902;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8903;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 8904;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 8905;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 8906;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 8907;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 8908;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 8909;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 8910;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 8911;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 8912;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 8913;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8914;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8915;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8916;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8917;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8918;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8919;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 8920;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 8921;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 8922;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 8923;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 8924;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 8925;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 8926;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 8927;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 8928;
			return 8929;
		}
		short JungleDoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Hinge Hinge(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace JungleFence
	{
		constexpr short JungleFence(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 8644;
			if (East && North && South && !West) return 8645;
			if (East && North && !South && West) return 8648;
			if (East && North && !South && !West) return 8649;
			if (East && !North && South && West) return 8652;
			if (East && !North && South && !West) return 8653;
			if (East && !North && !South && West) return 8656;
			if (East && !North && !South && !West) return 8657;
			if (!East && North && South && West) return 8660;
			if (!East && North && South && !West) return 8661;
			if (!East && North && !South && West) return 8664;
			if (!East && North && !South && !West) return 8665;
			if (!East && !North && South && West) return 8668;
			if (!East && !North && South && !West) return 8669;
			if (!East && !North && !South && West) return 8672;
			return 8673;
		}
		short JungleFence();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace JungleFenceGate
	{
		constexpr short JungleFenceGate(eBlockFace Facing, bool InWall, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && Open && Powered) return 8482;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && Open && !Powered) return 8483;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && !Open && Powered) return 8484;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && !Open && !Powered) return 8485;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && Open && Powered) return 8486;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && Open && !Powered) return 8487;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && !Open && Powered) return 8488;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && !Open && !Powered) return 8489;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && Open && Powered) return 8490;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && Open && !Powered) return 8491;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && !Open && Powered) return 8492;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && !Open && !Powered) return 8493;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && Open && Powered) return 8494;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && Open && !Powered) return 8495;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && !Open && Powered) return 8496;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && !Open && !Powered) return 8497;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && Open && Powered) return 8498;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && Open && !Powered) return 8499;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && !Open && Powered) return 8500;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && !Open && !Powered) return 8501;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && Open && Powered) return 8502;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && Open && !Powered) return 8503;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && !Open && Powered) return 8504;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && !Open && !Powered) return 8505;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && Open && Powered) return 8506;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && Open && !Powered) return 8507;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && !Open && Powered) return 8508;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && !Open && !Powered) return 8509;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && Open && Powered) return 8510;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && Open && !Powered) return 8511;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && !Open && Powered) return 8512;
			return 8513;
		}
		short JungleFenceGate();
		eBlockFace Facing(short ID);
		bool InWall(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace JungleLeaves
	{
		constexpr short JungleLeaves(unsigned char Distance, bool Persistent)
		{
			if (Distance == 1 && Persistent) return 187;
			if (Distance == 1 && !Persistent) return 188;
			if (Distance == 2 && Persistent) return 189;
			if (Distance == 2 && !Persistent) return 190;
			if (Distance == 3 && Persistent) return 191;
			if (Distance == 3 && !Persistent) return 192;
			if (Distance == 4 && Persistent) return 193;
			if (Distance == 4 && !Persistent) return 194;
			if (Distance == 5 && Persistent) return 195;
			if (Distance == 5 && !Persistent) return 196;
			if (Distance == 6 && Persistent) return 197;
			if (Distance == 6 && !Persistent) return 198;
			if (Distance == 7 && Persistent) return 199;
			return 200;
		}
		short JungleLeaves();
		unsigned char Distance(short ID);
		bool Persistent(short ID);
	}
	namespace JungleLog
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short JungleLog(enum Axis Axis)
		{
			if (Axis == Axis::X) return 82;
			if (Axis == Axis::Y) return 83;
			return 84;
		}
		short JungleLog();
		enum Axis Axis(short ID);
	}
	namespace JunglePlanks
	{
		constexpr short JunglePlanks()
		{
			return 18;
		}
	}
	namespace JunglePressurePlate
	{
		constexpr short JunglePressurePlate(bool Powered)
		{
			if (Powered) return 3879;
			return 3880;
		}
		short JunglePressurePlate();
		bool Powered(short ID);
	}
	namespace JungleSapling
	{
		constexpr short JungleSapling(unsigned char Stage)
		{
			if (Stage == 0) return 27;
			return 28;
		}
		short JungleSapling();
		unsigned char Stage(short ID);
	}
	namespace JungleSign
	{
		constexpr short JungleSign(unsigned char Rotation)
		{
			if (Rotation == 0) return 3510;
			if (Rotation == 1) return 3512;
			if (Rotation == 2) return 3514;
			if (Rotation == 3) return 3516;
			if (Rotation == 4) return 3518;
			if (Rotation == 5) return 3520;
			if (Rotation == 6) return 3522;
			if (Rotation == 7) return 3524;
			if (Rotation == 8) return 3526;
			if (Rotation == 9) return 3528;
			if (Rotation == 10) return 3530;
			if (Rotation == 11) return 3532;
			if (Rotation == 12) return 3534;
			if (Rotation == 13) return 3536;
			if (Rotation == 14) return 3538;
			return 3540;
		}
		short JungleSign();
		unsigned char Rotation(short ID);
	}
	namespace JungleSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short JungleSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8319;
			if (Type == Type::Bottom) return 8321;
			return 8323;
		}
		short JungleSlab();
		enum Type Type(short ID);
	}
	namespace JungleStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short JungleStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 5565;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 5567;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 5569;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 5571;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 5573;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 5575;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5577;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 5579;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5581;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 5583;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 5585;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 5587;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 5589;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 5591;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 5593;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 5595;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5597;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 5599;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5601;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 5603;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 5605;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 5607;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 5609;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 5611;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 5613;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 5615;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5617;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 5619;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5621;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 5623;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 5625;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 5627;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 5629;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 5631;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 5633;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 5635;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5637;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 5639;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5641;
			return 5643;
		}
		short JungleStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace JungleTrapdoor
	{
		enum class Half
		{
			Top,
			Bottom
		};
		constexpr short JungleTrapdoor(eBlockFace Facing, enum Half Half, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && Powered) return 4304;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && !Powered) return 4306;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && Powered) return 4308;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && !Powered) return 4310;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && Powered) return 4312;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && !Powered) return 4314;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && Powered) return 4316;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && !Powered) return 4318;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && Powered) return 4320;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && !Powered) return 4322;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && Powered) return 4324;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && !Powered) return 4326;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && Powered) return 4328;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && !Powered) return 4330;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && Powered) return 4332;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && !Powered) return 4334;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && Powered) return 4336;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && !Powered) return 4338;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && Powered) return 4340;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && !Powered) return 4342;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && Powered) return 4344;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && !Powered) return 4346;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && Powered) return 4348;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && !Powered) return 4350;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && Powered) return 4352;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && !Powered) return 4354;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && Powered) return 4356;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && !Powered) return 4358;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && Powered) return 4360;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && !Powered) return 4362;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && !Open && Powered) return 4364;
			return 4366;
		}
		short JungleTrapdoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace JungleWallSign
	{
		constexpr short JungleWallSign(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 3768;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 3770;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 3772;
			return 3774;
		}
		short JungleWallSign();
		eBlockFace Facing(short ID);
	}
	namespace JungleWood
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short JungleWood(enum Axis Axis)
		{
			if (Axis == Axis::X) return 118;
			if (Axis == Axis::Y) return 119;
			return 120;
		}
		short JungleWood();
		enum Axis Axis(short ID);
	}
	namespace Kelp
	{
		constexpr short Kelp(unsigned char Age)
		{
			if (Age == 0) return 9470;
			if (Age == 1) return 9471;
			if (Age == 2) return 9472;
			if (Age == 3) return 9473;
			if (Age == 4) return 9474;
			if (Age == 5) return 9475;
			if (Age == 6) return 9476;
			if (Age == 7) return 9477;
			if (Age == 8) return 9478;
			if (Age == 9) return 9479;
			if (Age == 10) return 9480;
			if (Age == 11) return 9481;
			if (Age == 12) return 9482;
			if (Age == 13) return 9483;
			if (Age == 14) return 9484;
			if (Age == 15) return 9485;
			if (Age == 16) return 9486;
			if (Age == 17) return 9487;
			if (Age == 18) return 9488;
			if (Age == 19) return 9489;
			if (Age == 20) return 9490;
			if (Age == 21) return 9491;
			if (Age == 22) return 9492;
			if (Age == 23) return 9493;
			if (Age == 24) return 9494;
			return 9495;
		}
		short Kelp();
		unsigned char Age(short ID);
	}
	namespace KelpPlant
	{
		constexpr short KelpPlant()
		{
			return 9496;
		}
	}
	namespace Ladder
	{
		constexpr short Ladder(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 3638;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 3640;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 3642;
			return 3644;
		}
		short Ladder();
		eBlockFace Facing(short ID);
	}
	namespace Lantern
	{
		constexpr short Lantern(bool Hanging)
		{
			if (Hanging) return 14886;
			return 14887;
		}
		short Lantern();
		bool Hanging(short ID);
	}
	namespace LapisBlock
	{
		constexpr short LapisBlock()
		{
			return 233;
		}
	}
	namespace LapisOre
	{
		constexpr short LapisOre()
		{
			return 232;
		}
	}
	namespace LargeFern
	{
		enum class Half
		{
			Upper,
			Lower
		};
		constexpr short LargeFern(enum Half Half)
		{
			if (Half == Half::Upper) return 7895;
			return 7896;
		}
		short LargeFern();
		enum Half Half(short ID);
	}
	namespace Lava
	{
		constexpr short Lava(unsigned char Level)
		{
			if (Level == 0) return 50;
			if (Level == 1) return 51;
			if (Level == 2) return 52;
			if (Level == 3) return 53;
			if (Level == 4) return 54;
			if (Level == 5) return 55;
			if (Level == 6) return 56;
			if (Level == 7) return 57;
			if (Level == 8) return 58;
			if (Level == 9) return 59;
			if (Level == 10) return 60;
			if (Level == 11) return 61;
			if (Level == 12) return 62;
			if (Level == 13) return 63;
			if (Level == 14) return 64;
			return 65;
		}
		short Lava();
		unsigned char Level(short ID);
	}
	namespace Lectern
	{
		constexpr short Lectern(eBlockFace Facing, bool HasBook, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && HasBook && Powered) return 14833;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && HasBook && !Powered) return 14834;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !HasBook && Powered) return 14835;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !HasBook && !Powered) return 14836;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && HasBook && Powered) return 14837;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && HasBook && !Powered) return 14838;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !HasBook && Powered) return 14839;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !HasBook && !Powered) return 14840;
			if (Facing == eBlockFace::BLOCK_FACE_XM && HasBook && Powered) return 14841;
			if (Facing == eBlockFace::BLOCK_FACE_XM && HasBook && !Powered) return 14842;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !HasBook && Powered) return 14843;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !HasBook && !Powered) return 14844;
			if (Facing == eBlockFace::BLOCK_FACE_XP && HasBook && Powered) return 14845;
			if (Facing == eBlockFace::BLOCK_FACE_XP && HasBook && !Powered) return 14846;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !HasBook && Powered) return 14847;
			return 14848;
		}
		short Lectern();
		eBlockFace Facing(short ID);
		bool HasBook(short ID);
		bool Powered(short ID);
	}
	namespace Lever
	{
		enum class Face
		{
			Floor,
			Wall,
			Ceiling
		};
		constexpr short Lever(enum Face Face, eBlockFace Facing, bool Powered)
		{
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 3783;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 3784;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 3785;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 3786;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 3787;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 3788;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 3789;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 3790;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 3791;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 3792;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 3793;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 3794;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 3795;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 3796;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 3797;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 3798;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 3799;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 3800;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 3801;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 3802;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 3803;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 3804;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 3805;
			return 3806;
		}
		short Lever();
		enum Face Face(short ID);
		eBlockFace Facing(short ID);
		bool Powered(short ID);
	}
	namespace LightBlueBanner
	{
		constexpr short LightBlueBanner(unsigned char Rotation)
		{
			if (Rotation == 0) return 7945;
			if (Rotation == 1) return 7946;
			if (Rotation == 2) return 7947;
			if (Rotation == 3) return 7948;
			if (Rotation == 4) return 7949;
			if (Rotation == 5) return 7950;
			if (Rotation == 6) return 7951;
			if (Rotation == 7) return 7952;
			if (Rotation == 8) return 7953;
			if (Rotation == 9) return 7954;
			if (Rotation == 10) return 7955;
			if (Rotation == 11) return 7956;
			if (Rotation == 12) return 7957;
			if (Rotation == 13) return 7958;
			if (Rotation == 14) return 7959;
			return 7960;
		}
		short LightBlueBanner();
		unsigned char Rotation(short ID);
	}
	namespace LightBlueBed
	{
		enum class Part
		{
			Head,
			Foot
		};
		constexpr short LightBlueBed(eBlockFace Facing, bool Occupied, enum Part Part)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Head) return 1097;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Foot) return 1098;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Head) return 1099;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Foot) return 1100;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Head) return 1101;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Foot) return 1102;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Head) return 1103;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Foot) return 1104;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Head) return 1105;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Foot) return 1106;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Head) return 1107;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Foot) return 1108;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Head) return 1109;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Foot) return 1110;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Occupied && Part == Part::Head) return 1111;
			return 1112;
		}
		short LightBlueBed();
		eBlockFace Facing(short ID);
		bool Occupied(short ID);
		enum Part Part(short ID);
	}
	namespace LightBlueCarpet
	{
		constexpr short LightBlueCarpet()
		{
			return 7869;
		}
	}
	namespace LightBlueConcrete
	{
		constexpr short LightBlueConcrete()
		{
			return 9441;
		}
	}
	namespace LightBlueConcretePowder
	{
		constexpr short LightBlueConcretePowder()
		{
			return 9457;
		}
	}
	namespace LightBlueGlazedTerracotta
	{
		constexpr short LightBlueGlazedTerracotta(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9386;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9387;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9388;
			return 9389;
		}
		short LightBlueGlazedTerracotta();
		eBlockFace Facing(short ID);
	}
	namespace LightBlueShulkerBox
	{
		constexpr short LightBlueShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9296;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9297;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9298;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9299;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9300;
			return 9301;
		}
		short LightBlueShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace LightBlueStainedGlass
	{
		constexpr short LightBlueStainedGlass()
		{
			return 4098;
		}
	}
	namespace LightBlueStainedGlassPane
	{
		constexpr short LightBlueStainedGlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 6961;
			if (East && North && South && !West) return 6962;
			if (East && North && !South && West) return 6965;
			if (East && North && !South && !West) return 6966;
			if (East && !North && South && West) return 6969;
			if (East && !North && South && !West) return 6970;
			if (East && !North && !South && West) return 6973;
			if (East && !North && !South && !West) return 6974;
			if (!East && North && South && West) return 6977;
			if (!East && North && South && !West) return 6978;
			if (!East && North && !South && West) return 6981;
			if (!East && North && !South && !West) return 6982;
			if (!East && !North && South && West) return 6985;
			if (!East && !North && South && !West) return 6986;
			if (!East && !North && !South && West) return 6989;
			return 6990;
		}
		short LightBlueStainedGlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace LightBlueTerracotta
	{
		constexpr short LightBlueTerracotta()
		{
			return 6850;
		}
	}
	namespace LightBlueWallBanner
	{
		constexpr short LightBlueWallBanner(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 8165;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 8166;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 8167;
			return 8168;
		}
		short LightBlueWallBanner();
		eBlockFace Facing(short ID);
	}
	namespace LightBlueWool
	{
		constexpr short LightBlueWool()
		{
			return 1387;
		}
	}
	namespace LightGrayBanner
	{
		constexpr short LightGrayBanner(unsigned char Rotation)
		{
			if (Rotation == 0) return 8025;
			if (Rotation == 1) return 8026;
			if (Rotation == 2) return 8027;
			if (Rotation == 3) return 8028;
			if (Rotation == 4) return 8029;
			if (Rotation == 5) return 8030;
			if (Rotation == 6) return 8031;
			if (Rotation == 7) return 8032;
			if (Rotation == 8) return 8033;
			if (Rotation == 9) return 8034;
			if (Rotation == 10) return 8035;
			if (Rotation == 11) return 8036;
			if (Rotation == 12) return 8037;
			if (Rotation == 13) return 8038;
			if (Rotation == 14) return 8039;
			return 8040;
		}
		short LightGrayBanner();
		unsigned char Rotation(short ID);
	}
	namespace LightGrayBed
	{
		enum class Part
		{
			Head,
			Foot
		};
		constexpr short LightGrayBed(eBlockFace Facing, bool Occupied, enum Part Part)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Head) return 1177;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Foot) return 1178;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Head) return 1179;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Foot) return 1180;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Head) return 1181;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Foot) return 1182;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Head) return 1183;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Foot) return 1184;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Head) return 1185;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Foot) return 1186;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Head) return 1187;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Foot) return 1188;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Head) return 1189;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Foot) return 1190;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Occupied && Part == Part::Head) return 1191;
			return 1192;
		}
		short LightGrayBed();
		eBlockFace Facing(short ID);
		bool Occupied(short ID);
		enum Part Part(short ID);
	}
	namespace LightGrayCarpet
	{
		constexpr short LightGrayCarpet()
		{
			return 7874;
		}
	}
	namespace LightGrayConcrete
	{
		constexpr short LightGrayConcrete()
		{
			return 9446;
		}
	}
	namespace LightGrayConcretePowder
	{
		constexpr short LightGrayConcretePowder()
		{
			return 9462;
		}
	}
	namespace LightGrayGlazedTerracotta
	{
		constexpr short LightGrayGlazedTerracotta(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9406;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9407;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9408;
			return 9409;
		}
		short LightGrayGlazedTerracotta();
		eBlockFace Facing(short ID);
	}
	namespace LightGrayShulkerBox
	{
		constexpr short LightGrayShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9326;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9327;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9328;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9329;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9330;
			return 9331;
		}
		short LightGrayShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace LightGrayStainedGlass
	{
		constexpr short LightGrayStainedGlass()
		{
			return 4103;
		}
	}
	namespace LightGrayStainedGlassPane
	{
		constexpr short LightGrayStainedGlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 7121;
			if (East && North && South && !West) return 7122;
			if (East && North && !South && West) return 7125;
			if (East && North && !South && !West) return 7126;
			if (East && !North && South && West) return 7129;
			if (East && !North && South && !West) return 7130;
			if (East && !North && !South && West) return 7133;
			if (East && !North && !South && !West) return 7134;
			if (!East && North && South && West) return 7137;
			if (!East && North && South && !West) return 7138;
			if (!East && North && !South && West) return 7141;
			if (!East && North && !South && !West) return 7142;
			if (!East && !North && South && West) return 7145;
			if (!East && !North && South && !West) return 7146;
			if (!East && !North && !South && West) return 7149;
			return 7150;
		}
		short LightGrayStainedGlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace LightGrayTerracotta
	{
		constexpr short LightGrayTerracotta()
		{
			return 6855;
		}
	}
	namespace LightGrayWallBanner
	{
		constexpr short LightGrayWallBanner(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 8185;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 8186;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 8187;
			return 8188;
		}
		short LightGrayWallBanner();
		eBlockFace Facing(short ID);
	}
	namespace LightGrayWool
	{
		constexpr short LightGrayWool()
		{
			return 1392;
		}
	}
	namespace LightWeightedPressurePlate
	{
		constexpr short LightWeightedPressurePlate(unsigned char Power)
		{
			if (Power == 0) return 6646;
			if (Power == 1) return 6647;
			if (Power == 2) return 6648;
			if (Power == 3) return 6649;
			if (Power == 4) return 6650;
			if (Power == 5) return 6651;
			if (Power == 6) return 6652;
			if (Power == 7) return 6653;
			if (Power == 8) return 6654;
			if (Power == 9) return 6655;
			if (Power == 10) return 6656;
			if (Power == 11) return 6657;
			if (Power == 12) return 6658;
			if (Power == 13) return 6659;
			if (Power == 14) return 6660;
			return 6661;
		}
		short LightWeightedPressurePlate();
		unsigned char Power(short ID);
	}
	namespace Lilac
	{
		enum class Half
		{
			Upper,
			Lower
		};
		constexpr short Lilac(enum Half Half)
		{
			if (Half == Half::Upper) return 7887;
			return 7888;
		}
		short Lilac();
		enum Half Half(short ID);
	}
	namespace LilyOfTheValley
	{
		constexpr short LilyOfTheValley()
		{
			return 1424;
		}
	}
	namespace LilyPad
	{
		constexpr short LilyPad()
		{
			return 5014;
		}
	}
	namespace LimeBanner
	{
		constexpr short LimeBanner(unsigned char Rotation)
		{
			if (Rotation == 0) return 7977;
			if (Rotation == 1) return 7978;
			if (Rotation == 2) return 7979;
			if (Rotation == 3) return 7980;
			if (Rotation == 4) return 7981;
			if (Rotation == 5) return 7982;
			if (Rotation == 6) return 7983;
			if (Rotation == 7) return 7984;
			if (Rotation == 8) return 7985;
			if (Rotation == 9) return 7986;
			if (Rotation == 10) return 7987;
			if (Rotation == 11) return 7988;
			if (Rotation == 12) return 7989;
			if (Rotation == 13) return 7990;
			if (Rotation == 14) return 7991;
			return 7992;
		}
		short LimeBanner();
		unsigned char Rotation(short ID);
	}
	namespace LimeBed
	{
		enum class Part
		{
			Head,
			Foot
		};
		constexpr short LimeBed(eBlockFace Facing, bool Occupied, enum Part Part)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Head) return 1129;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Foot) return 1130;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Head) return 1131;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Foot) return 1132;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Head) return 1133;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Foot) return 1134;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Head) return 1135;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Foot) return 1136;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Head) return 1137;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Foot) return 1138;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Head) return 1139;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Foot) return 1140;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Head) return 1141;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Foot) return 1142;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Occupied && Part == Part::Head) return 1143;
			return 1144;
		}
		short LimeBed();
		eBlockFace Facing(short ID);
		bool Occupied(short ID);
		enum Part Part(short ID);
	}
	namespace LimeCarpet
	{
		constexpr short LimeCarpet()
		{
			return 7871;
		}
	}
	namespace LimeConcrete
	{
		constexpr short LimeConcrete()
		{
			return 9443;
		}
	}
	namespace LimeConcretePowder
	{
		constexpr short LimeConcretePowder()
		{
			return 9459;
		}
	}
	namespace LimeGlazedTerracotta
	{
		constexpr short LimeGlazedTerracotta(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9394;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9395;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9396;
			return 9397;
		}
		short LimeGlazedTerracotta();
		eBlockFace Facing(short ID);
	}
	namespace LimeShulkerBox
	{
		constexpr short LimeShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9308;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9309;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9310;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9311;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9312;
			return 9313;
		}
		short LimeShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace LimeStainedGlass
	{
		constexpr short LimeStainedGlass()
		{
			return 4100;
		}
	}
	namespace LimeStainedGlassPane
	{
		constexpr short LimeStainedGlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 7025;
			if (East && North && South && !West) return 7026;
			if (East && North && !South && West) return 7029;
			if (East && North && !South && !West) return 7030;
			if (East && !North && South && West) return 7033;
			if (East && !North && South && !West) return 7034;
			if (East && !North && !South && West) return 7037;
			if (East && !North && !South && !West) return 7038;
			if (!East && North && South && West) return 7041;
			if (!East && North && South && !West) return 7042;
			if (!East && North && !South && West) return 7045;
			if (!East && North && !South && !West) return 7046;
			if (!East && !North && South && West) return 7049;
			if (!East && !North && South && !West) return 7050;
			if (!East && !North && !South && West) return 7053;
			return 7054;
		}
		short LimeStainedGlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace LimeTerracotta
	{
		constexpr short LimeTerracotta()
		{
			return 6852;
		}
	}
	namespace LimeWallBanner
	{
		constexpr short LimeWallBanner(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 8173;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 8174;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 8175;
			return 8176;
		}
		short LimeWallBanner();
		eBlockFace Facing(short ID);
	}
	namespace LimeWool
	{
		constexpr short LimeWool()
		{
			return 1389;
		}
	}
	namespace Lodestone
	{
		constexpr short Lodestone()
		{
			return 15838;
		}
	}
	namespace Loom
	{
		constexpr short Loom(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 14787;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 14788;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 14789;
			return 14790;
		}
		short Loom();
		eBlockFace Facing(short ID);
	}
	namespace MagentaBanner
	{
		constexpr short MagentaBanner(unsigned char Rotation)
		{
			if (Rotation == 0) return 7929;
			if (Rotation == 1) return 7930;
			if (Rotation == 2) return 7931;
			if (Rotation == 3) return 7932;
			if (Rotation == 4) return 7933;
			if (Rotation == 5) return 7934;
			if (Rotation == 6) return 7935;
			if (Rotation == 7) return 7936;
			if (Rotation == 8) return 7937;
			if (Rotation == 9) return 7938;
			if (Rotation == 10) return 7939;
			if (Rotation == 11) return 7940;
			if (Rotation == 12) return 7941;
			if (Rotation == 13) return 7942;
			if (Rotation == 14) return 7943;
			return 7944;
		}
		short MagentaBanner();
		unsigned char Rotation(short ID);
	}
	namespace MagentaBed
	{
		enum class Part
		{
			Head,
			Foot
		};
		constexpr short MagentaBed(eBlockFace Facing, bool Occupied, enum Part Part)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Head) return 1081;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Foot) return 1082;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Head) return 1083;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Foot) return 1084;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Head) return 1085;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Foot) return 1086;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Head) return 1087;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Foot) return 1088;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Head) return 1089;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Foot) return 1090;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Head) return 1091;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Foot) return 1092;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Head) return 1093;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Foot) return 1094;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Occupied && Part == Part::Head) return 1095;
			return 1096;
		}
		short MagentaBed();
		eBlockFace Facing(short ID);
		bool Occupied(short ID);
		enum Part Part(short ID);
	}
	namespace MagentaCarpet
	{
		constexpr short MagentaCarpet()
		{
			return 7868;
		}
	}
	namespace MagentaConcrete
	{
		constexpr short MagentaConcrete()
		{
			return 9440;
		}
	}
	namespace MagentaConcretePowder
	{
		constexpr short MagentaConcretePowder()
		{
			return 9456;
		}
	}
	namespace MagentaGlazedTerracotta
	{
		constexpr short MagentaGlazedTerracotta(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9382;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9383;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9384;
			return 9385;
		}
		short MagentaGlazedTerracotta();
		eBlockFace Facing(short ID);
	}
	namespace MagentaShulkerBox
	{
		constexpr short MagentaShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9290;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9291;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9292;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9293;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9294;
			return 9295;
		}
		short MagentaShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace MagentaStainedGlass
	{
		constexpr short MagentaStainedGlass()
		{
			return 4097;
		}
	}
	namespace MagentaStainedGlassPane
	{
		constexpr short MagentaStainedGlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 6929;
			if (East && North && South && !West) return 6930;
			if (East && North && !South && West) return 6933;
			if (East && North && !South && !West) return 6934;
			if (East && !North && South && West) return 6937;
			if (East && !North && South && !West) return 6938;
			if (East && !North && !South && West) return 6941;
			if (East && !North && !South && !West) return 6942;
			if (!East && North && South && West) return 6945;
			if (!East && North && South && !West) return 6946;
			if (!East && North && !South && West) return 6949;
			if (!East && North && !South && !West) return 6950;
			if (!East && !North && South && West) return 6953;
			if (!East && !North && South && !West) return 6954;
			if (!East && !North && !South && West) return 6957;
			return 6958;
		}
		short MagentaStainedGlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace MagentaTerracotta
	{
		constexpr short MagentaTerracotta()
		{
			return 6849;
		}
	}
	namespace MagentaWallBanner
	{
		constexpr short MagentaWallBanner(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 8161;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 8162;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 8163;
			return 8164;
		}
		short MagentaWallBanner();
		eBlockFace Facing(short ID);
	}
	namespace MagentaWool
	{
		constexpr short MagentaWool()
		{
			return 1386;
		}
	}
	namespace MagmaBlock
	{
		constexpr short MagmaBlock()
		{
			return 9253;
		}
	}
	namespace Melon
	{
		constexpr short Melon()
		{
			return 4763;
		}
	}
	namespace MelonStem
	{
		constexpr short MelonStem(unsigned char Age)
		{
			if (Age == 0) return 4780;
			if (Age == 1) return 4781;
			if (Age == 2) return 4782;
			if (Age == 3) return 4783;
			if (Age == 4) return 4784;
			if (Age == 5) return 4785;
			if (Age == 6) return 4786;
			return 4787;
		}
		short MelonStem();
		unsigned char Age(short ID);
	}
	namespace MossyCobblestone
	{
		constexpr short MossyCobblestone()
		{
			return 1433;
		}
	}
	namespace MossyCobblestoneSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short MossyCobblestoneSlab(enum Type Type)
		{
			if (Type == Type::Top) return 10814;
			if (Type == Type::Bottom) return 10816;
			return 10818;
		}
		short MossyCobblestoneSlab();
		enum Type Type(short ID);
	}
	namespace MossyCobblestoneStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short MossyCobblestoneStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 9990;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 9992;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 9994;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 9996;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 9998;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 10000;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10002;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10004;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10006;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10008;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 10010;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 10012;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 10014;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 10016;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 10018;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 10020;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10022;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10024;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10026;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 10028;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 10030;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 10032;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 10034;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 10036;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 10038;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 10040;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10042;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10044;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10046;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10048;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 10050;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 10052;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 10054;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 10056;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 10058;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 10060;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10062;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10064;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10066;
			return 10068;
		}
		short MossyCobblestoneStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace MossyCobblestoneWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short MossyCobblestoneWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 5984;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 5985;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 5986;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 5990;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 5991;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 5992;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 5996;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 5997;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 5998;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 6002;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 6003;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 6004;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 6008;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 6009;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 6010;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 6014;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 6015;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 6016;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 6020;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 6021;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 6022;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 6026;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 6027;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 6028;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 6032;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 6033;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 6034;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 6038;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 6039;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 6040;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 6044;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 6045;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 6046;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 6050;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 6051;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 6052;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 6056;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 6057;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 6058;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 6062;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 6063;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 6064;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 6068;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 6069;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 6070;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 6074;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 6075;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 6076;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 6080;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 6081;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 6082;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 6086;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 6087;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 6088;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 6092;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 6093;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 6094;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 6098;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 6099;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 6100;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 6104;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 6105;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 6106;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 6110;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 6111;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 6112;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 6116;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 6117;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 6118;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 6122;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 6123;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 6124;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 6128;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 6129;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 6130;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 6134;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 6135;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 6136;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 6140;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 6141;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 6142;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 6146;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 6147;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 6148;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 6152;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 6153;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 6154;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 6158;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 6159;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 6160;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 6164;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 6165;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 6166;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 6170;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 6171;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 6172;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 6176;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 6177;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 6178;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 6182;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 6183;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 6184;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 6188;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 6189;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 6190;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 6194;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 6195;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 6196;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 6200;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 6201;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 6202;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 6206;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 6207;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 6208;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 6212;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 6213;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 6214;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 6218;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 6219;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 6220;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 6224;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 6225;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 6226;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 6230;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 6231;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 6232;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 6236;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 6237;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 6238;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 6242;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 6243;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 6244;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 6248;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 6249;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 6250;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 6254;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 6255;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 6256;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 6260;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 6261;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 6262;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 6266;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 6267;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 6268;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 6272;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 6273;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 6274;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 6278;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 6279;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 6280;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 6284;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 6285;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 6286;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 6290;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 6291;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 6292;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 6296;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 6297;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 6298;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 6302;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 6303;
			return 6304;
		}
		short MossyCobblestoneWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace MossyStoneBrickSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short MossyStoneBrickSlab(enum Type Type)
		{
			if (Type == Type::Top) return 10802;
			if (Type == Type::Bottom) return 10804;
			return 10806;
		}
		short MossyStoneBrickSlab();
		enum Type Type(short ID);
	}
	namespace MossyStoneBrickStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short MossyStoneBrickStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 9830;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 9832;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 9834;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 9836;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 9838;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 9840;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9842;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 9844;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9846;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 9848;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 9850;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 9852;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 9854;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 9856;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 9858;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 9860;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9862;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 9864;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9866;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 9868;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 9870;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 9872;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 9874;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 9876;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 9878;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 9880;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9882;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 9884;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9886;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 9888;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 9890;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 9892;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 9894;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 9896;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 9898;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 9900;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9902;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 9904;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9906;
			return 9908;
		}
		short MossyStoneBrickStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace MossyStoneBrickWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short MossyStoneBrickWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 11842;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 11843;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 11844;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 11848;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 11849;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 11850;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 11854;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 11855;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 11856;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 11860;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 11861;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 11862;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 11866;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 11867;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 11868;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 11872;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 11873;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 11874;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 11878;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 11879;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 11880;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 11884;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 11885;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 11886;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 11890;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 11891;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 11892;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 11896;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 11897;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 11898;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 11902;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 11903;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 11904;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 11908;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 11909;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 11910;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 11914;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 11915;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 11916;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 11920;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 11921;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 11922;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 11926;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 11927;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 11928;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 11932;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 11933;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 11934;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 11938;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 11939;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 11940;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 11944;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 11945;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 11946;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 11950;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 11951;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 11952;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 11956;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 11957;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 11958;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 11962;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 11963;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 11964;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 11968;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 11969;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 11970;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 11974;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 11975;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 11976;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 11980;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 11981;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 11982;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 11986;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 11987;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 11988;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 11992;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 11993;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 11994;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 11998;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 11999;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 12000;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 12004;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 12005;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 12006;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 12010;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 12011;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 12012;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 12016;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 12017;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 12018;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 12022;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 12023;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 12024;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 12028;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 12029;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 12030;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 12034;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 12035;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 12036;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 12040;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 12041;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 12042;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 12046;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 12047;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 12048;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 12052;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 12053;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 12054;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 12058;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 12059;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 12060;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 12064;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 12065;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 12066;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 12070;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 12071;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 12072;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 12076;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 12077;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 12078;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 12082;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 12083;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 12084;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 12088;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 12089;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 12090;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 12094;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 12095;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 12096;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 12100;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 12101;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 12102;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 12106;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 12107;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 12108;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 12112;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 12113;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 12114;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 12118;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 12119;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 12120;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 12124;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 12125;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 12126;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 12130;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 12131;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 12132;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 12136;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 12137;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 12138;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 12142;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 12143;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 12144;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 12148;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 12149;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 12150;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 12154;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 12155;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 12156;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 12160;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 12161;
			return 12162;
		}
		short MossyStoneBrickWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace MossyStoneBricks
	{
		constexpr short MossyStoneBricks()
		{
			return 4496;
		}
	}
	namespace MovingPiston
	{
		enum class Type
		{
			Normal,
			Sticky
		};
		constexpr short MovingPiston(eBlockFace Facing, enum Type Type)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Type == Type::Normal) return 1400;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Type == Type::Sticky) return 1401;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Type == Type::Normal) return 1402;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Type == Type::Sticky) return 1403;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Type == Type::Normal) return 1404;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Type == Type::Sticky) return 1405;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Type == Type::Normal) return 1406;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Type == Type::Sticky) return 1407;
			if (Facing == eBlockFace::BLOCK_FACE_YP && Type == Type::Normal) return 1408;
			if (Facing == eBlockFace::BLOCK_FACE_YP && Type == Type::Sticky) return 1409;
			if (Facing == eBlockFace::BLOCK_FACE_YM && Type == Type::Normal) return 1410;
			return 1411;
		}
		short MovingPiston();
		eBlockFace Facing(short ID);
		enum Type Type(short ID);
	}
	namespace MushroomStem
	{
		constexpr short MushroomStem(bool Down, bool East, bool North, bool South, bool Up, bool West)
		{
			if (Down && East && North && South && Up && West) return 4633;
			if (Down && East && North && South && Up && !West) return 4634;
			if (Down && East && North && South && !Up && West) return 4635;
			if (Down && East && North && South && !Up && !West) return 4636;
			if (Down && East && North && !South && Up && West) return 4637;
			if (Down && East && North && !South && Up && !West) return 4638;
			if (Down && East && North && !South && !Up && West) return 4639;
			if (Down && East && North && !South && !Up && !West) return 4640;
			if (Down && East && !North && South && Up && West) return 4641;
			if (Down && East && !North && South && Up && !West) return 4642;
			if (Down && East && !North && South && !Up && West) return 4643;
			if (Down && East && !North && South && !Up && !West) return 4644;
			if (Down && East && !North && !South && Up && West) return 4645;
			if (Down && East && !North && !South && Up && !West) return 4646;
			if (Down && East && !North && !South && !Up && West) return 4647;
			if (Down && East && !North && !South && !Up && !West) return 4648;
			if (Down && !East && North && South && Up && West) return 4649;
			if (Down && !East && North && South && Up && !West) return 4650;
			if (Down && !East && North && South && !Up && West) return 4651;
			if (Down && !East && North && South && !Up && !West) return 4652;
			if (Down && !East && North && !South && Up && West) return 4653;
			if (Down && !East && North && !South && Up && !West) return 4654;
			if (Down && !East && North && !South && !Up && West) return 4655;
			if (Down && !East && North && !South && !Up && !West) return 4656;
			if (Down && !East && !North && South && Up && West) return 4657;
			if (Down && !East && !North && South && Up && !West) return 4658;
			if (Down && !East && !North && South && !Up && West) return 4659;
			if (Down && !East && !North && South && !Up && !West) return 4660;
			if (Down && !East && !North && !South && Up && West) return 4661;
			if (Down && !East && !North && !South && Up && !West) return 4662;
			if (Down && !East && !North && !South && !Up && West) return 4663;
			if (Down && !East && !North && !South && !Up && !West) return 4664;
			if (!Down && East && North && South && Up && West) return 4665;
			if (!Down && East && North && South && Up && !West) return 4666;
			if (!Down && East && North && South && !Up && West) return 4667;
			if (!Down && East && North && South && !Up && !West) return 4668;
			if (!Down && East && North && !South && Up && West) return 4669;
			if (!Down && East && North && !South && Up && !West) return 4670;
			if (!Down && East && North && !South && !Up && West) return 4671;
			if (!Down && East && North && !South && !Up && !West) return 4672;
			if (!Down && East && !North && South && Up && West) return 4673;
			if (!Down && East && !North && South && Up && !West) return 4674;
			if (!Down && East && !North && South && !Up && West) return 4675;
			if (!Down && East && !North && South && !Up && !West) return 4676;
			if (!Down && East && !North && !South && Up && West) return 4677;
			if (!Down && East && !North && !South && Up && !West) return 4678;
			if (!Down && East && !North && !South && !Up && West) return 4679;
			if (!Down && East && !North && !South && !Up && !West) return 4680;
			if (!Down && !East && North && South && Up && West) return 4681;
			if (!Down && !East && North && South && Up && !West) return 4682;
			if (!Down && !East && North && South && !Up && West) return 4683;
			if (!Down && !East && North && South && !Up && !West) return 4684;
			if (!Down && !East && North && !South && Up && West) return 4685;
			if (!Down && !East && North && !South && Up && !West) return 4686;
			if (!Down && !East && North && !South && !Up && West) return 4687;
			if (!Down && !East && North && !South && !Up && !West) return 4688;
			if (!Down && !East && !North && South && Up && West) return 4689;
			if (!Down && !East && !North && South && Up && !West) return 4690;
			if (!Down && !East && !North && South && !Up && West) return 4691;
			if (!Down && !East && !North && South && !Up && !West) return 4692;
			if (!Down && !East && !North && !South && Up && West) return 4693;
			if (!Down && !East && !North && !South && Up && !West) return 4694;
			if (!Down && !East && !North && !South && !Up && West) return 4695;
			return 4696;
		}
		short MushroomStem();
		bool Down(short ID);
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool Up(short ID);
		bool West(short ID);
	}
	namespace Mycelium
	{
		constexpr short Mycelium(bool Snowy)
		{
			if (Snowy) return 5012;
			return 5013;
		}
		short Mycelium();
		bool Snowy(short ID);
	}
	namespace NetherBrickFence
	{
		constexpr short NetherBrickFence(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 5018;
			if (East && North && South && !West) return 5019;
			if (East && North && !South && West) return 5022;
			if (East && North && !South && !West) return 5023;
			if (East && !North && South && West) return 5026;
			if (East && !North && South && !West) return 5027;
			if (East && !North && !South && West) return 5030;
			if (East && !North && !South && !West) return 5031;
			if (!East && North && South && West) return 5034;
			if (!East && North && South && !West) return 5035;
			if (!East && North && !South && West) return 5038;
			if (!East && North && !South && !West) return 5039;
			if (!East && !North && South && West) return 5042;
			if (!East && !North && South && !West) return 5043;
			if (!East && !North && !South && West) return 5046;
			return 5047;
		}
		short NetherBrickFence();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace NetherBrickSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short NetherBrickSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8385;
			if (Type == Type::Bottom) return 8387;
			return 8389;
		}
		short NetherBrickSlab();
		enum Type Type(short ID);
	}
	namespace NetherBrickStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short NetherBrickStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 5049;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 5051;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 5053;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 5055;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 5057;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 5059;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5061;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 5063;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5065;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 5067;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 5069;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 5071;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 5073;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 5075;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 5077;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 5079;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5081;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 5083;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5085;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 5087;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 5089;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 5091;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 5093;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 5095;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 5097;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 5099;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5101;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 5103;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5105;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 5107;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 5109;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 5111;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 5113;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 5115;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 5117;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 5119;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5121;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 5123;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5125;
			return 5127;
		}
		short NetherBrickStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace NetherBrickWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short NetherBrickWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 12814;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 12815;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 12816;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 12820;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 12821;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 12822;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 12826;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 12827;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 12828;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 12832;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 12833;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 12834;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 12838;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 12839;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 12840;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 12844;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 12845;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 12846;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 12850;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 12851;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 12852;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 12856;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 12857;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 12858;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 12862;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 12863;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 12864;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 12868;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 12869;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 12870;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 12874;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 12875;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 12876;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 12880;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 12881;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 12882;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 12886;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 12887;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 12888;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 12892;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 12893;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 12894;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 12898;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 12899;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 12900;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 12904;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 12905;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 12906;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 12910;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 12911;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 12912;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 12916;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 12917;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 12918;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 12922;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 12923;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 12924;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 12928;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 12929;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 12930;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 12934;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 12935;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 12936;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 12940;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 12941;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 12942;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 12946;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 12947;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 12948;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 12952;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 12953;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 12954;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 12958;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 12959;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 12960;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 12964;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 12965;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 12966;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 12970;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 12971;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 12972;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 12976;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 12977;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 12978;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 12982;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 12983;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 12984;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 12988;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 12989;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 12990;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 12994;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 12995;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 12996;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 13000;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 13001;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 13002;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 13006;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 13007;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 13008;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 13012;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 13013;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 13014;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 13018;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 13019;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 13020;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 13024;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 13025;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 13026;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 13030;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 13031;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 13032;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 13036;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 13037;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 13038;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 13042;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 13043;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 13044;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 13048;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 13049;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 13050;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 13054;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 13055;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 13056;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 13060;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 13061;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 13062;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 13066;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 13067;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 13068;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 13072;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 13073;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 13074;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 13078;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 13079;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 13080;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 13084;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 13085;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 13086;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 13090;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 13091;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 13092;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 13096;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 13097;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 13098;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 13102;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 13103;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 13104;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 13108;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 13109;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 13110;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 13114;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 13115;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 13116;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 13120;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 13121;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 13122;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 13126;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 13127;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 13128;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 13132;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 13133;
			return 13134;
		}
		short NetherBrickWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace NetherBricks
	{
		constexpr short NetherBricks()
		{
			return 5015;
		}
	}
	namespace NetherGoldOre
	{
		constexpr short NetherGoldOre()
		{
			return 72;
		}
	}
	namespace NetherPortal
	{
		enum class Axis
		{
			X,
			Z
		};
		constexpr short NetherPortal(enum Axis Axis)
		{
			if (Axis == Axis::X) return 4014;
			return 4015;
		}
		short NetherPortal();
		enum Axis Axis(short ID);
	}
	namespace NetherQuartzOre
	{
		constexpr short NetherQuartzOre()
		{
			return 6727;
		}
	}
	namespace NetherSprouts
	{
		constexpr short NetherSprouts()
		{
			return 14974;
		}
	}
	namespace NetherWart
	{
		constexpr short NetherWart(unsigned char Age)
		{
			if (Age == 0) return 5128;
			if (Age == 1) return 5129;
			if (Age == 2) return 5130;
			return 5131;
		}
		short NetherWart();
		unsigned char Age(short ID);
	}
	namespace NetherWartBlock
	{
		constexpr short NetherWartBlock()
		{
			return 9254;
		}
	}
	namespace NetheriteBlock
	{
		constexpr short NetheriteBlock()
		{
			return 15826;
		}
	}
	namespace Netherrack
	{
		constexpr short Netherrack()
		{
			return 3999;
		}
	}
	namespace NoteBlock
	{
		enum class Instrument
		{
			Harp,
			Basedrum,
			Snare,
			Hat,
			Bass,
			Flute,
			Bell,
			Guitar,
			Chime,
			Xylophone,
			IronXylophone,
			CowBell,
			Didgeridoo,
			Bit,
			Banjo,
			Pling
		};
		constexpr short NoteBlock(enum Instrument Instrument, unsigned char Note, bool Powered)
		{
			if (Instrument == Instrument::Harp && Note == 0 && Powered) return 249;
			if (Instrument == Instrument::Harp && Note == 0 && !Powered) return 250;
			if (Instrument == Instrument::Harp && Note == 1 && Powered) return 251;
			if (Instrument == Instrument::Harp && Note == 1 && !Powered) return 252;
			if (Instrument == Instrument::Harp && Note == 2 && Powered) return 253;
			if (Instrument == Instrument::Harp && Note == 2 && !Powered) return 254;
			if (Instrument == Instrument::Harp && Note == 3 && Powered) return 255;
			if (Instrument == Instrument::Harp && Note == 3 && !Powered) return 256;
			if (Instrument == Instrument::Harp && Note == 4 && Powered) return 257;
			if (Instrument == Instrument::Harp && Note == 4 && !Powered) return 258;
			if (Instrument == Instrument::Harp && Note == 5 && Powered) return 259;
			if (Instrument == Instrument::Harp && Note == 5 && !Powered) return 260;
			if (Instrument == Instrument::Harp && Note == 6 && Powered) return 261;
			if (Instrument == Instrument::Harp && Note == 6 && !Powered) return 262;
			if (Instrument == Instrument::Harp && Note == 7 && Powered) return 263;
			if (Instrument == Instrument::Harp && Note == 7 && !Powered) return 264;
			if (Instrument == Instrument::Harp && Note == 8 && Powered) return 265;
			if (Instrument == Instrument::Harp && Note == 8 && !Powered) return 266;
			if (Instrument == Instrument::Harp && Note == 9 && Powered) return 267;
			if (Instrument == Instrument::Harp && Note == 9 && !Powered) return 268;
			if (Instrument == Instrument::Harp && Note == 10 && Powered) return 269;
			if (Instrument == Instrument::Harp && Note == 10 && !Powered) return 270;
			if (Instrument == Instrument::Harp && Note == 11 && Powered) return 271;
			if (Instrument == Instrument::Harp && Note == 11 && !Powered) return 272;
			if (Instrument == Instrument::Harp && Note == 12 && Powered) return 273;
			if (Instrument == Instrument::Harp && Note == 12 && !Powered) return 274;
			if (Instrument == Instrument::Harp && Note == 13 && Powered) return 275;
			if (Instrument == Instrument::Harp && Note == 13 && !Powered) return 276;
			if (Instrument == Instrument::Harp && Note == 14 && Powered) return 277;
			if (Instrument == Instrument::Harp && Note == 14 && !Powered) return 278;
			if (Instrument == Instrument::Harp && Note == 15 && Powered) return 279;
			if (Instrument == Instrument::Harp && Note == 15 && !Powered) return 280;
			if (Instrument == Instrument::Harp && Note == 16 && Powered) return 281;
			if (Instrument == Instrument::Harp && Note == 16 && !Powered) return 282;
			if (Instrument == Instrument::Harp && Note == 17 && Powered) return 283;
			if (Instrument == Instrument::Harp && Note == 17 && !Powered) return 284;
			if (Instrument == Instrument::Harp && Note == 18 && Powered) return 285;
			if (Instrument == Instrument::Harp && Note == 18 && !Powered) return 286;
			if (Instrument == Instrument::Harp && Note == 19 && Powered) return 287;
			if (Instrument == Instrument::Harp && Note == 19 && !Powered) return 288;
			if (Instrument == Instrument::Harp && Note == 20 && Powered) return 289;
			if (Instrument == Instrument::Harp && Note == 20 && !Powered) return 290;
			if (Instrument == Instrument::Harp && Note == 21 && Powered) return 291;
			if (Instrument == Instrument::Harp && Note == 21 && !Powered) return 292;
			if (Instrument == Instrument::Harp && Note == 22 && Powered) return 293;
			if (Instrument == Instrument::Harp && Note == 22 && !Powered) return 294;
			if (Instrument == Instrument::Harp && Note == 23 && Powered) return 295;
			if (Instrument == Instrument::Harp && Note == 23 && !Powered) return 296;
			if (Instrument == Instrument::Harp && Note == 24 && Powered) return 297;
			if (Instrument == Instrument::Harp && Note == 24 && !Powered) return 298;
			if (Instrument == Instrument::Basedrum && Note == 0 && Powered) return 299;
			if (Instrument == Instrument::Basedrum && Note == 0 && !Powered) return 300;
			if (Instrument == Instrument::Basedrum && Note == 1 && Powered) return 301;
			if (Instrument == Instrument::Basedrum && Note == 1 && !Powered) return 302;
			if (Instrument == Instrument::Basedrum && Note == 2 && Powered) return 303;
			if (Instrument == Instrument::Basedrum && Note == 2 && !Powered) return 304;
			if (Instrument == Instrument::Basedrum && Note == 3 && Powered) return 305;
			if (Instrument == Instrument::Basedrum && Note == 3 && !Powered) return 306;
			if (Instrument == Instrument::Basedrum && Note == 4 && Powered) return 307;
			if (Instrument == Instrument::Basedrum && Note == 4 && !Powered) return 308;
			if (Instrument == Instrument::Basedrum && Note == 5 && Powered) return 309;
			if (Instrument == Instrument::Basedrum && Note == 5 && !Powered) return 310;
			if (Instrument == Instrument::Basedrum && Note == 6 && Powered) return 311;
			if (Instrument == Instrument::Basedrum && Note == 6 && !Powered) return 312;
			if (Instrument == Instrument::Basedrum && Note == 7 && Powered) return 313;
			if (Instrument == Instrument::Basedrum && Note == 7 && !Powered) return 314;
			if (Instrument == Instrument::Basedrum && Note == 8 && Powered) return 315;
			if (Instrument == Instrument::Basedrum && Note == 8 && !Powered) return 316;
			if (Instrument == Instrument::Basedrum && Note == 9 && Powered) return 317;
			if (Instrument == Instrument::Basedrum && Note == 9 && !Powered) return 318;
			if (Instrument == Instrument::Basedrum && Note == 10 && Powered) return 319;
			if (Instrument == Instrument::Basedrum && Note == 10 && !Powered) return 320;
			if (Instrument == Instrument::Basedrum && Note == 11 && Powered) return 321;
			if (Instrument == Instrument::Basedrum && Note == 11 && !Powered) return 322;
			if (Instrument == Instrument::Basedrum && Note == 12 && Powered) return 323;
			if (Instrument == Instrument::Basedrum && Note == 12 && !Powered) return 324;
			if (Instrument == Instrument::Basedrum && Note == 13 && Powered) return 325;
			if (Instrument == Instrument::Basedrum && Note == 13 && !Powered) return 326;
			if (Instrument == Instrument::Basedrum && Note == 14 && Powered) return 327;
			if (Instrument == Instrument::Basedrum && Note == 14 && !Powered) return 328;
			if (Instrument == Instrument::Basedrum && Note == 15 && Powered) return 329;
			if (Instrument == Instrument::Basedrum && Note == 15 && !Powered) return 330;
			if (Instrument == Instrument::Basedrum && Note == 16 && Powered) return 331;
			if (Instrument == Instrument::Basedrum && Note == 16 && !Powered) return 332;
			if (Instrument == Instrument::Basedrum && Note == 17 && Powered) return 333;
			if (Instrument == Instrument::Basedrum && Note == 17 && !Powered) return 334;
			if (Instrument == Instrument::Basedrum && Note == 18 && Powered) return 335;
			if (Instrument == Instrument::Basedrum && Note == 18 && !Powered) return 336;
			if (Instrument == Instrument::Basedrum && Note == 19 && Powered) return 337;
			if (Instrument == Instrument::Basedrum && Note == 19 && !Powered) return 338;
			if (Instrument == Instrument::Basedrum && Note == 20 && Powered) return 339;
			if (Instrument == Instrument::Basedrum && Note == 20 && !Powered) return 340;
			if (Instrument == Instrument::Basedrum && Note == 21 && Powered) return 341;
			if (Instrument == Instrument::Basedrum && Note == 21 && !Powered) return 342;
			if (Instrument == Instrument::Basedrum && Note == 22 && Powered) return 343;
			if (Instrument == Instrument::Basedrum && Note == 22 && !Powered) return 344;
			if (Instrument == Instrument::Basedrum && Note == 23 && Powered) return 345;
			if (Instrument == Instrument::Basedrum && Note == 23 && !Powered) return 346;
			if (Instrument == Instrument::Basedrum && Note == 24 && Powered) return 347;
			if (Instrument == Instrument::Basedrum && Note == 24 && !Powered) return 348;
			if (Instrument == Instrument::Snare && Note == 0 && Powered) return 349;
			if (Instrument == Instrument::Snare && Note == 0 && !Powered) return 350;
			if (Instrument == Instrument::Snare && Note == 1 && Powered) return 351;
			if (Instrument == Instrument::Snare && Note == 1 && !Powered) return 352;
			if (Instrument == Instrument::Snare && Note == 2 && Powered) return 353;
			if (Instrument == Instrument::Snare && Note == 2 && !Powered) return 354;
			if (Instrument == Instrument::Snare && Note == 3 && Powered) return 355;
			if (Instrument == Instrument::Snare && Note == 3 && !Powered) return 356;
			if (Instrument == Instrument::Snare && Note == 4 && Powered) return 357;
			if (Instrument == Instrument::Snare && Note == 4 && !Powered) return 358;
			if (Instrument == Instrument::Snare && Note == 5 && Powered) return 359;
			if (Instrument == Instrument::Snare && Note == 5 && !Powered) return 360;
			if (Instrument == Instrument::Snare && Note == 6 && Powered) return 361;
			if (Instrument == Instrument::Snare && Note == 6 && !Powered) return 362;
			if (Instrument == Instrument::Snare && Note == 7 && Powered) return 363;
			if (Instrument == Instrument::Snare && Note == 7 && !Powered) return 364;
			if (Instrument == Instrument::Snare && Note == 8 && Powered) return 365;
			if (Instrument == Instrument::Snare && Note == 8 && !Powered) return 366;
			if (Instrument == Instrument::Snare && Note == 9 && Powered) return 367;
			if (Instrument == Instrument::Snare && Note == 9 && !Powered) return 368;
			if (Instrument == Instrument::Snare && Note == 10 && Powered) return 369;
			if (Instrument == Instrument::Snare && Note == 10 && !Powered) return 370;
			if (Instrument == Instrument::Snare && Note == 11 && Powered) return 371;
			if (Instrument == Instrument::Snare && Note == 11 && !Powered) return 372;
			if (Instrument == Instrument::Snare && Note == 12 && Powered) return 373;
			if (Instrument == Instrument::Snare && Note == 12 && !Powered) return 374;
			if (Instrument == Instrument::Snare && Note == 13 && Powered) return 375;
			if (Instrument == Instrument::Snare && Note == 13 && !Powered) return 376;
			if (Instrument == Instrument::Snare && Note == 14 && Powered) return 377;
			if (Instrument == Instrument::Snare && Note == 14 && !Powered) return 378;
			if (Instrument == Instrument::Snare && Note == 15 && Powered) return 379;
			if (Instrument == Instrument::Snare && Note == 15 && !Powered) return 380;
			if (Instrument == Instrument::Snare && Note == 16 && Powered) return 381;
			if (Instrument == Instrument::Snare && Note == 16 && !Powered) return 382;
			if (Instrument == Instrument::Snare && Note == 17 && Powered) return 383;
			if (Instrument == Instrument::Snare && Note == 17 && !Powered) return 384;
			if (Instrument == Instrument::Snare && Note == 18 && Powered) return 385;
			if (Instrument == Instrument::Snare && Note == 18 && !Powered) return 386;
			if (Instrument == Instrument::Snare && Note == 19 && Powered) return 387;
			if (Instrument == Instrument::Snare && Note == 19 && !Powered) return 388;
			if (Instrument == Instrument::Snare && Note == 20 && Powered) return 389;
			if (Instrument == Instrument::Snare && Note == 20 && !Powered) return 390;
			if (Instrument == Instrument::Snare && Note == 21 && Powered) return 391;
			if (Instrument == Instrument::Snare && Note == 21 && !Powered) return 392;
			if (Instrument == Instrument::Snare && Note == 22 && Powered) return 393;
			if (Instrument == Instrument::Snare && Note == 22 && !Powered) return 394;
			if (Instrument == Instrument::Snare && Note == 23 && Powered) return 395;
			if (Instrument == Instrument::Snare && Note == 23 && !Powered) return 396;
			if (Instrument == Instrument::Snare && Note == 24 && Powered) return 397;
			if (Instrument == Instrument::Snare && Note == 24 && !Powered) return 398;
			if (Instrument == Instrument::Hat && Note == 0 && Powered) return 399;
			if (Instrument == Instrument::Hat && Note == 0 && !Powered) return 400;
			if (Instrument == Instrument::Hat && Note == 1 && Powered) return 401;
			if (Instrument == Instrument::Hat && Note == 1 && !Powered) return 402;
			if (Instrument == Instrument::Hat && Note == 2 && Powered) return 403;
			if (Instrument == Instrument::Hat && Note == 2 && !Powered) return 404;
			if (Instrument == Instrument::Hat && Note == 3 && Powered) return 405;
			if (Instrument == Instrument::Hat && Note == 3 && !Powered) return 406;
			if (Instrument == Instrument::Hat && Note == 4 && Powered) return 407;
			if (Instrument == Instrument::Hat && Note == 4 && !Powered) return 408;
			if (Instrument == Instrument::Hat && Note == 5 && Powered) return 409;
			if (Instrument == Instrument::Hat && Note == 5 && !Powered) return 410;
			if (Instrument == Instrument::Hat && Note == 6 && Powered) return 411;
			if (Instrument == Instrument::Hat && Note == 6 && !Powered) return 412;
			if (Instrument == Instrument::Hat && Note == 7 && Powered) return 413;
			if (Instrument == Instrument::Hat && Note == 7 && !Powered) return 414;
			if (Instrument == Instrument::Hat && Note == 8 && Powered) return 415;
			if (Instrument == Instrument::Hat && Note == 8 && !Powered) return 416;
			if (Instrument == Instrument::Hat && Note == 9 && Powered) return 417;
			if (Instrument == Instrument::Hat && Note == 9 && !Powered) return 418;
			if (Instrument == Instrument::Hat && Note == 10 && Powered) return 419;
			if (Instrument == Instrument::Hat && Note == 10 && !Powered) return 420;
			if (Instrument == Instrument::Hat && Note == 11 && Powered) return 421;
			if (Instrument == Instrument::Hat && Note == 11 && !Powered) return 422;
			if (Instrument == Instrument::Hat && Note == 12 && Powered) return 423;
			if (Instrument == Instrument::Hat && Note == 12 && !Powered) return 424;
			if (Instrument == Instrument::Hat && Note == 13 && Powered) return 425;
			if (Instrument == Instrument::Hat && Note == 13 && !Powered) return 426;
			if (Instrument == Instrument::Hat && Note == 14 && Powered) return 427;
			if (Instrument == Instrument::Hat && Note == 14 && !Powered) return 428;
			if (Instrument == Instrument::Hat && Note == 15 && Powered) return 429;
			if (Instrument == Instrument::Hat && Note == 15 && !Powered) return 430;
			if (Instrument == Instrument::Hat && Note == 16 && Powered) return 431;
			if (Instrument == Instrument::Hat && Note == 16 && !Powered) return 432;
			if (Instrument == Instrument::Hat && Note == 17 && Powered) return 433;
			if (Instrument == Instrument::Hat && Note == 17 && !Powered) return 434;
			if (Instrument == Instrument::Hat && Note == 18 && Powered) return 435;
			if (Instrument == Instrument::Hat && Note == 18 && !Powered) return 436;
			if (Instrument == Instrument::Hat && Note == 19 && Powered) return 437;
			if (Instrument == Instrument::Hat && Note == 19 && !Powered) return 438;
			if (Instrument == Instrument::Hat && Note == 20 && Powered) return 439;
			if (Instrument == Instrument::Hat && Note == 20 && !Powered) return 440;
			if (Instrument == Instrument::Hat && Note == 21 && Powered) return 441;
			if (Instrument == Instrument::Hat && Note == 21 && !Powered) return 442;
			if (Instrument == Instrument::Hat && Note == 22 && Powered) return 443;
			if (Instrument == Instrument::Hat && Note == 22 && !Powered) return 444;
			if (Instrument == Instrument::Hat && Note == 23 && Powered) return 445;
			if (Instrument == Instrument::Hat && Note == 23 && !Powered) return 446;
			if (Instrument == Instrument::Hat && Note == 24 && Powered) return 447;
			if (Instrument == Instrument::Hat && Note == 24 && !Powered) return 448;
			if (Instrument == Instrument::Bass && Note == 0 && Powered) return 449;
			if (Instrument == Instrument::Bass && Note == 0 && !Powered) return 450;
			if (Instrument == Instrument::Bass && Note == 1 && Powered) return 451;
			if (Instrument == Instrument::Bass && Note == 1 && !Powered) return 452;
			if (Instrument == Instrument::Bass && Note == 2 && Powered) return 453;
			if (Instrument == Instrument::Bass && Note == 2 && !Powered) return 454;
			if (Instrument == Instrument::Bass && Note == 3 && Powered) return 455;
			if (Instrument == Instrument::Bass && Note == 3 && !Powered) return 456;
			if (Instrument == Instrument::Bass && Note == 4 && Powered) return 457;
			if (Instrument == Instrument::Bass && Note == 4 && !Powered) return 458;
			if (Instrument == Instrument::Bass && Note == 5 && Powered) return 459;
			if (Instrument == Instrument::Bass && Note == 5 && !Powered) return 460;
			if (Instrument == Instrument::Bass && Note == 6 && Powered) return 461;
			if (Instrument == Instrument::Bass && Note == 6 && !Powered) return 462;
			if (Instrument == Instrument::Bass && Note == 7 && Powered) return 463;
			if (Instrument == Instrument::Bass && Note == 7 && !Powered) return 464;
			if (Instrument == Instrument::Bass && Note == 8 && Powered) return 465;
			if (Instrument == Instrument::Bass && Note == 8 && !Powered) return 466;
			if (Instrument == Instrument::Bass && Note == 9 && Powered) return 467;
			if (Instrument == Instrument::Bass && Note == 9 && !Powered) return 468;
			if (Instrument == Instrument::Bass && Note == 10 && Powered) return 469;
			if (Instrument == Instrument::Bass && Note == 10 && !Powered) return 470;
			if (Instrument == Instrument::Bass && Note == 11 && Powered) return 471;
			if (Instrument == Instrument::Bass && Note == 11 && !Powered) return 472;
			if (Instrument == Instrument::Bass && Note == 12 && Powered) return 473;
			if (Instrument == Instrument::Bass && Note == 12 && !Powered) return 474;
			if (Instrument == Instrument::Bass && Note == 13 && Powered) return 475;
			if (Instrument == Instrument::Bass && Note == 13 && !Powered) return 476;
			if (Instrument == Instrument::Bass && Note == 14 && Powered) return 477;
			if (Instrument == Instrument::Bass && Note == 14 && !Powered) return 478;
			if (Instrument == Instrument::Bass && Note == 15 && Powered) return 479;
			if (Instrument == Instrument::Bass && Note == 15 && !Powered) return 480;
			if (Instrument == Instrument::Bass && Note == 16 && Powered) return 481;
			if (Instrument == Instrument::Bass && Note == 16 && !Powered) return 482;
			if (Instrument == Instrument::Bass && Note == 17 && Powered) return 483;
			if (Instrument == Instrument::Bass && Note == 17 && !Powered) return 484;
			if (Instrument == Instrument::Bass && Note == 18 && Powered) return 485;
			if (Instrument == Instrument::Bass && Note == 18 && !Powered) return 486;
			if (Instrument == Instrument::Bass && Note == 19 && Powered) return 487;
			if (Instrument == Instrument::Bass && Note == 19 && !Powered) return 488;
			if (Instrument == Instrument::Bass && Note == 20 && Powered) return 489;
			if (Instrument == Instrument::Bass && Note == 20 && !Powered) return 490;
			if (Instrument == Instrument::Bass && Note == 21 && Powered) return 491;
			if (Instrument == Instrument::Bass && Note == 21 && !Powered) return 492;
			if (Instrument == Instrument::Bass && Note == 22 && Powered) return 493;
			if (Instrument == Instrument::Bass && Note == 22 && !Powered) return 494;
			if (Instrument == Instrument::Bass && Note == 23 && Powered) return 495;
			if (Instrument == Instrument::Bass && Note == 23 && !Powered) return 496;
			if (Instrument == Instrument::Bass && Note == 24 && Powered) return 497;
			if (Instrument == Instrument::Bass && Note == 24 && !Powered) return 498;
			if (Instrument == Instrument::Flute && Note == 0 && Powered) return 499;
			if (Instrument == Instrument::Flute && Note == 0 && !Powered) return 500;
			if (Instrument == Instrument::Flute && Note == 1 && Powered) return 501;
			if (Instrument == Instrument::Flute && Note == 1 && !Powered) return 502;
			if (Instrument == Instrument::Flute && Note == 2 && Powered) return 503;
			if (Instrument == Instrument::Flute && Note == 2 && !Powered) return 504;
			if (Instrument == Instrument::Flute && Note == 3 && Powered) return 505;
			if (Instrument == Instrument::Flute && Note == 3 && !Powered) return 506;
			if (Instrument == Instrument::Flute && Note == 4 && Powered) return 507;
			if (Instrument == Instrument::Flute && Note == 4 && !Powered) return 508;
			if (Instrument == Instrument::Flute && Note == 5 && Powered) return 509;
			if (Instrument == Instrument::Flute && Note == 5 && !Powered) return 510;
			if (Instrument == Instrument::Flute && Note == 6 && Powered) return 511;
			if (Instrument == Instrument::Flute && Note == 6 && !Powered) return 512;
			if (Instrument == Instrument::Flute && Note == 7 && Powered) return 513;
			if (Instrument == Instrument::Flute && Note == 7 && !Powered) return 514;
			if (Instrument == Instrument::Flute && Note == 8 && Powered) return 515;
			if (Instrument == Instrument::Flute && Note == 8 && !Powered) return 516;
			if (Instrument == Instrument::Flute && Note == 9 && Powered) return 517;
			if (Instrument == Instrument::Flute && Note == 9 && !Powered) return 518;
			if (Instrument == Instrument::Flute && Note == 10 && Powered) return 519;
			if (Instrument == Instrument::Flute && Note == 10 && !Powered) return 520;
			if (Instrument == Instrument::Flute && Note == 11 && Powered) return 521;
			if (Instrument == Instrument::Flute && Note == 11 && !Powered) return 522;
			if (Instrument == Instrument::Flute && Note == 12 && Powered) return 523;
			if (Instrument == Instrument::Flute && Note == 12 && !Powered) return 524;
			if (Instrument == Instrument::Flute && Note == 13 && Powered) return 525;
			if (Instrument == Instrument::Flute && Note == 13 && !Powered) return 526;
			if (Instrument == Instrument::Flute && Note == 14 && Powered) return 527;
			if (Instrument == Instrument::Flute && Note == 14 && !Powered) return 528;
			if (Instrument == Instrument::Flute && Note == 15 && Powered) return 529;
			if (Instrument == Instrument::Flute && Note == 15 && !Powered) return 530;
			if (Instrument == Instrument::Flute && Note == 16 && Powered) return 531;
			if (Instrument == Instrument::Flute && Note == 16 && !Powered) return 532;
			if (Instrument == Instrument::Flute && Note == 17 && Powered) return 533;
			if (Instrument == Instrument::Flute && Note == 17 && !Powered) return 534;
			if (Instrument == Instrument::Flute && Note == 18 && Powered) return 535;
			if (Instrument == Instrument::Flute && Note == 18 && !Powered) return 536;
			if (Instrument == Instrument::Flute && Note == 19 && Powered) return 537;
			if (Instrument == Instrument::Flute && Note == 19 && !Powered) return 538;
			if (Instrument == Instrument::Flute && Note == 20 && Powered) return 539;
			if (Instrument == Instrument::Flute && Note == 20 && !Powered) return 540;
			if (Instrument == Instrument::Flute && Note == 21 && Powered) return 541;
			if (Instrument == Instrument::Flute && Note == 21 && !Powered) return 542;
			if (Instrument == Instrument::Flute && Note == 22 && Powered) return 543;
			if (Instrument == Instrument::Flute && Note == 22 && !Powered) return 544;
			if (Instrument == Instrument::Flute && Note == 23 && Powered) return 545;
			if (Instrument == Instrument::Flute && Note == 23 && !Powered) return 546;
			if (Instrument == Instrument::Flute && Note == 24 && Powered) return 547;
			if (Instrument == Instrument::Flute && Note == 24 && !Powered) return 548;
			if (Instrument == Instrument::Bell && Note == 0 && Powered) return 549;
			if (Instrument == Instrument::Bell && Note == 0 && !Powered) return 550;
			if (Instrument == Instrument::Bell && Note == 1 && Powered) return 551;
			if (Instrument == Instrument::Bell && Note == 1 && !Powered) return 552;
			if (Instrument == Instrument::Bell && Note == 2 && Powered) return 553;
			if (Instrument == Instrument::Bell && Note == 2 && !Powered) return 554;
			if (Instrument == Instrument::Bell && Note == 3 && Powered) return 555;
			if (Instrument == Instrument::Bell && Note == 3 && !Powered) return 556;
			if (Instrument == Instrument::Bell && Note == 4 && Powered) return 557;
			if (Instrument == Instrument::Bell && Note == 4 && !Powered) return 558;
			if (Instrument == Instrument::Bell && Note == 5 && Powered) return 559;
			if (Instrument == Instrument::Bell && Note == 5 && !Powered) return 560;
			if (Instrument == Instrument::Bell && Note == 6 && Powered) return 561;
			if (Instrument == Instrument::Bell && Note == 6 && !Powered) return 562;
			if (Instrument == Instrument::Bell && Note == 7 && Powered) return 563;
			if (Instrument == Instrument::Bell && Note == 7 && !Powered) return 564;
			if (Instrument == Instrument::Bell && Note == 8 && Powered) return 565;
			if (Instrument == Instrument::Bell && Note == 8 && !Powered) return 566;
			if (Instrument == Instrument::Bell && Note == 9 && Powered) return 567;
			if (Instrument == Instrument::Bell && Note == 9 && !Powered) return 568;
			if (Instrument == Instrument::Bell && Note == 10 && Powered) return 569;
			if (Instrument == Instrument::Bell && Note == 10 && !Powered) return 570;
			if (Instrument == Instrument::Bell && Note == 11 && Powered) return 571;
			if (Instrument == Instrument::Bell && Note == 11 && !Powered) return 572;
			if (Instrument == Instrument::Bell && Note == 12 && Powered) return 573;
			if (Instrument == Instrument::Bell && Note == 12 && !Powered) return 574;
			if (Instrument == Instrument::Bell && Note == 13 && Powered) return 575;
			if (Instrument == Instrument::Bell && Note == 13 && !Powered) return 576;
			if (Instrument == Instrument::Bell && Note == 14 && Powered) return 577;
			if (Instrument == Instrument::Bell && Note == 14 && !Powered) return 578;
			if (Instrument == Instrument::Bell && Note == 15 && Powered) return 579;
			if (Instrument == Instrument::Bell && Note == 15 && !Powered) return 580;
			if (Instrument == Instrument::Bell && Note == 16 && Powered) return 581;
			if (Instrument == Instrument::Bell && Note == 16 && !Powered) return 582;
			if (Instrument == Instrument::Bell && Note == 17 && Powered) return 583;
			if (Instrument == Instrument::Bell && Note == 17 && !Powered) return 584;
			if (Instrument == Instrument::Bell && Note == 18 && Powered) return 585;
			if (Instrument == Instrument::Bell && Note == 18 && !Powered) return 586;
			if (Instrument == Instrument::Bell && Note == 19 && Powered) return 587;
			if (Instrument == Instrument::Bell && Note == 19 && !Powered) return 588;
			if (Instrument == Instrument::Bell && Note == 20 && Powered) return 589;
			if (Instrument == Instrument::Bell && Note == 20 && !Powered) return 590;
			if (Instrument == Instrument::Bell && Note == 21 && Powered) return 591;
			if (Instrument == Instrument::Bell && Note == 21 && !Powered) return 592;
			if (Instrument == Instrument::Bell && Note == 22 && Powered) return 593;
			if (Instrument == Instrument::Bell && Note == 22 && !Powered) return 594;
			if (Instrument == Instrument::Bell && Note == 23 && Powered) return 595;
			if (Instrument == Instrument::Bell && Note == 23 && !Powered) return 596;
			if (Instrument == Instrument::Bell && Note == 24 && Powered) return 597;
			if (Instrument == Instrument::Bell && Note == 24 && !Powered) return 598;
			if (Instrument == Instrument::Guitar && Note == 0 && Powered) return 599;
			if (Instrument == Instrument::Guitar && Note == 0 && !Powered) return 600;
			if (Instrument == Instrument::Guitar && Note == 1 && Powered) return 601;
			if (Instrument == Instrument::Guitar && Note == 1 && !Powered) return 602;
			if (Instrument == Instrument::Guitar && Note == 2 && Powered) return 603;
			if (Instrument == Instrument::Guitar && Note == 2 && !Powered) return 604;
			if (Instrument == Instrument::Guitar && Note == 3 && Powered) return 605;
			if (Instrument == Instrument::Guitar && Note == 3 && !Powered) return 606;
			if (Instrument == Instrument::Guitar && Note == 4 && Powered) return 607;
			if (Instrument == Instrument::Guitar && Note == 4 && !Powered) return 608;
			if (Instrument == Instrument::Guitar && Note == 5 && Powered) return 609;
			if (Instrument == Instrument::Guitar && Note == 5 && !Powered) return 610;
			if (Instrument == Instrument::Guitar && Note == 6 && Powered) return 611;
			if (Instrument == Instrument::Guitar && Note == 6 && !Powered) return 612;
			if (Instrument == Instrument::Guitar && Note == 7 && Powered) return 613;
			if (Instrument == Instrument::Guitar && Note == 7 && !Powered) return 614;
			if (Instrument == Instrument::Guitar && Note == 8 && Powered) return 615;
			if (Instrument == Instrument::Guitar && Note == 8 && !Powered) return 616;
			if (Instrument == Instrument::Guitar && Note == 9 && Powered) return 617;
			if (Instrument == Instrument::Guitar && Note == 9 && !Powered) return 618;
			if (Instrument == Instrument::Guitar && Note == 10 && Powered) return 619;
			if (Instrument == Instrument::Guitar && Note == 10 && !Powered) return 620;
			if (Instrument == Instrument::Guitar && Note == 11 && Powered) return 621;
			if (Instrument == Instrument::Guitar && Note == 11 && !Powered) return 622;
			if (Instrument == Instrument::Guitar && Note == 12 && Powered) return 623;
			if (Instrument == Instrument::Guitar && Note == 12 && !Powered) return 624;
			if (Instrument == Instrument::Guitar && Note == 13 && Powered) return 625;
			if (Instrument == Instrument::Guitar && Note == 13 && !Powered) return 626;
			if (Instrument == Instrument::Guitar && Note == 14 && Powered) return 627;
			if (Instrument == Instrument::Guitar && Note == 14 && !Powered) return 628;
			if (Instrument == Instrument::Guitar && Note == 15 && Powered) return 629;
			if (Instrument == Instrument::Guitar && Note == 15 && !Powered) return 630;
			if (Instrument == Instrument::Guitar && Note == 16 && Powered) return 631;
			if (Instrument == Instrument::Guitar && Note == 16 && !Powered) return 632;
			if (Instrument == Instrument::Guitar && Note == 17 && Powered) return 633;
			if (Instrument == Instrument::Guitar && Note == 17 && !Powered) return 634;
			if (Instrument == Instrument::Guitar && Note == 18 && Powered) return 635;
			if (Instrument == Instrument::Guitar && Note == 18 && !Powered) return 636;
			if (Instrument == Instrument::Guitar && Note == 19 && Powered) return 637;
			if (Instrument == Instrument::Guitar && Note == 19 && !Powered) return 638;
			if (Instrument == Instrument::Guitar && Note == 20 && Powered) return 639;
			if (Instrument == Instrument::Guitar && Note == 20 && !Powered) return 640;
			if (Instrument == Instrument::Guitar && Note == 21 && Powered) return 641;
			if (Instrument == Instrument::Guitar && Note == 21 && !Powered) return 642;
			if (Instrument == Instrument::Guitar && Note == 22 && Powered) return 643;
			if (Instrument == Instrument::Guitar && Note == 22 && !Powered) return 644;
			if (Instrument == Instrument::Guitar && Note == 23 && Powered) return 645;
			if (Instrument == Instrument::Guitar && Note == 23 && !Powered) return 646;
			if (Instrument == Instrument::Guitar && Note == 24 && Powered) return 647;
			if (Instrument == Instrument::Guitar && Note == 24 && !Powered) return 648;
			if (Instrument == Instrument::Chime && Note == 0 && Powered) return 649;
			if (Instrument == Instrument::Chime && Note == 0 && !Powered) return 650;
			if (Instrument == Instrument::Chime && Note == 1 && Powered) return 651;
			if (Instrument == Instrument::Chime && Note == 1 && !Powered) return 652;
			if (Instrument == Instrument::Chime && Note == 2 && Powered) return 653;
			if (Instrument == Instrument::Chime && Note == 2 && !Powered) return 654;
			if (Instrument == Instrument::Chime && Note == 3 && Powered) return 655;
			if (Instrument == Instrument::Chime && Note == 3 && !Powered) return 656;
			if (Instrument == Instrument::Chime && Note == 4 && Powered) return 657;
			if (Instrument == Instrument::Chime && Note == 4 && !Powered) return 658;
			if (Instrument == Instrument::Chime && Note == 5 && Powered) return 659;
			if (Instrument == Instrument::Chime && Note == 5 && !Powered) return 660;
			if (Instrument == Instrument::Chime && Note == 6 && Powered) return 661;
			if (Instrument == Instrument::Chime && Note == 6 && !Powered) return 662;
			if (Instrument == Instrument::Chime && Note == 7 && Powered) return 663;
			if (Instrument == Instrument::Chime && Note == 7 && !Powered) return 664;
			if (Instrument == Instrument::Chime && Note == 8 && Powered) return 665;
			if (Instrument == Instrument::Chime && Note == 8 && !Powered) return 666;
			if (Instrument == Instrument::Chime && Note == 9 && Powered) return 667;
			if (Instrument == Instrument::Chime && Note == 9 && !Powered) return 668;
			if (Instrument == Instrument::Chime && Note == 10 && Powered) return 669;
			if (Instrument == Instrument::Chime && Note == 10 && !Powered) return 670;
			if (Instrument == Instrument::Chime && Note == 11 && Powered) return 671;
			if (Instrument == Instrument::Chime && Note == 11 && !Powered) return 672;
			if (Instrument == Instrument::Chime && Note == 12 && Powered) return 673;
			if (Instrument == Instrument::Chime && Note == 12 && !Powered) return 674;
			if (Instrument == Instrument::Chime && Note == 13 && Powered) return 675;
			if (Instrument == Instrument::Chime && Note == 13 && !Powered) return 676;
			if (Instrument == Instrument::Chime && Note == 14 && Powered) return 677;
			if (Instrument == Instrument::Chime && Note == 14 && !Powered) return 678;
			if (Instrument == Instrument::Chime && Note == 15 && Powered) return 679;
			if (Instrument == Instrument::Chime && Note == 15 && !Powered) return 680;
			if (Instrument == Instrument::Chime && Note == 16 && Powered) return 681;
			if (Instrument == Instrument::Chime && Note == 16 && !Powered) return 682;
			if (Instrument == Instrument::Chime && Note == 17 && Powered) return 683;
			if (Instrument == Instrument::Chime && Note == 17 && !Powered) return 684;
			if (Instrument == Instrument::Chime && Note == 18 && Powered) return 685;
			if (Instrument == Instrument::Chime && Note == 18 && !Powered) return 686;
			if (Instrument == Instrument::Chime && Note == 19 && Powered) return 687;
			if (Instrument == Instrument::Chime && Note == 19 && !Powered) return 688;
			if (Instrument == Instrument::Chime && Note == 20 && Powered) return 689;
			if (Instrument == Instrument::Chime && Note == 20 && !Powered) return 690;
			if (Instrument == Instrument::Chime && Note == 21 && Powered) return 691;
			if (Instrument == Instrument::Chime && Note == 21 && !Powered) return 692;
			if (Instrument == Instrument::Chime && Note == 22 && Powered) return 693;
			if (Instrument == Instrument::Chime && Note == 22 && !Powered) return 694;
			if (Instrument == Instrument::Chime && Note == 23 && Powered) return 695;
			if (Instrument == Instrument::Chime && Note == 23 && !Powered) return 696;
			if (Instrument == Instrument::Chime && Note == 24 && Powered) return 697;
			if (Instrument == Instrument::Chime && Note == 24 && !Powered) return 698;
			if (Instrument == Instrument::Xylophone && Note == 0 && Powered) return 699;
			if (Instrument == Instrument::Xylophone && Note == 0 && !Powered) return 700;
			if (Instrument == Instrument::Xylophone && Note == 1 && Powered) return 701;
			if (Instrument == Instrument::Xylophone && Note == 1 && !Powered) return 702;
			if (Instrument == Instrument::Xylophone && Note == 2 && Powered) return 703;
			if (Instrument == Instrument::Xylophone && Note == 2 && !Powered) return 704;
			if (Instrument == Instrument::Xylophone && Note == 3 && Powered) return 705;
			if (Instrument == Instrument::Xylophone && Note == 3 && !Powered) return 706;
			if (Instrument == Instrument::Xylophone && Note == 4 && Powered) return 707;
			if (Instrument == Instrument::Xylophone && Note == 4 && !Powered) return 708;
			if (Instrument == Instrument::Xylophone && Note == 5 && Powered) return 709;
			if (Instrument == Instrument::Xylophone && Note == 5 && !Powered) return 710;
			if (Instrument == Instrument::Xylophone && Note == 6 && Powered) return 711;
			if (Instrument == Instrument::Xylophone && Note == 6 && !Powered) return 712;
			if (Instrument == Instrument::Xylophone && Note == 7 && Powered) return 713;
			if (Instrument == Instrument::Xylophone && Note == 7 && !Powered) return 714;
			if (Instrument == Instrument::Xylophone && Note == 8 && Powered) return 715;
			if (Instrument == Instrument::Xylophone && Note == 8 && !Powered) return 716;
			if (Instrument == Instrument::Xylophone && Note == 9 && Powered) return 717;
			if (Instrument == Instrument::Xylophone && Note == 9 && !Powered) return 718;
			if (Instrument == Instrument::Xylophone && Note == 10 && Powered) return 719;
			if (Instrument == Instrument::Xylophone && Note == 10 && !Powered) return 720;
			if (Instrument == Instrument::Xylophone && Note == 11 && Powered) return 721;
			if (Instrument == Instrument::Xylophone && Note == 11 && !Powered) return 722;
			if (Instrument == Instrument::Xylophone && Note == 12 && Powered) return 723;
			if (Instrument == Instrument::Xylophone && Note == 12 && !Powered) return 724;
			if (Instrument == Instrument::Xylophone && Note == 13 && Powered) return 725;
			if (Instrument == Instrument::Xylophone && Note == 13 && !Powered) return 726;
			if (Instrument == Instrument::Xylophone && Note == 14 && Powered) return 727;
			if (Instrument == Instrument::Xylophone && Note == 14 && !Powered) return 728;
			if (Instrument == Instrument::Xylophone && Note == 15 && Powered) return 729;
			if (Instrument == Instrument::Xylophone && Note == 15 && !Powered) return 730;
			if (Instrument == Instrument::Xylophone && Note == 16 && Powered) return 731;
			if (Instrument == Instrument::Xylophone && Note == 16 && !Powered) return 732;
			if (Instrument == Instrument::Xylophone && Note == 17 && Powered) return 733;
			if (Instrument == Instrument::Xylophone && Note == 17 && !Powered) return 734;
			if (Instrument == Instrument::Xylophone && Note == 18 && Powered) return 735;
			if (Instrument == Instrument::Xylophone && Note == 18 && !Powered) return 736;
			if (Instrument == Instrument::Xylophone && Note == 19 && Powered) return 737;
			if (Instrument == Instrument::Xylophone && Note == 19 && !Powered) return 738;
			if (Instrument == Instrument::Xylophone && Note == 20 && Powered) return 739;
			if (Instrument == Instrument::Xylophone && Note == 20 && !Powered) return 740;
			if (Instrument == Instrument::Xylophone && Note == 21 && Powered) return 741;
			if (Instrument == Instrument::Xylophone && Note == 21 && !Powered) return 742;
			if (Instrument == Instrument::Xylophone && Note == 22 && Powered) return 743;
			if (Instrument == Instrument::Xylophone && Note == 22 && !Powered) return 744;
			if (Instrument == Instrument::Xylophone && Note == 23 && Powered) return 745;
			if (Instrument == Instrument::Xylophone && Note == 23 && !Powered) return 746;
			if (Instrument == Instrument::Xylophone && Note == 24 && Powered) return 747;
			if (Instrument == Instrument::Xylophone && Note == 24 && !Powered) return 748;
			if (Instrument == Instrument::IronXylophone && Note == 0 && Powered) return 749;
			if (Instrument == Instrument::IronXylophone && Note == 0 && !Powered) return 750;
			if (Instrument == Instrument::IronXylophone && Note == 1 && Powered) return 751;
			if (Instrument == Instrument::IronXylophone && Note == 1 && !Powered) return 752;
			if (Instrument == Instrument::IronXylophone && Note == 2 && Powered) return 753;
			if (Instrument == Instrument::IronXylophone && Note == 2 && !Powered) return 754;
			if (Instrument == Instrument::IronXylophone && Note == 3 && Powered) return 755;
			if (Instrument == Instrument::IronXylophone && Note == 3 && !Powered) return 756;
			if (Instrument == Instrument::IronXylophone && Note == 4 && Powered) return 757;
			if (Instrument == Instrument::IronXylophone && Note == 4 && !Powered) return 758;
			if (Instrument == Instrument::IronXylophone && Note == 5 && Powered) return 759;
			if (Instrument == Instrument::IronXylophone && Note == 5 && !Powered) return 760;
			if (Instrument == Instrument::IronXylophone && Note == 6 && Powered) return 761;
			if (Instrument == Instrument::IronXylophone && Note == 6 && !Powered) return 762;
			if (Instrument == Instrument::IronXylophone && Note == 7 && Powered) return 763;
			if (Instrument == Instrument::IronXylophone && Note == 7 && !Powered) return 764;
			if (Instrument == Instrument::IronXylophone && Note == 8 && Powered) return 765;
			if (Instrument == Instrument::IronXylophone && Note == 8 && !Powered) return 766;
			if (Instrument == Instrument::IronXylophone && Note == 9 && Powered) return 767;
			if (Instrument == Instrument::IronXylophone && Note == 9 && !Powered) return 768;
			if (Instrument == Instrument::IronXylophone && Note == 10 && Powered) return 769;
			if (Instrument == Instrument::IronXylophone && Note == 10 && !Powered) return 770;
			if (Instrument == Instrument::IronXylophone && Note == 11 && Powered) return 771;
			if (Instrument == Instrument::IronXylophone && Note == 11 && !Powered) return 772;
			if (Instrument == Instrument::IronXylophone && Note == 12 && Powered) return 773;
			if (Instrument == Instrument::IronXylophone && Note == 12 && !Powered) return 774;
			if (Instrument == Instrument::IronXylophone && Note == 13 && Powered) return 775;
			if (Instrument == Instrument::IronXylophone && Note == 13 && !Powered) return 776;
			if (Instrument == Instrument::IronXylophone && Note == 14 && Powered) return 777;
			if (Instrument == Instrument::IronXylophone && Note == 14 && !Powered) return 778;
			if (Instrument == Instrument::IronXylophone && Note == 15 && Powered) return 779;
			if (Instrument == Instrument::IronXylophone && Note == 15 && !Powered) return 780;
			if (Instrument == Instrument::IronXylophone && Note == 16 && Powered) return 781;
			if (Instrument == Instrument::IronXylophone && Note == 16 && !Powered) return 782;
			if (Instrument == Instrument::IronXylophone && Note == 17 && Powered) return 783;
			if (Instrument == Instrument::IronXylophone && Note == 17 && !Powered) return 784;
			if (Instrument == Instrument::IronXylophone && Note == 18 && Powered) return 785;
			if (Instrument == Instrument::IronXylophone && Note == 18 && !Powered) return 786;
			if (Instrument == Instrument::IronXylophone && Note == 19 && Powered) return 787;
			if (Instrument == Instrument::IronXylophone && Note == 19 && !Powered) return 788;
			if (Instrument == Instrument::IronXylophone && Note == 20 && Powered) return 789;
			if (Instrument == Instrument::IronXylophone && Note == 20 && !Powered) return 790;
			if (Instrument == Instrument::IronXylophone && Note == 21 && Powered) return 791;
			if (Instrument == Instrument::IronXylophone && Note == 21 && !Powered) return 792;
			if (Instrument == Instrument::IronXylophone && Note == 22 && Powered) return 793;
			if (Instrument == Instrument::IronXylophone && Note == 22 && !Powered) return 794;
			if (Instrument == Instrument::IronXylophone && Note == 23 && Powered) return 795;
			if (Instrument == Instrument::IronXylophone && Note == 23 && !Powered) return 796;
			if (Instrument == Instrument::IronXylophone && Note == 24 && Powered) return 797;
			if (Instrument == Instrument::IronXylophone && Note == 24 && !Powered) return 798;
			if (Instrument == Instrument::CowBell && Note == 0 && Powered) return 799;
			if (Instrument == Instrument::CowBell && Note == 0 && !Powered) return 800;
			if (Instrument == Instrument::CowBell && Note == 1 && Powered) return 801;
			if (Instrument == Instrument::CowBell && Note == 1 && !Powered) return 802;
			if (Instrument == Instrument::CowBell && Note == 2 && Powered) return 803;
			if (Instrument == Instrument::CowBell && Note == 2 && !Powered) return 804;
			if (Instrument == Instrument::CowBell && Note == 3 && Powered) return 805;
			if (Instrument == Instrument::CowBell && Note == 3 && !Powered) return 806;
			if (Instrument == Instrument::CowBell && Note == 4 && Powered) return 807;
			if (Instrument == Instrument::CowBell && Note == 4 && !Powered) return 808;
			if (Instrument == Instrument::CowBell && Note == 5 && Powered) return 809;
			if (Instrument == Instrument::CowBell && Note == 5 && !Powered) return 810;
			if (Instrument == Instrument::CowBell && Note == 6 && Powered) return 811;
			if (Instrument == Instrument::CowBell && Note == 6 && !Powered) return 812;
			if (Instrument == Instrument::CowBell && Note == 7 && Powered) return 813;
			if (Instrument == Instrument::CowBell && Note == 7 && !Powered) return 814;
			if (Instrument == Instrument::CowBell && Note == 8 && Powered) return 815;
			if (Instrument == Instrument::CowBell && Note == 8 && !Powered) return 816;
			if (Instrument == Instrument::CowBell && Note == 9 && Powered) return 817;
			if (Instrument == Instrument::CowBell && Note == 9 && !Powered) return 818;
			if (Instrument == Instrument::CowBell && Note == 10 && Powered) return 819;
			if (Instrument == Instrument::CowBell && Note == 10 && !Powered) return 820;
			if (Instrument == Instrument::CowBell && Note == 11 && Powered) return 821;
			if (Instrument == Instrument::CowBell && Note == 11 && !Powered) return 822;
			if (Instrument == Instrument::CowBell && Note == 12 && Powered) return 823;
			if (Instrument == Instrument::CowBell && Note == 12 && !Powered) return 824;
			if (Instrument == Instrument::CowBell && Note == 13 && Powered) return 825;
			if (Instrument == Instrument::CowBell && Note == 13 && !Powered) return 826;
			if (Instrument == Instrument::CowBell && Note == 14 && Powered) return 827;
			if (Instrument == Instrument::CowBell && Note == 14 && !Powered) return 828;
			if (Instrument == Instrument::CowBell && Note == 15 && Powered) return 829;
			if (Instrument == Instrument::CowBell && Note == 15 && !Powered) return 830;
			if (Instrument == Instrument::CowBell && Note == 16 && Powered) return 831;
			if (Instrument == Instrument::CowBell && Note == 16 && !Powered) return 832;
			if (Instrument == Instrument::CowBell && Note == 17 && Powered) return 833;
			if (Instrument == Instrument::CowBell && Note == 17 && !Powered) return 834;
			if (Instrument == Instrument::CowBell && Note == 18 && Powered) return 835;
			if (Instrument == Instrument::CowBell && Note == 18 && !Powered) return 836;
			if (Instrument == Instrument::CowBell && Note == 19 && Powered) return 837;
			if (Instrument == Instrument::CowBell && Note == 19 && !Powered) return 838;
			if (Instrument == Instrument::CowBell && Note == 20 && Powered) return 839;
			if (Instrument == Instrument::CowBell && Note == 20 && !Powered) return 840;
			if (Instrument == Instrument::CowBell && Note == 21 && Powered) return 841;
			if (Instrument == Instrument::CowBell && Note == 21 && !Powered) return 842;
			if (Instrument == Instrument::CowBell && Note == 22 && Powered) return 843;
			if (Instrument == Instrument::CowBell && Note == 22 && !Powered) return 844;
			if (Instrument == Instrument::CowBell && Note == 23 && Powered) return 845;
			if (Instrument == Instrument::CowBell && Note == 23 && !Powered) return 846;
			if (Instrument == Instrument::CowBell && Note == 24 && Powered) return 847;
			if (Instrument == Instrument::CowBell && Note == 24 && !Powered) return 848;
			if (Instrument == Instrument::Didgeridoo && Note == 0 && Powered) return 849;
			if (Instrument == Instrument::Didgeridoo && Note == 0 && !Powered) return 850;
			if (Instrument == Instrument::Didgeridoo && Note == 1 && Powered) return 851;
			if (Instrument == Instrument::Didgeridoo && Note == 1 && !Powered) return 852;
			if (Instrument == Instrument::Didgeridoo && Note == 2 && Powered) return 853;
			if (Instrument == Instrument::Didgeridoo && Note == 2 && !Powered) return 854;
			if (Instrument == Instrument::Didgeridoo && Note == 3 && Powered) return 855;
			if (Instrument == Instrument::Didgeridoo && Note == 3 && !Powered) return 856;
			if (Instrument == Instrument::Didgeridoo && Note == 4 && Powered) return 857;
			if (Instrument == Instrument::Didgeridoo && Note == 4 && !Powered) return 858;
			if (Instrument == Instrument::Didgeridoo && Note == 5 && Powered) return 859;
			if (Instrument == Instrument::Didgeridoo && Note == 5 && !Powered) return 860;
			if (Instrument == Instrument::Didgeridoo && Note == 6 && Powered) return 861;
			if (Instrument == Instrument::Didgeridoo && Note == 6 && !Powered) return 862;
			if (Instrument == Instrument::Didgeridoo && Note == 7 && Powered) return 863;
			if (Instrument == Instrument::Didgeridoo && Note == 7 && !Powered) return 864;
			if (Instrument == Instrument::Didgeridoo && Note == 8 && Powered) return 865;
			if (Instrument == Instrument::Didgeridoo && Note == 8 && !Powered) return 866;
			if (Instrument == Instrument::Didgeridoo && Note == 9 && Powered) return 867;
			if (Instrument == Instrument::Didgeridoo && Note == 9 && !Powered) return 868;
			if (Instrument == Instrument::Didgeridoo && Note == 10 && Powered) return 869;
			if (Instrument == Instrument::Didgeridoo && Note == 10 && !Powered) return 870;
			if (Instrument == Instrument::Didgeridoo && Note == 11 && Powered) return 871;
			if (Instrument == Instrument::Didgeridoo && Note == 11 && !Powered) return 872;
			if (Instrument == Instrument::Didgeridoo && Note == 12 && Powered) return 873;
			if (Instrument == Instrument::Didgeridoo && Note == 12 && !Powered) return 874;
			if (Instrument == Instrument::Didgeridoo && Note == 13 && Powered) return 875;
			if (Instrument == Instrument::Didgeridoo && Note == 13 && !Powered) return 876;
			if (Instrument == Instrument::Didgeridoo && Note == 14 && Powered) return 877;
			if (Instrument == Instrument::Didgeridoo && Note == 14 && !Powered) return 878;
			if (Instrument == Instrument::Didgeridoo && Note == 15 && Powered) return 879;
			if (Instrument == Instrument::Didgeridoo && Note == 15 && !Powered) return 880;
			if (Instrument == Instrument::Didgeridoo && Note == 16 && Powered) return 881;
			if (Instrument == Instrument::Didgeridoo && Note == 16 && !Powered) return 882;
			if (Instrument == Instrument::Didgeridoo && Note == 17 && Powered) return 883;
			if (Instrument == Instrument::Didgeridoo && Note == 17 && !Powered) return 884;
			if (Instrument == Instrument::Didgeridoo && Note == 18 && Powered) return 885;
			if (Instrument == Instrument::Didgeridoo && Note == 18 && !Powered) return 886;
			if (Instrument == Instrument::Didgeridoo && Note == 19 && Powered) return 887;
			if (Instrument == Instrument::Didgeridoo && Note == 19 && !Powered) return 888;
			if (Instrument == Instrument::Didgeridoo && Note == 20 && Powered) return 889;
			if (Instrument == Instrument::Didgeridoo && Note == 20 && !Powered) return 890;
			if (Instrument == Instrument::Didgeridoo && Note == 21 && Powered) return 891;
			if (Instrument == Instrument::Didgeridoo && Note == 21 && !Powered) return 892;
			if (Instrument == Instrument::Didgeridoo && Note == 22 && Powered) return 893;
			if (Instrument == Instrument::Didgeridoo && Note == 22 && !Powered) return 894;
			if (Instrument == Instrument::Didgeridoo && Note == 23 && Powered) return 895;
			if (Instrument == Instrument::Didgeridoo && Note == 23 && !Powered) return 896;
			if (Instrument == Instrument::Didgeridoo && Note == 24 && Powered) return 897;
			if (Instrument == Instrument::Didgeridoo && Note == 24 && !Powered) return 898;
			if (Instrument == Instrument::Bit && Note == 0 && Powered) return 899;
			if (Instrument == Instrument::Bit && Note == 0 && !Powered) return 900;
			if (Instrument == Instrument::Bit && Note == 1 && Powered) return 901;
			if (Instrument == Instrument::Bit && Note == 1 && !Powered) return 902;
			if (Instrument == Instrument::Bit && Note == 2 && Powered) return 903;
			if (Instrument == Instrument::Bit && Note == 2 && !Powered) return 904;
			if (Instrument == Instrument::Bit && Note == 3 && Powered) return 905;
			if (Instrument == Instrument::Bit && Note == 3 && !Powered) return 906;
			if (Instrument == Instrument::Bit && Note == 4 && Powered) return 907;
			if (Instrument == Instrument::Bit && Note == 4 && !Powered) return 908;
			if (Instrument == Instrument::Bit && Note == 5 && Powered) return 909;
			if (Instrument == Instrument::Bit && Note == 5 && !Powered) return 910;
			if (Instrument == Instrument::Bit && Note == 6 && Powered) return 911;
			if (Instrument == Instrument::Bit && Note == 6 && !Powered) return 912;
			if (Instrument == Instrument::Bit && Note == 7 && Powered) return 913;
			if (Instrument == Instrument::Bit && Note == 7 && !Powered) return 914;
			if (Instrument == Instrument::Bit && Note == 8 && Powered) return 915;
			if (Instrument == Instrument::Bit && Note == 8 && !Powered) return 916;
			if (Instrument == Instrument::Bit && Note == 9 && Powered) return 917;
			if (Instrument == Instrument::Bit && Note == 9 && !Powered) return 918;
			if (Instrument == Instrument::Bit && Note == 10 && Powered) return 919;
			if (Instrument == Instrument::Bit && Note == 10 && !Powered) return 920;
			if (Instrument == Instrument::Bit && Note == 11 && Powered) return 921;
			if (Instrument == Instrument::Bit && Note == 11 && !Powered) return 922;
			if (Instrument == Instrument::Bit && Note == 12 && Powered) return 923;
			if (Instrument == Instrument::Bit && Note == 12 && !Powered) return 924;
			if (Instrument == Instrument::Bit && Note == 13 && Powered) return 925;
			if (Instrument == Instrument::Bit && Note == 13 && !Powered) return 926;
			if (Instrument == Instrument::Bit && Note == 14 && Powered) return 927;
			if (Instrument == Instrument::Bit && Note == 14 && !Powered) return 928;
			if (Instrument == Instrument::Bit && Note == 15 && Powered) return 929;
			if (Instrument == Instrument::Bit && Note == 15 && !Powered) return 930;
			if (Instrument == Instrument::Bit && Note == 16 && Powered) return 931;
			if (Instrument == Instrument::Bit && Note == 16 && !Powered) return 932;
			if (Instrument == Instrument::Bit && Note == 17 && Powered) return 933;
			if (Instrument == Instrument::Bit && Note == 17 && !Powered) return 934;
			if (Instrument == Instrument::Bit && Note == 18 && Powered) return 935;
			if (Instrument == Instrument::Bit && Note == 18 && !Powered) return 936;
			if (Instrument == Instrument::Bit && Note == 19 && Powered) return 937;
			if (Instrument == Instrument::Bit && Note == 19 && !Powered) return 938;
			if (Instrument == Instrument::Bit && Note == 20 && Powered) return 939;
			if (Instrument == Instrument::Bit && Note == 20 && !Powered) return 940;
			if (Instrument == Instrument::Bit && Note == 21 && Powered) return 941;
			if (Instrument == Instrument::Bit && Note == 21 && !Powered) return 942;
			if (Instrument == Instrument::Bit && Note == 22 && Powered) return 943;
			if (Instrument == Instrument::Bit && Note == 22 && !Powered) return 944;
			if (Instrument == Instrument::Bit && Note == 23 && Powered) return 945;
			if (Instrument == Instrument::Bit && Note == 23 && !Powered) return 946;
			if (Instrument == Instrument::Bit && Note == 24 && Powered) return 947;
			if (Instrument == Instrument::Bit && Note == 24 && !Powered) return 948;
			if (Instrument == Instrument::Banjo && Note == 0 && Powered) return 949;
			if (Instrument == Instrument::Banjo && Note == 0 && !Powered) return 950;
			if (Instrument == Instrument::Banjo && Note == 1 && Powered) return 951;
			if (Instrument == Instrument::Banjo && Note == 1 && !Powered) return 952;
			if (Instrument == Instrument::Banjo && Note == 2 && Powered) return 953;
			if (Instrument == Instrument::Banjo && Note == 2 && !Powered) return 954;
			if (Instrument == Instrument::Banjo && Note == 3 && Powered) return 955;
			if (Instrument == Instrument::Banjo && Note == 3 && !Powered) return 956;
			if (Instrument == Instrument::Banjo && Note == 4 && Powered) return 957;
			if (Instrument == Instrument::Banjo && Note == 4 && !Powered) return 958;
			if (Instrument == Instrument::Banjo && Note == 5 && Powered) return 959;
			if (Instrument == Instrument::Banjo && Note == 5 && !Powered) return 960;
			if (Instrument == Instrument::Banjo && Note == 6 && Powered) return 961;
			if (Instrument == Instrument::Banjo && Note == 6 && !Powered) return 962;
			if (Instrument == Instrument::Banjo && Note == 7 && Powered) return 963;
			if (Instrument == Instrument::Banjo && Note == 7 && !Powered) return 964;
			if (Instrument == Instrument::Banjo && Note == 8 && Powered) return 965;
			if (Instrument == Instrument::Banjo && Note == 8 && !Powered) return 966;
			if (Instrument == Instrument::Banjo && Note == 9 && Powered) return 967;
			if (Instrument == Instrument::Banjo && Note == 9 && !Powered) return 968;
			if (Instrument == Instrument::Banjo && Note == 10 && Powered) return 969;
			if (Instrument == Instrument::Banjo && Note == 10 && !Powered) return 970;
			if (Instrument == Instrument::Banjo && Note == 11 && Powered) return 971;
			if (Instrument == Instrument::Banjo && Note == 11 && !Powered) return 972;
			if (Instrument == Instrument::Banjo && Note == 12 && Powered) return 973;
			if (Instrument == Instrument::Banjo && Note == 12 && !Powered) return 974;
			if (Instrument == Instrument::Banjo && Note == 13 && Powered) return 975;
			if (Instrument == Instrument::Banjo && Note == 13 && !Powered) return 976;
			if (Instrument == Instrument::Banjo && Note == 14 && Powered) return 977;
			if (Instrument == Instrument::Banjo && Note == 14 && !Powered) return 978;
			if (Instrument == Instrument::Banjo && Note == 15 && Powered) return 979;
			if (Instrument == Instrument::Banjo && Note == 15 && !Powered) return 980;
			if (Instrument == Instrument::Banjo && Note == 16 && Powered) return 981;
			if (Instrument == Instrument::Banjo && Note == 16 && !Powered) return 982;
			if (Instrument == Instrument::Banjo && Note == 17 && Powered) return 983;
			if (Instrument == Instrument::Banjo && Note == 17 && !Powered) return 984;
			if (Instrument == Instrument::Banjo && Note == 18 && Powered) return 985;
			if (Instrument == Instrument::Banjo && Note == 18 && !Powered) return 986;
			if (Instrument == Instrument::Banjo && Note == 19 && Powered) return 987;
			if (Instrument == Instrument::Banjo && Note == 19 && !Powered) return 988;
			if (Instrument == Instrument::Banjo && Note == 20 && Powered) return 989;
			if (Instrument == Instrument::Banjo && Note == 20 && !Powered) return 990;
			if (Instrument == Instrument::Banjo && Note == 21 && Powered) return 991;
			if (Instrument == Instrument::Banjo && Note == 21 && !Powered) return 992;
			if (Instrument == Instrument::Banjo && Note == 22 && Powered) return 993;
			if (Instrument == Instrument::Banjo && Note == 22 && !Powered) return 994;
			if (Instrument == Instrument::Banjo && Note == 23 && Powered) return 995;
			if (Instrument == Instrument::Banjo && Note == 23 && !Powered) return 996;
			if (Instrument == Instrument::Banjo && Note == 24 && Powered) return 997;
			if (Instrument == Instrument::Banjo && Note == 24 && !Powered) return 998;
			if (Instrument == Instrument::Pling && Note == 0 && Powered) return 999;
			if (Instrument == Instrument::Pling && Note == 0 && !Powered) return 1000;
			if (Instrument == Instrument::Pling && Note == 1 && Powered) return 1001;
			if (Instrument == Instrument::Pling && Note == 1 && !Powered) return 1002;
			if (Instrument == Instrument::Pling && Note == 2 && Powered) return 1003;
			if (Instrument == Instrument::Pling && Note == 2 && !Powered) return 1004;
			if (Instrument == Instrument::Pling && Note == 3 && Powered) return 1005;
			if (Instrument == Instrument::Pling && Note == 3 && !Powered) return 1006;
			if (Instrument == Instrument::Pling && Note == 4 && Powered) return 1007;
			if (Instrument == Instrument::Pling && Note == 4 && !Powered) return 1008;
			if (Instrument == Instrument::Pling && Note == 5 && Powered) return 1009;
			if (Instrument == Instrument::Pling && Note == 5 && !Powered) return 1010;
			if (Instrument == Instrument::Pling && Note == 6 && Powered) return 1011;
			if (Instrument == Instrument::Pling && Note == 6 && !Powered) return 1012;
			if (Instrument == Instrument::Pling && Note == 7 && Powered) return 1013;
			if (Instrument == Instrument::Pling && Note == 7 && !Powered) return 1014;
			if (Instrument == Instrument::Pling && Note == 8 && Powered) return 1015;
			if (Instrument == Instrument::Pling && Note == 8 && !Powered) return 1016;
			if (Instrument == Instrument::Pling && Note == 9 && Powered) return 1017;
			if (Instrument == Instrument::Pling && Note == 9 && !Powered) return 1018;
			if (Instrument == Instrument::Pling && Note == 10 && Powered) return 1019;
			if (Instrument == Instrument::Pling && Note == 10 && !Powered) return 1020;
			if (Instrument == Instrument::Pling && Note == 11 && Powered) return 1021;
			if (Instrument == Instrument::Pling && Note == 11 && !Powered) return 1022;
			if (Instrument == Instrument::Pling && Note == 12 && Powered) return 1023;
			if (Instrument == Instrument::Pling && Note == 12 && !Powered) return 1024;
			if (Instrument == Instrument::Pling && Note == 13 && Powered) return 1025;
			if (Instrument == Instrument::Pling && Note == 13 && !Powered) return 1026;
			if (Instrument == Instrument::Pling && Note == 14 && Powered) return 1027;
			if (Instrument == Instrument::Pling && Note == 14 && !Powered) return 1028;
			if (Instrument == Instrument::Pling && Note == 15 && Powered) return 1029;
			if (Instrument == Instrument::Pling && Note == 15 && !Powered) return 1030;
			if (Instrument == Instrument::Pling && Note == 16 && Powered) return 1031;
			if (Instrument == Instrument::Pling && Note == 16 && !Powered) return 1032;
			if (Instrument == Instrument::Pling && Note == 17 && Powered) return 1033;
			if (Instrument == Instrument::Pling && Note == 17 && !Powered) return 1034;
			if (Instrument == Instrument::Pling && Note == 18 && Powered) return 1035;
			if (Instrument == Instrument::Pling && Note == 18 && !Powered) return 1036;
			if (Instrument == Instrument::Pling && Note == 19 && Powered) return 1037;
			if (Instrument == Instrument::Pling && Note == 19 && !Powered) return 1038;
			if (Instrument == Instrument::Pling && Note == 20 && Powered) return 1039;
			if (Instrument == Instrument::Pling && Note == 20 && !Powered) return 1040;
			if (Instrument == Instrument::Pling && Note == 21 && Powered) return 1041;
			if (Instrument == Instrument::Pling && Note == 21 && !Powered) return 1042;
			if (Instrument == Instrument::Pling && Note == 22 && Powered) return 1043;
			if (Instrument == Instrument::Pling && Note == 22 && !Powered) return 1044;
			if (Instrument == Instrument::Pling && Note == 23 && Powered) return 1045;
			if (Instrument == Instrument::Pling && Note == 23 && !Powered) return 1046;
			if (Instrument == Instrument::Pling && Note == 24 && Powered) return 1047;
			return 1048;
		}
		short NoteBlock();
		enum Instrument Instrument(short ID);
		unsigned char Note(short ID);
		bool Powered(short ID);
	}
	namespace OakButton
	{
		enum class Face
		{
			Floor,
			Wall,
			Ceiling
		};
		constexpr short OakButton(enum Face Face, eBlockFace Facing, bool Powered)
		{
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6346;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6347;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6348;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6349;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6350;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6351;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6352;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 6353;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6354;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6355;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6356;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6357;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6358;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6359;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6360;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 6361;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6362;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6363;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6364;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6365;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6366;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6367;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6368;
			return 6369;
		}
		short OakButton();
		enum Face Face(short ID);
		eBlockFace Facing(short ID);
		bool Powered(short ID);
	}
	namespace OakDoor
	{
		enum class Half
		{
			Upper,
			Lower
		};
		enum class Hinge
		{
			Left,
			Right
		};
		constexpr short OakDoor(eBlockFace Facing, enum Half Half, enum Hinge Hinge, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 3573;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 3574;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 3575;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 3576;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 3577;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 3578;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 3579;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 3580;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 3581;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 3582;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 3583;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 3584;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 3585;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 3586;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 3587;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 3588;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 3589;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 3590;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 3591;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 3592;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 3593;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 3594;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 3595;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 3596;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 3597;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 3598;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 3599;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 3600;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 3601;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 3602;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 3603;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 3604;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 3605;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 3606;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 3607;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 3608;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 3609;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 3610;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 3611;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 3612;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 3613;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 3614;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 3615;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 3616;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 3617;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 3618;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 3619;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 3620;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 3621;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 3622;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 3623;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 3624;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 3625;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 3626;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 3627;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 3628;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 3629;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 3630;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 3631;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 3632;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 3633;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 3634;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 3635;
			return 3636;
		}
		short OakDoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Hinge Hinge(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace OakFence
	{
		constexpr short OakFence(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 3968;
			if (East && North && South && !West) return 3969;
			if (East && North && !South && West) return 3972;
			if (East && North && !South && !West) return 3973;
			if (East && !North && South && West) return 3976;
			if (East && !North && South && !West) return 3977;
			if (East && !North && !South && West) return 3980;
			if (East && !North && !South && !West) return 3981;
			if (!East && North && South && West) return 3984;
			if (!East && North && South && !West) return 3985;
			if (!East && North && !South && West) return 3988;
			if (!East && North && !South && !West) return 3989;
			if (!East && !North && South && West) return 3992;
			if (!East && !North && South && !West) return 3993;
			if (!East && !North && !South && West) return 3996;
			return 3997;
		}
		short OakFence();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace OakFenceGate
	{
		constexpr short OakFenceGate(eBlockFace Facing, bool InWall, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && Open && Powered) return 4820;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && Open && !Powered) return 4821;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && !Open && Powered) return 4822;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && !Open && !Powered) return 4823;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && Open && Powered) return 4824;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && Open && !Powered) return 4825;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && !Open && Powered) return 4826;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && !Open && !Powered) return 4827;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && Open && Powered) return 4828;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && Open && !Powered) return 4829;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && !Open && Powered) return 4830;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && !Open && !Powered) return 4831;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && Open && Powered) return 4832;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && Open && !Powered) return 4833;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && !Open && Powered) return 4834;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && !Open && !Powered) return 4835;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && Open && Powered) return 4836;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && Open && !Powered) return 4837;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && !Open && Powered) return 4838;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && !Open && !Powered) return 4839;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && Open && Powered) return 4840;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && Open && !Powered) return 4841;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && !Open && Powered) return 4842;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && !Open && !Powered) return 4843;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && Open && Powered) return 4844;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && Open && !Powered) return 4845;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && !Open && Powered) return 4846;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && !Open && !Powered) return 4847;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && Open && Powered) return 4848;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && Open && !Powered) return 4849;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && !Open && Powered) return 4850;
			return 4851;
		}
		short OakFenceGate();
		eBlockFace Facing(short ID);
		bool InWall(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace OakLeaves
	{
		constexpr short OakLeaves(unsigned char Distance, bool Persistent)
		{
			if (Distance == 1 && Persistent) return 145;
			if (Distance == 1 && !Persistent) return 146;
			if (Distance == 2 && Persistent) return 147;
			if (Distance == 2 && !Persistent) return 148;
			if (Distance == 3 && Persistent) return 149;
			if (Distance == 3 && !Persistent) return 150;
			if (Distance == 4 && Persistent) return 151;
			if (Distance == 4 && !Persistent) return 152;
			if (Distance == 5 && Persistent) return 153;
			if (Distance == 5 && !Persistent) return 154;
			if (Distance == 6 && Persistent) return 155;
			if (Distance == 6 && !Persistent) return 156;
			if (Distance == 7 && Persistent) return 157;
			return 158;
		}
		short OakLeaves();
		unsigned char Distance(short ID);
		bool Persistent(short ID);
	}
	namespace OakLog
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short OakLog(enum Axis Axis)
		{
			if (Axis == Axis::X) return 73;
			if (Axis == Axis::Y) return 74;
			return 75;
		}
		short OakLog();
		enum Axis Axis(short ID);
	}
	namespace OakPlanks
	{
		constexpr short OakPlanks()
		{
			return 15;
		}
	}
	namespace OakPressurePlate
	{
		constexpr short OakPressurePlate(bool Powered)
		{
			if (Powered) return 3873;
			return 3874;
		}
		short OakPressurePlate();
		bool Powered(short ID);
	}
	namespace OakSapling
	{
		constexpr short OakSapling(unsigned char Stage)
		{
			if (Stage == 0) return 21;
			return 22;
		}
		short OakSapling();
		unsigned char Stage(short ID);
	}
	namespace OakSign
	{
		constexpr short OakSign(unsigned char Rotation)
		{
			if (Rotation == 0) return 3382;
			if (Rotation == 1) return 3384;
			if (Rotation == 2) return 3386;
			if (Rotation == 3) return 3388;
			if (Rotation == 4) return 3390;
			if (Rotation == 5) return 3392;
			if (Rotation == 6) return 3394;
			if (Rotation == 7) return 3396;
			if (Rotation == 8) return 3398;
			if (Rotation == 9) return 3400;
			if (Rotation == 10) return 3402;
			if (Rotation == 11) return 3404;
			if (Rotation == 12) return 3406;
			if (Rotation == 13) return 3408;
			if (Rotation == 14) return 3410;
			return 3412;
		}
		short OakSign();
		unsigned char Rotation(short ID);
	}
	namespace OakSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short OakSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8301;
			if (Type == Type::Bottom) return 8303;
			return 8305;
		}
		short OakSlab();
		enum Type Type(short ID);
	}
	namespace OakStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short OakStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 1955;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 1957;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 1959;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 1961;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 1963;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 1965;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 1967;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 1969;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 1971;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 1973;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 1975;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 1977;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 1979;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 1981;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 1983;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 1985;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 1987;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 1989;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 1991;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 1993;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 1995;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 1997;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 1999;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 2001;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 2003;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 2005;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 2007;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 2009;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 2011;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 2013;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 2015;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 2017;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 2019;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 2021;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 2023;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 2025;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 2027;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 2029;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 2031;
			return 2033;
		}
		short OakStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace OakTrapdoor
	{
		enum class Half
		{
			Top,
			Bottom
		};
		constexpr short OakTrapdoor(eBlockFace Facing, enum Half Half, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && Powered) return 4112;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && !Powered) return 4114;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && Powered) return 4116;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && !Powered) return 4118;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && Powered) return 4120;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && !Powered) return 4122;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && Powered) return 4124;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && !Powered) return 4126;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && Powered) return 4128;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && !Powered) return 4130;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && Powered) return 4132;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && !Powered) return 4134;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && Powered) return 4136;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && !Powered) return 4138;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && Powered) return 4140;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && !Powered) return 4142;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && Powered) return 4144;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && !Powered) return 4146;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && Powered) return 4148;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && !Powered) return 4150;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && Powered) return 4152;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && !Powered) return 4154;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && Powered) return 4156;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && !Powered) return 4158;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && Powered) return 4160;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && !Powered) return 4162;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && Powered) return 4164;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && !Powered) return 4166;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && Powered) return 4168;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && !Powered) return 4170;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && !Open && Powered) return 4172;
			return 4174;
		}
		short OakTrapdoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace OakWallSign
	{
		constexpr short OakWallSign(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 3736;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 3738;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 3740;
			return 3742;
		}
		short OakWallSign();
		eBlockFace Facing(short ID);
	}
	namespace OakWood
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short OakWood(enum Axis Axis)
		{
			if (Axis == Axis::X) return 109;
			if (Axis == Axis::Y) return 110;
			return 111;
		}
		short OakWood();
		enum Axis Axis(short ID);
	}
	namespace Observer
	{
		constexpr short Observer(eBlockFace Facing, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 9260;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 9261;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 9262;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 9263;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 9264;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 9265;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 9266;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 9267;
			if (Facing == eBlockFace::BLOCK_FACE_YP && Powered) return 9268;
			if (Facing == eBlockFace::BLOCK_FACE_YP && !Powered) return 9269;
			if (Facing == eBlockFace::BLOCK_FACE_YM && Powered) return 9270;
			return 9271;
		}
		short Observer();
		eBlockFace Facing(short ID);
		bool Powered(short ID);
	}
	namespace Obsidian
	{
		constexpr short Obsidian()
		{
			return 1434;
		}
	}
	namespace OrangeBanner
	{
		constexpr short OrangeBanner(unsigned char Rotation)
		{
			if (Rotation == 0) return 7913;
			if (Rotation == 1) return 7914;
			if (Rotation == 2) return 7915;
			if (Rotation == 3) return 7916;
			if (Rotation == 4) return 7917;
			if (Rotation == 5) return 7918;
			if (Rotation == 6) return 7919;
			if (Rotation == 7) return 7920;
			if (Rotation == 8) return 7921;
			if (Rotation == 9) return 7922;
			if (Rotation == 10) return 7923;
			if (Rotation == 11) return 7924;
			if (Rotation == 12) return 7925;
			if (Rotation == 13) return 7926;
			if (Rotation == 14) return 7927;
			return 7928;
		}
		short OrangeBanner();
		unsigned char Rotation(short ID);
	}
	namespace OrangeBed
	{
		enum class Part
		{
			Head,
			Foot
		};
		constexpr short OrangeBed(eBlockFace Facing, bool Occupied, enum Part Part)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Head) return 1065;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Foot) return 1066;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Head) return 1067;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Foot) return 1068;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Head) return 1069;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Foot) return 1070;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Head) return 1071;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Foot) return 1072;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Head) return 1073;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Foot) return 1074;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Head) return 1075;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Foot) return 1076;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Head) return 1077;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Foot) return 1078;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Occupied && Part == Part::Head) return 1079;
			return 1080;
		}
		short OrangeBed();
		eBlockFace Facing(short ID);
		bool Occupied(short ID);
		enum Part Part(short ID);
	}
	namespace OrangeCarpet
	{
		constexpr short OrangeCarpet()
		{
			return 7867;
		}
	}
	namespace OrangeConcrete
	{
		constexpr short OrangeConcrete()
		{
			return 9439;
		}
	}
	namespace OrangeConcretePowder
	{
		constexpr short OrangeConcretePowder()
		{
			return 9455;
		}
	}
	namespace OrangeGlazedTerracotta
	{
		constexpr short OrangeGlazedTerracotta(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9378;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9379;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9380;
			return 9381;
		}
		short OrangeGlazedTerracotta();
		eBlockFace Facing(short ID);
	}
	namespace OrangeShulkerBox
	{
		constexpr short OrangeShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9284;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9285;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9286;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9287;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9288;
			return 9289;
		}
		short OrangeShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace OrangeStainedGlass
	{
		constexpr short OrangeStainedGlass()
		{
			return 4096;
		}
	}
	namespace OrangeStainedGlassPane
	{
		constexpr short OrangeStainedGlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 6897;
			if (East && North && South && !West) return 6898;
			if (East && North && !South && West) return 6901;
			if (East && North && !South && !West) return 6902;
			if (East && !North && South && West) return 6905;
			if (East && !North && South && !West) return 6906;
			if (East && !North && !South && West) return 6909;
			if (East && !North && !South && !West) return 6910;
			if (!East && North && South && West) return 6913;
			if (!East && North && South && !West) return 6914;
			if (!East && North && !South && West) return 6917;
			if (!East && North && !South && !West) return 6918;
			if (!East && !North && South && West) return 6921;
			if (!East && !North && South && !West) return 6922;
			if (!East && !North && !South && West) return 6925;
			return 6926;
		}
		short OrangeStainedGlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace OrangeTerracotta
	{
		constexpr short OrangeTerracotta()
		{
			return 6848;
		}
	}
	namespace OrangeTulip
	{
		constexpr short OrangeTulip()
		{
			return 1418;
		}
	}
	namespace OrangeWallBanner
	{
		constexpr short OrangeWallBanner(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 8157;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 8158;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 8159;
			return 8160;
		}
		short OrangeWallBanner();
		eBlockFace Facing(short ID);
	}
	namespace OrangeWool
	{
		constexpr short OrangeWool()
		{
			return 1385;
		}
	}
	namespace OxeyeDaisy
	{
		constexpr short OxeyeDaisy()
		{
			return 1421;
		}
	}
	namespace PackedIce
	{
		constexpr short PackedIce()
		{
			return 7884;
		}
	}
	namespace Peony
	{
		enum class Half
		{
			Upper,
			Lower
		};
		constexpr short Peony(enum Half Half)
		{
			if (Half == Half::Upper) return 7891;
			return 7892;
		}
		short Peony();
		enum Half Half(short ID);
	}
	namespace PetrifiedOakSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short PetrifiedOakSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8361;
			if (Type == Type::Bottom) return 8363;
			return 8365;
		}
		short PetrifiedOakSlab();
		enum Type Type(short ID);
	}
	namespace PinkBanner
	{
		constexpr short PinkBanner(unsigned char Rotation)
		{
			if (Rotation == 0) return 7993;
			if (Rotation == 1) return 7994;
			if (Rotation == 2) return 7995;
			if (Rotation == 3) return 7996;
			if (Rotation == 4) return 7997;
			if (Rotation == 5) return 7998;
			if (Rotation == 6) return 7999;
			if (Rotation == 7) return 8000;
			if (Rotation == 8) return 8001;
			if (Rotation == 9) return 8002;
			if (Rotation == 10) return 8003;
			if (Rotation == 11) return 8004;
			if (Rotation == 12) return 8005;
			if (Rotation == 13) return 8006;
			if (Rotation == 14) return 8007;
			return 8008;
		}
		short PinkBanner();
		unsigned char Rotation(short ID);
	}
	namespace PinkBed
	{
		enum class Part
		{
			Head,
			Foot
		};
		constexpr short PinkBed(eBlockFace Facing, bool Occupied, enum Part Part)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Head) return 1145;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Foot) return 1146;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Head) return 1147;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Foot) return 1148;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Head) return 1149;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Foot) return 1150;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Head) return 1151;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Foot) return 1152;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Head) return 1153;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Foot) return 1154;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Head) return 1155;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Foot) return 1156;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Head) return 1157;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Foot) return 1158;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Occupied && Part == Part::Head) return 1159;
			return 1160;
		}
		short PinkBed();
		eBlockFace Facing(short ID);
		bool Occupied(short ID);
		enum Part Part(short ID);
	}
	namespace PinkCarpet
	{
		constexpr short PinkCarpet()
		{
			return 7872;
		}
	}
	namespace PinkConcrete
	{
		constexpr short PinkConcrete()
		{
			return 9444;
		}
	}
	namespace PinkConcretePowder
	{
		constexpr short PinkConcretePowder()
		{
			return 9460;
		}
	}
	namespace PinkGlazedTerracotta
	{
		constexpr short PinkGlazedTerracotta(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9398;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9399;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9400;
			return 9401;
		}
		short PinkGlazedTerracotta();
		eBlockFace Facing(short ID);
	}
	namespace PinkShulkerBox
	{
		constexpr short PinkShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9314;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9315;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9316;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9317;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9318;
			return 9319;
		}
		short PinkShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace PinkStainedGlass
	{
		constexpr short PinkStainedGlass()
		{
			return 4101;
		}
	}
	namespace PinkStainedGlassPane
	{
		constexpr short PinkStainedGlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 7057;
			if (East && North && South && !West) return 7058;
			if (East && North && !South && West) return 7061;
			if (East && North && !South && !West) return 7062;
			if (East && !North && South && West) return 7065;
			if (East && !North && South && !West) return 7066;
			if (East && !North && !South && West) return 7069;
			if (East && !North && !South && !West) return 7070;
			if (!East && North && South && West) return 7073;
			if (!East && North && South && !West) return 7074;
			if (!East && North && !South && West) return 7077;
			if (!East && North && !South && !West) return 7078;
			if (!East && !North && South && West) return 7081;
			if (!East && !North && South && !West) return 7082;
			if (!East && !North && !South && West) return 7085;
			return 7086;
		}
		short PinkStainedGlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace PinkTerracotta
	{
		constexpr short PinkTerracotta()
		{
			return 6853;
		}
	}
	namespace PinkTulip
	{
		constexpr short PinkTulip()
		{
			return 1420;
		}
	}
	namespace PinkWallBanner
	{
		constexpr short PinkWallBanner(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 8177;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 8178;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 8179;
			return 8180;
		}
		short PinkWallBanner();
		eBlockFace Facing(short ID);
	}
	namespace PinkWool
	{
		constexpr short PinkWool()
		{
			return 1390;
		}
	}
	namespace Piston
	{
		constexpr short Piston(bool Extended, eBlockFace Facing)
		{
			if (Extended && Facing == eBlockFace::BLOCK_FACE_ZM) return 1348;
			if (Extended && Facing == eBlockFace::BLOCK_FACE_XP) return 1349;
			if (Extended && Facing == eBlockFace::BLOCK_FACE_ZP) return 1350;
			if (Extended && Facing == eBlockFace::BLOCK_FACE_XM) return 1351;
			if (Extended && Facing == eBlockFace::BLOCK_FACE_YP) return 1352;
			if (Extended && Facing == eBlockFace::BLOCK_FACE_YM) return 1353;
			if (!Extended && Facing == eBlockFace::BLOCK_FACE_ZM) return 1354;
			if (!Extended && Facing == eBlockFace::BLOCK_FACE_XP) return 1355;
			if (!Extended && Facing == eBlockFace::BLOCK_FACE_ZP) return 1356;
			if (!Extended && Facing == eBlockFace::BLOCK_FACE_XM) return 1357;
			if (!Extended && Facing == eBlockFace::BLOCK_FACE_YP) return 1358;
			return 1359;
		}
		short Piston();
		bool Extended(short ID);
		eBlockFace Facing(short ID);
	}
	namespace PistonHead
	{
		enum class Type
		{
			Normal,
			Sticky
		};
		constexpr short PistonHead(eBlockFace Facing, bool Short, enum Type Type)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Short && Type == Type::Normal) return 1360;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Short && Type == Type::Sticky) return 1361;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Short && Type == Type::Normal) return 1362;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Short && Type == Type::Sticky) return 1363;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Short && Type == Type::Normal) return 1364;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Short && Type == Type::Sticky) return 1365;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Short && Type == Type::Normal) return 1366;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Short && Type == Type::Sticky) return 1367;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Short && Type == Type::Normal) return 1368;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Short && Type == Type::Sticky) return 1369;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Short && Type == Type::Normal) return 1370;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Short && Type == Type::Sticky) return 1371;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Short && Type == Type::Normal) return 1372;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Short && Type == Type::Sticky) return 1373;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Short && Type == Type::Normal) return 1374;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Short && Type == Type::Sticky) return 1375;
			if (Facing == eBlockFace::BLOCK_FACE_YP && Short && Type == Type::Normal) return 1376;
			if (Facing == eBlockFace::BLOCK_FACE_YP && Short && Type == Type::Sticky) return 1377;
			if (Facing == eBlockFace::BLOCK_FACE_YP && !Short && Type == Type::Normal) return 1378;
			if (Facing == eBlockFace::BLOCK_FACE_YP && !Short && Type == Type::Sticky) return 1379;
			if (Facing == eBlockFace::BLOCK_FACE_YM && Short && Type == Type::Normal) return 1380;
			if (Facing == eBlockFace::BLOCK_FACE_YM && Short && Type == Type::Sticky) return 1381;
			if (Facing == eBlockFace::BLOCK_FACE_YM && !Short && Type == Type::Normal) return 1382;
			return 1383;
		}
		short PistonHead();
		eBlockFace Facing(short ID);
		bool Short(short ID);
		enum Type Type(short ID);
	}
	namespace PlayerHead
	{
		constexpr short PlayerHead(unsigned char Rotation)
		{
			if (Rotation == 0) return 6550;
			if (Rotation == 1) return 6551;
			if (Rotation == 2) return 6552;
			if (Rotation == 3) return 6553;
			if (Rotation == 4) return 6554;
			if (Rotation == 5) return 6555;
			if (Rotation == 6) return 6556;
			if (Rotation == 7) return 6557;
			if (Rotation == 8) return 6558;
			if (Rotation == 9) return 6559;
			if (Rotation == 10) return 6560;
			if (Rotation == 11) return 6561;
			if (Rotation == 12) return 6562;
			if (Rotation == 13) return 6563;
			if (Rotation == 14) return 6564;
			return 6565;
		}
		short PlayerHead();
		unsigned char Rotation(short ID);
	}
	namespace PlayerWallHead
	{
		constexpr short PlayerWallHead(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 6566;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 6567;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 6568;
			return 6569;
		}
		short PlayerWallHead();
		eBlockFace Facing(short ID);
	}
	namespace Podzol
	{
		constexpr short Podzol(bool Snowy)
		{
			if (Snowy) return 12;
			return 13;
		}
		short Podzol();
		bool Snowy(short ID);
	}
	namespace PolishedAndesite
	{
		constexpr short PolishedAndesite()
		{
			return 7;
		}
	}
	namespace PolishedAndesiteSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short PolishedAndesiteSlab(enum Type Type)
		{
			if (Type == Type::Top) return 10856;
			if (Type == Type::Bottom) return 10858;
			return 10860;
		}
		short PolishedAndesiteSlab();
		enum Type Type(short ID);
	}
	namespace PolishedAndesiteStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short PolishedAndesiteStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 10630;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 10632;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 10634;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 10636;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 10638;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 10640;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10642;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10644;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10646;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10648;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 10650;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 10652;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 10654;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 10656;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 10658;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 10660;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10662;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10664;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10666;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 10668;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 10670;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 10672;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 10674;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 10676;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 10678;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 10680;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10682;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10684;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10686;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10688;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 10690;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 10692;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 10694;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 10696;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 10698;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 10700;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10702;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10704;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10706;
			return 10708;
		}
		short PolishedAndesiteStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace PolishedBasalt
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short PolishedBasalt(enum Axis Axis)
		{
			if (Axis == Axis::X) return 4005;
			if (Axis == Axis::Y) return 4006;
			return 4007;
		}
		short PolishedBasalt();
		enum Axis Axis(short ID);
	}
	namespace PolishedBlackstone
	{
		constexpr short PolishedBlackstone()
		{
			return 16250;
		}
	}
	namespace PolishedBlackstoneBrickSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short PolishedBlackstoneBrickSlab(enum Type Type)
		{
			if (Type == Type::Top) return 16255;
			if (Type == Type::Bottom) return 16257;
			return 16259;
		}
		short PolishedBlackstoneBrickSlab();
		enum Type Type(short ID);
	}
	namespace PolishedBlackstoneBrickStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short PolishedBlackstoneBrickStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 16261;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 16263;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 16265;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 16267;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 16269;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 16271;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 16273;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 16275;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 16277;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 16279;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 16281;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 16283;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 16285;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 16287;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 16289;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 16291;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 16293;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 16295;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 16297;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 16299;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 16301;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 16303;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 16305;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 16307;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 16309;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 16311;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 16313;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 16315;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 16317;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 16319;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 16321;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 16323;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 16325;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 16327;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 16329;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 16331;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 16333;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 16335;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 16337;
			return 16339;
		}
		short PolishedBlackstoneBrickStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace PolishedBlackstoneBrickWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short PolishedBlackstoneBrickWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 16343;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 16344;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 16345;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 16349;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 16350;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 16351;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 16355;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 16356;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 16357;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 16361;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 16362;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 16363;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 16367;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 16368;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 16369;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 16373;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 16374;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 16375;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 16379;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 16380;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 16381;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 16385;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 16386;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 16387;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 16391;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 16392;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 16393;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 16397;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 16398;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 16399;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 16403;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 16404;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 16405;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 16409;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 16410;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 16411;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 16415;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 16416;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 16417;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 16421;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 16422;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 16423;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 16427;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 16428;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 16429;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 16433;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 16434;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 16435;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 16439;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 16440;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 16441;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 16445;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 16446;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 16447;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 16451;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 16452;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 16453;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 16457;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 16458;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 16459;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 16463;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 16464;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 16465;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 16469;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 16470;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 16471;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 16475;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 16476;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 16477;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 16481;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 16482;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 16483;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 16487;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 16488;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 16489;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 16493;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 16494;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 16495;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 16499;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 16500;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 16501;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 16505;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 16506;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 16507;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 16511;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 16512;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 16513;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 16517;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 16518;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 16519;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 16523;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 16524;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 16525;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 16529;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 16530;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 16531;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 16535;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 16536;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 16537;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 16541;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 16542;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 16543;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 16547;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 16548;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 16549;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 16553;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 16554;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 16555;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 16559;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 16560;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 16561;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 16565;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 16566;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 16567;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 16571;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 16572;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 16573;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 16577;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 16578;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 16579;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 16583;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 16584;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 16585;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 16589;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 16590;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 16591;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 16595;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 16596;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 16597;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 16601;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 16602;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 16603;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 16607;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 16608;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 16609;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 16613;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 16614;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 16615;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 16619;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 16620;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 16621;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 16625;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 16626;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 16627;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 16631;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 16632;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 16633;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 16637;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 16638;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 16639;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 16643;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 16644;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 16645;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 16649;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 16650;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 16651;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 16655;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 16656;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 16657;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 16661;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 16662;
			return 16663;
		}
		short PolishedBlackstoneBrickWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace PolishedBlackstoneBricks
	{
		constexpr short PolishedBlackstoneBricks()
		{
			return 16251;
		}
	}
	namespace PolishedBlackstoneButton
	{
		enum class Face
		{
			Floor,
			Wall,
			Ceiling
		};
		constexpr short PolishedBlackstoneButton(enum Face Face, eBlockFace Facing, bool Powered)
		{
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 16753;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 16754;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 16755;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 16756;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 16757;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 16758;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 16759;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 16760;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 16761;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 16762;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 16763;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 16764;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 16765;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 16766;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 16767;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 16768;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 16769;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 16770;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 16771;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 16772;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 16773;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 16774;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 16775;
			return 16776;
		}
		short PolishedBlackstoneButton();
		enum Face Face(short ID);
		eBlockFace Facing(short ID);
		bool Powered(short ID);
	}
	namespace PolishedBlackstonePressurePlate
	{
		constexpr short PolishedBlackstonePressurePlate(bool Powered)
		{
			if (Powered) return 16751;
			return 16752;
		}
		short PolishedBlackstonePressurePlate();
		bool Powered(short ID);
	}
	namespace PolishedBlackstoneSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short PolishedBlackstoneSlab(enum Type Type)
		{
			if (Type == Type::Top) return 16746;
			if (Type == Type::Bottom) return 16748;
			return 16750;
		}
		short PolishedBlackstoneSlab();
		enum Type Type(short ID);
	}
	namespace PolishedBlackstoneStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short PolishedBlackstoneStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 16666;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 16668;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 16670;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 16672;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 16674;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 16676;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 16678;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 16680;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 16682;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 16684;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 16686;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 16688;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 16690;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 16692;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 16694;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 16696;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 16698;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 16700;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 16702;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 16704;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 16706;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 16708;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 16710;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 16712;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 16714;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 16716;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 16718;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 16720;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 16722;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 16724;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 16726;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 16728;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 16730;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 16732;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 16734;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 16736;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 16738;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 16740;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 16742;
			return 16744;
		}
		short PolishedBlackstoneStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace PolishedBlackstoneWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short PolishedBlackstoneWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 16780;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 16781;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 16782;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 16786;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 16787;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 16788;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 16792;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 16793;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 16794;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 16798;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 16799;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 16800;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 16804;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 16805;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 16806;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 16810;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 16811;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 16812;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 16816;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 16817;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 16818;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 16822;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 16823;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 16824;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 16828;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 16829;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 16830;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 16834;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 16835;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 16836;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 16840;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 16841;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 16842;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 16846;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 16847;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 16848;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 16852;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 16853;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 16854;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 16858;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 16859;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 16860;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 16864;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 16865;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 16866;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 16870;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 16871;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 16872;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 16876;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 16877;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 16878;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 16882;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 16883;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 16884;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 16888;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 16889;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 16890;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 16894;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 16895;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 16896;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 16900;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 16901;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 16902;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 16906;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 16907;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 16908;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 16912;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 16913;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 16914;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 16918;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 16919;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 16920;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 16924;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 16925;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 16926;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 16930;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 16931;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 16932;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 16936;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 16937;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 16938;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 16942;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 16943;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 16944;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 16948;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 16949;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 16950;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 16954;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 16955;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 16956;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 16960;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 16961;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 16962;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 16966;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 16967;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 16968;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 16972;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 16973;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 16974;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 16978;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 16979;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 16980;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 16984;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 16985;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 16986;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 16990;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 16991;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 16992;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 16996;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 16997;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 16998;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 17002;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 17003;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 17004;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 17008;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 17009;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 17010;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 17014;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 17015;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 17016;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 17020;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 17021;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 17022;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 17026;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 17027;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 17028;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 17032;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 17033;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 17034;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 17038;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 17039;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 17040;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 17044;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 17045;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 17046;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 17050;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 17051;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 17052;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 17056;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 17057;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 17058;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 17062;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 17063;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 17064;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 17068;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 17069;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 17070;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 17074;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 17075;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 17076;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 17080;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 17081;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 17082;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 17086;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 17087;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 17088;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 17092;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 17093;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 17094;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 17098;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 17099;
			return 17100;
		}
		short PolishedBlackstoneWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace PolishedDiorite
	{
		constexpr short PolishedDiorite()
		{
			return 5;
		}
	}
	namespace PolishedDioriteSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short PolishedDioriteSlab(enum Type Type)
		{
			if (Type == Type::Top) return 10808;
			if (Type == Type::Bottom) return 10810;
			return 10812;
		}
		short PolishedDioriteSlab();
		enum Type Type(short ID);
	}
	namespace PolishedDioriteStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short PolishedDioriteStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 9910;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 9912;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 9914;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 9916;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 9918;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 9920;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9922;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 9924;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9926;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 9928;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 9930;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 9932;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 9934;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 9936;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 9938;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 9940;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9942;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 9944;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9946;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 9948;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 9950;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 9952;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 9954;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 9956;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 9958;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 9960;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9962;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 9964;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9966;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 9968;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 9970;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 9972;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 9974;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 9976;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 9978;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 9980;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9982;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 9984;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9986;
			return 9988;
		}
		short PolishedDioriteStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace PolishedGranite
	{
		constexpr short PolishedGranite()
		{
			return 3;
		}
	}
	namespace PolishedGraniteSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short PolishedGraniteSlab(enum Type Type)
		{
			if (Type == Type::Top) return 10790;
			if (Type == Type::Bottom) return 10792;
			return 10794;
		}
		short PolishedGraniteSlab();
		enum Type Type(short ID);
	}
	namespace PolishedGraniteStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short PolishedGraniteStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 9670;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 9672;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 9674;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 9676;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 9678;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 9680;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9682;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 9684;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9686;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 9688;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 9690;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 9692;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 9694;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 9696;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 9698;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 9700;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9702;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 9704;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9706;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 9708;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 9710;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 9712;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 9714;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 9716;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 9718;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 9720;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9722;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 9724;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9726;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 9728;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 9730;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 9732;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 9734;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 9736;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 9738;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 9740;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9742;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 9744;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9746;
			return 9748;
		}
		short PolishedGraniteStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace Poppy
	{
		constexpr short Poppy()
		{
			return 1413;
		}
	}
	namespace Potatoes
	{
		constexpr short Potatoes(unsigned char Age)
		{
			if (Age == 0) return 6338;
			if (Age == 1) return 6339;
			if (Age == 2) return 6340;
			if (Age == 3) return 6341;
			if (Age == 4) return 6342;
			if (Age == 5) return 6343;
			if (Age == 6) return 6344;
			return 6345;
		}
		short Potatoes();
		unsigned char Age(short ID);
	}
	namespace PottedAcaciaSapling
	{
		constexpr short PottedAcaciaSapling()
		{
			return 6310;
		}
	}
	namespace PottedAllium
	{
		constexpr short PottedAllium()
		{
			return 6316;
		}
	}
	namespace PottedAzureBluet
	{
		constexpr short PottedAzureBluet()
		{
			return 6317;
		}
	}
	namespace PottedBamboo
	{
		constexpr short PottedBamboo()
		{
			return 9664;
		}
	}
	namespace PottedBirchSapling
	{
		constexpr short PottedBirchSapling()
		{
			return 6308;
		}
	}
	namespace PottedBlueOrchid
	{
		constexpr short PottedBlueOrchid()
		{
			return 6315;
		}
	}
	namespace PottedBrownMushroom
	{
		constexpr short PottedBrownMushroom()
		{
			return 6327;
		}
	}
	namespace PottedCactus
	{
		constexpr short PottedCactus()
		{
			return 6329;
		}
	}
	namespace PottedCornflower
	{
		constexpr short PottedCornflower()
		{
			return 6323;
		}
	}
	namespace PottedCrimsonFungus
	{
		constexpr short PottedCrimsonFungus()
		{
			return 15834;
		}
	}
	namespace PottedCrimsonRoots
	{
		constexpr short PottedCrimsonRoots()
		{
			return 15836;
		}
	}
	namespace PottedDandelion
	{
		constexpr short PottedDandelion()
		{
			return 6313;
		}
	}
	namespace PottedDarkOakSapling
	{
		constexpr short PottedDarkOakSapling()
		{
			return 6311;
		}
	}
	namespace PottedDeadBush
	{
		constexpr short PottedDeadBush()
		{
			return 6328;
		}
	}
	namespace PottedFern
	{
		constexpr short PottedFern()
		{
			return 6312;
		}
	}
	namespace PottedJungleSapling
	{
		constexpr short PottedJungleSapling()
		{
			return 6309;
		}
	}
	namespace PottedLilyOfTheValley
	{
		constexpr short PottedLilyOfTheValley()
		{
			return 6324;
		}
	}
	namespace PottedOakSapling
	{
		constexpr short PottedOakSapling()
		{
			return 6306;
		}
	}
	namespace PottedOrangeTulip
	{
		constexpr short PottedOrangeTulip()
		{
			return 6319;
		}
	}
	namespace PottedOxeyeDaisy
	{
		constexpr short PottedOxeyeDaisy()
		{
			return 6322;
		}
	}
	namespace PottedPinkTulip
	{
		constexpr short PottedPinkTulip()
		{
			return 6321;
		}
	}
	namespace PottedPoppy
	{
		constexpr short PottedPoppy()
		{
			return 6314;
		}
	}
	namespace PottedRedMushroom
	{
		constexpr short PottedRedMushroom()
		{
			return 6326;
		}
	}
	namespace PottedRedTulip
	{
		constexpr short PottedRedTulip()
		{
			return 6318;
		}
	}
	namespace PottedSpruceSapling
	{
		constexpr short PottedSpruceSapling()
		{
			return 6307;
		}
	}
	namespace PottedWarpedFungus
	{
		constexpr short PottedWarpedFungus()
		{
			return 15835;
		}
	}
	namespace PottedWarpedRoots
	{
		constexpr short PottedWarpedRoots()
		{
			return 15837;
		}
	}
	namespace PottedWhiteTulip
	{
		constexpr short PottedWhiteTulip()
		{
			return 6320;
		}
	}
	namespace PottedWitherRose
	{
		constexpr short PottedWitherRose()
		{
			return 6325;
		}
	}
	namespace PoweredRail
	{
		enum class Shape
		{
			NorthSouth,
			EastWest,
			AscendingEast,
			AscendingWest,
			AscendingNorth,
			AscendingSouth
		};
		constexpr short PoweredRail(bool Powered, enum Shape Shape)
		{
			if (Powered && Shape == Shape::NorthSouth) return 1305;
			if (Powered && Shape == Shape::EastWest) return 1306;
			if (Powered && Shape == Shape::AscendingEast) return 1307;
			if (Powered && Shape == Shape::AscendingWest) return 1308;
			if (Powered && Shape == Shape::AscendingNorth) return 1309;
			if (Powered && Shape == Shape::AscendingSouth) return 1310;
			if (!Powered && Shape == Shape::NorthSouth) return 1311;
			if (!Powered && Shape == Shape::EastWest) return 1312;
			if (!Powered && Shape == Shape::AscendingEast) return 1313;
			if (!Powered && Shape == Shape::AscendingWest) return 1314;
			if (!Powered && Shape == Shape::AscendingNorth) return 1315;
			return 1316;
		}
		short PoweredRail();
		bool Powered(short ID);
		enum Shape Shape(short ID);
	}
	namespace Prismarine
	{
		constexpr short Prismarine()
		{
			return 7601;
		}
	}
	namespace PrismarineBrickSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short PrismarineBrickSlab(enum Type Type)
		{
			if (Type == Type::Top) return 7851;
			if (Type == Type::Bottom) return 7853;
			return 7855;
		}
		short PrismarineBrickSlab();
		enum Type Type(short ID);
	}
	namespace PrismarineBrickStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short PrismarineBrickStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 7685;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 7687;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 7689;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 7691;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 7693;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 7695;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7697;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 7699;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7701;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 7703;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 7705;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 7707;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 7709;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 7711;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 7713;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 7715;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7717;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 7719;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7721;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 7723;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 7725;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 7727;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 7729;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 7731;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 7733;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 7735;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7737;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 7739;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7741;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 7743;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 7745;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 7747;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 7749;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 7751;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 7753;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 7755;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7757;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 7759;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7761;
			return 7763;
		}
		short PrismarineBrickStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace PrismarineBricks
	{
		constexpr short PrismarineBricks()
		{
			return 7602;
		}
	}
	namespace PrismarineSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short PrismarineSlab(enum Type Type)
		{
			if (Type == Type::Top) return 7845;
			if (Type == Type::Bottom) return 7847;
			return 7849;
		}
		short PrismarineSlab();
		enum Type Type(short ID);
	}
	namespace PrismarineStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short PrismarineStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 7605;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 7607;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 7609;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 7611;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 7613;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 7615;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7617;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 7619;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7621;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 7623;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 7625;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 7627;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 7629;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 7631;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 7633;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 7635;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7637;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 7639;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7641;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 7643;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 7645;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 7647;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 7649;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 7651;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 7653;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 7655;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7657;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 7659;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7661;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 7663;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 7665;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 7667;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 7669;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 7671;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 7673;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 7675;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 7677;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 7679;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 7681;
			return 7683;
		}
		short PrismarineStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace PrismarineWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short PrismarineWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 11194;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 11195;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 11196;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 11200;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 11201;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 11202;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 11206;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 11207;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 11208;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 11212;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 11213;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 11214;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 11218;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 11219;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 11220;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 11224;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 11225;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 11226;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 11230;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 11231;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 11232;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 11236;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 11237;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 11238;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 11242;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 11243;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 11244;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 11248;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 11249;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 11250;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 11254;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 11255;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 11256;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 11260;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 11261;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 11262;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 11266;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 11267;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 11268;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 11272;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 11273;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 11274;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 11278;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 11279;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 11280;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 11284;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 11285;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 11286;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 11290;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 11291;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 11292;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 11296;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 11297;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 11298;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 11302;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 11303;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 11304;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 11308;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 11309;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 11310;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 11314;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 11315;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 11316;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 11320;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 11321;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 11322;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 11326;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 11327;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 11328;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 11332;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 11333;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 11334;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 11338;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 11339;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 11340;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 11344;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 11345;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 11346;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 11350;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 11351;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 11352;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 11356;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 11357;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 11358;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 11362;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 11363;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 11364;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 11368;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 11369;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 11370;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 11374;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 11375;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 11376;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 11380;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 11381;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 11382;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 11386;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 11387;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 11388;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 11392;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 11393;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 11394;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 11398;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 11399;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 11400;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 11404;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 11405;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 11406;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 11410;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 11411;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 11412;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 11416;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 11417;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 11418;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 11422;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 11423;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 11424;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 11428;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 11429;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 11430;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 11434;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 11435;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 11436;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 11440;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 11441;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 11442;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 11446;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 11447;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 11448;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 11452;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 11453;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 11454;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 11458;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 11459;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 11460;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 11464;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 11465;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 11466;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 11470;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 11471;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 11472;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 11476;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 11477;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 11478;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 11482;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 11483;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 11484;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 11488;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 11489;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 11490;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 11494;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 11495;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 11496;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 11500;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 11501;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 11502;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 11506;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 11507;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 11508;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 11512;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 11513;
			return 11514;
		}
		short PrismarineWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace Pumpkin
	{
		constexpr short Pumpkin()
		{
			return 3998;
		}
	}
	namespace PumpkinStem
	{
		constexpr short PumpkinStem(unsigned char Age)
		{
			if (Age == 0) return 4772;
			if (Age == 1) return 4773;
			if (Age == 2) return 4774;
			if (Age == 3) return 4775;
			if (Age == 4) return 4776;
			if (Age == 5) return 4777;
			if (Age == 6) return 4778;
			return 4779;
		}
		short PumpkinStem();
		unsigned char Age(short ID);
	}
	namespace PurpleBanner
	{
		constexpr short PurpleBanner(unsigned char Rotation)
		{
			if (Rotation == 0) return 8057;
			if (Rotation == 1) return 8058;
			if (Rotation == 2) return 8059;
			if (Rotation == 3) return 8060;
			if (Rotation == 4) return 8061;
			if (Rotation == 5) return 8062;
			if (Rotation == 6) return 8063;
			if (Rotation == 7) return 8064;
			if (Rotation == 8) return 8065;
			if (Rotation == 9) return 8066;
			if (Rotation == 10) return 8067;
			if (Rotation == 11) return 8068;
			if (Rotation == 12) return 8069;
			if (Rotation == 13) return 8070;
			if (Rotation == 14) return 8071;
			return 8072;
		}
		short PurpleBanner();
		unsigned char Rotation(short ID);
	}
	namespace PurpleBed
	{
		enum class Part
		{
			Head,
			Foot
		};
		constexpr short PurpleBed(eBlockFace Facing, bool Occupied, enum Part Part)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Head) return 1209;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Foot) return 1210;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Head) return 1211;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Foot) return 1212;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Head) return 1213;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Foot) return 1214;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Head) return 1215;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Foot) return 1216;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Head) return 1217;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Foot) return 1218;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Head) return 1219;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Foot) return 1220;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Head) return 1221;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Foot) return 1222;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Occupied && Part == Part::Head) return 1223;
			return 1224;
		}
		short PurpleBed();
		eBlockFace Facing(short ID);
		bool Occupied(short ID);
		enum Part Part(short ID);
	}
	namespace PurpleCarpet
	{
		constexpr short PurpleCarpet()
		{
			return 7876;
		}
	}
	namespace PurpleConcrete
	{
		constexpr short PurpleConcrete()
		{
			return 9448;
		}
	}
	namespace PurpleConcretePowder
	{
		constexpr short PurpleConcretePowder()
		{
			return 9464;
		}
	}
	namespace PurpleGlazedTerracotta
	{
		constexpr short PurpleGlazedTerracotta(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9414;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9415;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9416;
			return 9417;
		}
		short PurpleGlazedTerracotta();
		eBlockFace Facing(short ID);
	}
	namespace PurpleShulkerBox
	{
		constexpr short PurpleShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9338;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9339;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9340;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9341;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9342;
			return 9343;
		}
		short PurpleShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace PurpleStainedGlass
	{
		constexpr short PurpleStainedGlass()
		{
			return 4105;
		}
	}
	namespace PurpleStainedGlassPane
	{
		constexpr short PurpleStainedGlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 7185;
			if (East && North && South && !West) return 7186;
			if (East && North && !South && West) return 7189;
			if (East && North && !South && !West) return 7190;
			if (East && !North && South && West) return 7193;
			if (East && !North && South && !West) return 7194;
			if (East && !North && !South && West) return 7197;
			if (East && !North && !South && !West) return 7198;
			if (!East && North && South && West) return 7201;
			if (!East && North && South && !West) return 7202;
			if (!East && North && !South && West) return 7205;
			if (!East && North && !South && !West) return 7206;
			if (!East && !North && South && West) return 7209;
			if (!East && !North && South && !West) return 7210;
			if (!East && !North && !South && West) return 7213;
			return 7214;
		}
		short PurpleStainedGlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace PurpleTerracotta
	{
		constexpr short PurpleTerracotta()
		{
			return 6857;
		}
	}
	namespace PurpleWallBanner
	{
		constexpr short PurpleWallBanner(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 8193;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 8194;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 8195;
			return 8196;
		}
		short PurpleWallBanner();
		eBlockFace Facing(short ID);
	}
	namespace PurpleWool
	{
		constexpr short PurpleWool()
		{
			return 1394;
		}
	}
	namespace PurpurBlock
	{
		constexpr short PurpurBlock()
		{
			return 9134;
		}
	}
	namespace PurpurPillar
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short PurpurPillar(enum Axis Axis)
		{
			if (Axis == Axis::X) return 9135;
			if (Axis == Axis::Y) return 9136;
			return 9137;
		}
		short PurpurPillar();
		enum Axis Axis(short ID);
	}
	namespace PurpurSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short PurpurSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8409;
			if (Type == Type::Bottom) return 8411;
			return 8413;
		}
		short PurpurSlab();
		enum Type Type(short ID);
	}
	namespace PurpurStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short PurpurStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 9139;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 9141;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 9143;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 9145;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 9147;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 9149;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9151;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 9153;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9155;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 9157;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 9159;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 9161;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 9163;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 9165;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 9167;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 9169;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9171;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 9173;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9175;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 9177;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 9179;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 9181;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 9183;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 9185;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 9187;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 9189;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9191;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 9193;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9195;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 9197;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 9199;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 9201;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 9203;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 9205;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 9207;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 9209;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9211;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 9213;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9215;
			return 9217;
		}
		short PurpurStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace QuartzBlock
	{
		constexpr short QuartzBlock()
		{
			return 6738;
		}
	}
	namespace QuartzBricks
	{
		constexpr short QuartzBricks()
		{
			return 17103;
		}
	}
	namespace QuartzPillar
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short QuartzPillar(enum Axis Axis)
		{
			if (Axis == Axis::X) return 6740;
			if (Axis == Axis::Y) return 6741;
			return 6742;
		}
		short QuartzPillar();
		enum Axis Axis(short ID);
	}
	namespace QuartzSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short QuartzSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8391;
			if (Type == Type::Bottom) return 8393;
			return 8395;
		}
		short QuartzSlab();
		enum Type Type(short ID);
	}
	namespace QuartzStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short QuartzStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 6744;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 6746;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 6748;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 6750;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 6752;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 6754;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 6756;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 6758;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 6760;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 6762;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 6764;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 6766;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 6768;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 6770;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 6772;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 6774;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 6776;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 6778;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 6780;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 6782;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 6784;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 6786;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 6788;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 6790;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 6792;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 6794;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 6796;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 6798;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 6800;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 6802;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 6804;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 6806;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 6808;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 6810;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 6812;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 6814;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 6816;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 6818;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 6820;
			return 6822;
		}
		short QuartzStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace Rail
	{
		enum class Shape
		{
			NorthSouth,
			EastWest,
			AscendingEast,
			AscendingWest,
			AscendingNorth,
			AscendingSouth,
			SouthEast,
			SouthWest,
			NorthWest,
			NorthEast
		};
		constexpr short Rail(enum Shape Shape)
		{
			if (Shape == Shape::NorthSouth) return 3645;
			if (Shape == Shape::EastWest) return 3646;
			if (Shape == Shape::AscendingEast) return 3647;
			if (Shape == Shape::AscendingWest) return 3648;
			if (Shape == Shape::AscendingNorth) return 3649;
			if (Shape == Shape::AscendingSouth) return 3650;
			if (Shape == Shape::SouthEast) return 3651;
			if (Shape == Shape::SouthWest) return 3652;
			if (Shape == Shape::NorthWest) return 3653;
			return 3654;
		}
		short Rail();
		enum Shape Shape(short ID);
	}
	namespace RedBanner
	{
		constexpr short RedBanner(unsigned char Rotation)
		{
			if (Rotation == 0) return 8121;
			if (Rotation == 1) return 8122;
			if (Rotation == 2) return 8123;
			if (Rotation == 3) return 8124;
			if (Rotation == 4) return 8125;
			if (Rotation == 5) return 8126;
			if (Rotation == 6) return 8127;
			if (Rotation == 7) return 8128;
			if (Rotation == 8) return 8129;
			if (Rotation == 9) return 8130;
			if (Rotation == 10) return 8131;
			if (Rotation == 11) return 8132;
			if (Rotation == 12) return 8133;
			if (Rotation == 13) return 8134;
			if (Rotation == 14) return 8135;
			return 8136;
		}
		short RedBanner();
		unsigned char Rotation(short ID);
	}
	namespace RedBed
	{
		enum class Part
		{
			Head,
			Foot
		};
		constexpr short RedBed(eBlockFace Facing, bool Occupied, enum Part Part)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Head) return 1273;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Foot) return 1274;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Head) return 1275;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Foot) return 1276;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Head) return 1277;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Foot) return 1278;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Head) return 1279;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Foot) return 1280;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Head) return 1281;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Foot) return 1282;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Head) return 1283;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Foot) return 1284;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Head) return 1285;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Foot) return 1286;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Occupied && Part == Part::Head) return 1287;
			return 1288;
		}
		short RedBed();
		eBlockFace Facing(short ID);
		bool Occupied(short ID);
		enum Part Part(short ID);
	}
	namespace RedCarpet
	{
		constexpr short RedCarpet()
		{
			return 7880;
		}
	}
	namespace RedConcrete
	{
		constexpr short RedConcrete()
		{
			return 9452;
		}
	}
	namespace RedConcretePowder
	{
		constexpr short RedConcretePowder()
		{
			return 9468;
		}
	}
	namespace RedGlazedTerracotta
	{
		constexpr short RedGlazedTerracotta(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9430;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9431;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9432;
			return 9433;
		}
		short RedGlazedTerracotta();
		eBlockFace Facing(short ID);
	}
	namespace RedMushroom
	{
		constexpr short RedMushroom()
		{
			return 1426;
		}
	}
	namespace RedMushroomBlock
	{
		constexpr short RedMushroomBlock(bool Down, bool East, bool North, bool South, bool Up, bool West)
		{
			if (Down && East && North && South && Up && West) return 4569;
			if (Down && East && North && South && Up && !West) return 4570;
			if (Down && East && North && South && !Up && West) return 4571;
			if (Down && East && North && South && !Up && !West) return 4572;
			if (Down && East && North && !South && Up && West) return 4573;
			if (Down && East && North && !South && Up && !West) return 4574;
			if (Down && East && North && !South && !Up && West) return 4575;
			if (Down && East && North && !South && !Up && !West) return 4576;
			if (Down && East && !North && South && Up && West) return 4577;
			if (Down && East && !North && South && Up && !West) return 4578;
			if (Down && East && !North && South && !Up && West) return 4579;
			if (Down && East && !North && South && !Up && !West) return 4580;
			if (Down && East && !North && !South && Up && West) return 4581;
			if (Down && East && !North && !South && Up && !West) return 4582;
			if (Down && East && !North && !South && !Up && West) return 4583;
			if (Down && East && !North && !South && !Up && !West) return 4584;
			if (Down && !East && North && South && Up && West) return 4585;
			if (Down && !East && North && South && Up && !West) return 4586;
			if (Down && !East && North && South && !Up && West) return 4587;
			if (Down && !East && North && South && !Up && !West) return 4588;
			if (Down && !East && North && !South && Up && West) return 4589;
			if (Down && !East && North && !South && Up && !West) return 4590;
			if (Down && !East && North && !South && !Up && West) return 4591;
			if (Down && !East && North && !South && !Up && !West) return 4592;
			if (Down && !East && !North && South && Up && West) return 4593;
			if (Down && !East && !North && South && Up && !West) return 4594;
			if (Down && !East && !North && South && !Up && West) return 4595;
			if (Down && !East && !North && South && !Up && !West) return 4596;
			if (Down && !East && !North && !South && Up && West) return 4597;
			if (Down && !East && !North && !South && Up && !West) return 4598;
			if (Down && !East && !North && !South && !Up && West) return 4599;
			if (Down && !East && !North && !South && !Up && !West) return 4600;
			if (!Down && East && North && South && Up && West) return 4601;
			if (!Down && East && North && South && Up && !West) return 4602;
			if (!Down && East && North && South && !Up && West) return 4603;
			if (!Down && East && North && South && !Up && !West) return 4604;
			if (!Down && East && North && !South && Up && West) return 4605;
			if (!Down && East && North && !South && Up && !West) return 4606;
			if (!Down && East && North && !South && !Up && West) return 4607;
			if (!Down && East && North && !South && !Up && !West) return 4608;
			if (!Down && East && !North && South && Up && West) return 4609;
			if (!Down && East && !North && South && Up && !West) return 4610;
			if (!Down && East && !North && South && !Up && West) return 4611;
			if (!Down && East && !North && South && !Up && !West) return 4612;
			if (!Down && East && !North && !South && Up && West) return 4613;
			if (!Down && East && !North && !South && Up && !West) return 4614;
			if (!Down && East && !North && !South && !Up && West) return 4615;
			if (!Down && East && !North && !South && !Up && !West) return 4616;
			if (!Down && !East && North && South && Up && West) return 4617;
			if (!Down && !East && North && South && Up && !West) return 4618;
			if (!Down && !East && North && South && !Up && West) return 4619;
			if (!Down && !East && North && South && !Up && !West) return 4620;
			if (!Down && !East && North && !South && Up && West) return 4621;
			if (!Down && !East && North && !South && Up && !West) return 4622;
			if (!Down && !East && North && !South && !Up && West) return 4623;
			if (!Down && !East && North && !South && !Up && !West) return 4624;
			if (!Down && !East && !North && South && Up && West) return 4625;
			if (!Down && !East && !North && South && Up && !West) return 4626;
			if (!Down && !East && !North && South && !Up && West) return 4627;
			if (!Down && !East && !North && South && !Up && !West) return 4628;
			if (!Down && !East && !North && !South && Up && West) return 4629;
			if (!Down && !East && !North && !South && Up && !West) return 4630;
			if (!Down && !East && !North && !South && !Up && West) return 4631;
			return 4632;
		}
		short RedMushroomBlock();
		bool Down(short ID);
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool Up(short ID);
		bool West(short ID);
	}
	namespace RedNetherBrickSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short RedNetherBrickSlab(enum Type Type)
		{
			if (Type == Type::Top) return 10850;
			if (Type == Type::Bottom) return 10852;
			return 10854;
		}
		short RedNetherBrickSlab();
		enum Type Type(short ID);
	}
	namespace RedNetherBrickStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short RedNetherBrickStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 10550;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 10552;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 10554;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 10556;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 10558;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 10560;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10562;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10564;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10566;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10568;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 10570;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 10572;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 10574;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 10576;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 10578;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 10580;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10582;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10584;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10586;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 10588;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 10590;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 10592;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 10594;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 10596;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 10598;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 10600;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10602;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10604;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10606;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10608;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 10610;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 10612;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 10614;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 10616;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 10618;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 10620;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10622;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10624;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10626;
			return 10628;
		}
		short RedNetherBrickStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace RedNetherBrickWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short RedNetherBrickWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 13462;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 13463;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 13464;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 13468;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 13469;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 13470;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 13474;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 13475;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 13476;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 13480;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 13481;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 13482;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 13486;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 13487;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 13488;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 13492;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 13493;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 13494;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 13498;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 13499;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 13500;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 13504;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 13505;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 13506;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 13510;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 13511;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 13512;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 13516;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 13517;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 13518;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 13522;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 13523;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 13524;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 13528;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 13529;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 13530;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 13534;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 13535;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 13536;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 13540;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 13541;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 13542;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 13546;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 13547;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 13548;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 13552;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 13553;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 13554;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 13558;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 13559;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 13560;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 13564;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 13565;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 13566;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 13570;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 13571;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 13572;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 13576;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 13577;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 13578;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 13582;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 13583;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 13584;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 13588;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 13589;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 13590;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 13594;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 13595;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 13596;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 13600;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 13601;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 13602;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 13606;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 13607;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 13608;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 13612;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 13613;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 13614;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 13618;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 13619;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 13620;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 13624;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 13625;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 13626;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 13630;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 13631;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 13632;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 13636;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 13637;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 13638;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 13642;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 13643;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 13644;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 13648;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 13649;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 13650;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 13654;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 13655;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 13656;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 13660;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 13661;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 13662;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 13666;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 13667;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 13668;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 13672;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 13673;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 13674;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 13678;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 13679;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 13680;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 13684;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 13685;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 13686;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 13690;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 13691;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 13692;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 13696;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 13697;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 13698;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 13702;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 13703;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 13704;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 13708;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 13709;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 13710;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 13714;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 13715;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 13716;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 13720;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 13721;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 13722;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 13726;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 13727;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 13728;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 13732;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 13733;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 13734;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 13738;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 13739;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 13740;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 13744;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 13745;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 13746;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 13750;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 13751;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 13752;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 13756;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 13757;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 13758;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 13762;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 13763;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 13764;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 13768;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 13769;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 13770;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 13774;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 13775;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 13776;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 13780;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 13781;
			return 13782;
		}
		short RedNetherBrickWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace RedNetherBricks
	{
		constexpr short RedNetherBricks()
		{
			return 9255;
		}
	}
	namespace RedSand
	{
		constexpr short RedSand()
		{
			return 67;
		}
	}
	namespace RedSandstone
	{
		constexpr short RedSandstone()
		{
			return 8217;
		}
	}
	namespace RedSandstoneSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short RedSandstoneSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8397;
			if (Type == Type::Bottom) return 8399;
			return 8401;
		}
		short RedSandstoneSlab();
		enum Type Type(short ID);
	}
	namespace RedSandstoneStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short RedSandstoneStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 8221;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 8223;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 8225;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 8227;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 8229;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 8231;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 8233;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 8235;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 8237;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 8239;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 8241;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 8243;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 8245;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 8247;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 8249;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 8251;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 8253;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 8255;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 8257;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 8259;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 8261;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 8263;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 8265;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 8267;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 8269;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 8271;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 8273;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 8275;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 8277;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 8279;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 8281;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 8283;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 8285;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 8287;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 8289;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 8291;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 8293;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 8295;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 8297;
			return 8299;
		}
		short RedSandstoneStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace RedSandstoneWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short RedSandstoneWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 11518;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 11519;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 11520;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 11524;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 11525;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 11526;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 11530;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 11531;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 11532;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 11536;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 11537;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 11538;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 11542;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 11543;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 11544;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 11548;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 11549;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 11550;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 11554;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 11555;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 11556;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 11560;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 11561;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 11562;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 11566;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 11567;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 11568;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 11572;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 11573;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 11574;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 11578;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 11579;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 11580;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 11584;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 11585;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 11586;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 11590;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 11591;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 11592;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 11596;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 11597;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 11598;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 11602;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 11603;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 11604;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 11608;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 11609;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 11610;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 11614;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 11615;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 11616;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 11620;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 11621;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 11622;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 11626;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 11627;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 11628;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 11632;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 11633;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 11634;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 11638;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 11639;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 11640;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 11644;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 11645;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 11646;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 11650;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 11651;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 11652;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 11656;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 11657;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 11658;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 11662;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 11663;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 11664;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 11668;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 11669;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 11670;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 11674;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 11675;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 11676;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 11680;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 11681;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 11682;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 11686;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 11687;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 11688;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 11692;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 11693;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 11694;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 11698;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 11699;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 11700;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 11704;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 11705;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 11706;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 11710;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 11711;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 11712;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 11716;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 11717;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 11718;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 11722;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 11723;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 11724;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 11728;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 11729;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 11730;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 11734;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 11735;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 11736;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 11740;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 11741;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 11742;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 11746;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 11747;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 11748;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 11752;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 11753;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 11754;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 11758;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 11759;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 11760;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 11764;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 11765;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 11766;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 11770;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 11771;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 11772;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 11776;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 11777;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 11778;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 11782;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 11783;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 11784;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 11788;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 11789;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 11790;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 11794;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 11795;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 11796;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 11800;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 11801;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 11802;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 11806;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 11807;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 11808;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 11812;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 11813;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 11814;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 11818;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 11819;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 11820;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 11824;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 11825;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 11826;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 11830;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 11831;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 11832;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 11836;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 11837;
			return 11838;
		}
		short RedSandstoneWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace RedShulkerBox
	{
		constexpr short RedShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9362;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9363;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9364;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9365;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9366;
			return 9367;
		}
		short RedShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace RedStainedGlass
	{
		constexpr short RedStainedGlass()
		{
			return 4109;
		}
	}
	namespace RedStainedGlassPane
	{
		constexpr short RedStainedGlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 7313;
			if (East && North && South && !West) return 7314;
			if (East && North && !South && West) return 7317;
			if (East && North && !South && !West) return 7318;
			if (East && !North && South && West) return 7321;
			if (East && !North && South && !West) return 7322;
			if (East && !North && !South && West) return 7325;
			if (East && !North && !South && !West) return 7326;
			if (!East && North && South && West) return 7329;
			if (!East && North && South && !West) return 7330;
			if (!East && North && !South && West) return 7333;
			if (!East && North && !South && !West) return 7334;
			if (!East && !North && South && West) return 7337;
			if (!East && !North && South && !West) return 7338;
			if (!East && !North && !South && West) return 7341;
			return 7342;
		}
		short RedStainedGlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace RedTerracotta
	{
		constexpr short RedTerracotta()
		{
			return 6861;
		}
	}
	namespace RedTulip
	{
		constexpr short RedTulip()
		{
			return 1417;
		}
	}
	namespace RedWallBanner
	{
		constexpr short RedWallBanner(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 8209;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 8210;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 8211;
			return 8212;
		}
		short RedWallBanner();
		eBlockFace Facing(short ID);
	}
	namespace RedWool
	{
		constexpr short RedWool()
		{
			return 1398;
		}
	}
	namespace RedstoneBlock
	{
		constexpr short RedstoneBlock()
		{
			return 6726;
		}
	}
	namespace RedstoneLamp
	{
		constexpr short RedstoneLamp(bool Lit)
		{
			if (Lit) return 5156;
			return 5157;
		}
		short RedstoneLamp();
		bool Lit(short ID);
	}
	namespace RedstoneOre
	{
		constexpr short RedstoneOre(bool Lit)
		{
			if (Lit) return 3885;
			return 3886;
		}
		short RedstoneOre();
		bool Lit(short ID);
	}
	namespace RedstoneTorch
	{
		constexpr short RedstoneTorch(bool Lit)
		{
			if (Lit) return 3887;
			return 3888;
		}
		short RedstoneTorch();
		bool Lit(short ID);
	}
	namespace RedstoneWallTorch
	{
		constexpr short RedstoneWallTorch(eBlockFace Facing, bool Lit)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Lit) return 3889;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Lit) return 3890;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Lit) return 3891;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Lit) return 3892;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Lit) return 3893;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Lit) return 3894;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Lit) return 3895;
			return 3896;
		}
		short RedstoneWallTorch();
		eBlockFace Facing(short ID);
		bool Lit(short ID);
	}
	namespace RedstoneWire
	{
		enum class East
		{
			Up,
			Side,
			None
		};
		enum class North
		{
			Up,
			Side,
			None
		};
		enum class South
		{
			Up,
			Side,
			None
		};
		enum class West
		{
			Up,
			Side,
			None
		};
		constexpr short RedstoneWire(enum East East, enum North North, unsigned char Power, enum South South, enum West West)
		{
			if (East == East::Up && North == North::Up && Power == 0 && South == South::Up && West == West::Up) return 2058;
			if (East == East::Up && North == North::Up && Power == 0 && South == South::Up && West == West::Side) return 2059;
			if (East == East::Up && North == North::Up && Power == 0 && South == South::Up && West == West::None) return 2060;
			if (East == East::Up && North == North::Up && Power == 0 && South == South::Side && West == West::Up) return 2061;
			if (East == East::Up && North == North::Up && Power == 0 && South == South::Side && West == West::Side) return 2062;
			if (East == East::Up && North == North::Up && Power == 0 && South == South::Side && West == West::None) return 2063;
			if (East == East::Up && North == North::Up && Power == 0 && South == South::None && West == West::Up) return 2064;
			if (East == East::Up && North == North::Up && Power == 0 && South == South::None && West == West::Side) return 2065;
			if (East == East::Up && North == North::Up && Power == 0 && South == South::None && West == West::None) return 2066;
			if (East == East::Up && North == North::Up && Power == 1 && South == South::Up && West == West::Up) return 2067;
			if (East == East::Up && North == North::Up && Power == 1 && South == South::Up && West == West::Side) return 2068;
			if (East == East::Up && North == North::Up && Power == 1 && South == South::Up && West == West::None) return 2069;
			if (East == East::Up && North == North::Up && Power == 1 && South == South::Side && West == West::Up) return 2070;
			if (East == East::Up && North == North::Up && Power == 1 && South == South::Side && West == West::Side) return 2071;
			if (East == East::Up && North == North::Up && Power == 1 && South == South::Side && West == West::None) return 2072;
			if (East == East::Up && North == North::Up && Power == 1 && South == South::None && West == West::Up) return 2073;
			if (East == East::Up && North == North::Up && Power == 1 && South == South::None && West == West::Side) return 2074;
			if (East == East::Up && North == North::Up && Power == 1 && South == South::None && West == West::None) return 2075;
			if (East == East::Up && North == North::Up && Power == 2 && South == South::Up && West == West::Up) return 2076;
			if (East == East::Up && North == North::Up && Power == 2 && South == South::Up && West == West::Side) return 2077;
			if (East == East::Up && North == North::Up && Power == 2 && South == South::Up && West == West::None) return 2078;
			if (East == East::Up && North == North::Up && Power == 2 && South == South::Side && West == West::Up) return 2079;
			if (East == East::Up && North == North::Up && Power == 2 && South == South::Side && West == West::Side) return 2080;
			if (East == East::Up && North == North::Up && Power == 2 && South == South::Side && West == West::None) return 2081;
			if (East == East::Up && North == North::Up && Power == 2 && South == South::None && West == West::Up) return 2082;
			if (East == East::Up && North == North::Up && Power == 2 && South == South::None && West == West::Side) return 2083;
			if (East == East::Up && North == North::Up && Power == 2 && South == South::None && West == West::None) return 2084;
			if (East == East::Up && North == North::Up && Power == 3 && South == South::Up && West == West::Up) return 2085;
			if (East == East::Up && North == North::Up && Power == 3 && South == South::Up && West == West::Side) return 2086;
			if (East == East::Up && North == North::Up && Power == 3 && South == South::Up && West == West::None) return 2087;
			if (East == East::Up && North == North::Up && Power == 3 && South == South::Side && West == West::Up) return 2088;
			if (East == East::Up && North == North::Up && Power == 3 && South == South::Side && West == West::Side) return 2089;
			if (East == East::Up && North == North::Up && Power == 3 && South == South::Side && West == West::None) return 2090;
			if (East == East::Up && North == North::Up && Power == 3 && South == South::None && West == West::Up) return 2091;
			if (East == East::Up && North == North::Up && Power == 3 && South == South::None && West == West::Side) return 2092;
			if (East == East::Up && North == North::Up && Power == 3 && South == South::None && West == West::None) return 2093;
			if (East == East::Up && North == North::Up && Power == 4 && South == South::Up && West == West::Up) return 2094;
			if (East == East::Up && North == North::Up && Power == 4 && South == South::Up && West == West::Side) return 2095;
			if (East == East::Up && North == North::Up && Power == 4 && South == South::Up && West == West::None) return 2096;
			if (East == East::Up && North == North::Up && Power == 4 && South == South::Side && West == West::Up) return 2097;
			if (East == East::Up && North == North::Up && Power == 4 && South == South::Side && West == West::Side) return 2098;
			if (East == East::Up && North == North::Up && Power == 4 && South == South::Side && West == West::None) return 2099;
			if (East == East::Up && North == North::Up && Power == 4 && South == South::None && West == West::Up) return 2100;
			if (East == East::Up && North == North::Up && Power == 4 && South == South::None && West == West::Side) return 2101;
			if (East == East::Up && North == North::Up && Power == 4 && South == South::None && West == West::None) return 2102;
			if (East == East::Up && North == North::Up && Power == 5 && South == South::Up && West == West::Up) return 2103;
			if (East == East::Up && North == North::Up && Power == 5 && South == South::Up && West == West::Side) return 2104;
			if (East == East::Up && North == North::Up && Power == 5 && South == South::Up && West == West::None) return 2105;
			if (East == East::Up && North == North::Up && Power == 5 && South == South::Side && West == West::Up) return 2106;
			if (East == East::Up && North == North::Up && Power == 5 && South == South::Side && West == West::Side) return 2107;
			if (East == East::Up && North == North::Up && Power == 5 && South == South::Side && West == West::None) return 2108;
			if (East == East::Up && North == North::Up && Power == 5 && South == South::None && West == West::Up) return 2109;
			if (East == East::Up && North == North::Up && Power == 5 && South == South::None && West == West::Side) return 2110;
			if (East == East::Up && North == North::Up && Power == 5 && South == South::None && West == West::None) return 2111;
			if (East == East::Up && North == North::Up && Power == 6 && South == South::Up && West == West::Up) return 2112;
			if (East == East::Up && North == North::Up && Power == 6 && South == South::Up && West == West::Side) return 2113;
			if (East == East::Up && North == North::Up && Power == 6 && South == South::Up && West == West::None) return 2114;
			if (East == East::Up && North == North::Up && Power == 6 && South == South::Side && West == West::Up) return 2115;
			if (East == East::Up && North == North::Up && Power == 6 && South == South::Side && West == West::Side) return 2116;
			if (East == East::Up && North == North::Up && Power == 6 && South == South::Side && West == West::None) return 2117;
			if (East == East::Up && North == North::Up && Power == 6 && South == South::None && West == West::Up) return 2118;
			if (East == East::Up && North == North::Up && Power == 6 && South == South::None && West == West::Side) return 2119;
			if (East == East::Up && North == North::Up && Power == 6 && South == South::None && West == West::None) return 2120;
			if (East == East::Up && North == North::Up && Power == 7 && South == South::Up && West == West::Up) return 2121;
			if (East == East::Up && North == North::Up && Power == 7 && South == South::Up && West == West::Side) return 2122;
			if (East == East::Up && North == North::Up && Power == 7 && South == South::Up && West == West::None) return 2123;
			if (East == East::Up && North == North::Up && Power == 7 && South == South::Side && West == West::Up) return 2124;
			if (East == East::Up && North == North::Up && Power == 7 && South == South::Side && West == West::Side) return 2125;
			if (East == East::Up && North == North::Up && Power == 7 && South == South::Side && West == West::None) return 2126;
			if (East == East::Up && North == North::Up && Power == 7 && South == South::None && West == West::Up) return 2127;
			if (East == East::Up && North == North::Up && Power == 7 && South == South::None && West == West::Side) return 2128;
			if (East == East::Up && North == North::Up && Power == 7 && South == South::None && West == West::None) return 2129;
			if (East == East::Up && North == North::Up && Power == 8 && South == South::Up && West == West::Up) return 2130;
			if (East == East::Up && North == North::Up && Power == 8 && South == South::Up && West == West::Side) return 2131;
			if (East == East::Up && North == North::Up && Power == 8 && South == South::Up && West == West::None) return 2132;
			if (East == East::Up && North == North::Up && Power == 8 && South == South::Side && West == West::Up) return 2133;
			if (East == East::Up && North == North::Up && Power == 8 && South == South::Side && West == West::Side) return 2134;
			if (East == East::Up && North == North::Up && Power == 8 && South == South::Side && West == West::None) return 2135;
			if (East == East::Up && North == North::Up && Power == 8 && South == South::None && West == West::Up) return 2136;
			if (East == East::Up && North == North::Up && Power == 8 && South == South::None && West == West::Side) return 2137;
			if (East == East::Up && North == North::Up && Power == 8 && South == South::None && West == West::None) return 2138;
			if (East == East::Up && North == North::Up && Power == 9 && South == South::Up && West == West::Up) return 2139;
			if (East == East::Up && North == North::Up && Power == 9 && South == South::Up && West == West::Side) return 2140;
			if (East == East::Up && North == North::Up && Power == 9 && South == South::Up && West == West::None) return 2141;
			if (East == East::Up && North == North::Up && Power == 9 && South == South::Side && West == West::Up) return 2142;
			if (East == East::Up && North == North::Up && Power == 9 && South == South::Side && West == West::Side) return 2143;
			if (East == East::Up && North == North::Up && Power == 9 && South == South::Side && West == West::None) return 2144;
			if (East == East::Up && North == North::Up && Power == 9 && South == South::None && West == West::Up) return 2145;
			if (East == East::Up && North == North::Up && Power == 9 && South == South::None && West == West::Side) return 2146;
			if (East == East::Up && North == North::Up && Power == 9 && South == South::None && West == West::None) return 2147;
			if (East == East::Up && North == North::Up && Power == 10 && South == South::Up && West == West::Up) return 2148;
			if (East == East::Up && North == North::Up && Power == 10 && South == South::Up && West == West::Side) return 2149;
			if (East == East::Up && North == North::Up && Power == 10 && South == South::Up && West == West::None) return 2150;
			if (East == East::Up && North == North::Up && Power == 10 && South == South::Side && West == West::Up) return 2151;
			if (East == East::Up && North == North::Up && Power == 10 && South == South::Side && West == West::Side) return 2152;
			if (East == East::Up && North == North::Up && Power == 10 && South == South::Side && West == West::None) return 2153;
			if (East == East::Up && North == North::Up && Power == 10 && South == South::None && West == West::Up) return 2154;
			if (East == East::Up && North == North::Up && Power == 10 && South == South::None && West == West::Side) return 2155;
			if (East == East::Up && North == North::Up && Power == 10 && South == South::None && West == West::None) return 2156;
			if (East == East::Up && North == North::Up && Power == 11 && South == South::Up && West == West::Up) return 2157;
			if (East == East::Up && North == North::Up && Power == 11 && South == South::Up && West == West::Side) return 2158;
			if (East == East::Up && North == North::Up && Power == 11 && South == South::Up && West == West::None) return 2159;
			if (East == East::Up && North == North::Up && Power == 11 && South == South::Side && West == West::Up) return 2160;
			if (East == East::Up && North == North::Up && Power == 11 && South == South::Side && West == West::Side) return 2161;
			if (East == East::Up && North == North::Up && Power == 11 && South == South::Side && West == West::None) return 2162;
			if (East == East::Up && North == North::Up && Power == 11 && South == South::None && West == West::Up) return 2163;
			if (East == East::Up && North == North::Up && Power == 11 && South == South::None && West == West::Side) return 2164;
			if (East == East::Up && North == North::Up && Power == 11 && South == South::None && West == West::None) return 2165;
			if (East == East::Up && North == North::Up && Power == 12 && South == South::Up && West == West::Up) return 2166;
			if (East == East::Up && North == North::Up && Power == 12 && South == South::Up && West == West::Side) return 2167;
			if (East == East::Up && North == North::Up && Power == 12 && South == South::Up && West == West::None) return 2168;
			if (East == East::Up && North == North::Up && Power == 12 && South == South::Side && West == West::Up) return 2169;
			if (East == East::Up && North == North::Up && Power == 12 && South == South::Side && West == West::Side) return 2170;
			if (East == East::Up && North == North::Up && Power == 12 && South == South::Side && West == West::None) return 2171;
			if (East == East::Up && North == North::Up && Power == 12 && South == South::None && West == West::Up) return 2172;
			if (East == East::Up && North == North::Up && Power == 12 && South == South::None && West == West::Side) return 2173;
			if (East == East::Up && North == North::Up && Power == 12 && South == South::None && West == West::None) return 2174;
			if (East == East::Up && North == North::Up && Power == 13 && South == South::Up && West == West::Up) return 2175;
			if (East == East::Up && North == North::Up && Power == 13 && South == South::Up && West == West::Side) return 2176;
			if (East == East::Up && North == North::Up && Power == 13 && South == South::Up && West == West::None) return 2177;
			if (East == East::Up && North == North::Up && Power == 13 && South == South::Side && West == West::Up) return 2178;
			if (East == East::Up && North == North::Up && Power == 13 && South == South::Side && West == West::Side) return 2179;
			if (East == East::Up && North == North::Up && Power == 13 && South == South::Side && West == West::None) return 2180;
			if (East == East::Up && North == North::Up && Power == 13 && South == South::None && West == West::Up) return 2181;
			if (East == East::Up && North == North::Up && Power == 13 && South == South::None && West == West::Side) return 2182;
			if (East == East::Up && North == North::Up && Power == 13 && South == South::None && West == West::None) return 2183;
			if (East == East::Up && North == North::Up && Power == 14 && South == South::Up && West == West::Up) return 2184;
			if (East == East::Up && North == North::Up && Power == 14 && South == South::Up && West == West::Side) return 2185;
			if (East == East::Up && North == North::Up && Power == 14 && South == South::Up && West == West::None) return 2186;
			if (East == East::Up && North == North::Up && Power == 14 && South == South::Side && West == West::Up) return 2187;
			if (East == East::Up && North == North::Up && Power == 14 && South == South::Side && West == West::Side) return 2188;
			if (East == East::Up && North == North::Up && Power == 14 && South == South::Side && West == West::None) return 2189;
			if (East == East::Up && North == North::Up && Power == 14 && South == South::None && West == West::Up) return 2190;
			if (East == East::Up && North == North::Up && Power == 14 && South == South::None && West == West::Side) return 2191;
			if (East == East::Up && North == North::Up && Power == 14 && South == South::None && West == West::None) return 2192;
			if (East == East::Up && North == North::Up && Power == 15 && South == South::Up && West == West::Up) return 2193;
			if (East == East::Up && North == North::Up && Power == 15 && South == South::Up && West == West::Side) return 2194;
			if (East == East::Up && North == North::Up && Power == 15 && South == South::Up && West == West::None) return 2195;
			if (East == East::Up && North == North::Up && Power == 15 && South == South::Side && West == West::Up) return 2196;
			if (East == East::Up && North == North::Up && Power == 15 && South == South::Side && West == West::Side) return 2197;
			if (East == East::Up && North == North::Up && Power == 15 && South == South::Side && West == West::None) return 2198;
			if (East == East::Up && North == North::Up && Power == 15 && South == South::None && West == West::Up) return 2199;
			if (East == East::Up && North == North::Up && Power == 15 && South == South::None && West == West::Side) return 2200;
			if (East == East::Up && North == North::Up && Power == 15 && South == South::None && West == West::None) return 2201;
			if (East == East::Up && North == North::Side && Power == 0 && South == South::Up && West == West::Up) return 2202;
			if (East == East::Up && North == North::Side && Power == 0 && South == South::Up && West == West::Side) return 2203;
			if (East == East::Up && North == North::Side && Power == 0 && South == South::Up && West == West::None) return 2204;
			if (East == East::Up && North == North::Side && Power == 0 && South == South::Side && West == West::Up) return 2205;
			if (East == East::Up && North == North::Side && Power == 0 && South == South::Side && West == West::Side) return 2206;
			if (East == East::Up && North == North::Side && Power == 0 && South == South::Side && West == West::None) return 2207;
			if (East == East::Up && North == North::Side && Power == 0 && South == South::None && West == West::Up) return 2208;
			if (East == East::Up && North == North::Side && Power == 0 && South == South::None && West == West::Side) return 2209;
			if (East == East::Up && North == North::Side && Power == 0 && South == South::None && West == West::None) return 2210;
			if (East == East::Up && North == North::Side && Power == 1 && South == South::Up && West == West::Up) return 2211;
			if (East == East::Up && North == North::Side && Power == 1 && South == South::Up && West == West::Side) return 2212;
			if (East == East::Up && North == North::Side && Power == 1 && South == South::Up && West == West::None) return 2213;
			if (East == East::Up && North == North::Side && Power == 1 && South == South::Side && West == West::Up) return 2214;
			if (East == East::Up && North == North::Side && Power == 1 && South == South::Side && West == West::Side) return 2215;
			if (East == East::Up && North == North::Side && Power == 1 && South == South::Side && West == West::None) return 2216;
			if (East == East::Up && North == North::Side && Power == 1 && South == South::None && West == West::Up) return 2217;
			if (East == East::Up && North == North::Side && Power == 1 && South == South::None && West == West::Side) return 2218;
			if (East == East::Up && North == North::Side && Power == 1 && South == South::None && West == West::None) return 2219;
			if (East == East::Up && North == North::Side && Power == 2 && South == South::Up && West == West::Up) return 2220;
			if (East == East::Up && North == North::Side && Power == 2 && South == South::Up && West == West::Side) return 2221;
			if (East == East::Up && North == North::Side && Power == 2 && South == South::Up && West == West::None) return 2222;
			if (East == East::Up && North == North::Side && Power == 2 && South == South::Side && West == West::Up) return 2223;
			if (East == East::Up && North == North::Side && Power == 2 && South == South::Side && West == West::Side) return 2224;
			if (East == East::Up && North == North::Side && Power == 2 && South == South::Side && West == West::None) return 2225;
			if (East == East::Up && North == North::Side && Power == 2 && South == South::None && West == West::Up) return 2226;
			if (East == East::Up && North == North::Side && Power == 2 && South == South::None && West == West::Side) return 2227;
			if (East == East::Up && North == North::Side && Power == 2 && South == South::None && West == West::None) return 2228;
			if (East == East::Up && North == North::Side && Power == 3 && South == South::Up && West == West::Up) return 2229;
			if (East == East::Up && North == North::Side && Power == 3 && South == South::Up && West == West::Side) return 2230;
			if (East == East::Up && North == North::Side && Power == 3 && South == South::Up && West == West::None) return 2231;
			if (East == East::Up && North == North::Side && Power == 3 && South == South::Side && West == West::Up) return 2232;
			if (East == East::Up && North == North::Side && Power == 3 && South == South::Side && West == West::Side) return 2233;
			if (East == East::Up && North == North::Side && Power == 3 && South == South::Side && West == West::None) return 2234;
			if (East == East::Up && North == North::Side && Power == 3 && South == South::None && West == West::Up) return 2235;
			if (East == East::Up && North == North::Side && Power == 3 && South == South::None && West == West::Side) return 2236;
			if (East == East::Up && North == North::Side && Power == 3 && South == South::None && West == West::None) return 2237;
			if (East == East::Up && North == North::Side && Power == 4 && South == South::Up && West == West::Up) return 2238;
			if (East == East::Up && North == North::Side && Power == 4 && South == South::Up && West == West::Side) return 2239;
			if (East == East::Up && North == North::Side && Power == 4 && South == South::Up && West == West::None) return 2240;
			if (East == East::Up && North == North::Side && Power == 4 && South == South::Side && West == West::Up) return 2241;
			if (East == East::Up && North == North::Side && Power == 4 && South == South::Side && West == West::Side) return 2242;
			if (East == East::Up && North == North::Side && Power == 4 && South == South::Side && West == West::None) return 2243;
			if (East == East::Up && North == North::Side && Power == 4 && South == South::None && West == West::Up) return 2244;
			if (East == East::Up && North == North::Side && Power == 4 && South == South::None && West == West::Side) return 2245;
			if (East == East::Up && North == North::Side && Power == 4 && South == South::None && West == West::None) return 2246;
			if (East == East::Up && North == North::Side && Power == 5 && South == South::Up && West == West::Up) return 2247;
			if (East == East::Up && North == North::Side && Power == 5 && South == South::Up && West == West::Side) return 2248;
			if (East == East::Up && North == North::Side && Power == 5 && South == South::Up && West == West::None) return 2249;
			if (East == East::Up && North == North::Side && Power == 5 && South == South::Side && West == West::Up) return 2250;
			if (East == East::Up && North == North::Side && Power == 5 && South == South::Side && West == West::Side) return 2251;
			if (East == East::Up && North == North::Side && Power == 5 && South == South::Side && West == West::None) return 2252;
			if (East == East::Up && North == North::Side && Power == 5 && South == South::None && West == West::Up) return 2253;
			if (East == East::Up && North == North::Side && Power == 5 && South == South::None && West == West::Side) return 2254;
			if (East == East::Up && North == North::Side && Power == 5 && South == South::None && West == West::None) return 2255;
			if (East == East::Up && North == North::Side && Power == 6 && South == South::Up && West == West::Up) return 2256;
			if (East == East::Up && North == North::Side && Power == 6 && South == South::Up && West == West::Side) return 2257;
			if (East == East::Up && North == North::Side && Power == 6 && South == South::Up && West == West::None) return 2258;
			if (East == East::Up && North == North::Side && Power == 6 && South == South::Side && West == West::Up) return 2259;
			if (East == East::Up && North == North::Side && Power == 6 && South == South::Side && West == West::Side) return 2260;
			if (East == East::Up && North == North::Side && Power == 6 && South == South::Side && West == West::None) return 2261;
			if (East == East::Up && North == North::Side && Power == 6 && South == South::None && West == West::Up) return 2262;
			if (East == East::Up && North == North::Side && Power == 6 && South == South::None && West == West::Side) return 2263;
			if (East == East::Up && North == North::Side && Power == 6 && South == South::None && West == West::None) return 2264;
			if (East == East::Up && North == North::Side && Power == 7 && South == South::Up && West == West::Up) return 2265;
			if (East == East::Up && North == North::Side && Power == 7 && South == South::Up && West == West::Side) return 2266;
			if (East == East::Up && North == North::Side && Power == 7 && South == South::Up && West == West::None) return 2267;
			if (East == East::Up && North == North::Side && Power == 7 && South == South::Side && West == West::Up) return 2268;
			if (East == East::Up && North == North::Side && Power == 7 && South == South::Side && West == West::Side) return 2269;
			if (East == East::Up && North == North::Side && Power == 7 && South == South::Side && West == West::None) return 2270;
			if (East == East::Up && North == North::Side && Power == 7 && South == South::None && West == West::Up) return 2271;
			if (East == East::Up && North == North::Side && Power == 7 && South == South::None && West == West::Side) return 2272;
			if (East == East::Up && North == North::Side && Power == 7 && South == South::None && West == West::None) return 2273;
			if (East == East::Up && North == North::Side && Power == 8 && South == South::Up && West == West::Up) return 2274;
			if (East == East::Up && North == North::Side && Power == 8 && South == South::Up && West == West::Side) return 2275;
			if (East == East::Up && North == North::Side && Power == 8 && South == South::Up && West == West::None) return 2276;
			if (East == East::Up && North == North::Side && Power == 8 && South == South::Side && West == West::Up) return 2277;
			if (East == East::Up && North == North::Side && Power == 8 && South == South::Side && West == West::Side) return 2278;
			if (East == East::Up && North == North::Side && Power == 8 && South == South::Side && West == West::None) return 2279;
			if (East == East::Up && North == North::Side && Power == 8 && South == South::None && West == West::Up) return 2280;
			if (East == East::Up && North == North::Side && Power == 8 && South == South::None && West == West::Side) return 2281;
			if (East == East::Up && North == North::Side && Power == 8 && South == South::None && West == West::None) return 2282;
			if (East == East::Up && North == North::Side && Power == 9 && South == South::Up && West == West::Up) return 2283;
			if (East == East::Up && North == North::Side && Power == 9 && South == South::Up && West == West::Side) return 2284;
			if (East == East::Up && North == North::Side && Power == 9 && South == South::Up && West == West::None) return 2285;
			if (East == East::Up && North == North::Side && Power == 9 && South == South::Side && West == West::Up) return 2286;
			if (East == East::Up && North == North::Side && Power == 9 && South == South::Side && West == West::Side) return 2287;
			if (East == East::Up && North == North::Side && Power == 9 && South == South::Side && West == West::None) return 2288;
			if (East == East::Up && North == North::Side && Power == 9 && South == South::None && West == West::Up) return 2289;
			if (East == East::Up && North == North::Side && Power == 9 && South == South::None && West == West::Side) return 2290;
			if (East == East::Up && North == North::Side && Power == 9 && South == South::None && West == West::None) return 2291;
			if (East == East::Up && North == North::Side && Power == 10 && South == South::Up && West == West::Up) return 2292;
			if (East == East::Up && North == North::Side && Power == 10 && South == South::Up && West == West::Side) return 2293;
			if (East == East::Up && North == North::Side && Power == 10 && South == South::Up && West == West::None) return 2294;
			if (East == East::Up && North == North::Side && Power == 10 && South == South::Side && West == West::Up) return 2295;
			if (East == East::Up && North == North::Side && Power == 10 && South == South::Side && West == West::Side) return 2296;
			if (East == East::Up && North == North::Side && Power == 10 && South == South::Side && West == West::None) return 2297;
			if (East == East::Up && North == North::Side && Power == 10 && South == South::None && West == West::Up) return 2298;
			if (East == East::Up && North == North::Side && Power == 10 && South == South::None && West == West::Side) return 2299;
			if (East == East::Up && North == North::Side && Power == 10 && South == South::None && West == West::None) return 2300;
			if (East == East::Up && North == North::Side && Power == 11 && South == South::Up && West == West::Up) return 2301;
			if (East == East::Up && North == North::Side && Power == 11 && South == South::Up && West == West::Side) return 2302;
			if (East == East::Up && North == North::Side && Power == 11 && South == South::Up && West == West::None) return 2303;
			if (East == East::Up && North == North::Side && Power == 11 && South == South::Side && West == West::Up) return 2304;
			if (East == East::Up && North == North::Side && Power == 11 && South == South::Side && West == West::Side) return 2305;
			if (East == East::Up && North == North::Side && Power == 11 && South == South::Side && West == West::None) return 2306;
			if (East == East::Up && North == North::Side && Power == 11 && South == South::None && West == West::Up) return 2307;
			if (East == East::Up && North == North::Side && Power == 11 && South == South::None && West == West::Side) return 2308;
			if (East == East::Up && North == North::Side && Power == 11 && South == South::None && West == West::None) return 2309;
			if (East == East::Up && North == North::Side && Power == 12 && South == South::Up && West == West::Up) return 2310;
			if (East == East::Up && North == North::Side && Power == 12 && South == South::Up && West == West::Side) return 2311;
			if (East == East::Up && North == North::Side && Power == 12 && South == South::Up && West == West::None) return 2312;
			if (East == East::Up && North == North::Side && Power == 12 && South == South::Side && West == West::Up) return 2313;
			if (East == East::Up && North == North::Side && Power == 12 && South == South::Side && West == West::Side) return 2314;
			if (East == East::Up && North == North::Side && Power == 12 && South == South::Side && West == West::None) return 2315;
			if (East == East::Up && North == North::Side && Power == 12 && South == South::None && West == West::Up) return 2316;
			if (East == East::Up && North == North::Side && Power == 12 && South == South::None && West == West::Side) return 2317;
			if (East == East::Up && North == North::Side && Power == 12 && South == South::None && West == West::None) return 2318;
			if (East == East::Up && North == North::Side && Power == 13 && South == South::Up && West == West::Up) return 2319;
			if (East == East::Up && North == North::Side && Power == 13 && South == South::Up && West == West::Side) return 2320;
			if (East == East::Up && North == North::Side && Power == 13 && South == South::Up && West == West::None) return 2321;
			if (East == East::Up && North == North::Side && Power == 13 && South == South::Side && West == West::Up) return 2322;
			if (East == East::Up && North == North::Side && Power == 13 && South == South::Side && West == West::Side) return 2323;
			if (East == East::Up && North == North::Side && Power == 13 && South == South::Side && West == West::None) return 2324;
			if (East == East::Up && North == North::Side && Power == 13 && South == South::None && West == West::Up) return 2325;
			if (East == East::Up && North == North::Side && Power == 13 && South == South::None && West == West::Side) return 2326;
			if (East == East::Up && North == North::Side && Power == 13 && South == South::None && West == West::None) return 2327;
			if (East == East::Up && North == North::Side && Power == 14 && South == South::Up && West == West::Up) return 2328;
			if (East == East::Up && North == North::Side && Power == 14 && South == South::Up && West == West::Side) return 2329;
			if (East == East::Up && North == North::Side && Power == 14 && South == South::Up && West == West::None) return 2330;
			if (East == East::Up && North == North::Side && Power == 14 && South == South::Side && West == West::Up) return 2331;
			if (East == East::Up && North == North::Side && Power == 14 && South == South::Side && West == West::Side) return 2332;
			if (East == East::Up && North == North::Side && Power == 14 && South == South::Side && West == West::None) return 2333;
			if (East == East::Up && North == North::Side && Power == 14 && South == South::None && West == West::Up) return 2334;
			if (East == East::Up && North == North::Side && Power == 14 && South == South::None && West == West::Side) return 2335;
			if (East == East::Up && North == North::Side && Power == 14 && South == South::None && West == West::None) return 2336;
			if (East == East::Up && North == North::Side && Power == 15 && South == South::Up && West == West::Up) return 2337;
			if (East == East::Up && North == North::Side && Power == 15 && South == South::Up && West == West::Side) return 2338;
			if (East == East::Up && North == North::Side && Power == 15 && South == South::Up && West == West::None) return 2339;
			if (East == East::Up && North == North::Side && Power == 15 && South == South::Side && West == West::Up) return 2340;
			if (East == East::Up && North == North::Side && Power == 15 && South == South::Side && West == West::Side) return 2341;
			if (East == East::Up && North == North::Side && Power == 15 && South == South::Side && West == West::None) return 2342;
			if (East == East::Up && North == North::Side && Power == 15 && South == South::None && West == West::Up) return 2343;
			if (East == East::Up && North == North::Side && Power == 15 && South == South::None && West == West::Side) return 2344;
			if (East == East::Up && North == North::Side && Power == 15 && South == South::None && West == West::None) return 2345;
			if (East == East::Up && North == North::None && Power == 0 && South == South::Up && West == West::Up) return 2346;
			if (East == East::Up && North == North::None && Power == 0 && South == South::Up && West == West::Side) return 2347;
			if (East == East::Up && North == North::None && Power == 0 && South == South::Up && West == West::None) return 2348;
			if (East == East::Up && North == North::None && Power == 0 && South == South::Side && West == West::Up) return 2349;
			if (East == East::Up && North == North::None && Power == 0 && South == South::Side && West == West::Side) return 2350;
			if (East == East::Up && North == North::None && Power == 0 && South == South::Side && West == West::None) return 2351;
			if (East == East::Up && North == North::None && Power == 0 && South == South::None && West == West::Up) return 2352;
			if (East == East::Up && North == North::None && Power == 0 && South == South::None && West == West::Side) return 2353;
			if (East == East::Up && North == North::None && Power == 0 && South == South::None && West == West::None) return 2354;
			if (East == East::Up && North == North::None && Power == 1 && South == South::Up && West == West::Up) return 2355;
			if (East == East::Up && North == North::None && Power == 1 && South == South::Up && West == West::Side) return 2356;
			if (East == East::Up && North == North::None && Power == 1 && South == South::Up && West == West::None) return 2357;
			if (East == East::Up && North == North::None && Power == 1 && South == South::Side && West == West::Up) return 2358;
			if (East == East::Up && North == North::None && Power == 1 && South == South::Side && West == West::Side) return 2359;
			if (East == East::Up && North == North::None && Power == 1 && South == South::Side && West == West::None) return 2360;
			if (East == East::Up && North == North::None && Power == 1 && South == South::None && West == West::Up) return 2361;
			if (East == East::Up && North == North::None && Power == 1 && South == South::None && West == West::Side) return 2362;
			if (East == East::Up && North == North::None && Power == 1 && South == South::None && West == West::None) return 2363;
			if (East == East::Up && North == North::None && Power == 2 && South == South::Up && West == West::Up) return 2364;
			if (East == East::Up && North == North::None && Power == 2 && South == South::Up && West == West::Side) return 2365;
			if (East == East::Up && North == North::None && Power == 2 && South == South::Up && West == West::None) return 2366;
			if (East == East::Up && North == North::None && Power == 2 && South == South::Side && West == West::Up) return 2367;
			if (East == East::Up && North == North::None && Power == 2 && South == South::Side && West == West::Side) return 2368;
			if (East == East::Up && North == North::None && Power == 2 && South == South::Side && West == West::None) return 2369;
			if (East == East::Up && North == North::None && Power == 2 && South == South::None && West == West::Up) return 2370;
			if (East == East::Up && North == North::None && Power == 2 && South == South::None && West == West::Side) return 2371;
			if (East == East::Up && North == North::None && Power == 2 && South == South::None && West == West::None) return 2372;
			if (East == East::Up && North == North::None && Power == 3 && South == South::Up && West == West::Up) return 2373;
			if (East == East::Up && North == North::None && Power == 3 && South == South::Up && West == West::Side) return 2374;
			if (East == East::Up && North == North::None && Power == 3 && South == South::Up && West == West::None) return 2375;
			if (East == East::Up && North == North::None && Power == 3 && South == South::Side && West == West::Up) return 2376;
			if (East == East::Up && North == North::None && Power == 3 && South == South::Side && West == West::Side) return 2377;
			if (East == East::Up && North == North::None && Power == 3 && South == South::Side && West == West::None) return 2378;
			if (East == East::Up && North == North::None && Power == 3 && South == South::None && West == West::Up) return 2379;
			if (East == East::Up && North == North::None && Power == 3 && South == South::None && West == West::Side) return 2380;
			if (East == East::Up && North == North::None && Power == 3 && South == South::None && West == West::None) return 2381;
			if (East == East::Up && North == North::None && Power == 4 && South == South::Up && West == West::Up) return 2382;
			if (East == East::Up && North == North::None && Power == 4 && South == South::Up && West == West::Side) return 2383;
			if (East == East::Up && North == North::None && Power == 4 && South == South::Up && West == West::None) return 2384;
			if (East == East::Up && North == North::None && Power == 4 && South == South::Side && West == West::Up) return 2385;
			if (East == East::Up && North == North::None && Power == 4 && South == South::Side && West == West::Side) return 2386;
			if (East == East::Up && North == North::None && Power == 4 && South == South::Side && West == West::None) return 2387;
			if (East == East::Up && North == North::None && Power == 4 && South == South::None && West == West::Up) return 2388;
			if (East == East::Up && North == North::None && Power == 4 && South == South::None && West == West::Side) return 2389;
			if (East == East::Up && North == North::None && Power == 4 && South == South::None && West == West::None) return 2390;
			if (East == East::Up && North == North::None && Power == 5 && South == South::Up && West == West::Up) return 2391;
			if (East == East::Up && North == North::None && Power == 5 && South == South::Up && West == West::Side) return 2392;
			if (East == East::Up && North == North::None && Power == 5 && South == South::Up && West == West::None) return 2393;
			if (East == East::Up && North == North::None && Power == 5 && South == South::Side && West == West::Up) return 2394;
			if (East == East::Up && North == North::None && Power == 5 && South == South::Side && West == West::Side) return 2395;
			if (East == East::Up && North == North::None && Power == 5 && South == South::Side && West == West::None) return 2396;
			if (East == East::Up && North == North::None && Power == 5 && South == South::None && West == West::Up) return 2397;
			if (East == East::Up && North == North::None && Power == 5 && South == South::None && West == West::Side) return 2398;
			if (East == East::Up && North == North::None && Power == 5 && South == South::None && West == West::None) return 2399;
			if (East == East::Up && North == North::None && Power == 6 && South == South::Up && West == West::Up) return 2400;
			if (East == East::Up && North == North::None && Power == 6 && South == South::Up && West == West::Side) return 2401;
			if (East == East::Up && North == North::None && Power == 6 && South == South::Up && West == West::None) return 2402;
			if (East == East::Up && North == North::None && Power == 6 && South == South::Side && West == West::Up) return 2403;
			if (East == East::Up && North == North::None && Power == 6 && South == South::Side && West == West::Side) return 2404;
			if (East == East::Up && North == North::None && Power == 6 && South == South::Side && West == West::None) return 2405;
			if (East == East::Up && North == North::None && Power == 6 && South == South::None && West == West::Up) return 2406;
			if (East == East::Up && North == North::None && Power == 6 && South == South::None && West == West::Side) return 2407;
			if (East == East::Up && North == North::None && Power == 6 && South == South::None && West == West::None) return 2408;
			if (East == East::Up && North == North::None && Power == 7 && South == South::Up && West == West::Up) return 2409;
			if (East == East::Up && North == North::None && Power == 7 && South == South::Up && West == West::Side) return 2410;
			if (East == East::Up && North == North::None && Power == 7 && South == South::Up && West == West::None) return 2411;
			if (East == East::Up && North == North::None && Power == 7 && South == South::Side && West == West::Up) return 2412;
			if (East == East::Up && North == North::None && Power == 7 && South == South::Side && West == West::Side) return 2413;
			if (East == East::Up && North == North::None && Power == 7 && South == South::Side && West == West::None) return 2414;
			if (East == East::Up && North == North::None && Power == 7 && South == South::None && West == West::Up) return 2415;
			if (East == East::Up && North == North::None && Power == 7 && South == South::None && West == West::Side) return 2416;
			if (East == East::Up && North == North::None && Power == 7 && South == South::None && West == West::None) return 2417;
			if (East == East::Up && North == North::None && Power == 8 && South == South::Up && West == West::Up) return 2418;
			if (East == East::Up && North == North::None && Power == 8 && South == South::Up && West == West::Side) return 2419;
			if (East == East::Up && North == North::None && Power == 8 && South == South::Up && West == West::None) return 2420;
			if (East == East::Up && North == North::None && Power == 8 && South == South::Side && West == West::Up) return 2421;
			if (East == East::Up && North == North::None && Power == 8 && South == South::Side && West == West::Side) return 2422;
			if (East == East::Up && North == North::None && Power == 8 && South == South::Side && West == West::None) return 2423;
			if (East == East::Up && North == North::None && Power == 8 && South == South::None && West == West::Up) return 2424;
			if (East == East::Up && North == North::None && Power == 8 && South == South::None && West == West::Side) return 2425;
			if (East == East::Up && North == North::None && Power == 8 && South == South::None && West == West::None) return 2426;
			if (East == East::Up && North == North::None && Power == 9 && South == South::Up && West == West::Up) return 2427;
			if (East == East::Up && North == North::None && Power == 9 && South == South::Up && West == West::Side) return 2428;
			if (East == East::Up && North == North::None && Power == 9 && South == South::Up && West == West::None) return 2429;
			if (East == East::Up && North == North::None && Power == 9 && South == South::Side && West == West::Up) return 2430;
			if (East == East::Up && North == North::None && Power == 9 && South == South::Side && West == West::Side) return 2431;
			if (East == East::Up && North == North::None && Power == 9 && South == South::Side && West == West::None) return 2432;
			if (East == East::Up && North == North::None && Power == 9 && South == South::None && West == West::Up) return 2433;
			if (East == East::Up && North == North::None && Power == 9 && South == South::None && West == West::Side) return 2434;
			if (East == East::Up && North == North::None && Power == 9 && South == South::None && West == West::None) return 2435;
			if (East == East::Up && North == North::None && Power == 10 && South == South::Up && West == West::Up) return 2436;
			if (East == East::Up && North == North::None && Power == 10 && South == South::Up && West == West::Side) return 2437;
			if (East == East::Up && North == North::None && Power == 10 && South == South::Up && West == West::None) return 2438;
			if (East == East::Up && North == North::None && Power == 10 && South == South::Side && West == West::Up) return 2439;
			if (East == East::Up && North == North::None && Power == 10 && South == South::Side && West == West::Side) return 2440;
			if (East == East::Up && North == North::None && Power == 10 && South == South::Side && West == West::None) return 2441;
			if (East == East::Up && North == North::None && Power == 10 && South == South::None && West == West::Up) return 2442;
			if (East == East::Up && North == North::None && Power == 10 && South == South::None && West == West::Side) return 2443;
			if (East == East::Up && North == North::None && Power == 10 && South == South::None && West == West::None) return 2444;
			if (East == East::Up && North == North::None && Power == 11 && South == South::Up && West == West::Up) return 2445;
			if (East == East::Up && North == North::None && Power == 11 && South == South::Up && West == West::Side) return 2446;
			if (East == East::Up && North == North::None && Power == 11 && South == South::Up && West == West::None) return 2447;
			if (East == East::Up && North == North::None && Power == 11 && South == South::Side && West == West::Up) return 2448;
			if (East == East::Up && North == North::None && Power == 11 && South == South::Side && West == West::Side) return 2449;
			if (East == East::Up && North == North::None && Power == 11 && South == South::Side && West == West::None) return 2450;
			if (East == East::Up && North == North::None && Power == 11 && South == South::None && West == West::Up) return 2451;
			if (East == East::Up && North == North::None && Power == 11 && South == South::None && West == West::Side) return 2452;
			if (East == East::Up && North == North::None && Power == 11 && South == South::None && West == West::None) return 2453;
			if (East == East::Up && North == North::None && Power == 12 && South == South::Up && West == West::Up) return 2454;
			if (East == East::Up && North == North::None && Power == 12 && South == South::Up && West == West::Side) return 2455;
			if (East == East::Up && North == North::None && Power == 12 && South == South::Up && West == West::None) return 2456;
			if (East == East::Up && North == North::None && Power == 12 && South == South::Side && West == West::Up) return 2457;
			if (East == East::Up && North == North::None && Power == 12 && South == South::Side && West == West::Side) return 2458;
			if (East == East::Up && North == North::None && Power == 12 && South == South::Side && West == West::None) return 2459;
			if (East == East::Up && North == North::None && Power == 12 && South == South::None && West == West::Up) return 2460;
			if (East == East::Up && North == North::None && Power == 12 && South == South::None && West == West::Side) return 2461;
			if (East == East::Up && North == North::None && Power == 12 && South == South::None && West == West::None) return 2462;
			if (East == East::Up && North == North::None && Power == 13 && South == South::Up && West == West::Up) return 2463;
			if (East == East::Up && North == North::None && Power == 13 && South == South::Up && West == West::Side) return 2464;
			if (East == East::Up && North == North::None && Power == 13 && South == South::Up && West == West::None) return 2465;
			if (East == East::Up && North == North::None && Power == 13 && South == South::Side && West == West::Up) return 2466;
			if (East == East::Up && North == North::None && Power == 13 && South == South::Side && West == West::Side) return 2467;
			if (East == East::Up && North == North::None && Power == 13 && South == South::Side && West == West::None) return 2468;
			if (East == East::Up && North == North::None && Power == 13 && South == South::None && West == West::Up) return 2469;
			if (East == East::Up && North == North::None && Power == 13 && South == South::None && West == West::Side) return 2470;
			if (East == East::Up && North == North::None && Power == 13 && South == South::None && West == West::None) return 2471;
			if (East == East::Up && North == North::None && Power == 14 && South == South::Up && West == West::Up) return 2472;
			if (East == East::Up && North == North::None && Power == 14 && South == South::Up && West == West::Side) return 2473;
			if (East == East::Up && North == North::None && Power == 14 && South == South::Up && West == West::None) return 2474;
			if (East == East::Up && North == North::None && Power == 14 && South == South::Side && West == West::Up) return 2475;
			if (East == East::Up && North == North::None && Power == 14 && South == South::Side && West == West::Side) return 2476;
			if (East == East::Up && North == North::None && Power == 14 && South == South::Side && West == West::None) return 2477;
			if (East == East::Up && North == North::None && Power == 14 && South == South::None && West == West::Up) return 2478;
			if (East == East::Up && North == North::None && Power == 14 && South == South::None && West == West::Side) return 2479;
			if (East == East::Up && North == North::None && Power == 14 && South == South::None && West == West::None) return 2480;
			if (East == East::Up && North == North::None && Power == 15 && South == South::Up && West == West::Up) return 2481;
			if (East == East::Up && North == North::None && Power == 15 && South == South::Up && West == West::Side) return 2482;
			if (East == East::Up && North == North::None && Power == 15 && South == South::Up && West == West::None) return 2483;
			if (East == East::Up && North == North::None && Power == 15 && South == South::Side && West == West::Up) return 2484;
			if (East == East::Up && North == North::None && Power == 15 && South == South::Side && West == West::Side) return 2485;
			if (East == East::Up && North == North::None && Power == 15 && South == South::Side && West == West::None) return 2486;
			if (East == East::Up && North == North::None && Power == 15 && South == South::None && West == West::Up) return 2487;
			if (East == East::Up && North == North::None && Power == 15 && South == South::None && West == West::Side) return 2488;
			if (East == East::Up && North == North::None && Power == 15 && South == South::None && West == West::None) return 2489;
			if (East == East::Side && North == North::Up && Power == 0 && South == South::Up && West == West::Up) return 2490;
			if (East == East::Side && North == North::Up && Power == 0 && South == South::Up && West == West::Side) return 2491;
			if (East == East::Side && North == North::Up && Power == 0 && South == South::Up && West == West::None) return 2492;
			if (East == East::Side && North == North::Up && Power == 0 && South == South::Side && West == West::Up) return 2493;
			if (East == East::Side && North == North::Up && Power == 0 && South == South::Side && West == West::Side) return 2494;
			if (East == East::Side && North == North::Up && Power == 0 && South == South::Side && West == West::None) return 2495;
			if (East == East::Side && North == North::Up && Power == 0 && South == South::None && West == West::Up) return 2496;
			if (East == East::Side && North == North::Up && Power == 0 && South == South::None && West == West::Side) return 2497;
			if (East == East::Side && North == North::Up && Power == 0 && South == South::None && West == West::None) return 2498;
			if (East == East::Side && North == North::Up && Power == 1 && South == South::Up && West == West::Up) return 2499;
			if (East == East::Side && North == North::Up && Power == 1 && South == South::Up && West == West::Side) return 2500;
			if (East == East::Side && North == North::Up && Power == 1 && South == South::Up && West == West::None) return 2501;
			if (East == East::Side && North == North::Up && Power == 1 && South == South::Side && West == West::Up) return 2502;
			if (East == East::Side && North == North::Up && Power == 1 && South == South::Side && West == West::Side) return 2503;
			if (East == East::Side && North == North::Up && Power == 1 && South == South::Side && West == West::None) return 2504;
			if (East == East::Side && North == North::Up && Power == 1 && South == South::None && West == West::Up) return 2505;
			if (East == East::Side && North == North::Up && Power == 1 && South == South::None && West == West::Side) return 2506;
			if (East == East::Side && North == North::Up && Power == 1 && South == South::None && West == West::None) return 2507;
			if (East == East::Side && North == North::Up && Power == 2 && South == South::Up && West == West::Up) return 2508;
			if (East == East::Side && North == North::Up && Power == 2 && South == South::Up && West == West::Side) return 2509;
			if (East == East::Side && North == North::Up && Power == 2 && South == South::Up && West == West::None) return 2510;
			if (East == East::Side && North == North::Up && Power == 2 && South == South::Side && West == West::Up) return 2511;
			if (East == East::Side && North == North::Up && Power == 2 && South == South::Side && West == West::Side) return 2512;
			if (East == East::Side && North == North::Up && Power == 2 && South == South::Side && West == West::None) return 2513;
			if (East == East::Side && North == North::Up && Power == 2 && South == South::None && West == West::Up) return 2514;
			if (East == East::Side && North == North::Up && Power == 2 && South == South::None && West == West::Side) return 2515;
			if (East == East::Side && North == North::Up && Power == 2 && South == South::None && West == West::None) return 2516;
			if (East == East::Side && North == North::Up && Power == 3 && South == South::Up && West == West::Up) return 2517;
			if (East == East::Side && North == North::Up && Power == 3 && South == South::Up && West == West::Side) return 2518;
			if (East == East::Side && North == North::Up && Power == 3 && South == South::Up && West == West::None) return 2519;
			if (East == East::Side && North == North::Up && Power == 3 && South == South::Side && West == West::Up) return 2520;
			if (East == East::Side && North == North::Up && Power == 3 && South == South::Side && West == West::Side) return 2521;
			if (East == East::Side && North == North::Up && Power == 3 && South == South::Side && West == West::None) return 2522;
			if (East == East::Side && North == North::Up && Power == 3 && South == South::None && West == West::Up) return 2523;
			if (East == East::Side && North == North::Up && Power == 3 && South == South::None && West == West::Side) return 2524;
			if (East == East::Side && North == North::Up && Power == 3 && South == South::None && West == West::None) return 2525;
			if (East == East::Side && North == North::Up && Power == 4 && South == South::Up && West == West::Up) return 2526;
			if (East == East::Side && North == North::Up && Power == 4 && South == South::Up && West == West::Side) return 2527;
			if (East == East::Side && North == North::Up && Power == 4 && South == South::Up && West == West::None) return 2528;
			if (East == East::Side && North == North::Up && Power == 4 && South == South::Side && West == West::Up) return 2529;
			if (East == East::Side && North == North::Up && Power == 4 && South == South::Side && West == West::Side) return 2530;
			if (East == East::Side && North == North::Up && Power == 4 && South == South::Side && West == West::None) return 2531;
			if (East == East::Side && North == North::Up && Power == 4 && South == South::None && West == West::Up) return 2532;
			if (East == East::Side && North == North::Up && Power == 4 && South == South::None && West == West::Side) return 2533;
			if (East == East::Side && North == North::Up && Power == 4 && South == South::None && West == West::None) return 2534;
			if (East == East::Side && North == North::Up && Power == 5 && South == South::Up && West == West::Up) return 2535;
			if (East == East::Side && North == North::Up && Power == 5 && South == South::Up && West == West::Side) return 2536;
			if (East == East::Side && North == North::Up && Power == 5 && South == South::Up && West == West::None) return 2537;
			if (East == East::Side && North == North::Up && Power == 5 && South == South::Side && West == West::Up) return 2538;
			if (East == East::Side && North == North::Up && Power == 5 && South == South::Side && West == West::Side) return 2539;
			if (East == East::Side && North == North::Up && Power == 5 && South == South::Side && West == West::None) return 2540;
			if (East == East::Side && North == North::Up && Power == 5 && South == South::None && West == West::Up) return 2541;
			if (East == East::Side && North == North::Up && Power == 5 && South == South::None && West == West::Side) return 2542;
			if (East == East::Side && North == North::Up && Power == 5 && South == South::None && West == West::None) return 2543;
			if (East == East::Side && North == North::Up && Power == 6 && South == South::Up && West == West::Up) return 2544;
			if (East == East::Side && North == North::Up && Power == 6 && South == South::Up && West == West::Side) return 2545;
			if (East == East::Side && North == North::Up && Power == 6 && South == South::Up && West == West::None) return 2546;
			if (East == East::Side && North == North::Up && Power == 6 && South == South::Side && West == West::Up) return 2547;
			if (East == East::Side && North == North::Up && Power == 6 && South == South::Side && West == West::Side) return 2548;
			if (East == East::Side && North == North::Up && Power == 6 && South == South::Side && West == West::None) return 2549;
			if (East == East::Side && North == North::Up && Power == 6 && South == South::None && West == West::Up) return 2550;
			if (East == East::Side && North == North::Up && Power == 6 && South == South::None && West == West::Side) return 2551;
			if (East == East::Side && North == North::Up && Power == 6 && South == South::None && West == West::None) return 2552;
			if (East == East::Side && North == North::Up && Power == 7 && South == South::Up && West == West::Up) return 2553;
			if (East == East::Side && North == North::Up && Power == 7 && South == South::Up && West == West::Side) return 2554;
			if (East == East::Side && North == North::Up && Power == 7 && South == South::Up && West == West::None) return 2555;
			if (East == East::Side && North == North::Up && Power == 7 && South == South::Side && West == West::Up) return 2556;
			if (East == East::Side && North == North::Up && Power == 7 && South == South::Side && West == West::Side) return 2557;
			if (East == East::Side && North == North::Up && Power == 7 && South == South::Side && West == West::None) return 2558;
			if (East == East::Side && North == North::Up && Power == 7 && South == South::None && West == West::Up) return 2559;
			if (East == East::Side && North == North::Up && Power == 7 && South == South::None && West == West::Side) return 2560;
			if (East == East::Side && North == North::Up && Power == 7 && South == South::None && West == West::None) return 2561;
			if (East == East::Side && North == North::Up && Power == 8 && South == South::Up && West == West::Up) return 2562;
			if (East == East::Side && North == North::Up && Power == 8 && South == South::Up && West == West::Side) return 2563;
			if (East == East::Side && North == North::Up && Power == 8 && South == South::Up && West == West::None) return 2564;
			if (East == East::Side && North == North::Up && Power == 8 && South == South::Side && West == West::Up) return 2565;
			if (East == East::Side && North == North::Up && Power == 8 && South == South::Side && West == West::Side) return 2566;
			if (East == East::Side && North == North::Up && Power == 8 && South == South::Side && West == West::None) return 2567;
			if (East == East::Side && North == North::Up && Power == 8 && South == South::None && West == West::Up) return 2568;
			if (East == East::Side && North == North::Up && Power == 8 && South == South::None && West == West::Side) return 2569;
			if (East == East::Side && North == North::Up && Power == 8 && South == South::None && West == West::None) return 2570;
			if (East == East::Side && North == North::Up && Power == 9 && South == South::Up && West == West::Up) return 2571;
			if (East == East::Side && North == North::Up && Power == 9 && South == South::Up && West == West::Side) return 2572;
			if (East == East::Side && North == North::Up && Power == 9 && South == South::Up && West == West::None) return 2573;
			if (East == East::Side && North == North::Up && Power == 9 && South == South::Side && West == West::Up) return 2574;
			if (East == East::Side && North == North::Up && Power == 9 && South == South::Side && West == West::Side) return 2575;
			if (East == East::Side && North == North::Up && Power == 9 && South == South::Side && West == West::None) return 2576;
			if (East == East::Side && North == North::Up && Power == 9 && South == South::None && West == West::Up) return 2577;
			if (East == East::Side && North == North::Up && Power == 9 && South == South::None && West == West::Side) return 2578;
			if (East == East::Side && North == North::Up && Power == 9 && South == South::None && West == West::None) return 2579;
			if (East == East::Side && North == North::Up && Power == 10 && South == South::Up && West == West::Up) return 2580;
			if (East == East::Side && North == North::Up && Power == 10 && South == South::Up && West == West::Side) return 2581;
			if (East == East::Side && North == North::Up && Power == 10 && South == South::Up && West == West::None) return 2582;
			if (East == East::Side && North == North::Up && Power == 10 && South == South::Side && West == West::Up) return 2583;
			if (East == East::Side && North == North::Up && Power == 10 && South == South::Side && West == West::Side) return 2584;
			if (East == East::Side && North == North::Up && Power == 10 && South == South::Side && West == West::None) return 2585;
			if (East == East::Side && North == North::Up && Power == 10 && South == South::None && West == West::Up) return 2586;
			if (East == East::Side && North == North::Up && Power == 10 && South == South::None && West == West::Side) return 2587;
			if (East == East::Side && North == North::Up && Power == 10 && South == South::None && West == West::None) return 2588;
			if (East == East::Side && North == North::Up && Power == 11 && South == South::Up && West == West::Up) return 2589;
			if (East == East::Side && North == North::Up && Power == 11 && South == South::Up && West == West::Side) return 2590;
			if (East == East::Side && North == North::Up && Power == 11 && South == South::Up && West == West::None) return 2591;
			if (East == East::Side && North == North::Up && Power == 11 && South == South::Side && West == West::Up) return 2592;
			if (East == East::Side && North == North::Up && Power == 11 && South == South::Side && West == West::Side) return 2593;
			if (East == East::Side && North == North::Up && Power == 11 && South == South::Side && West == West::None) return 2594;
			if (East == East::Side && North == North::Up && Power == 11 && South == South::None && West == West::Up) return 2595;
			if (East == East::Side && North == North::Up && Power == 11 && South == South::None && West == West::Side) return 2596;
			if (East == East::Side && North == North::Up && Power == 11 && South == South::None && West == West::None) return 2597;
			if (East == East::Side && North == North::Up && Power == 12 && South == South::Up && West == West::Up) return 2598;
			if (East == East::Side && North == North::Up && Power == 12 && South == South::Up && West == West::Side) return 2599;
			if (East == East::Side && North == North::Up && Power == 12 && South == South::Up && West == West::None) return 2600;
			if (East == East::Side && North == North::Up && Power == 12 && South == South::Side && West == West::Up) return 2601;
			if (East == East::Side && North == North::Up && Power == 12 && South == South::Side && West == West::Side) return 2602;
			if (East == East::Side && North == North::Up && Power == 12 && South == South::Side && West == West::None) return 2603;
			if (East == East::Side && North == North::Up && Power == 12 && South == South::None && West == West::Up) return 2604;
			if (East == East::Side && North == North::Up && Power == 12 && South == South::None && West == West::Side) return 2605;
			if (East == East::Side && North == North::Up && Power == 12 && South == South::None && West == West::None) return 2606;
			if (East == East::Side && North == North::Up && Power == 13 && South == South::Up && West == West::Up) return 2607;
			if (East == East::Side && North == North::Up && Power == 13 && South == South::Up && West == West::Side) return 2608;
			if (East == East::Side && North == North::Up && Power == 13 && South == South::Up && West == West::None) return 2609;
			if (East == East::Side && North == North::Up && Power == 13 && South == South::Side && West == West::Up) return 2610;
			if (East == East::Side && North == North::Up && Power == 13 && South == South::Side && West == West::Side) return 2611;
			if (East == East::Side && North == North::Up && Power == 13 && South == South::Side && West == West::None) return 2612;
			if (East == East::Side && North == North::Up && Power == 13 && South == South::None && West == West::Up) return 2613;
			if (East == East::Side && North == North::Up && Power == 13 && South == South::None && West == West::Side) return 2614;
			if (East == East::Side && North == North::Up && Power == 13 && South == South::None && West == West::None) return 2615;
			if (East == East::Side && North == North::Up && Power == 14 && South == South::Up && West == West::Up) return 2616;
			if (East == East::Side && North == North::Up && Power == 14 && South == South::Up && West == West::Side) return 2617;
			if (East == East::Side && North == North::Up && Power == 14 && South == South::Up && West == West::None) return 2618;
			if (East == East::Side && North == North::Up && Power == 14 && South == South::Side && West == West::Up) return 2619;
			if (East == East::Side && North == North::Up && Power == 14 && South == South::Side && West == West::Side) return 2620;
			if (East == East::Side && North == North::Up && Power == 14 && South == South::Side && West == West::None) return 2621;
			if (East == East::Side && North == North::Up && Power == 14 && South == South::None && West == West::Up) return 2622;
			if (East == East::Side && North == North::Up && Power == 14 && South == South::None && West == West::Side) return 2623;
			if (East == East::Side && North == North::Up && Power == 14 && South == South::None && West == West::None) return 2624;
			if (East == East::Side && North == North::Up && Power == 15 && South == South::Up && West == West::Up) return 2625;
			if (East == East::Side && North == North::Up && Power == 15 && South == South::Up && West == West::Side) return 2626;
			if (East == East::Side && North == North::Up && Power == 15 && South == South::Up && West == West::None) return 2627;
			if (East == East::Side && North == North::Up && Power == 15 && South == South::Side && West == West::Up) return 2628;
			if (East == East::Side && North == North::Up && Power == 15 && South == South::Side && West == West::Side) return 2629;
			if (East == East::Side && North == North::Up && Power == 15 && South == South::Side && West == West::None) return 2630;
			if (East == East::Side && North == North::Up && Power == 15 && South == South::None && West == West::Up) return 2631;
			if (East == East::Side && North == North::Up && Power == 15 && South == South::None && West == West::Side) return 2632;
			if (East == East::Side && North == North::Up && Power == 15 && South == South::None && West == West::None) return 2633;
			if (East == East::Side && North == North::Side && Power == 0 && South == South::Up && West == West::Up) return 2634;
			if (East == East::Side && North == North::Side && Power == 0 && South == South::Up && West == West::Side) return 2635;
			if (East == East::Side && North == North::Side && Power == 0 && South == South::Up && West == West::None) return 2636;
			if (East == East::Side && North == North::Side && Power == 0 && South == South::Side && West == West::Up) return 2637;
			if (East == East::Side && North == North::Side && Power == 0 && South == South::Side && West == West::Side) return 2638;
			if (East == East::Side && North == North::Side && Power == 0 && South == South::Side && West == West::None) return 2639;
			if (East == East::Side && North == North::Side && Power == 0 && South == South::None && West == West::Up) return 2640;
			if (East == East::Side && North == North::Side && Power == 0 && South == South::None && West == West::Side) return 2641;
			if (East == East::Side && North == North::Side && Power == 0 && South == South::None && West == West::None) return 2642;
			if (East == East::Side && North == North::Side && Power == 1 && South == South::Up && West == West::Up) return 2643;
			if (East == East::Side && North == North::Side && Power == 1 && South == South::Up && West == West::Side) return 2644;
			if (East == East::Side && North == North::Side && Power == 1 && South == South::Up && West == West::None) return 2645;
			if (East == East::Side && North == North::Side && Power == 1 && South == South::Side && West == West::Up) return 2646;
			if (East == East::Side && North == North::Side && Power == 1 && South == South::Side && West == West::Side) return 2647;
			if (East == East::Side && North == North::Side && Power == 1 && South == South::Side && West == West::None) return 2648;
			if (East == East::Side && North == North::Side && Power == 1 && South == South::None && West == West::Up) return 2649;
			if (East == East::Side && North == North::Side && Power == 1 && South == South::None && West == West::Side) return 2650;
			if (East == East::Side && North == North::Side && Power == 1 && South == South::None && West == West::None) return 2651;
			if (East == East::Side && North == North::Side && Power == 2 && South == South::Up && West == West::Up) return 2652;
			if (East == East::Side && North == North::Side && Power == 2 && South == South::Up && West == West::Side) return 2653;
			if (East == East::Side && North == North::Side && Power == 2 && South == South::Up && West == West::None) return 2654;
			if (East == East::Side && North == North::Side && Power == 2 && South == South::Side && West == West::Up) return 2655;
			if (East == East::Side && North == North::Side && Power == 2 && South == South::Side && West == West::Side) return 2656;
			if (East == East::Side && North == North::Side && Power == 2 && South == South::Side && West == West::None) return 2657;
			if (East == East::Side && North == North::Side && Power == 2 && South == South::None && West == West::Up) return 2658;
			if (East == East::Side && North == North::Side && Power == 2 && South == South::None && West == West::Side) return 2659;
			if (East == East::Side && North == North::Side && Power == 2 && South == South::None && West == West::None) return 2660;
			if (East == East::Side && North == North::Side && Power == 3 && South == South::Up && West == West::Up) return 2661;
			if (East == East::Side && North == North::Side && Power == 3 && South == South::Up && West == West::Side) return 2662;
			if (East == East::Side && North == North::Side && Power == 3 && South == South::Up && West == West::None) return 2663;
			if (East == East::Side && North == North::Side && Power == 3 && South == South::Side && West == West::Up) return 2664;
			if (East == East::Side && North == North::Side && Power == 3 && South == South::Side && West == West::Side) return 2665;
			if (East == East::Side && North == North::Side && Power == 3 && South == South::Side && West == West::None) return 2666;
			if (East == East::Side && North == North::Side && Power == 3 && South == South::None && West == West::Up) return 2667;
			if (East == East::Side && North == North::Side && Power == 3 && South == South::None && West == West::Side) return 2668;
			if (East == East::Side && North == North::Side && Power == 3 && South == South::None && West == West::None) return 2669;
			if (East == East::Side && North == North::Side && Power == 4 && South == South::Up && West == West::Up) return 2670;
			if (East == East::Side && North == North::Side && Power == 4 && South == South::Up && West == West::Side) return 2671;
			if (East == East::Side && North == North::Side && Power == 4 && South == South::Up && West == West::None) return 2672;
			if (East == East::Side && North == North::Side && Power == 4 && South == South::Side && West == West::Up) return 2673;
			if (East == East::Side && North == North::Side && Power == 4 && South == South::Side && West == West::Side) return 2674;
			if (East == East::Side && North == North::Side && Power == 4 && South == South::Side && West == West::None) return 2675;
			if (East == East::Side && North == North::Side && Power == 4 && South == South::None && West == West::Up) return 2676;
			if (East == East::Side && North == North::Side && Power == 4 && South == South::None && West == West::Side) return 2677;
			if (East == East::Side && North == North::Side && Power == 4 && South == South::None && West == West::None) return 2678;
			if (East == East::Side && North == North::Side && Power == 5 && South == South::Up && West == West::Up) return 2679;
			if (East == East::Side && North == North::Side && Power == 5 && South == South::Up && West == West::Side) return 2680;
			if (East == East::Side && North == North::Side && Power == 5 && South == South::Up && West == West::None) return 2681;
			if (East == East::Side && North == North::Side && Power == 5 && South == South::Side && West == West::Up) return 2682;
			if (East == East::Side && North == North::Side && Power == 5 && South == South::Side && West == West::Side) return 2683;
			if (East == East::Side && North == North::Side && Power == 5 && South == South::Side && West == West::None) return 2684;
			if (East == East::Side && North == North::Side && Power == 5 && South == South::None && West == West::Up) return 2685;
			if (East == East::Side && North == North::Side && Power == 5 && South == South::None && West == West::Side) return 2686;
			if (East == East::Side && North == North::Side && Power == 5 && South == South::None && West == West::None) return 2687;
			if (East == East::Side && North == North::Side && Power == 6 && South == South::Up && West == West::Up) return 2688;
			if (East == East::Side && North == North::Side && Power == 6 && South == South::Up && West == West::Side) return 2689;
			if (East == East::Side && North == North::Side && Power == 6 && South == South::Up && West == West::None) return 2690;
			if (East == East::Side && North == North::Side && Power == 6 && South == South::Side && West == West::Up) return 2691;
			if (East == East::Side && North == North::Side && Power == 6 && South == South::Side && West == West::Side) return 2692;
			if (East == East::Side && North == North::Side && Power == 6 && South == South::Side && West == West::None) return 2693;
			if (East == East::Side && North == North::Side && Power == 6 && South == South::None && West == West::Up) return 2694;
			if (East == East::Side && North == North::Side && Power == 6 && South == South::None && West == West::Side) return 2695;
			if (East == East::Side && North == North::Side && Power == 6 && South == South::None && West == West::None) return 2696;
			if (East == East::Side && North == North::Side && Power == 7 && South == South::Up && West == West::Up) return 2697;
			if (East == East::Side && North == North::Side && Power == 7 && South == South::Up && West == West::Side) return 2698;
			if (East == East::Side && North == North::Side && Power == 7 && South == South::Up && West == West::None) return 2699;
			if (East == East::Side && North == North::Side && Power == 7 && South == South::Side && West == West::Up) return 2700;
			if (East == East::Side && North == North::Side && Power == 7 && South == South::Side && West == West::Side) return 2701;
			if (East == East::Side && North == North::Side && Power == 7 && South == South::Side && West == West::None) return 2702;
			if (East == East::Side && North == North::Side && Power == 7 && South == South::None && West == West::Up) return 2703;
			if (East == East::Side && North == North::Side && Power == 7 && South == South::None && West == West::Side) return 2704;
			if (East == East::Side && North == North::Side && Power == 7 && South == South::None && West == West::None) return 2705;
			if (East == East::Side && North == North::Side && Power == 8 && South == South::Up && West == West::Up) return 2706;
			if (East == East::Side && North == North::Side && Power == 8 && South == South::Up && West == West::Side) return 2707;
			if (East == East::Side && North == North::Side && Power == 8 && South == South::Up && West == West::None) return 2708;
			if (East == East::Side && North == North::Side && Power == 8 && South == South::Side && West == West::Up) return 2709;
			if (East == East::Side && North == North::Side && Power == 8 && South == South::Side && West == West::Side) return 2710;
			if (East == East::Side && North == North::Side && Power == 8 && South == South::Side && West == West::None) return 2711;
			if (East == East::Side && North == North::Side && Power == 8 && South == South::None && West == West::Up) return 2712;
			if (East == East::Side && North == North::Side && Power == 8 && South == South::None && West == West::Side) return 2713;
			if (East == East::Side && North == North::Side && Power == 8 && South == South::None && West == West::None) return 2714;
			if (East == East::Side && North == North::Side && Power == 9 && South == South::Up && West == West::Up) return 2715;
			if (East == East::Side && North == North::Side && Power == 9 && South == South::Up && West == West::Side) return 2716;
			if (East == East::Side && North == North::Side && Power == 9 && South == South::Up && West == West::None) return 2717;
			if (East == East::Side && North == North::Side && Power == 9 && South == South::Side && West == West::Up) return 2718;
			if (East == East::Side && North == North::Side && Power == 9 && South == South::Side && West == West::Side) return 2719;
			if (East == East::Side && North == North::Side && Power == 9 && South == South::Side && West == West::None) return 2720;
			if (East == East::Side && North == North::Side && Power == 9 && South == South::None && West == West::Up) return 2721;
			if (East == East::Side && North == North::Side && Power == 9 && South == South::None && West == West::Side) return 2722;
			if (East == East::Side && North == North::Side && Power == 9 && South == South::None && West == West::None) return 2723;
			if (East == East::Side && North == North::Side && Power == 10 && South == South::Up && West == West::Up) return 2724;
			if (East == East::Side && North == North::Side && Power == 10 && South == South::Up && West == West::Side) return 2725;
			if (East == East::Side && North == North::Side && Power == 10 && South == South::Up && West == West::None) return 2726;
			if (East == East::Side && North == North::Side && Power == 10 && South == South::Side && West == West::Up) return 2727;
			if (East == East::Side && North == North::Side && Power == 10 && South == South::Side && West == West::Side) return 2728;
			if (East == East::Side && North == North::Side && Power == 10 && South == South::Side && West == West::None) return 2729;
			if (East == East::Side && North == North::Side && Power == 10 && South == South::None && West == West::Up) return 2730;
			if (East == East::Side && North == North::Side && Power == 10 && South == South::None && West == West::Side) return 2731;
			if (East == East::Side && North == North::Side && Power == 10 && South == South::None && West == West::None) return 2732;
			if (East == East::Side && North == North::Side && Power == 11 && South == South::Up && West == West::Up) return 2733;
			if (East == East::Side && North == North::Side && Power == 11 && South == South::Up && West == West::Side) return 2734;
			if (East == East::Side && North == North::Side && Power == 11 && South == South::Up && West == West::None) return 2735;
			if (East == East::Side && North == North::Side && Power == 11 && South == South::Side && West == West::Up) return 2736;
			if (East == East::Side && North == North::Side && Power == 11 && South == South::Side && West == West::Side) return 2737;
			if (East == East::Side && North == North::Side && Power == 11 && South == South::Side && West == West::None) return 2738;
			if (East == East::Side && North == North::Side && Power == 11 && South == South::None && West == West::Up) return 2739;
			if (East == East::Side && North == North::Side && Power == 11 && South == South::None && West == West::Side) return 2740;
			if (East == East::Side && North == North::Side && Power == 11 && South == South::None && West == West::None) return 2741;
			if (East == East::Side && North == North::Side && Power == 12 && South == South::Up && West == West::Up) return 2742;
			if (East == East::Side && North == North::Side && Power == 12 && South == South::Up && West == West::Side) return 2743;
			if (East == East::Side && North == North::Side && Power == 12 && South == South::Up && West == West::None) return 2744;
			if (East == East::Side && North == North::Side && Power == 12 && South == South::Side && West == West::Up) return 2745;
			if (East == East::Side && North == North::Side && Power == 12 && South == South::Side && West == West::Side) return 2746;
			if (East == East::Side && North == North::Side && Power == 12 && South == South::Side && West == West::None) return 2747;
			if (East == East::Side && North == North::Side && Power == 12 && South == South::None && West == West::Up) return 2748;
			if (East == East::Side && North == North::Side && Power == 12 && South == South::None && West == West::Side) return 2749;
			if (East == East::Side && North == North::Side && Power == 12 && South == South::None && West == West::None) return 2750;
			if (East == East::Side && North == North::Side && Power == 13 && South == South::Up && West == West::Up) return 2751;
			if (East == East::Side && North == North::Side && Power == 13 && South == South::Up && West == West::Side) return 2752;
			if (East == East::Side && North == North::Side && Power == 13 && South == South::Up && West == West::None) return 2753;
			if (East == East::Side && North == North::Side && Power == 13 && South == South::Side && West == West::Up) return 2754;
			if (East == East::Side && North == North::Side && Power == 13 && South == South::Side && West == West::Side) return 2755;
			if (East == East::Side && North == North::Side && Power == 13 && South == South::Side && West == West::None) return 2756;
			if (East == East::Side && North == North::Side && Power == 13 && South == South::None && West == West::Up) return 2757;
			if (East == East::Side && North == North::Side && Power == 13 && South == South::None && West == West::Side) return 2758;
			if (East == East::Side && North == North::Side && Power == 13 && South == South::None && West == West::None) return 2759;
			if (East == East::Side && North == North::Side && Power == 14 && South == South::Up && West == West::Up) return 2760;
			if (East == East::Side && North == North::Side && Power == 14 && South == South::Up && West == West::Side) return 2761;
			if (East == East::Side && North == North::Side && Power == 14 && South == South::Up && West == West::None) return 2762;
			if (East == East::Side && North == North::Side && Power == 14 && South == South::Side && West == West::Up) return 2763;
			if (East == East::Side && North == North::Side && Power == 14 && South == South::Side && West == West::Side) return 2764;
			if (East == East::Side && North == North::Side && Power == 14 && South == South::Side && West == West::None) return 2765;
			if (East == East::Side && North == North::Side && Power == 14 && South == South::None && West == West::Up) return 2766;
			if (East == East::Side && North == North::Side && Power == 14 && South == South::None && West == West::Side) return 2767;
			if (East == East::Side && North == North::Side && Power == 14 && South == South::None && West == West::None) return 2768;
			if (East == East::Side && North == North::Side && Power == 15 && South == South::Up && West == West::Up) return 2769;
			if (East == East::Side && North == North::Side && Power == 15 && South == South::Up && West == West::Side) return 2770;
			if (East == East::Side && North == North::Side && Power == 15 && South == South::Up && West == West::None) return 2771;
			if (East == East::Side && North == North::Side && Power == 15 && South == South::Side && West == West::Up) return 2772;
			if (East == East::Side && North == North::Side && Power == 15 && South == South::Side && West == West::Side) return 2773;
			if (East == East::Side && North == North::Side && Power == 15 && South == South::Side && West == West::None) return 2774;
			if (East == East::Side && North == North::Side && Power == 15 && South == South::None && West == West::Up) return 2775;
			if (East == East::Side && North == North::Side && Power == 15 && South == South::None && West == West::Side) return 2776;
			if (East == East::Side && North == North::Side && Power == 15 && South == South::None && West == West::None) return 2777;
			if (East == East::Side && North == North::None && Power == 0 && South == South::Up && West == West::Up) return 2778;
			if (East == East::Side && North == North::None && Power == 0 && South == South::Up && West == West::Side) return 2779;
			if (East == East::Side && North == North::None && Power == 0 && South == South::Up && West == West::None) return 2780;
			if (East == East::Side && North == North::None && Power == 0 && South == South::Side && West == West::Up) return 2781;
			if (East == East::Side && North == North::None && Power == 0 && South == South::Side && West == West::Side) return 2782;
			if (East == East::Side && North == North::None && Power == 0 && South == South::Side && West == West::None) return 2783;
			if (East == East::Side && North == North::None && Power == 0 && South == South::None && West == West::Up) return 2784;
			if (East == East::Side && North == North::None && Power == 0 && South == South::None && West == West::Side) return 2785;
			if (East == East::Side && North == North::None && Power == 0 && South == South::None && West == West::None) return 2786;
			if (East == East::Side && North == North::None && Power == 1 && South == South::Up && West == West::Up) return 2787;
			if (East == East::Side && North == North::None && Power == 1 && South == South::Up && West == West::Side) return 2788;
			if (East == East::Side && North == North::None && Power == 1 && South == South::Up && West == West::None) return 2789;
			if (East == East::Side && North == North::None && Power == 1 && South == South::Side && West == West::Up) return 2790;
			if (East == East::Side && North == North::None && Power == 1 && South == South::Side && West == West::Side) return 2791;
			if (East == East::Side && North == North::None && Power == 1 && South == South::Side && West == West::None) return 2792;
			if (East == East::Side && North == North::None && Power == 1 && South == South::None && West == West::Up) return 2793;
			if (East == East::Side && North == North::None && Power == 1 && South == South::None && West == West::Side) return 2794;
			if (East == East::Side && North == North::None && Power == 1 && South == South::None && West == West::None) return 2795;
			if (East == East::Side && North == North::None && Power == 2 && South == South::Up && West == West::Up) return 2796;
			if (East == East::Side && North == North::None && Power == 2 && South == South::Up && West == West::Side) return 2797;
			if (East == East::Side && North == North::None && Power == 2 && South == South::Up && West == West::None) return 2798;
			if (East == East::Side && North == North::None && Power == 2 && South == South::Side && West == West::Up) return 2799;
			if (East == East::Side && North == North::None && Power == 2 && South == South::Side && West == West::Side) return 2800;
			if (East == East::Side && North == North::None && Power == 2 && South == South::Side && West == West::None) return 2801;
			if (East == East::Side && North == North::None && Power == 2 && South == South::None && West == West::Up) return 2802;
			if (East == East::Side && North == North::None && Power == 2 && South == South::None && West == West::Side) return 2803;
			if (East == East::Side && North == North::None && Power == 2 && South == South::None && West == West::None) return 2804;
			if (East == East::Side && North == North::None && Power == 3 && South == South::Up && West == West::Up) return 2805;
			if (East == East::Side && North == North::None && Power == 3 && South == South::Up && West == West::Side) return 2806;
			if (East == East::Side && North == North::None && Power == 3 && South == South::Up && West == West::None) return 2807;
			if (East == East::Side && North == North::None && Power == 3 && South == South::Side && West == West::Up) return 2808;
			if (East == East::Side && North == North::None && Power == 3 && South == South::Side && West == West::Side) return 2809;
			if (East == East::Side && North == North::None && Power == 3 && South == South::Side && West == West::None) return 2810;
			if (East == East::Side && North == North::None && Power == 3 && South == South::None && West == West::Up) return 2811;
			if (East == East::Side && North == North::None && Power == 3 && South == South::None && West == West::Side) return 2812;
			if (East == East::Side && North == North::None && Power == 3 && South == South::None && West == West::None) return 2813;
			if (East == East::Side && North == North::None && Power == 4 && South == South::Up && West == West::Up) return 2814;
			if (East == East::Side && North == North::None && Power == 4 && South == South::Up && West == West::Side) return 2815;
			if (East == East::Side && North == North::None && Power == 4 && South == South::Up && West == West::None) return 2816;
			if (East == East::Side && North == North::None && Power == 4 && South == South::Side && West == West::Up) return 2817;
			if (East == East::Side && North == North::None && Power == 4 && South == South::Side && West == West::Side) return 2818;
			if (East == East::Side && North == North::None && Power == 4 && South == South::Side && West == West::None) return 2819;
			if (East == East::Side && North == North::None && Power == 4 && South == South::None && West == West::Up) return 2820;
			if (East == East::Side && North == North::None && Power == 4 && South == South::None && West == West::Side) return 2821;
			if (East == East::Side && North == North::None && Power == 4 && South == South::None && West == West::None) return 2822;
			if (East == East::Side && North == North::None && Power == 5 && South == South::Up && West == West::Up) return 2823;
			if (East == East::Side && North == North::None && Power == 5 && South == South::Up && West == West::Side) return 2824;
			if (East == East::Side && North == North::None && Power == 5 && South == South::Up && West == West::None) return 2825;
			if (East == East::Side && North == North::None && Power == 5 && South == South::Side && West == West::Up) return 2826;
			if (East == East::Side && North == North::None && Power == 5 && South == South::Side && West == West::Side) return 2827;
			if (East == East::Side && North == North::None && Power == 5 && South == South::Side && West == West::None) return 2828;
			if (East == East::Side && North == North::None && Power == 5 && South == South::None && West == West::Up) return 2829;
			if (East == East::Side && North == North::None && Power == 5 && South == South::None && West == West::Side) return 2830;
			if (East == East::Side && North == North::None && Power == 5 && South == South::None && West == West::None) return 2831;
			if (East == East::Side && North == North::None && Power == 6 && South == South::Up && West == West::Up) return 2832;
			if (East == East::Side && North == North::None && Power == 6 && South == South::Up && West == West::Side) return 2833;
			if (East == East::Side && North == North::None && Power == 6 && South == South::Up && West == West::None) return 2834;
			if (East == East::Side && North == North::None && Power == 6 && South == South::Side && West == West::Up) return 2835;
			if (East == East::Side && North == North::None && Power == 6 && South == South::Side && West == West::Side) return 2836;
			if (East == East::Side && North == North::None && Power == 6 && South == South::Side && West == West::None) return 2837;
			if (East == East::Side && North == North::None && Power == 6 && South == South::None && West == West::Up) return 2838;
			if (East == East::Side && North == North::None && Power == 6 && South == South::None && West == West::Side) return 2839;
			if (East == East::Side && North == North::None && Power == 6 && South == South::None && West == West::None) return 2840;
			if (East == East::Side && North == North::None && Power == 7 && South == South::Up && West == West::Up) return 2841;
			if (East == East::Side && North == North::None && Power == 7 && South == South::Up && West == West::Side) return 2842;
			if (East == East::Side && North == North::None && Power == 7 && South == South::Up && West == West::None) return 2843;
			if (East == East::Side && North == North::None && Power == 7 && South == South::Side && West == West::Up) return 2844;
			if (East == East::Side && North == North::None && Power == 7 && South == South::Side && West == West::Side) return 2845;
			if (East == East::Side && North == North::None && Power == 7 && South == South::Side && West == West::None) return 2846;
			if (East == East::Side && North == North::None && Power == 7 && South == South::None && West == West::Up) return 2847;
			if (East == East::Side && North == North::None && Power == 7 && South == South::None && West == West::Side) return 2848;
			if (East == East::Side && North == North::None && Power == 7 && South == South::None && West == West::None) return 2849;
			if (East == East::Side && North == North::None && Power == 8 && South == South::Up && West == West::Up) return 2850;
			if (East == East::Side && North == North::None && Power == 8 && South == South::Up && West == West::Side) return 2851;
			if (East == East::Side && North == North::None && Power == 8 && South == South::Up && West == West::None) return 2852;
			if (East == East::Side && North == North::None && Power == 8 && South == South::Side && West == West::Up) return 2853;
			if (East == East::Side && North == North::None && Power == 8 && South == South::Side && West == West::Side) return 2854;
			if (East == East::Side && North == North::None && Power == 8 && South == South::Side && West == West::None) return 2855;
			if (East == East::Side && North == North::None && Power == 8 && South == South::None && West == West::Up) return 2856;
			if (East == East::Side && North == North::None && Power == 8 && South == South::None && West == West::Side) return 2857;
			if (East == East::Side && North == North::None && Power == 8 && South == South::None && West == West::None) return 2858;
			if (East == East::Side && North == North::None && Power == 9 && South == South::Up && West == West::Up) return 2859;
			if (East == East::Side && North == North::None && Power == 9 && South == South::Up && West == West::Side) return 2860;
			if (East == East::Side && North == North::None && Power == 9 && South == South::Up && West == West::None) return 2861;
			if (East == East::Side && North == North::None && Power == 9 && South == South::Side && West == West::Up) return 2862;
			if (East == East::Side && North == North::None && Power == 9 && South == South::Side && West == West::Side) return 2863;
			if (East == East::Side && North == North::None && Power == 9 && South == South::Side && West == West::None) return 2864;
			if (East == East::Side && North == North::None && Power == 9 && South == South::None && West == West::Up) return 2865;
			if (East == East::Side && North == North::None && Power == 9 && South == South::None && West == West::Side) return 2866;
			if (East == East::Side && North == North::None && Power == 9 && South == South::None && West == West::None) return 2867;
			if (East == East::Side && North == North::None && Power == 10 && South == South::Up && West == West::Up) return 2868;
			if (East == East::Side && North == North::None && Power == 10 && South == South::Up && West == West::Side) return 2869;
			if (East == East::Side && North == North::None && Power == 10 && South == South::Up && West == West::None) return 2870;
			if (East == East::Side && North == North::None && Power == 10 && South == South::Side && West == West::Up) return 2871;
			if (East == East::Side && North == North::None && Power == 10 && South == South::Side && West == West::Side) return 2872;
			if (East == East::Side && North == North::None && Power == 10 && South == South::Side && West == West::None) return 2873;
			if (East == East::Side && North == North::None && Power == 10 && South == South::None && West == West::Up) return 2874;
			if (East == East::Side && North == North::None && Power == 10 && South == South::None && West == West::Side) return 2875;
			if (East == East::Side && North == North::None && Power == 10 && South == South::None && West == West::None) return 2876;
			if (East == East::Side && North == North::None && Power == 11 && South == South::Up && West == West::Up) return 2877;
			if (East == East::Side && North == North::None && Power == 11 && South == South::Up && West == West::Side) return 2878;
			if (East == East::Side && North == North::None && Power == 11 && South == South::Up && West == West::None) return 2879;
			if (East == East::Side && North == North::None && Power == 11 && South == South::Side && West == West::Up) return 2880;
			if (East == East::Side && North == North::None && Power == 11 && South == South::Side && West == West::Side) return 2881;
			if (East == East::Side && North == North::None && Power == 11 && South == South::Side && West == West::None) return 2882;
			if (East == East::Side && North == North::None && Power == 11 && South == South::None && West == West::Up) return 2883;
			if (East == East::Side && North == North::None && Power == 11 && South == South::None && West == West::Side) return 2884;
			if (East == East::Side && North == North::None && Power == 11 && South == South::None && West == West::None) return 2885;
			if (East == East::Side && North == North::None && Power == 12 && South == South::Up && West == West::Up) return 2886;
			if (East == East::Side && North == North::None && Power == 12 && South == South::Up && West == West::Side) return 2887;
			if (East == East::Side && North == North::None && Power == 12 && South == South::Up && West == West::None) return 2888;
			if (East == East::Side && North == North::None && Power == 12 && South == South::Side && West == West::Up) return 2889;
			if (East == East::Side && North == North::None && Power == 12 && South == South::Side && West == West::Side) return 2890;
			if (East == East::Side && North == North::None && Power == 12 && South == South::Side && West == West::None) return 2891;
			if (East == East::Side && North == North::None && Power == 12 && South == South::None && West == West::Up) return 2892;
			if (East == East::Side && North == North::None && Power == 12 && South == South::None && West == West::Side) return 2893;
			if (East == East::Side && North == North::None && Power == 12 && South == South::None && West == West::None) return 2894;
			if (East == East::Side && North == North::None && Power == 13 && South == South::Up && West == West::Up) return 2895;
			if (East == East::Side && North == North::None && Power == 13 && South == South::Up && West == West::Side) return 2896;
			if (East == East::Side && North == North::None && Power == 13 && South == South::Up && West == West::None) return 2897;
			if (East == East::Side && North == North::None && Power == 13 && South == South::Side && West == West::Up) return 2898;
			if (East == East::Side && North == North::None && Power == 13 && South == South::Side && West == West::Side) return 2899;
			if (East == East::Side && North == North::None && Power == 13 && South == South::Side && West == West::None) return 2900;
			if (East == East::Side && North == North::None && Power == 13 && South == South::None && West == West::Up) return 2901;
			if (East == East::Side && North == North::None && Power == 13 && South == South::None && West == West::Side) return 2902;
			if (East == East::Side && North == North::None && Power == 13 && South == South::None && West == West::None) return 2903;
			if (East == East::Side && North == North::None && Power == 14 && South == South::Up && West == West::Up) return 2904;
			if (East == East::Side && North == North::None && Power == 14 && South == South::Up && West == West::Side) return 2905;
			if (East == East::Side && North == North::None && Power == 14 && South == South::Up && West == West::None) return 2906;
			if (East == East::Side && North == North::None && Power == 14 && South == South::Side && West == West::Up) return 2907;
			if (East == East::Side && North == North::None && Power == 14 && South == South::Side && West == West::Side) return 2908;
			if (East == East::Side && North == North::None && Power == 14 && South == South::Side && West == West::None) return 2909;
			if (East == East::Side && North == North::None && Power == 14 && South == South::None && West == West::Up) return 2910;
			if (East == East::Side && North == North::None && Power == 14 && South == South::None && West == West::Side) return 2911;
			if (East == East::Side && North == North::None && Power == 14 && South == South::None && West == West::None) return 2912;
			if (East == East::Side && North == North::None && Power == 15 && South == South::Up && West == West::Up) return 2913;
			if (East == East::Side && North == North::None && Power == 15 && South == South::Up && West == West::Side) return 2914;
			if (East == East::Side && North == North::None && Power == 15 && South == South::Up && West == West::None) return 2915;
			if (East == East::Side && North == North::None && Power == 15 && South == South::Side && West == West::Up) return 2916;
			if (East == East::Side && North == North::None && Power == 15 && South == South::Side && West == West::Side) return 2917;
			if (East == East::Side && North == North::None && Power == 15 && South == South::Side && West == West::None) return 2918;
			if (East == East::Side && North == North::None && Power == 15 && South == South::None && West == West::Up) return 2919;
			if (East == East::Side && North == North::None && Power == 15 && South == South::None && West == West::Side) return 2920;
			if (East == East::Side && North == North::None && Power == 15 && South == South::None && West == West::None) return 2921;
			if (East == East::None && North == North::Up && Power == 0 && South == South::Up && West == West::Up) return 2922;
			if (East == East::None && North == North::Up && Power == 0 && South == South::Up && West == West::Side) return 2923;
			if (East == East::None && North == North::Up && Power == 0 && South == South::Up && West == West::None) return 2924;
			if (East == East::None && North == North::Up && Power == 0 && South == South::Side && West == West::Up) return 2925;
			if (East == East::None && North == North::Up && Power == 0 && South == South::Side && West == West::Side) return 2926;
			if (East == East::None && North == North::Up && Power == 0 && South == South::Side && West == West::None) return 2927;
			if (East == East::None && North == North::Up && Power == 0 && South == South::None && West == West::Up) return 2928;
			if (East == East::None && North == North::Up && Power == 0 && South == South::None && West == West::Side) return 2929;
			if (East == East::None && North == North::Up && Power == 0 && South == South::None && West == West::None) return 2930;
			if (East == East::None && North == North::Up && Power == 1 && South == South::Up && West == West::Up) return 2931;
			if (East == East::None && North == North::Up && Power == 1 && South == South::Up && West == West::Side) return 2932;
			if (East == East::None && North == North::Up && Power == 1 && South == South::Up && West == West::None) return 2933;
			if (East == East::None && North == North::Up && Power == 1 && South == South::Side && West == West::Up) return 2934;
			if (East == East::None && North == North::Up && Power == 1 && South == South::Side && West == West::Side) return 2935;
			if (East == East::None && North == North::Up && Power == 1 && South == South::Side && West == West::None) return 2936;
			if (East == East::None && North == North::Up && Power == 1 && South == South::None && West == West::Up) return 2937;
			if (East == East::None && North == North::Up && Power == 1 && South == South::None && West == West::Side) return 2938;
			if (East == East::None && North == North::Up && Power == 1 && South == South::None && West == West::None) return 2939;
			if (East == East::None && North == North::Up && Power == 2 && South == South::Up && West == West::Up) return 2940;
			if (East == East::None && North == North::Up && Power == 2 && South == South::Up && West == West::Side) return 2941;
			if (East == East::None && North == North::Up && Power == 2 && South == South::Up && West == West::None) return 2942;
			if (East == East::None && North == North::Up && Power == 2 && South == South::Side && West == West::Up) return 2943;
			if (East == East::None && North == North::Up && Power == 2 && South == South::Side && West == West::Side) return 2944;
			if (East == East::None && North == North::Up && Power == 2 && South == South::Side && West == West::None) return 2945;
			if (East == East::None && North == North::Up && Power == 2 && South == South::None && West == West::Up) return 2946;
			if (East == East::None && North == North::Up && Power == 2 && South == South::None && West == West::Side) return 2947;
			if (East == East::None && North == North::Up && Power == 2 && South == South::None && West == West::None) return 2948;
			if (East == East::None && North == North::Up && Power == 3 && South == South::Up && West == West::Up) return 2949;
			if (East == East::None && North == North::Up && Power == 3 && South == South::Up && West == West::Side) return 2950;
			if (East == East::None && North == North::Up && Power == 3 && South == South::Up && West == West::None) return 2951;
			if (East == East::None && North == North::Up && Power == 3 && South == South::Side && West == West::Up) return 2952;
			if (East == East::None && North == North::Up && Power == 3 && South == South::Side && West == West::Side) return 2953;
			if (East == East::None && North == North::Up && Power == 3 && South == South::Side && West == West::None) return 2954;
			if (East == East::None && North == North::Up && Power == 3 && South == South::None && West == West::Up) return 2955;
			if (East == East::None && North == North::Up && Power == 3 && South == South::None && West == West::Side) return 2956;
			if (East == East::None && North == North::Up && Power == 3 && South == South::None && West == West::None) return 2957;
			if (East == East::None && North == North::Up && Power == 4 && South == South::Up && West == West::Up) return 2958;
			if (East == East::None && North == North::Up && Power == 4 && South == South::Up && West == West::Side) return 2959;
			if (East == East::None && North == North::Up && Power == 4 && South == South::Up && West == West::None) return 2960;
			if (East == East::None && North == North::Up && Power == 4 && South == South::Side && West == West::Up) return 2961;
			if (East == East::None && North == North::Up && Power == 4 && South == South::Side && West == West::Side) return 2962;
			if (East == East::None && North == North::Up && Power == 4 && South == South::Side && West == West::None) return 2963;
			if (East == East::None && North == North::Up && Power == 4 && South == South::None && West == West::Up) return 2964;
			if (East == East::None && North == North::Up && Power == 4 && South == South::None && West == West::Side) return 2965;
			if (East == East::None && North == North::Up && Power == 4 && South == South::None && West == West::None) return 2966;
			if (East == East::None && North == North::Up && Power == 5 && South == South::Up && West == West::Up) return 2967;
			if (East == East::None && North == North::Up && Power == 5 && South == South::Up && West == West::Side) return 2968;
			if (East == East::None && North == North::Up && Power == 5 && South == South::Up && West == West::None) return 2969;
			if (East == East::None && North == North::Up && Power == 5 && South == South::Side && West == West::Up) return 2970;
			if (East == East::None && North == North::Up && Power == 5 && South == South::Side && West == West::Side) return 2971;
			if (East == East::None && North == North::Up && Power == 5 && South == South::Side && West == West::None) return 2972;
			if (East == East::None && North == North::Up && Power == 5 && South == South::None && West == West::Up) return 2973;
			if (East == East::None && North == North::Up && Power == 5 && South == South::None && West == West::Side) return 2974;
			if (East == East::None && North == North::Up && Power == 5 && South == South::None && West == West::None) return 2975;
			if (East == East::None && North == North::Up && Power == 6 && South == South::Up && West == West::Up) return 2976;
			if (East == East::None && North == North::Up && Power == 6 && South == South::Up && West == West::Side) return 2977;
			if (East == East::None && North == North::Up && Power == 6 && South == South::Up && West == West::None) return 2978;
			if (East == East::None && North == North::Up && Power == 6 && South == South::Side && West == West::Up) return 2979;
			if (East == East::None && North == North::Up && Power == 6 && South == South::Side && West == West::Side) return 2980;
			if (East == East::None && North == North::Up && Power == 6 && South == South::Side && West == West::None) return 2981;
			if (East == East::None && North == North::Up && Power == 6 && South == South::None && West == West::Up) return 2982;
			if (East == East::None && North == North::Up && Power == 6 && South == South::None && West == West::Side) return 2983;
			if (East == East::None && North == North::Up && Power == 6 && South == South::None && West == West::None) return 2984;
			if (East == East::None && North == North::Up && Power == 7 && South == South::Up && West == West::Up) return 2985;
			if (East == East::None && North == North::Up && Power == 7 && South == South::Up && West == West::Side) return 2986;
			if (East == East::None && North == North::Up && Power == 7 && South == South::Up && West == West::None) return 2987;
			if (East == East::None && North == North::Up && Power == 7 && South == South::Side && West == West::Up) return 2988;
			if (East == East::None && North == North::Up && Power == 7 && South == South::Side && West == West::Side) return 2989;
			if (East == East::None && North == North::Up && Power == 7 && South == South::Side && West == West::None) return 2990;
			if (East == East::None && North == North::Up && Power == 7 && South == South::None && West == West::Up) return 2991;
			if (East == East::None && North == North::Up && Power == 7 && South == South::None && West == West::Side) return 2992;
			if (East == East::None && North == North::Up && Power == 7 && South == South::None && West == West::None) return 2993;
			if (East == East::None && North == North::Up && Power == 8 && South == South::Up && West == West::Up) return 2994;
			if (East == East::None && North == North::Up && Power == 8 && South == South::Up && West == West::Side) return 2995;
			if (East == East::None && North == North::Up && Power == 8 && South == South::Up && West == West::None) return 2996;
			if (East == East::None && North == North::Up && Power == 8 && South == South::Side && West == West::Up) return 2997;
			if (East == East::None && North == North::Up && Power == 8 && South == South::Side && West == West::Side) return 2998;
			if (East == East::None && North == North::Up && Power == 8 && South == South::Side && West == West::None) return 2999;
			if (East == East::None && North == North::Up && Power == 8 && South == South::None && West == West::Up) return 3000;
			if (East == East::None && North == North::Up && Power == 8 && South == South::None && West == West::Side) return 3001;
			if (East == East::None && North == North::Up && Power == 8 && South == South::None && West == West::None) return 3002;
			if (East == East::None && North == North::Up && Power == 9 && South == South::Up && West == West::Up) return 3003;
			if (East == East::None && North == North::Up && Power == 9 && South == South::Up && West == West::Side) return 3004;
			if (East == East::None && North == North::Up && Power == 9 && South == South::Up && West == West::None) return 3005;
			if (East == East::None && North == North::Up && Power == 9 && South == South::Side && West == West::Up) return 3006;
			if (East == East::None && North == North::Up && Power == 9 && South == South::Side && West == West::Side) return 3007;
			if (East == East::None && North == North::Up && Power == 9 && South == South::Side && West == West::None) return 3008;
			if (East == East::None && North == North::Up && Power == 9 && South == South::None && West == West::Up) return 3009;
			if (East == East::None && North == North::Up && Power == 9 && South == South::None && West == West::Side) return 3010;
			if (East == East::None && North == North::Up && Power == 9 && South == South::None && West == West::None) return 3011;
			if (East == East::None && North == North::Up && Power == 10 && South == South::Up && West == West::Up) return 3012;
			if (East == East::None && North == North::Up && Power == 10 && South == South::Up && West == West::Side) return 3013;
			if (East == East::None && North == North::Up && Power == 10 && South == South::Up && West == West::None) return 3014;
			if (East == East::None && North == North::Up && Power == 10 && South == South::Side && West == West::Up) return 3015;
			if (East == East::None && North == North::Up && Power == 10 && South == South::Side && West == West::Side) return 3016;
			if (East == East::None && North == North::Up && Power == 10 && South == South::Side && West == West::None) return 3017;
			if (East == East::None && North == North::Up && Power == 10 && South == South::None && West == West::Up) return 3018;
			if (East == East::None && North == North::Up && Power == 10 && South == South::None && West == West::Side) return 3019;
			if (East == East::None && North == North::Up && Power == 10 && South == South::None && West == West::None) return 3020;
			if (East == East::None && North == North::Up && Power == 11 && South == South::Up && West == West::Up) return 3021;
			if (East == East::None && North == North::Up && Power == 11 && South == South::Up && West == West::Side) return 3022;
			if (East == East::None && North == North::Up && Power == 11 && South == South::Up && West == West::None) return 3023;
			if (East == East::None && North == North::Up && Power == 11 && South == South::Side && West == West::Up) return 3024;
			if (East == East::None && North == North::Up && Power == 11 && South == South::Side && West == West::Side) return 3025;
			if (East == East::None && North == North::Up && Power == 11 && South == South::Side && West == West::None) return 3026;
			if (East == East::None && North == North::Up && Power == 11 && South == South::None && West == West::Up) return 3027;
			if (East == East::None && North == North::Up && Power == 11 && South == South::None && West == West::Side) return 3028;
			if (East == East::None && North == North::Up && Power == 11 && South == South::None && West == West::None) return 3029;
			if (East == East::None && North == North::Up && Power == 12 && South == South::Up && West == West::Up) return 3030;
			if (East == East::None && North == North::Up && Power == 12 && South == South::Up && West == West::Side) return 3031;
			if (East == East::None && North == North::Up && Power == 12 && South == South::Up && West == West::None) return 3032;
			if (East == East::None && North == North::Up && Power == 12 && South == South::Side && West == West::Up) return 3033;
			if (East == East::None && North == North::Up && Power == 12 && South == South::Side && West == West::Side) return 3034;
			if (East == East::None && North == North::Up && Power == 12 && South == South::Side && West == West::None) return 3035;
			if (East == East::None && North == North::Up && Power == 12 && South == South::None && West == West::Up) return 3036;
			if (East == East::None && North == North::Up && Power == 12 && South == South::None && West == West::Side) return 3037;
			if (East == East::None && North == North::Up && Power == 12 && South == South::None && West == West::None) return 3038;
			if (East == East::None && North == North::Up && Power == 13 && South == South::Up && West == West::Up) return 3039;
			if (East == East::None && North == North::Up && Power == 13 && South == South::Up && West == West::Side) return 3040;
			if (East == East::None && North == North::Up && Power == 13 && South == South::Up && West == West::None) return 3041;
			if (East == East::None && North == North::Up && Power == 13 && South == South::Side && West == West::Up) return 3042;
			if (East == East::None && North == North::Up && Power == 13 && South == South::Side && West == West::Side) return 3043;
			if (East == East::None && North == North::Up && Power == 13 && South == South::Side && West == West::None) return 3044;
			if (East == East::None && North == North::Up && Power == 13 && South == South::None && West == West::Up) return 3045;
			if (East == East::None && North == North::Up && Power == 13 && South == South::None && West == West::Side) return 3046;
			if (East == East::None && North == North::Up && Power == 13 && South == South::None && West == West::None) return 3047;
			if (East == East::None && North == North::Up && Power == 14 && South == South::Up && West == West::Up) return 3048;
			if (East == East::None && North == North::Up && Power == 14 && South == South::Up && West == West::Side) return 3049;
			if (East == East::None && North == North::Up && Power == 14 && South == South::Up && West == West::None) return 3050;
			if (East == East::None && North == North::Up && Power == 14 && South == South::Side && West == West::Up) return 3051;
			if (East == East::None && North == North::Up && Power == 14 && South == South::Side && West == West::Side) return 3052;
			if (East == East::None && North == North::Up && Power == 14 && South == South::Side && West == West::None) return 3053;
			if (East == East::None && North == North::Up && Power == 14 && South == South::None && West == West::Up) return 3054;
			if (East == East::None && North == North::Up && Power == 14 && South == South::None && West == West::Side) return 3055;
			if (East == East::None && North == North::Up && Power == 14 && South == South::None && West == West::None) return 3056;
			if (East == East::None && North == North::Up && Power == 15 && South == South::Up && West == West::Up) return 3057;
			if (East == East::None && North == North::Up && Power == 15 && South == South::Up && West == West::Side) return 3058;
			if (East == East::None && North == North::Up && Power == 15 && South == South::Up && West == West::None) return 3059;
			if (East == East::None && North == North::Up && Power == 15 && South == South::Side && West == West::Up) return 3060;
			if (East == East::None && North == North::Up && Power == 15 && South == South::Side && West == West::Side) return 3061;
			if (East == East::None && North == North::Up && Power == 15 && South == South::Side && West == West::None) return 3062;
			if (East == East::None && North == North::Up && Power == 15 && South == South::None && West == West::Up) return 3063;
			if (East == East::None && North == North::Up && Power == 15 && South == South::None && West == West::Side) return 3064;
			if (East == East::None && North == North::Up && Power == 15 && South == South::None && West == West::None) return 3065;
			if (East == East::None && North == North::Side && Power == 0 && South == South::Up && West == West::Up) return 3066;
			if (East == East::None && North == North::Side && Power == 0 && South == South::Up && West == West::Side) return 3067;
			if (East == East::None && North == North::Side && Power == 0 && South == South::Up && West == West::None) return 3068;
			if (East == East::None && North == North::Side && Power == 0 && South == South::Side && West == West::Up) return 3069;
			if (East == East::None && North == North::Side && Power == 0 && South == South::Side && West == West::Side) return 3070;
			if (East == East::None && North == North::Side && Power == 0 && South == South::Side && West == West::None) return 3071;
			if (East == East::None && North == North::Side && Power == 0 && South == South::None && West == West::Up) return 3072;
			if (East == East::None && North == North::Side && Power == 0 && South == South::None && West == West::Side) return 3073;
			if (East == East::None && North == North::Side && Power == 0 && South == South::None && West == West::None) return 3074;
			if (East == East::None && North == North::Side && Power == 1 && South == South::Up && West == West::Up) return 3075;
			if (East == East::None && North == North::Side && Power == 1 && South == South::Up && West == West::Side) return 3076;
			if (East == East::None && North == North::Side && Power == 1 && South == South::Up && West == West::None) return 3077;
			if (East == East::None && North == North::Side && Power == 1 && South == South::Side && West == West::Up) return 3078;
			if (East == East::None && North == North::Side && Power == 1 && South == South::Side && West == West::Side) return 3079;
			if (East == East::None && North == North::Side && Power == 1 && South == South::Side && West == West::None) return 3080;
			if (East == East::None && North == North::Side && Power == 1 && South == South::None && West == West::Up) return 3081;
			if (East == East::None && North == North::Side && Power == 1 && South == South::None && West == West::Side) return 3082;
			if (East == East::None && North == North::Side && Power == 1 && South == South::None && West == West::None) return 3083;
			if (East == East::None && North == North::Side && Power == 2 && South == South::Up && West == West::Up) return 3084;
			if (East == East::None && North == North::Side && Power == 2 && South == South::Up && West == West::Side) return 3085;
			if (East == East::None && North == North::Side && Power == 2 && South == South::Up && West == West::None) return 3086;
			if (East == East::None && North == North::Side && Power == 2 && South == South::Side && West == West::Up) return 3087;
			if (East == East::None && North == North::Side && Power == 2 && South == South::Side && West == West::Side) return 3088;
			if (East == East::None && North == North::Side && Power == 2 && South == South::Side && West == West::None) return 3089;
			if (East == East::None && North == North::Side && Power == 2 && South == South::None && West == West::Up) return 3090;
			if (East == East::None && North == North::Side && Power == 2 && South == South::None && West == West::Side) return 3091;
			if (East == East::None && North == North::Side && Power == 2 && South == South::None && West == West::None) return 3092;
			if (East == East::None && North == North::Side && Power == 3 && South == South::Up && West == West::Up) return 3093;
			if (East == East::None && North == North::Side && Power == 3 && South == South::Up && West == West::Side) return 3094;
			if (East == East::None && North == North::Side && Power == 3 && South == South::Up && West == West::None) return 3095;
			if (East == East::None && North == North::Side && Power == 3 && South == South::Side && West == West::Up) return 3096;
			if (East == East::None && North == North::Side && Power == 3 && South == South::Side && West == West::Side) return 3097;
			if (East == East::None && North == North::Side && Power == 3 && South == South::Side && West == West::None) return 3098;
			if (East == East::None && North == North::Side && Power == 3 && South == South::None && West == West::Up) return 3099;
			if (East == East::None && North == North::Side && Power == 3 && South == South::None && West == West::Side) return 3100;
			if (East == East::None && North == North::Side && Power == 3 && South == South::None && West == West::None) return 3101;
			if (East == East::None && North == North::Side && Power == 4 && South == South::Up && West == West::Up) return 3102;
			if (East == East::None && North == North::Side && Power == 4 && South == South::Up && West == West::Side) return 3103;
			if (East == East::None && North == North::Side && Power == 4 && South == South::Up && West == West::None) return 3104;
			if (East == East::None && North == North::Side && Power == 4 && South == South::Side && West == West::Up) return 3105;
			if (East == East::None && North == North::Side && Power == 4 && South == South::Side && West == West::Side) return 3106;
			if (East == East::None && North == North::Side && Power == 4 && South == South::Side && West == West::None) return 3107;
			if (East == East::None && North == North::Side && Power == 4 && South == South::None && West == West::Up) return 3108;
			if (East == East::None && North == North::Side && Power == 4 && South == South::None && West == West::Side) return 3109;
			if (East == East::None && North == North::Side && Power == 4 && South == South::None && West == West::None) return 3110;
			if (East == East::None && North == North::Side && Power == 5 && South == South::Up && West == West::Up) return 3111;
			if (East == East::None && North == North::Side && Power == 5 && South == South::Up && West == West::Side) return 3112;
			if (East == East::None && North == North::Side && Power == 5 && South == South::Up && West == West::None) return 3113;
			if (East == East::None && North == North::Side && Power == 5 && South == South::Side && West == West::Up) return 3114;
			if (East == East::None && North == North::Side && Power == 5 && South == South::Side && West == West::Side) return 3115;
			if (East == East::None && North == North::Side && Power == 5 && South == South::Side && West == West::None) return 3116;
			if (East == East::None && North == North::Side && Power == 5 && South == South::None && West == West::Up) return 3117;
			if (East == East::None && North == North::Side && Power == 5 && South == South::None && West == West::Side) return 3118;
			if (East == East::None && North == North::Side && Power == 5 && South == South::None && West == West::None) return 3119;
			if (East == East::None && North == North::Side && Power == 6 && South == South::Up && West == West::Up) return 3120;
			if (East == East::None && North == North::Side && Power == 6 && South == South::Up && West == West::Side) return 3121;
			if (East == East::None && North == North::Side && Power == 6 && South == South::Up && West == West::None) return 3122;
			if (East == East::None && North == North::Side && Power == 6 && South == South::Side && West == West::Up) return 3123;
			if (East == East::None && North == North::Side && Power == 6 && South == South::Side && West == West::Side) return 3124;
			if (East == East::None && North == North::Side && Power == 6 && South == South::Side && West == West::None) return 3125;
			if (East == East::None && North == North::Side && Power == 6 && South == South::None && West == West::Up) return 3126;
			if (East == East::None && North == North::Side && Power == 6 && South == South::None && West == West::Side) return 3127;
			if (East == East::None && North == North::Side && Power == 6 && South == South::None && West == West::None) return 3128;
			if (East == East::None && North == North::Side && Power == 7 && South == South::Up && West == West::Up) return 3129;
			if (East == East::None && North == North::Side && Power == 7 && South == South::Up && West == West::Side) return 3130;
			if (East == East::None && North == North::Side && Power == 7 && South == South::Up && West == West::None) return 3131;
			if (East == East::None && North == North::Side && Power == 7 && South == South::Side && West == West::Up) return 3132;
			if (East == East::None && North == North::Side && Power == 7 && South == South::Side && West == West::Side) return 3133;
			if (East == East::None && North == North::Side && Power == 7 && South == South::Side && West == West::None) return 3134;
			if (East == East::None && North == North::Side && Power == 7 && South == South::None && West == West::Up) return 3135;
			if (East == East::None && North == North::Side && Power == 7 && South == South::None && West == West::Side) return 3136;
			if (East == East::None && North == North::Side && Power == 7 && South == South::None && West == West::None) return 3137;
			if (East == East::None && North == North::Side && Power == 8 && South == South::Up && West == West::Up) return 3138;
			if (East == East::None && North == North::Side && Power == 8 && South == South::Up && West == West::Side) return 3139;
			if (East == East::None && North == North::Side && Power == 8 && South == South::Up && West == West::None) return 3140;
			if (East == East::None && North == North::Side && Power == 8 && South == South::Side && West == West::Up) return 3141;
			if (East == East::None && North == North::Side && Power == 8 && South == South::Side && West == West::Side) return 3142;
			if (East == East::None && North == North::Side && Power == 8 && South == South::Side && West == West::None) return 3143;
			if (East == East::None && North == North::Side && Power == 8 && South == South::None && West == West::Up) return 3144;
			if (East == East::None && North == North::Side && Power == 8 && South == South::None && West == West::Side) return 3145;
			if (East == East::None && North == North::Side && Power == 8 && South == South::None && West == West::None) return 3146;
			if (East == East::None && North == North::Side && Power == 9 && South == South::Up && West == West::Up) return 3147;
			if (East == East::None && North == North::Side && Power == 9 && South == South::Up && West == West::Side) return 3148;
			if (East == East::None && North == North::Side && Power == 9 && South == South::Up && West == West::None) return 3149;
			if (East == East::None && North == North::Side && Power == 9 && South == South::Side && West == West::Up) return 3150;
			if (East == East::None && North == North::Side && Power == 9 && South == South::Side && West == West::Side) return 3151;
			if (East == East::None && North == North::Side && Power == 9 && South == South::Side && West == West::None) return 3152;
			if (East == East::None && North == North::Side && Power == 9 && South == South::None && West == West::Up) return 3153;
			if (East == East::None && North == North::Side && Power == 9 && South == South::None && West == West::Side) return 3154;
			if (East == East::None && North == North::Side && Power == 9 && South == South::None && West == West::None) return 3155;
			if (East == East::None && North == North::Side && Power == 10 && South == South::Up && West == West::Up) return 3156;
			if (East == East::None && North == North::Side && Power == 10 && South == South::Up && West == West::Side) return 3157;
			if (East == East::None && North == North::Side && Power == 10 && South == South::Up && West == West::None) return 3158;
			if (East == East::None && North == North::Side && Power == 10 && South == South::Side && West == West::Up) return 3159;
			if (East == East::None && North == North::Side && Power == 10 && South == South::Side && West == West::Side) return 3160;
			if (East == East::None && North == North::Side && Power == 10 && South == South::Side && West == West::None) return 3161;
			if (East == East::None && North == North::Side && Power == 10 && South == South::None && West == West::Up) return 3162;
			if (East == East::None && North == North::Side && Power == 10 && South == South::None && West == West::Side) return 3163;
			if (East == East::None && North == North::Side && Power == 10 && South == South::None && West == West::None) return 3164;
			if (East == East::None && North == North::Side && Power == 11 && South == South::Up && West == West::Up) return 3165;
			if (East == East::None && North == North::Side && Power == 11 && South == South::Up && West == West::Side) return 3166;
			if (East == East::None && North == North::Side && Power == 11 && South == South::Up && West == West::None) return 3167;
			if (East == East::None && North == North::Side && Power == 11 && South == South::Side && West == West::Up) return 3168;
			if (East == East::None && North == North::Side && Power == 11 && South == South::Side && West == West::Side) return 3169;
			if (East == East::None && North == North::Side && Power == 11 && South == South::Side && West == West::None) return 3170;
			if (East == East::None && North == North::Side && Power == 11 && South == South::None && West == West::Up) return 3171;
			if (East == East::None && North == North::Side && Power == 11 && South == South::None && West == West::Side) return 3172;
			if (East == East::None && North == North::Side && Power == 11 && South == South::None && West == West::None) return 3173;
			if (East == East::None && North == North::Side && Power == 12 && South == South::Up && West == West::Up) return 3174;
			if (East == East::None && North == North::Side && Power == 12 && South == South::Up && West == West::Side) return 3175;
			if (East == East::None && North == North::Side && Power == 12 && South == South::Up && West == West::None) return 3176;
			if (East == East::None && North == North::Side && Power == 12 && South == South::Side && West == West::Up) return 3177;
			if (East == East::None && North == North::Side && Power == 12 && South == South::Side && West == West::Side) return 3178;
			if (East == East::None && North == North::Side && Power == 12 && South == South::Side && West == West::None) return 3179;
			if (East == East::None && North == North::Side && Power == 12 && South == South::None && West == West::Up) return 3180;
			if (East == East::None && North == North::Side && Power == 12 && South == South::None && West == West::Side) return 3181;
			if (East == East::None && North == North::Side && Power == 12 && South == South::None && West == West::None) return 3182;
			if (East == East::None && North == North::Side && Power == 13 && South == South::Up && West == West::Up) return 3183;
			if (East == East::None && North == North::Side && Power == 13 && South == South::Up && West == West::Side) return 3184;
			if (East == East::None && North == North::Side && Power == 13 && South == South::Up && West == West::None) return 3185;
			if (East == East::None && North == North::Side && Power == 13 && South == South::Side && West == West::Up) return 3186;
			if (East == East::None && North == North::Side && Power == 13 && South == South::Side && West == West::Side) return 3187;
			if (East == East::None && North == North::Side && Power == 13 && South == South::Side && West == West::None) return 3188;
			if (East == East::None && North == North::Side && Power == 13 && South == South::None && West == West::Up) return 3189;
			if (East == East::None && North == North::Side && Power == 13 && South == South::None && West == West::Side) return 3190;
			if (East == East::None && North == North::Side && Power == 13 && South == South::None && West == West::None) return 3191;
			if (East == East::None && North == North::Side && Power == 14 && South == South::Up && West == West::Up) return 3192;
			if (East == East::None && North == North::Side && Power == 14 && South == South::Up && West == West::Side) return 3193;
			if (East == East::None && North == North::Side && Power == 14 && South == South::Up && West == West::None) return 3194;
			if (East == East::None && North == North::Side && Power == 14 && South == South::Side && West == West::Up) return 3195;
			if (East == East::None && North == North::Side && Power == 14 && South == South::Side && West == West::Side) return 3196;
			if (East == East::None && North == North::Side && Power == 14 && South == South::Side && West == West::None) return 3197;
			if (East == East::None && North == North::Side && Power == 14 && South == South::None && West == West::Up) return 3198;
			if (East == East::None && North == North::Side && Power == 14 && South == South::None && West == West::Side) return 3199;
			if (East == East::None && North == North::Side && Power == 14 && South == South::None && West == West::None) return 3200;
			if (East == East::None && North == North::Side && Power == 15 && South == South::Up && West == West::Up) return 3201;
			if (East == East::None && North == North::Side && Power == 15 && South == South::Up && West == West::Side) return 3202;
			if (East == East::None && North == North::Side && Power == 15 && South == South::Up && West == West::None) return 3203;
			if (East == East::None && North == North::Side && Power == 15 && South == South::Side && West == West::Up) return 3204;
			if (East == East::None && North == North::Side && Power == 15 && South == South::Side && West == West::Side) return 3205;
			if (East == East::None && North == North::Side && Power == 15 && South == South::Side && West == West::None) return 3206;
			if (East == East::None && North == North::Side && Power == 15 && South == South::None && West == West::Up) return 3207;
			if (East == East::None && North == North::Side && Power == 15 && South == South::None && West == West::Side) return 3208;
			if (East == East::None && North == North::Side && Power == 15 && South == South::None && West == West::None) return 3209;
			if (East == East::None && North == North::None && Power == 0 && South == South::Up && West == West::Up) return 3210;
			if (East == East::None && North == North::None && Power == 0 && South == South::Up && West == West::Side) return 3211;
			if (East == East::None && North == North::None && Power == 0 && South == South::Up && West == West::None) return 3212;
			if (East == East::None && North == North::None && Power == 0 && South == South::Side && West == West::Up) return 3213;
			if (East == East::None && North == North::None && Power == 0 && South == South::Side && West == West::Side) return 3214;
			if (East == East::None && North == North::None && Power == 0 && South == South::Side && West == West::None) return 3215;
			if (East == East::None && North == North::None && Power == 0 && South == South::None && West == West::Up) return 3216;
			if (East == East::None && North == North::None && Power == 0 && South == South::None && West == West::Side) return 3217;
			if (East == East::None && North == North::None && Power == 0 && South == South::None && West == West::None) return 3218;
			if (East == East::None && North == North::None && Power == 1 && South == South::Up && West == West::Up) return 3219;
			if (East == East::None && North == North::None && Power == 1 && South == South::Up && West == West::Side) return 3220;
			if (East == East::None && North == North::None && Power == 1 && South == South::Up && West == West::None) return 3221;
			if (East == East::None && North == North::None && Power == 1 && South == South::Side && West == West::Up) return 3222;
			if (East == East::None && North == North::None && Power == 1 && South == South::Side && West == West::Side) return 3223;
			if (East == East::None && North == North::None && Power == 1 && South == South::Side && West == West::None) return 3224;
			if (East == East::None && North == North::None && Power == 1 && South == South::None && West == West::Up) return 3225;
			if (East == East::None && North == North::None && Power == 1 && South == South::None && West == West::Side) return 3226;
			if (East == East::None && North == North::None && Power == 1 && South == South::None && West == West::None) return 3227;
			if (East == East::None && North == North::None && Power == 2 && South == South::Up && West == West::Up) return 3228;
			if (East == East::None && North == North::None && Power == 2 && South == South::Up && West == West::Side) return 3229;
			if (East == East::None && North == North::None && Power == 2 && South == South::Up && West == West::None) return 3230;
			if (East == East::None && North == North::None && Power == 2 && South == South::Side && West == West::Up) return 3231;
			if (East == East::None && North == North::None && Power == 2 && South == South::Side && West == West::Side) return 3232;
			if (East == East::None && North == North::None && Power == 2 && South == South::Side && West == West::None) return 3233;
			if (East == East::None && North == North::None && Power == 2 && South == South::None && West == West::Up) return 3234;
			if (East == East::None && North == North::None && Power == 2 && South == South::None && West == West::Side) return 3235;
			if (East == East::None && North == North::None && Power == 2 && South == South::None && West == West::None) return 3236;
			if (East == East::None && North == North::None && Power == 3 && South == South::Up && West == West::Up) return 3237;
			if (East == East::None && North == North::None && Power == 3 && South == South::Up && West == West::Side) return 3238;
			if (East == East::None && North == North::None && Power == 3 && South == South::Up && West == West::None) return 3239;
			if (East == East::None && North == North::None && Power == 3 && South == South::Side && West == West::Up) return 3240;
			if (East == East::None && North == North::None && Power == 3 && South == South::Side && West == West::Side) return 3241;
			if (East == East::None && North == North::None && Power == 3 && South == South::Side && West == West::None) return 3242;
			if (East == East::None && North == North::None && Power == 3 && South == South::None && West == West::Up) return 3243;
			if (East == East::None && North == North::None && Power == 3 && South == South::None && West == West::Side) return 3244;
			if (East == East::None && North == North::None && Power == 3 && South == South::None && West == West::None) return 3245;
			if (East == East::None && North == North::None && Power == 4 && South == South::Up && West == West::Up) return 3246;
			if (East == East::None && North == North::None && Power == 4 && South == South::Up && West == West::Side) return 3247;
			if (East == East::None && North == North::None && Power == 4 && South == South::Up && West == West::None) return 3248;
			if (East == East::None && North == North::None && Power == 4 && South == South::Side && West == West::Up) return 3249;
			if (East == East::None && North == North::None && Power == 4 && South == South::Side && West == West::Side) return 3250;
			if (East == East::None && North == North::None && Power == 4 && South == South::Side && West == West::None) return 3251;
			if (East == East::None && North == North::None && Power == 4 && South == South::None && West == West::Up) return 3252;
			if (East == East::None && North == North::None && Power == 4 && South == South::None && West == West::Side) return 3253;
			if (East == East::None && North == North::None && Power == 4 && South == South::None && West == West::None) return 3254;
			if (East == East::None && North == North::None && Power == 5 && South == South::Up && West == West::Up) return 3255;
			if (East == East::None && North == North::None && Power == 5 && South == South::Up && West == West::Side) return 3256;
			if (East == East::None && North == North::None && Power == 5 && South == South::Up && West == West::None) return 3257;
			if (East == East::None && North == North::None && Power == 5 && South == South::Side && West == West::Up) return 3258;
			if (East == East::None && North == North::None && Power == 5 && South == South::Side && West == West::Side) return 3259;
			if (East == East::None && North == North::None && Power == 5 && South == South::Side && West == West::None) return 3260;
			if (East == East::None && North == North::None && Power == 5 && South == South::None && West == West::Up) return 3261;
			if (East == East::None && North == North::None && Power == 5 && South == South::None && West == West::Side) return 3262;
			if (East == East::None && North == North::None && Power == 5 && South == South::None && West == West::None) return 3263;
			if (East == East::None && North == North::None && Power == 6 && South == South::Up && West == West::Up) return 3264;
			if (East == East::None && North == North::None && Power == 6 && South == South::Up && West == West::Side) return 3265;
			if (East == East::None && North == North::None && Power == 6 && South == South::Up && West == West::None) return 3266;
			if (East == East::None && North == North::None && Power == 6 && South == South::Side && West == West::Up) return 3267;
			if (East == East::None && North == North::None && Power == 6 && South == South::Side && West == West::Side) return 3268;
			if (East == East::None && North == North::None && Power == 6 && South == South::Side && West == West::None) return 3269;
			if (East == East::None && North == North::None && Power == 6 && South == South::None && West == West::Up) return 3270;
			if (East == East::None && North == North::None && Power == 6 && South == South::None && West == West::Side) return 3271;
			if (East == East::None && North == North::None && Power == 6 && South == South::None && West == West::None) return 3272;
			if (East == East::None && North == North::None && Power == 7 && South == South::Up && West == West::Up) return 3273;
			if (East == East::None && North == North::None && Power == 7 && South == South::Up && West == West::Side) return 3274;
			if (East == East::None && North == North::None && Power == 7 && South == South::Up && West == West::None) return 3275;
			if (East == East::None && North == North::None && Power == 7 && South == South::Side && West == West::Up) return 3276;
			if (East == East::None && North == North::None && Power == 7 && South == South::Side && West == West::Side) return 3277;
			if (East == East::None && North == North::None && Power == 7 && South == South::Side && West == West::None) return 3278;
			if (East == East::None && North == North::None && Power == 7 && South == South::None && West == West::Up) return 3279;
			if (East == East::None && North == North::None && Power == 7 && South == South::None && West == West::Side) return 3280;
			if (East == East::None && North == North::None && Power == 7 && South == South::None && West == West::None) return 3281;
			if (East == East::None && North == North::None && Power == 8 && South == South::Up && West == West::Up) return 3282;
			if (East == East::None && North == North::None && Power == 8 && South == South::Up && West == West::Side) return 3283;
			if (East == East::None && North == North::None && Power == 8 && South == South::Up && West == West::None) return 3284;
			if (East == East::None && North == North::None && Power == 8 && South == South::Side && West == West::Up) return 3285;
			if (East == East::None && North == North::None && Power == 8 && South == South::Side && West == West::Side) return 3286;
			if (East == East::None && North == North::None && Power == 8 && South == South::Side && West == West::None) return 3287;
			if (East == East::None && North == North::None && Power == 8 && South == South::None && West == West::Up) return 3288;
			if (East == East::None && North == North::None && Power == 8 && South == South::None && West == West::Side) return 3289;
			if (East == East::None && North == North::None && Power == 8 && South == South::None && West == West::None) return 3290;
			if (East == East::None && North == North::None && Power == 9 && South == South::Up && West == West::Up) return 3291;
			if (East == East::None && North == North::None && Power == 9 && South == South::Up && West == West::Side) return 3292;
			if (East == East::None && North == North::None && Power == 9 && South == South::Up && West == West::None) return 3293;
			if (East == East::None && North == North::None && Power == 9 && South == South::Side && West == West::Up) return 3294;
			if (East == East::None && North == North::None && Power == 9 && South == South::Side && West == West::Side) return 3295;
			if (East == East::None && North == North::None && Power == 9 && South == South::Side && West == West::None) return 3296;
			if (East == East::None && North == North::None && Power == 9 && South == South::None && West == West::Up) return 3297;
			if (East == East::None && North == North::None && Power == 9 && South == South::None && West == West::Side) return 3298;
			if (East == East::None && North == North::None && Power == 9 && South == South::None && West == West::None) return 3299;
			if (East == East::None && North == North::None && Power == 10 && South == South::Up && West == West::Up) return 3300;
			if (East == East::None && North == North::None && Power == 10 && South == South::Up && West == West::Side) return 3301;
			if (East == East::None && North == North::None && Power == 10 && South == South::Up && West == West::None) return 3302;
			if (East == East::None && North == North::None && Power == 10 && South == South::Side && West == West::Up) return 3303;
			if (East == East::None && North == North::None && Power == 10 && South == South::Side && West == West::Side) return 3304;
			if (East == East::None && North == North::None && Power == 10 && South == South::Side && West == West::None) return 3305;
			if (East == East::None && North == North::None && Power == 10 && South == South::None && West == West::Up) return 3306;
			if (East == East::None && North == North::None && Power == 10 && South == South::None && West == West::Side) return 3307;
			if (East == East::None && North == North::None && Power == 10 && South == South::None && West == West::None) return 3308;
			if (East == East::None && North == North::None && Power == 11 && South == South::Up && West == West::Up) return 3309;
			if (East == East::None && North == North::None && Power == 11 && South == South::Up && West == West::Side) return 3310;
			if (East == East::None && North == North::None && Power == 11 && South == South::Up && West == West::None) return 3311;
			if (East == East::None && North == North::None && Power == 11 && South == South::Side && West == West::Up) return 3312;
			if (East == East::None && North == North::None && Power == 11 && South == South::Side && West == West::Side) return 3313;
			if (East == East::None && North == North::None && Power == 11 && South == South::Side && West == West::None) return 3314;
			if (East == East::None && North == North::None && Power == 11 && South == South::None && West == West::Up) return 3315;
			if (East == East::None && North == North::None && Power == 11 && South == South::None && West == West::Side) return 3316;
			if (East == East::None && North == North::None && Power == 11 && South == South::None && West == West::None) return 3317;
			if (East == East::None && North == North::None && Power == 12 && South == South::Up && West == West::Up) return 3318;
			if (East == East::None && North == North::None && Power == 12 && South == South::Up && West == West::Side) return 3319;
			if (East == East::None && North == North::None && Power == 12 && South == South::Up && West == West::None) return 3320;
			if (East == East::None && North == North::None && Power == 12 && South == South::Side && West == West::Up) return 3321;
			if (East == East::None && North == North::None && Power == 12 && South == South::Side && West == West::Side) return 3322;
			if (East == East::None && North == North::None && Power == 12 && South == South::Side && West == West::None) return 3323;
			if (East == East::None && North == North::None && Power == 12 && South == South::None && West == West::Up) return 3324;
			if (East == East::None && North == North::None && Power == 12 && South == South::None && West == West::Side) return 3325;
			if (East == East::None && North == North::None && Power == 12 && South == South::None && West == West::None) return 3326;
			if (East == East::None && North == North::None && Power == 13 && South == South::Up && West == West::Up) return 3327;
			if (East == East::None && North == North::None && Power == 13 && South == South::Up && West == West::Side) return 3328;
			if (East == East::None && North == North::None && Power == 13 && South == South::Up && West == West::None) return 3329;
			if (East == East::None && North == North::None && Power == 13 && South == South::Side && West == West::Up) return 3330;
			if (East == East::None && North == North::None && Power == 13 && South == South::Side && West == West::Side) return 3331;
			if (East == East::None && North == North::None && Power == 13 && South == South::Side && West == West::None) return 3332;
			if (East == East::None && North == North::None && Power == 13 && South == South::None && West == West::Up) return 3333;
			if (East == East::None && North == North::None && Power == 13 && South == South::None && West == West::Side) return 3334;
			if (East == East::None && North == North::None && Power == 13 && South == South::None && West == West::None) return 3335;
			if (East == East::None && North == North::None && Power == 14 && South == South::Up && West == West::Up) return 3336;
			if (East == East::None && North == North::None && Power == 14 && South == South::Up && West == West::Side) return 3337;
			if (East == East::None && North == North::None && Power == 14 && South == South::Up && West == West::None) return 3338;
			if (East == East::None && North == North::None && Power == 14 && South == South::Side && West == West::Up) return 3339;
			if (East == East::None && North == North::None && Power == 14 && South == South::Side && West == West::Side) return 3340;
			if (East == East::None && North == North::None && Power == 14 && South == South::Side && West == West::None) return 3341;
			if (East == East::None && North == North::None && Power == 14 && South == South::None && West == West::Up) return 3342;
			if (East == East::None && North == North::None && Power == 14 && South == South::None && West == West::Side) return 3343;
			if (East == East::None && North == North::None && Power == 14 && South == South::None && West == West::None) return 3344;
			if (East == East::None && North == North::None && Power == 15 && South == South::Up && West == West::Up) return 3345;
			if (East == East::None && North == North::None && Power == 15 && South == South::Up && West == West::Side) return 3346;
			if (East == East::None && North == North::None && Power == 15 && South == South::Up && West == West::None) return 3347;
			if (East == East::None && North == North::None && Power == 15 && South == South::Side && West == West::Up) return 3348;
			if (East == East::None && North == North::None && Power == 15 && South == South::Side && West == West::Side) return 3349;
			if (East == East::None && North == North::None && Power == 15 && South == South::Side && West == West::None) return 3350;
			if (East == East::None && North == North::None && Power == 15 && South == South::None && West == West::Up) return 3351;
			if (East == East::None && North == North::None && Power == 15 && South == South::None && West == West::Side) return 3352;
			return 3353;
		}
		short RedstoneWire();
		enum East East(short ID);
		enum North North(short ID);
		unsigned char Power(short ID);
		enum South South(short ID);
		enum West West(short ID);
	}
	namespace Repeater
	{
		constexpr short Repeater(unsigned char Delay, eBlockFace Facing, bool Locked, bool Powered)
		{
			if (Delay == 1 && Facing == eBlockFace::BLOCK_FACE_ZM && Locked && Powered) return 4031;
			if (Delay == 1 && Facing == eBlockFace::BLOCK_FACE_ZM && Locked && !Powered) return 4032;
			if (Delay == 1 && Facing == eBlockFace::BLOCK_FACE_ZM && !Locked && Powered) return 4033;
			if (Delay == 1 && Facing == eBlockFace::BLOCK_FACE_ZM && !Locked && !Powered) return 4034;
			if (Delay == 1 && Facing == eBlockFace::BLOCK_FACE_ZP && Locked && Powered) return 4035;
			if (Delay == 1 && Facing == eBlockFace::BLOCK_FACE_ZP && Locked && !Powered) return 4036;
			if (Delay == 1 && Facing == eBlockFace::BLOCK_FACE_ZP && !Locked && Powered) return 4037;
			if (Delay == 1 && Facing == eBlockFace::BLOCK_FACE_ZP && !Locked && !Powered) return 4038;
			if (Delay == 1 && Facing == eBlockFace::BLOCK_FACE_XM && Locked && Powered) return 4039;
			if (Delay == 1 && Facing == eBlockFace::BLOCK_FACE_XM && Locked && !Powered) return 4040;
			if (Delay == 1 && Facing == eBlockFace::BLOCK_FACE_XM && !Locked && Powered) return 4041;
			if (Delay == 1 && Facing == eBlockFace::BLOCK_FACE_XM && !Locked && !Powered) return 4042;
			if (Delay == 1 && Facing == eBlockFace::BLOCK_FACE_XP && Locked && Powered) return 4043;
			if (Delay == 1 && Facing == eBlockFace::BLOCK_FACE_XP && Locked && !Powered) return 4044;
			if (Delay == 1 && Facing == eBlockFace::BLOCK_FACE_XP && !Locked && Powered) return 4045;
			if (Delay == 1 && Facing == eBlockFace::BLOCK_FACE_XP && !Locked && !Powered) return 4046;
			if (Delay == 2 && Facing == eBlockFace::BLOCK_FACE_ZM && Locked && Powered) return 4047;
			if (Delay == 2 && Facing == eBlockFace::BLOCK_FACE_ZM && Locked && !Powered) return 4048;
			if (Delay == 2 && Facing == eBlockFace::BLOCK_FACE_ZM && !Locked && Powered) return 4049;
			if (Delay == 2 && Facing == eBlockFace::BLOCK_FACE_ZM && !Locked && !Powered) return 4050;
			if (Delay == 2 && Facing == eBlockFace::BLOCK_FACE_ZP && Locked && Powered) return 4051;
			if (Delay == 2 && Facing == eBlockFace::BLOCK_FACE_ZP && Locked && !Powered) return 4052;
			if (Delay == 2 && Facing == eBlockFace::BLOCK_FACE_ZP && !Locked && Powered) return 4053;
			if (Delay == 2 && Facing == eBlockFace::BLOCK_FACE_ZP && !Locked && !Powered) return 4054;
			if (Delay == 2 && Facing == eBlockFace::BLOCK_FACE_XM && Locked && Powered) return 4055;
			if (Delay == 2 && Facing == eBlockFace::BLOCK_FACE_XM && Locked && !Powered) return 4056;
			if (Delay == 2 && Facing == eBlockFace::BLOCK_FACE_XM && !Locked && Powered) return 4057;
			if (Delay == 2 && Facing == eBlockFace::BLOCK_FACE_XM && !Locked && !Powered) return 4058;
			if (Delay == 2 && Facing == eBlockFace::BLOCK_FACE_XP && Locked && Powered) return 4059;
			if (Delay == 2 && Facing == eBlockFace::BLOCK_FACE_XP && Locked && !Powered) return 4060;
			if (Delay == 2 && Facing == eBlockFace::BLOCK_FACE_XP && !Locked && Powered) return 4061;
			if (Delay == 2 && Facing == eBlockFace::BLOCK_FACE_XP && !Locked && !Powered) return 4062;
			if (Delay == 3 && Facing == eBlockFace::BLOCK_FACE_ZM && Locked && Powered) return 4063;
			if (Delay == 3 && Facing == eBlockFace::BLOCK_FACE_ZM && Locked && !Powered) return 4064;
			if (Delay == 3 && Facing == eBlockFace::BLOCK_FACE_ZM && !Locked && Powered) return 4065;
			if (Delay == 3 && Facing == eBlockFace::BLOCK_FACE_ZM && !Locked && !Powered) return 4066;
			if (Delay == 3 && Facing == eBlockFace::BLOCK_FACE_ZP && Locked && Powered) return 4067;
			if (Delay == 3 && Facing == eBlockFace::BLOCK_FACE_ZP && Locked && !Powered) return 4068;
			if (Delay == 3 && Facing == eBlockFace::BLOCK_FACE_ZP && !Locked && Powered) return 4069;
			if (Delay == 3 && Facing == eBlockFace::BLOCK_FACE_ZP && !Locked && !Powered) return 4070;
			if (Delay == 3 && Facing == eBlockFace::BLOCK_FACE_XM && Locked && Powered) return 4071;
			if (Delay == 3 && Facing == eBlockFace::BLOCK_FACE_XM && Locked && !Powered) return 4072;
			if (Delay == 3 && Facing == eBlockFace::BLOCK_FACE_XM && !Locked && Powered) return 4073;
			if (Delay == 3 && Facing == eBlockFace::BLOCK_FACE_XM && !Locked && !Powered) return 4074;
			if (Delay == 3 && Facing == eBlockFace::BLOCK_FACE_XP && Locked && Powered) return 4075;
			if (Delay == 3 && Facing == eBlockFace::BLOCK_FACE_XP && Locked && !Powered) return 4076;
			if (Delay == 3 && Facing == eBlockFace::BLOCK_FACE_XP && !Locked && Powered) return 4077;
			if (Delay == 3 && Facing == eBlockFace::BLOCK_FACE_XP && !Locked && !Powered) return 4078;
			if (Delay == 4 && Facing == eBlockFace::BLOCK_FACE_ZM && Locked && Powered) return 4079;
			if (Delay == 4 && Facing == eBlockFace::BLOCK_FACE_ZM && Locked && !Powered) return 4080;
			if (Delay == 4 && Facing == eBlockFace::BLOCK_FACE_ZM && !Locked && Powered) return 4081;
			if (Delay == 4 && Facing == eBlockFace::BLOCK_FACE_ZM && !Locked && !Powered) return 4082;
			if (Delay == 4 && Facing == eBlockFace::BLOCK_FACE_ZP && Locked && Powered) return 4083;
			if (Delay == 4 && Facing == eBlockFace::BLOCK_FACE_ZP && Locked && !Powered) return 4084;
			if (Delay == 4 && Facing == eBlockFace::BLOCK_FACE_ZP && !Locked && Powered) return 4085;
			if (Delay == 4 && Facing == eBlockFace::BLOCK_FACE_ZP && !Locked && !Powered) return 4086;
			if (Delay == 4 && Facing == eBlockFace::BLOCK_FACE_XM && Locked && Powered) return 4087;
			if (Delay == 4 && Facing == eBlockFace::BLOCK_FACE_XM && Locked && !Powered) return 4088;
			if (Delay == 4 && Facing == eBlockFace::BLOCK_FACE_XM && !Locked && Powered) return 4089;
			if (Delay == 4 && Facing == eBlockFace::BLOCK_FACE_XM && !Locked && !Powered) return 4090;
			if (Delay == 4 && Facing == eBlockFace::BLOCK_FACE_XP && Locked && Powered) return 4091;
			if (Delay == 4 && Facing == eBlockFace::BLOCK_FACE_XP && Locked && !Powered) return 4092;
			if (Delay == 4 && Facing == eBlockFace::BLOCK_FACE_XP && !Locked && Powered) return 4093;
			return 4094;
		}
		short Repeater();
		unsigned char Delay(short ID);
		eBlockFace Facing(short ID);
		bool Locked(short ID);
		bool Powered(short ID);
	}
	namespace RepeatingCommandBlock
	{
		constexpr short RepeatingCommandBlock(bool Conditional, eBlockFace Facing)
		{
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_ZM) return 9225;
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_XP) return 9226;
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_ZP) return 9227;
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_XM) return 9228;
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_YP) return 9229;
			if (Conditional && Facing == eBlockFace::BLOCK_FACE_YM) return 9230;
			if (!Conditional && Facing == eBlockFace::BLOCK_FACE_ZM) return 9231;
			if (!Conditional && Facing == eBlockFace::BLOCK_FACE_XP) return 9232;
			if (!Conditional && Facing == eBlockFace::BLOCK_FACE_ZP) return 9233;
			if (!Conditional && Facing == eBlockFace::BLOCK_FACE_XM) return 9234;
			if (!Conditional && Facing == eBlockFace::BLOCK_FACE_YP) return 9235;
			return 9236;
		}
		short RepeatingCommandBlock();
		bool Conditional(short ID);
		eBlockFace Facing(short ID);
	}
	namespace RespawnAnchor
	{
		constexpr short RespawnAnchor(unsigned char Charges)
		{
			if (Charges == 0) return 15829;
			if (Charges == 1) return 15830;
			if (Charges == 2) return 15831;
			if (Charges == 3) return 15832;
			return 15833;
		}
		short RespawnAnchor();
		unsigned char Charges(short ID);
	}
	namespace RoseBush
	{
		enum class Half
		{
			Upper,
			Lower
		};
		constexpr short RoseBush(enum Half Half)
		{
			if (Half == Half::Upper) return 7889;
			return 7890;
		}
		short RoseBush();
		enum Half Half(short ID);
	}
	namespace Sand
	{
		constexpr short Sand()
		{
			return 66;
		}
	}
	namespace Sandstone
	{
		constexpr short Sandstone()
		{
			return 246;
		}
	}
	namespace SandstoneSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short SandstoneSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8349;
			if (Type == Type::Bottom) return 8351;
			return 8353;
		}
		short SandstoneSlab();
		enum Type Type(short ID);
	}
	namespace SandstoneStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short SandstoneStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 5171;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 5173;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 5175;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 5177;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 5179;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 5181;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5183;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 5185;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5187;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 5189;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 5191;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 5193;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 5195;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 5197;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 5199;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 5201;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5203;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 5205;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5207;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 5209;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 5211;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 5213;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 5215;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 5217;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 5219;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 5221;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5223;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 5225;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5227;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 5229;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 5231;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 5233;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 5235;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 5237;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 5239;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 5241;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5243;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 5245;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5247;
			return 5249;
		}
		short SandstoneStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace SandstoneWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short SandstoneWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 13786;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 13787;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 13788;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 13792;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 13793;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 13794;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 13798;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 13799;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 13800;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 13804;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 13805;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 13806;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 13810;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 13811;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 13812;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 13816;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 13817;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 13818;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 13822;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 13823;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 13824;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 13828;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 13829;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 13830;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 13834;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 13835;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 13836;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 13840;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 13841;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 13842;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 13846;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 13847;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 13848;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 13852;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 13853;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 13854;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 13858;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 13859;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 13860;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 13864;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 13865;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 13866;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 13870;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 13871;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 13872;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 13876;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 13877;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 13878;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 13882;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 13883;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 13884;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 13888;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 13889;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 13890;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 13894;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 13895;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 13896;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 13900;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 13901;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 13902;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 13906;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 13907;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 13908;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 13912;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 13913;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 13914;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 13918;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 13919;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 13920;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 13924;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 13925;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 13926;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 13930;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 13931;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 13932;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 13936;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 13937;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 13938;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 13942;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 13943;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 13944;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 13948;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 13949;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 13950;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 13954;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 13955;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 13956;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 13960;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 13961;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 13962;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 13966;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 13967;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 13968;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 13972;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 13973;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 13974;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 13978;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 13979;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 13980;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 13984;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 13985;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 13986;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 13990;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 13991;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 13992;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 13996;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 13997;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 13998;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 14002;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 14003;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 14004;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 14008;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 14009;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 14010;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 14014;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 14015;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 14016;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 14020;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 14021;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 14022;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 14026;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 14027;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 14028;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 14032;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 14033;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 14034;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 14038;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 14039;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 14040;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 14044;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 14045;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 14046;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 14050;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 14051;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 14052;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 14056;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 14057;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 14058;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 14062;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 14063;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 14064;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 14068;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 14069;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 14070;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 14074;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 14075;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 14076;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 14080;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 14081;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 14082;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 14086;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 14087;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 14088;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 14092;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 14093;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 14094;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 14098;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 14099;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 14100;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 14104;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 14105;
			return 14106;
		}
		short SandstoneWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace Scaffolding
	{
		constexpr short Scaffolding(bool Bottom, unsigned char Distance)
		{
			if (Bottom && Distance == 0) return 14756;
			if (Bottom && Distance == 1) return 14758;
			if (Bottom && Distance == 2) return 14760;
			if (Bottom && Distance == 3) return 14762;
			if (Bottom && Distance == 4) return 14764;
			if (Bottom && Distance == 5) return 14766;
			if (Bottom && Distance == 6) return 14768;
			if (Bottom && Distance == 7) return 14770;
			if (!Bottom && Distance == 0) return 14772;
			if (!Bottom && Distance == 1) return 14774;
			if (!Bottom && Distance == 2) return 14776;
			if (!Bottom && Distance == 3) return 14778;
			if (!Bottom && Distance == 4) return 14780;
			if (!Bottom && Distance == 5) return 14782;
			if (!Bottom && Distance == 6) return 14784;
			return 14786;
		}
		short Scaffolding();
		bool Bottom(short ID);
		unsigned char Distance(short ID);
	}
	namespace SeaLantern
	{
		constexpr short SeaLantern()
		{
			return 7862;
		}
	}
	namespace SeaPickle
	{
		constexpr short SeaPickle(unsigned char Pickles)
		{
			if (Pickles == 1) return 9641;
			if (Pickles == 2) return 9643;
			if (Pickles == 3) return 9645;
			return 9647;
		}
		short SeaPickle();
		unsigned char Pickles(short ID);
	}
	namespace Seagrass
	{
		constexpr short Seagrass()
		{
			return 1345;
		}
	}
	namespace Shroomlight
	{
		constexpr short Shroomlight()
		{
			return 14989;
		}
	}
	namespace ShulkerBox
	{
		constexpr short ShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9272;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9273;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9274;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9275;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9276;
			return 9277;
		}
		short ShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace SkeletonSkull
	{
		constexpr short SkeletonSkull(unsigned char Rotation)
		{
			if (Rotation == 0) return 6490;
			if (Rotation == 1) return 6491;
			if (Rotation == 2) return 6492;
			if (Rotation == 3) return 6493;
			if (Rotation == 4) return 6494;
			if (Rotation == 5) return 6495;
			if (Rotation == 6) return 6496;
			if (Rotation == 7) return 6497;
			if (Rotation == 8) return 6498;
			if (Rotation == 9) return 6499;
			if (Rotation == 10) return 6500;
			if (Rotation == 11) return 6501;
			if (Rotation == 12) return 6502;
			if (Rotation == 13) return 6503;
			if (Rotation == 14) return 6504;
			return 6505;
		}
		short SkeletonSkull();
		unsigned char Rotation(short ID);
	}
	namespace SkeletonWallSkull
	{
		constexpr short SkeletonWallSkull(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 6506;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 6507;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 6508;
			return 6509;
		}
		short SkeletonWallSkull();
		eBlockFace Facing(short ID);
	}
	namespace SlimeBlock
	{
		constexpr short SlimeBlock()
		{
			return 7535;
		}
	}
	namespace SmithingTable
	{
		constexpr short SmithingTable()
		{
			return 14849;
		}
	}
	namespace Smoker
	{
		constexpr short Smoker(eBlockFace Facing, bool Lit)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Lit) return 14803;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Lit) return 14804;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Lit) return 14805;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Lit) return 14806;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Lit) return 14807;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Lit) return 14808;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Lit) return 14809;
			return 14810;
		}
		short Smoker();
		eBlockFace Facing(short ID);
		bool Lit(short ID);
	}
	namespace SmoothQuartz
	{
		constexpr short SmoothQuartz()
		{
			return 8416;
		}
	}
	namespace SmoothQuartzSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short SmoothQuartzSlab(enum Type Type)
		{
			if (Type == Type::Top) return 10832;
			if (Type == Type::Bottom) return 10834;
			return 10836;
		}
		short SmoothQuartzSlab();
		enum Type Type(short ID);
	}
	namespace SmoothQuartzStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short SmoothQuartzStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 10310;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 10312;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 10314;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 10316;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 10318;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 10320;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10322;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10324;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10326;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10328;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 10330;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 10332;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 10334;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 10336;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 10338;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 10340;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10342;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10344;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10346;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 10348;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 10350;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 10352;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 10354;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 10356;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 10358;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 10360;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10362;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10364;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10366;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10368;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 10370;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 10372;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 10374;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 10376;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 10378;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 10380;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10382;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10384;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10386;
			return 10388;
		}
		short SmoothQuartzStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace SmoothRedSandstone
	{
		constexpr short SmoothRedSandstone()
		{
			return 8417;
		}
	}
	namespace SmoothRedSandstoneSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short SmoothRedSandstoneSlab(enum Type Type)
		{
			if (Type == Type::Top) return 10796;
			if (Type == Type::Bottom) return 10798;
			return 10800;
		}
		short SmoothRedSandstoneSlab();
		enum Type Type(short ID);
	}
	namespace SmoothRedSandstoneStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short SmoothRedSandstoneStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 9750;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 9752;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 9754;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 9756;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 9758;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 9760;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9762;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 9764;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9766;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 9768;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 9770;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 9772;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 9774;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 9776;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 9778;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 9780;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9782;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 9784;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9786;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 9788;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 9790;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 9792;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 9794;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 9796;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 9798;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 9800;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9802;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 9804;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9806;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 9808;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 9810;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 9812;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 9814;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 9816;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 9818;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 9820;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 9822;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 9824;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 9826;
			return 9828;
		}
		short SmoothRedSandstoneStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace SmoothSandstone
	{
		constexpr short SmoothSandstone()
		{
			return 8415;
		}
	}
	namespace SmoothSandstoneSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short SmoothSandstoneSlab(enum Type Type)
		{
			if (Type == Type::Top) return 10826;
			if (Type == Type::Bottom) return 10828;
			return 10830;
		}
		short SmoothSandstoneSlab();
		enum Type Type(short ID);
	}
	namespace SmoothSandstoneStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short SmoothSandstoneStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 10230;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 10232;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 10234;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 10236;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 10238;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 10240;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10242;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10244;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10246;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10248;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 10250;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 10252;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 10254;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 10256;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 10258;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 10260;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10262;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10264;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10266;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 10268;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 10270;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 10272;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 10274;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 10276;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 10278;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 10280;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10282;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10284;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10286;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10288;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 10290;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 10292;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 10294;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 10296;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 10298;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 10300;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10302;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10304;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10306;
			return 10308;
		}
		short SmoothSandstoneStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace SmoothStone
	{
		constexpr short SmoothStone()
		{
			return 8414;
		}
	}
	namespace SmoothStoneSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short SmoothStoneSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8343;
			if (Type == Type::Bottom) return 8345;
			return 8347;
		}
		short SmoothStoneSlab();
		enum Type Type(short ID);
	}
	namespace Snow
	{
		constexpr short Snow(unsigned char Layers)
		{
			if (Layers == 1) return 3921;
			if (Layers == 2) return 3922;
			if (Layers == 3) return 3923;
			if (Layers == 4) return 3924;
			if (Layers == 5) return 3925;
			if (Layers == 6) return 3926;
			if (Layers == 7) return 3927;
			return 3928;
		}
		short Snow();
		unsigned char Layers(short ID);
	}
	namespace SnowBlock
	{
		constexpr short SnowBlock()
		{
			return 3930;
		}
	}
	namespace SoulCampfire
	{
		constexpr short SoulCampfire(eBlockFace Facing, bool Lit, bool SignalFire)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Lit && SignalFire) return 14923;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Lit && !SignalFire) return 14925;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Lit && SignalFire) return 14927;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Lit && !SignalFire) return 14929;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Lit && SignalFire) return 14931;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Lit && !SignalFire) return 14933;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Lit && SignalFire) return 14935;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Lit && !SignalFire) return 14937;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Lit && SignalFire) return 14939;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Lit && !SignalFire) return 14941;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Lit && SignalFire) return 14943;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Lit && !SignalFire) return 14945;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Lit && SignalFire) return 14947;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Lit && !SignalFire) return 14949;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Lit && SignalFire) return 14951;
			return 14953;
		}
		short SoulCampfire();
		eBlockFace Facing(short ID);
		bool Lit(short ID);
		bool SignalFire(short ID);
	}
	namespace SoulFire
	{
		constexpr short SoulFire()
		{
			return 1952;
		}
	}
	namespace SoulLantern
	{
		constexpr short SoulLantern(bool Hanging)
		{
			if (Hanging) return 14888;
			return 14889;
		}
		short SoulLantern();
		bool Hanging(short ID);
	}
	namespace SoulSand
	{
		constexpr short SoulSand()
		{
			return 4000;
		}
	}
	namespace SoulSoil
	{
		constexpr short SoulSoil()
		{
			return 4001;
		}
	}
	namespace SoulTorch
	{
		constexpr short SoulTorch()
		{
			return 4008;
		}
	}
	namespace SoulWallTorch
	{
		constexpr short SoulWallTorch(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 4009;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 4010;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 4011;
			return 4012;
		}
		short SoulWallTorch();
		eBlockFace Facing(short ID);
	}
	namespace Spawner
	{
		constexpr short Spawner()
		{
			return 1953;
		}
	}
	namespace Sponge
	{
		constexpr short Sponge()
		{
			return 229;
		}
	}
	namespace SpruceButton
	{
		enum class Face
		{
			Floor,
			Wall,
			Ceiling
		};
		constexpr short SpruceButton(enum Face Face, eBlockFace Facing, bool Powered)
		{
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6370;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6371;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6372;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6373;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6374;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6375;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6376;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 6377;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6378;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6379;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6380;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6381;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6382;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6383;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6384;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 6385;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 6386;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 6387;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 6388;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 6389;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 6390;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 6391;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 6392;
			return 6393;
		}
		short SpruceButton();
		enum Face Face(short ID);
		eBlockFace Facing(short ID);
		bool Powered(short ID);
	}
	namespace SpruceDoor
	{
		enum class Half
		{
			Upper,
			Lower
		};
		enum class Hinge
		{
			Left,
			Right
		};
		constexpr short SpruceDoor(eBlockFace Facing, enum Half Half, enum Hinge Hinge, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8738;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8739;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8740;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8741;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8742;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8743;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 8744;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 8745;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 8746;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 8747;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 8748;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 8749;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 8750;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 8751;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 8752;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 8753;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8754;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8755;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8756;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8757;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8758;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8759;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 8760;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 8761;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 8762;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 8763;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 8764;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 8765;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 8766;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 8767;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 8768;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 8769;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8770;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8771;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8772;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8773;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8774;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8775;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 8776;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 8777;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 8778;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 8779;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 8780;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 8781;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 8782;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 8783;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 8784;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 8785;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 8786;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 8787;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 8788;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 8789;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 8790;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 8791;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 8792;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 8793;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 8794;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 8795;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 8796;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 8797;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 8798;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 8799;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 8800;
			return 8801;
		}
		short SpruceDoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Hinge Hinge(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace SpruceFence
	{
		constexpr short SpruceFence(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 8580;
			if (East && North && South && !West) return 8581;
			if (East && North && !South && West) return 8584;
			if (East && North && !South && !West) return 8585;
			if (East && !North && South && West) return 8588;
			if (East && !North && South && !West) return 8589;
			if (East && !North && !South && West) return 8592;
			if (East && !North && !South && !West) return 8593;
			if (!East && North && South && West) return 8596;
			if (!East && North && South && !West) return 8597;
			if (!East && North && !South && West) return 8600;
			if (!East && North && !South && !West) return 8601;
			if (!East && !North && South && West) return 8604;
			if (!East && !North && South && !West) return 8605;
			if (!East && !North && !South && West) return 8608;
			return 8609;
		}
		short SpruceFence();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace SpruceFenceGate
	{
		constexpr short SpruceFenceGate(eBlockFace Facing, bool InWall, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && Open && Powered) return 8418;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && Open && !Powered) return 8419;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && !Open && Powered) return 8420;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && !Open && !Powered) return 8421;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && Open && Powered) return 8422;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && Open && !Powered) return 8423;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && !Open && Powered) return 8424;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && !Open && !Powered) return 8425;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && Open && Powered) return 8426;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && Open && !Powered) return 8427;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && !Open && Powered) return 8428;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && !Open && !Powered) return 8429;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && Open && Powered) return 8430;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && Open && !Powered) return 8431;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && !Open && Powered) return 8432;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && !Open && !Powered) return 8433;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && Open && Powered) return 8434;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && Open && !Powered) return 8435;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && !Open && Powered) return 8436;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && !Open && !Powered) return 8437;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && Open && Powered) return 8438;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && Open && !Powered) return 8439;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && !Open && Powered) return 8440;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && !Open && !Powered) return 8441;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && Open && Powered) return 8442;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && Open && !Powered) return 8443;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && !Open && Powered) return 8444;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && !Open && !Powered) return 8445;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && Open && Powered) return 8446;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && Open && !Powered) return 8447;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && !Open && Powered) return 8448;
			return 8449;
		}
		short SpruceFenceGate();
		eBlockFace Facing(short ID);
		bool InWall(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace SpruceLeaves
	{
		constexpr short SpruceLeaves(unsigned char Distance, bool Persistent)
		{
			if (Distance == 1 && Persistent) return 159;
			if (Distance == 1 && !Persistent) return 160;
			if (Distance == 2 && Persistent) return 161;
			if (Distance == 2 && !Persistent) return 162;
			if (Distance == 3 && Persistent) return 163;
			if (Distance == 3 && !Persistent) return 164;
			if (Distance == 4 && Persistent) return 165;
			if (Distance == 4 && !Persistent) return 166;
			if (Distance == 5 && Persistent) return 167;
			if (Distance == 5 && !Persistent) return 168;
			if (Distance == 6 && Persistent) return 169;
			if (Distance == 6 && !Persistent) return 170;
			if (Distance == 7 && Persistent) return 171;
			return 172;
		}
		short SpruceLeaves();
		unsigned char Distance(short ID);
		bool Persistent(short ID);
	}
	namespace SpruceLog
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short SpruceLog(enum Axis Axis)
		{
			if (Axis == Axis::X) return 76;
			if (Axis == Axis::Y) return 77;
			return 78;
		}
		short SpruceLog();
		enum Axis Axis(short ID);
	}
	namespace SprucePlanks
	{
		constexpr short SprucePlanks()
		{
			return 16;
		}
	}
	namespace SprucePressurePlate
	{
		constexpr short SprucePressurePlate(bool Powered)
		{
			if (Powered) return 3875;
			return 3876;
		}
		short SprucePressurePlate();
		bool Powered(short ID);
	}
	namespace SpruceSapling
	{
		constexpr short SpruceSapling(unsigned char Stage)
		{
			if (Stage == 0) return 23;
			return 24;
		}
		short SpruceSapling();
		unsigned char Stage(short ID);
	}
	namespace SpruceSign
	{
		constexpr short SpruceSign(unsigned char Rotation)
		{
			if (Rotation == 0) return 3414;
			if (Rotation == 1) return 3416;
			if (Rotation == 2) return 3418;
			if (Rotation == 3) return 3420;
			if (Rotation == 4) return 3422;
			if (Rotation == 5) return 3424;
			if (Rotation == 6) return 3426;
			if (Rotation == 7) return 3428;
			if (Rotation == 8) return 3430;
			if (Rotation == 9) return 3432;
			if (Rotation == 10) return 3434;
			if (Rotation == 11) return 3436;
			if (Rotation == 12) return 3438;
			if (Rotation == 13) return 3440;
			if (Rotation == 14) return 3442;
			return 3444;
		}
		short SpruceSign();
		unsigned char Rotation(short ID);
	}
	namespace SpruceSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short SpruceSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8307;
			if (Type == Type::Bottom) return 8309;
			return 8311;
		}
		short SpruceSlab();
		enum Type Type(short ID);
	}
	namespace SpruceStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short SpruceStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 5405;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 5407;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 5409;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 5411;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 5413;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 5415;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5417;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 5419;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5421;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 5423;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 5425;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 5427;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 5429;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 5431;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 5433;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 5435;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5437;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 5439;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5441;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 5443;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 5445;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 5447;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 5449;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 5451;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 5453;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 5455;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5457;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 5459;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5461;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 5463;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 5465;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 5467;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 5469;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 5471;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 5473;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 5475;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5477;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 5479;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5481;
			return 5483;
		}
		short SpruceStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace SpruceTrapdoor
	{
		enum class Half
		{
			Top,
			Bottom
		};
		constexpr short SpruceTrapdoor(eBlockFace Facing, enum Half Half, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && Powered) return 4176;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && !Powered) return 4178;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && Powered) return 4180;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && !Powered) return 4182;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && Powered) return 4184;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && !Powered) return 4186;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && Powered) return 4188;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && !Powered) return 4190;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && Powered) return 4192;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && !Powered) return 4194;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && Powered) return 4196;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && !Powered) return 4198;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && Powered) return 4200;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && !Powered) return 4202;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && Powered) return 4204;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && !Powered) return 4206;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && Powered) return 4208;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && !Powered) return 4210;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && Powered) return 4212;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && !Powered) return 4214;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && Powered) return 4216;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && !Powered) return 4218;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && Powered) return 4220;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && !Powered) return 4222;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && Powered) return 4224;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && !Powered) return 4226;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && Powered) return 4228;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && !Powered) return 4230;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && Powered) return 4232;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && !Powered) return 4234;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && !Open && Powered) return 4236;
			return 4238;
		}
		short SpruceTrapdoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace SpruceWallSign
	{
		constexpr short SpruceWallSign(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 3744;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 3746;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 3748;
			return 3750;
		}
		short SpruceWallSign();
		eBlockFace Facing(short ID);
	}
	namespace SpruceWood
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short SpruceWood(enum Axis Axis)
		{
			if (Axis == Axis::X) return 112;
			if (Axis == Axis::Y) return 113;
			return 114;
		}
		short SpruceWood();
		enum Axis Axis(short ID);
	}
	namespace StickyPiston
	{
		constexpr short StickyPiston(bool Extended, eBlockFace Facing)
		{
			if (Extended && Facing == eBlockFace::BLOCK_FACE_ZM) return 1329;
			if (Extended && Facing == eBlockFace::BLOCK_FACE_XP) return 1330;
			if (Extended && Facing == eBlockFace::BLOCK_FACE_ZP) return 1331;
			if (Extended && Facing == eBlockFace::BLOCK_FACE_XM) return 1332;
			if (Extended && Facing == eBlockFace::BLOCK_FACE_YP) return 1333;
			if (Extended && Facing == eBlockFace::BLOCK_FACE_YM) return 1334;
			if (!Extended && Facing == eBlockFace::BLOCK_FACE_ZM) return 1335;
			if (!Extended && Facing == eBlockFace::BLOCK_FACE_XP) return 1336;
			if (!Extended && Facing == eBlockFace::BLOCK_FACE_ZP) return 1337;
			if (!Extended && Facing == eBlockFace::BLOCK_FACE_XM) return 1338;
			if (!Extended && Facing == eBlockFace::BLOCK_FACE_YP) return 1339;
			return 1340;
		}
		short StickyPiston();
		bool Extended(short ID);
		eBlockFace Facing(short ID);
	}
	namespace Stone
	{
		constexpr short Stone()
		{
			return 1;
		}
	}
	namespace StoneBrickSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short StoneBrickSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8379;
			if (Type == Type::Bottom) return 8381;
			return 8383;
		}
		short StoneBrickSlab();
		enum Type Type(short ID);
	}
	namespace StoneBrickStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short StoneBrickStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 4933;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 4935;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 4937;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 4939;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 4941;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 4943;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 4945;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 4947;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 4949;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 4951;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 4953;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 4955;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 4957;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 4959;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 4961;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 4963;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 4965;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 4967;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 4969;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 4971;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 4973;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 4975;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 4977;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 4979;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 4981;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 4983;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 4985;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 4987;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 4989;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 4991;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 4993;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 4995;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 4997;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 4999;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 5001;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 5003;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 5005;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 5007;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 5009;
			return 5011;
		}
		short StoneBrickStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace StoneBrickWall
	{
		enum class East
		{
			None,
			Low,
			Tall
		};
		enum class North
		{
			None,
			Low,
			Tall
		};
		enum class South
		{
			None,
			Low,
			Tall
		};
		enum class West
		{
			None,
			Low,
			Tall
		};
		constexpr short StoneBrickWall(enum East East, enum North North, enum South South, bool Up, enum West West)
		{
			if (East == East::None && North == North::None && South == South::None && Up && West == West::None) return 12490;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Low) return 12491;
			if (East == East::None && North == North::None && South == South::None && Up && West == West::Tall) return 12492;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::None) return 12496;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Low) return 12497;
			if (East == East::None && North == North::None && South == South::None && !Up && West == West::Tall) return 12498;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::None) return 12502;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Low) return 12503;
			if (East == East::None && North == North::None && South == South::Low && Up && West == West::Tall) return 12504;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::None) return 12508;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Low) return 12509;
			if (East == East::None && North == North::None && South == South::Low && !Up && West == West::Tall) return 12510;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::None) return 12514;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Low) return 12515;
			if (East == East::None && North == North::None && South == South::Tall && Up && West == West::Tall) return 12516;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::None) return 12520;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Low) return 12521;
			if (East == East::None && North == North::None && South == South::Tall && !Up && West == West::Tall) return 12522;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::None) return 12526;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Low) return 12527;
			if (East == East::None && North == North::Low && South == South::None && Up && West == West::Tall) return 12528;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::None) return 12532;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Low) return 12533;
			if (East == East::None && North == North::Low && South == South::None && !Up && West == West::Tall) return 12534;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::None) return 12538;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Low) return 12539;
			if (East == East::None && North == North::Low && South == South::Low && Up && West == West::Tall) return 12540;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::None) return 12544;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Low) return 12545;
			if (East == East::None && North == North::Low && South == South::Low && !Up && West == West::Tall) return 12546;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::None) return 12550;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Low) return 12551;
			if (East == East::None && North == North::Low && South == South::Tall && Up && West == West::Tall) return 12552;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::None) return 12556;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Low) return 12557;
			if (East == East::None && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 12558;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::None) return 12562;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Low) return 12563;
			if (East == East::None && North == North::Tall && South == South::None && Up && West == West::Tall) return 12564;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::None) return 12568;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Low) return 12569;
			if (East == East::None && North == North::Tall && South == South::None && !Up && West == West::Tall) return 12570;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::None) return 12574;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Low) return 12575;
			if (East == East::None && North == North::Tall && South == South::Low && Up && West == West::Tall) return 12576;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::None) return 12580;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Low) return 12581;
			if (East == East::None && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 12582;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::None) return 12586;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Low) return 12587;
			if (East == East::None && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 12588;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::None) return 12592;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 12593;
			if (East == East::None && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 12594;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::None) return 12598;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Low) return 12599;
			if (East == East::Low && North == North::None && South == South::None && Up && West == West::Tall) return 12600;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::None) return 12604;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Low) return 12605;
			if (East == East::Low && North == North::None && South == South::None && !Up && West == West::Tall) return 12606;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::None) return 12610;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Low) return 12611;
			if (East == East::Low && North == North::None && South == South::Low && Up && West == West::Tall) return 12612;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::None) return 12616;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Low) return 12617;
			if (East == East::Low && North == North::None && South == South::Low && !Up && West == West::Tall) return 12618;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::None) return 12622;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Low) return 12623;
			if (East == East::Low && North == North::None && South == South::Tall && Up && West == West::Tall) return 12624;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::None) return 12628;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Low) return 12629;
			if (East == East::Low && North == North::None && South == South::Tall && !Up && West == West::Tall) return 12630;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::None) return 12634;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Low) return 12635;
			if (East == East::Low && North == North::Low && South == South::None && Up && West == West::Tall) return 12636;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::None) return 12640;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Low) return 12641;
			if (East == East::Low && North == North::Low && South == South::None && !Up && West == West::Tall) return 12642;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::None) return 12646;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Low) return 12647;
			if (East == East::Low && North == North::Low && South == South::Low && Up && West == West::Tall) return 12648;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::None) return 12652;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Low) return 12653;
			if (East == East::Low && North == North::Low && South == South::Low && !Up && West == West::Tall) return 12654;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::None) return 12658;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Low) return 12659;
			if (East == East::Low && North == North::Low && South == South::Tall && Up && West == West::Tall) return 12660;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::None) return 12664;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Low) return 12665;
			if (East == East::Low && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 12666;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::None) return 12670;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Low) return 12671;
			if (East == East::Low && North == North::Tall && South == South::None && Up && West == West::Tall) return 12672;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::None) return 12676;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Low) return 12677;
			if (East == East::Low && North == North::Tall && South == South::None && !Up && West == West::Tall) return 12678;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::None) return 12682;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Low) return 12683;
			if (East == East::Low && North == North::Tall && South == South::Low && Up && West == West::Tall) return 12684;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::None) return 12688;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Low) return 12689;
			if (East == East::Low && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 12690;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::None) return 12694;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Low) return 12695;
			if (East == East::Low && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 12696;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::None) return 12700;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 12701;
			if (East == East::Low && North == North::Tall && South == South::Tall && !Up && West == West::Tall) return 12702;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::None) return 12706;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Low) return 12707;
			if (East == East::Tall && North == North::None && South == South::None && Up && West == West::Tall) return 12708;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::None) return 12712;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Low) return 12713;
			if (East == East::Tall && North == North::None && South == South::None && !Up && West == West::Tall) return 12714;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::None) return 12718;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Low) return 12719;
			if (East == East::Tall && North == North::None && South == South::Low && Up && West == West::Tall) return 12720;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::None) return 12724;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Low) return 12725;
			if (East == East::Tall && North == North::None && South == South::Low && !Up && West == West::Tall) return 12726;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::None) return 12730;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Low) return 12731;
			if (East == East::Tall && North == North::None && South == South::Tall && Up && West == West::Tall) return 12732;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::None) return 12736;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Low) return 12737;
			if (East == East::Tall && North == North::None && South == South::Tall && !Up && West == West::Tall) return 12738;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::None) return 12742;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Low) return 12743;
			if (East == East::Tall && North == North::Low && South == South::None && Up && West == West::Tall) return 12744;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::None) return 12748;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Low) return 12749;
			if (East == East::Tall && North == North::Low && South == South::None && !Up && West == West::Tall) return 12750;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::None) return 12754;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Low) return 12755;
			if (East == East::Tall && North == North::Low && South == South::Low && Up && West == West::Tall) return 12756;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::None) return 12760;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Low) return 12761;
			if (East == East::Tall && North == North::Low && South == South::Low && !Up && West == West::Tall) return 12762;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::None) return 12766;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Low) return 12767;
			if (East == East::Tall && North == North::Low && South == South::Tall && Up && West == West::Tall) return 12768;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::None) return 12772;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Low) return 12773;
			if (East == East::Tall && North == North::Low && South == South::Tall && !Up && West == West::Tall) return 12774;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::None) return 12778;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Low) return 12779;
			if (East == East::Tall && North == North::Tall && South == South::None && Up && West == West::Tall) return 12780;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::None) return 12784;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Low) return 12785;
			if (East == East::Tall && North == North::Tall && South == South::None && !Up && West == West::Tall) return 12786;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::None) return 12790;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Low) return 12791;
			if (East == East::Tall && North == North::Tall && South == South::Low && Up && West == West::Tall) return 12792;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::None) return 12796;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Low) return 12797;
			if (East == East::Tall && North == North::Tall && South == South::Low && !Up && West == West::Tall) return 12798;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::None) return 12802;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Low) return 12803;
			if (East == East::Tall && North == North::Tall && South == South::Tall && Up && West == West::Tall) return 12804;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::None) return 12808;
			if (East == East::Tall && North == North::Tall && South == South::Tall && !Up && West == West::Low) return 12809;
			return 12810;
		}
		short StoneBrickWall();
		enum East East(short ID);
		enum North North(short ID);
		enum South South(short ID);
		bool Up(short ID);
		enum West West(short ID);
	}
	namespace StoneBricks
	{
		constexpr short StoneBricks()
		{
			return 4495;
		}
	}
	namespace StoneButton
	{
		enum class Face
		{
			Floor,
			Wall,
			Ceiling
		};
		constexpr short StoneButton(enum Face Face, eBlockFace Facing, bool Powered)
		{
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 3897;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 3898;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 3899;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 3900;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 3901;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 3902;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 3903;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 3904;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 3905;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 3906;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 3907;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 3908;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 3909;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 3910;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 3911;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 3912;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 3913;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 3914;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 3915;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 3916;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 3917;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 3918;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 3919;
			return 3920;
		}
		short StoneButton();
		enum Face Face(short ID);
		eBlockFace Facing(short ID);
		bool Powered(short ID);
	}
	namespace StonePressurePlate
	{
		constexpr short StonePressurePlate(bool Powered)
		{
			if (Powered) return 3807;
			return 3808;
		}
		short StonePressurePlate();
		bool Powered(short ID);
	}
	namespace StoneSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short StoneSlab(enum Type Type)
		{
			if (Type == Type::Top) return 8337;
			if (Type == Type::Bottom) return 8339;
			return 8341;
		}
		short StoneSlab();
		enum Type Type(short ID);
	}
	namespace StoneStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short StoneStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 10150;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 10152;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 10154;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 10156;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 10158;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 10160;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10162;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10164;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10166;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10168;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 10170;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 10172;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 10174;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 10176;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 10178;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 10180;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10182;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10184;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10186;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 10188;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 10190;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 10192;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 10194;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 10196;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 10198;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 10200;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10202;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 10204;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10206;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 10208;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 10210;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 10212;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 10214;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 10216;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 10218;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 10220;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 10222;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 10224;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 10226;
			return 10228;
		}
		short StoneStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace Stonecutter
	{
		constexpr short Stonecutter(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 14850;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 14851;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 14852;
			return 14853;
		}
		short Stonecutter();
		eBlockFace Facing(short ID);
	}
	namespace StrippedAcaciaLog
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short StrippedAcaciaLog(enum Axis Axis)
		{
			if (Axis == Axis::X) return 100;
			if (Axis == Axis::Y) return 101;
			return 102;
		}
		short StrippedAcaciaLog();
		enum Axis Axis(short ID);
	}
	namespace StrippedAcaciaWood
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short StrippedAcaciaWood(enum Axis Axis)
		{
			if (Axis == Axis::X) return 139;
			if (Axis == Axis::Y) return 140;
			return 141;
		}
		short StrippedAcaciaWood();
		enum Axis Axis(short ID);
	}
	namespace StrippedBirchLog
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short StrippedBirchLog(enum Axis Axis)
		{
			if (Axis == Axis::X) return 94;
			if (Axis == Axis::Y) return 95;
			return 96;
		}
		short StrippedBirchLog();
		enum Axis Axis(short ID);
	}
	namespace StrippedBirchWood
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short StrippedBirchWood(enum Axis Axis)
		{
			if (Axis == Axis::X) return 133;
			if (Axis == Axis::Y) return 134;
			return 135;
		}
		short StrippedBirchWood();
		enum Axis Axis(short ID);
	}
	namespace StrippedCrimsonHyphae
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short StrippedCrimsonHyphae(enum Axis Axis)
		{
			if (Axis == Axis::X) return 14984;
			if (Axis == Axis::Y) return 14985;
			return 14986;
		}
		short StrippedCrimsonHyphae();
		enum Axis Axis(short ID);
	}
	namespace StrippedCrimsonStem
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short StrippedCrimsonStem(enum Axis Axis)
		{
			if (Axis == Axis::X) return 14978;
			if (Axis == Axis::Y) return 14979;
			return 14980;
		}
		short StrippedCrimsonStem();
		enum Axis Axis(short ID);
	}
	namespace StrippedDarkOakLog
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short StrippedDarkOakLog(enum Axis Axis)
		{
			if (Axis == Axis::X) return 103;
			if (Axis == Axis::Y) return 104;
			return 105;
		}
		short StrippedDarkOakLog();
		enum Axis Axis(short ID);
	}
	namespace StrippedDarkOakWood
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short StrippedDarkOakWood(enum Axis Axis)
		{
			if (Axis == Axis::X) return 142;
			if (Axis == Axis::Y) return 143;
			return 144;
		}
		short StrippedDarkOakWood();
		enum Axis Axis(short ID);
	}
	namespace StrippedJungleLog
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short StrippedJungleLog(enum Axis Axis)
		{
			if (Axis == Axis::X) return 97;
			if (Axis == Axis::Y) return 98;
			return 99;
		}
		short StrippedJungleLog();
		enum Axis Axis(short ID);
	}
	namespace StrippedJungleWood
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short StrippedJungleWood(enum Axis Axis)
		{
			if (Axis == Axis::X) return 136;
			if (Axis == Axis::Y) return 137;
			return 138;
		}
		short StrippedJungleWood();
		enum Axis Axis(short ID);
	}
	namespace StrippedOakLog
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short StrippedOakLog(enum Axis Axis)
		{
			if (Axis == Axis::X) return 106;
			if (Axis == Axis::Y) return 107;
			return 108;
		}
		short StrippedOakLog();
		enum Axis Axis(short ID);
	}
	namespace StrippedOakWood
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short StrippedOakWood(enum Axis Axis)
		{
			if (Axis == Axis::X) return 127;
			if (Axis == Axis::Y) return 128;
			return 129;
		}
		short StrippedOakWood();
		enum Axis Axis(short ID);
	}
	namespace StrippedSpruceLog
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short StrippedSpruceLog(enum Axis Axis)
		{
			if (Axis == Axis::X) return 91;
			if (Axis == Axis::Y) return 92;
			return 93;
		}
		short StrippedSpruceLog();
		enum Axis Axis(short ID);
	}
	namespace StrippedSpruceWood
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short StrippedSpruceWood(enum Axis Axis)
		{
			if (Axis == Axis::X) return 130;
			if (Axis == Axis::Y) return 131;
			return 132;
		}
		short StrippedSpruceWood();
		enum Axis Axis(short ID);
	}
	namespace StrippedWarpedHyphae
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short StrippedWarpedHyphae(enum Axis Axis)
		{
			if (Axis == Axis::X) return 14967;
			if (Axis == Axis::Y) return 14968;
			return 14969;
		}
		short StrippedWarpedHyphae();
		enum Axis Axis(short ID);
	}
	namespace StrippedWarpedStem
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short StrippedWarpedStem(enum Axis Axis)
		{
			if (Axis == Axis::X) return 14961;
			if (Axis == Axis::Y) return 14962;
			return 14963;
		}
		short StrippedWarpedStem();
		enum Axis Axis(short ID);
	}
	namespace StructureBlock
	{
		enum class Mode
		{
			Save,
			Load,
			Corner,
			Data
		};
		constexpr short StructureBlock(enum Mode Mode)
		{
			if (Mode == Mode::Save) return 15735;
			if (Mode == Mode::Load) return 15736;
			if (Mode == Mode::Corner) return 15737;
			return 15738;
		}
		short StructureBlock();
		enum Mode Mode(short ID);
	}
	namespace StructureVoid
	{
		constexpr short StructureVoid()
		{
			return 9259;
		}
	}
	namespace SugarCane
	{
		constexpr short SugarCane(unsigned char Age)
		{
			if (Age == 0) return 3948;
			if (Age == 1) return 3949;
			if (Age == 2) return 3950;
			if (Age == 3) return 3951;
			if (Age == 4) return 3952;
			if (Age == 5) return 3953;
			if (Age == 6) return 3954;
			if (Age == 7) return 3955;
			if (Age == 8) return 3956;
			if (Age == 9) return 3957;
			if (Age == 10) return 3958;
			if (Age == 11) return 3959;
			if (Age == 12) return 3960;
			if (Age == 13) return 3961;
			if (Age == 14) return 3962;
			return 3963;
		}
		short SugarCane();
		unsigned char Age(short ID);
	}
	namespace Sunflower
	{
		enum class Half
		{
			Upper,
			Lower
		};
		constexpr short Sunflower(enum Half Half)
		{
			if (Half == Half::Upper) return 7885;
			return 7886;
		}
		short Sunflower();
		enum Half Half(short ID);
	}
	namespace SweetBerryBush
	{
		constexpr short SweetBerryBush(unsigned char Age)
		{
			if (Age == 0) return 14954;
			if (Age == 1) return 14955;
			if (Age == 2) return 14956;
			return 14957;
		}
		short SweetBerryBush();
		unsigned char Age(short ID);
	}
	namespace TNT
	{
		constexpr short TNT(bool Unstable)
		{
			if (Unstable) return 1430;
			return 1431;
		}
		short TNT();
		bool Unstable(short ID);
	}
	namespace TallGrass
	{
		enum class Half
		{
			Upper,
			Lower
		};
		constexpr short TallGrass(enum Half Half)
		{
			if (Half == Half::Upper) return 7893;
			return 7894;
		}
		short TallGrass();
		enum Half Half(short ID);
	}
	namespace TallSeagrass
	{
		enum class Half
		{
			Upper,
			Lower
		};
		constexpr short TallSeagrass(enum Half Half)
		{
			if (Half == Half::Upper) return 1346;
			return 1347;
		}
		short TallSeagrass();
		enum Half Half(short ID);
	}
	namespace Target
	{
		constexpr short Target(unsigned char Power)
		{
			if (Power == 0) return 15760;
			if (Power == 1) return 15761;
			if (Power == 2) return 15762;
			if (Power == 3) return 15763;
			if (Power == 4) return 15764;
			if (Power == 5) return 15765;
			if (Power == 6) return 15766;
			if (Power == 7) return 15767;
			if (Power == 8) return 15768;
			if (Power == 9) return 15769;
			if (Power == 10) return 15770;
			if (Power == 11) return 15771;
			if (Power == 12) return 15772;
			if (Power == 13) return 15773;
			if (Power == 14) return 15774;
			return 15775;
		}
		short Target();
		unsigned char Power(short ID);
	}
	namespace Terracotta
	{
		constexpr short Terracotta()
		{
			return 7882;
		}
	}
	namespace Torch
	{
		constexpr short Torch()
		{
			return 1435;
		}
	}
	namespace TrappedChest
	{
		enum class Type
		{
			Single,
			Left,
			Right
		};
		constexpr short TrappedChest(eBlockFace Facing, enum Type Type)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Type == Type::Single) return 6623;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Type == Type::Left) return 6625;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Type == Type::Right) return 6627;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Type == Type::Single) return 6629;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Type == Type::Left) return 6631;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Type == Type::Right) return 6633;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Type == Type::Single) return 6635;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Type == Type::Left) return 6637;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Type == Type::Right) return 6639;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Type == Type::Single) return 6641;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Type == Type::Left) return 6643;
			return 6645;
		}
		short TrappedChest();
		eBlockFace Facing(short ID);
		enum Type Type(short ID);
	}
	namespace Tripwire
	{
		constexpr short Tripwire(bool Attached, bool Disarmed, bool East, bool North, bool Powered, bool South, bool West)
		{
			if (Attached && Disarmed && East && North && Powered && South && West) return 5275;
			if (Attached && Disarmed && East && North && Powered && South && !West) return 5276;
			if (Attached && Disarmed && East && North && Powered && !South && West) return 5277;
			if (Attached && Disarmed && East && North && Powered && !South && !West) return 5278;
			if (Attached && Disarmed && East && North && !Powered && South && West) return 5279;
			if (Attached && Disarmed && East && North && !Powered && South && !West) return 5280;
			if (Attached && Disarmed && East && North && !Powered && !South && West) return 5281;
			if (Attached && Disarmed && East && North && !Powered && !South && !West) return 5282;
			if (Attached && Disarmed && East && !North && Powered && South && West) return 5283;
			if (Attached && Disarmed && East && !North && Powered && South && !West) return 5284;
			if (Attached && Disarmed && East && !North && Powered && !South && West) return 5285;
			if (Attached && Disarmed && East && !North && Powered && !South && !West) return 5286;
			if (Attached && Disarmed && East && !North && !Powered && South && West) return 5287;
			if (Attached && Disarmed && East && !North && !Powered && South && !West) return 5288;
			if (Attached && Disarmed && East && !North && !Powered && !South && West) return 5289;
			if (Attached && Disarmed && East && !North && !Powered && !South && !West) return 5290;
			if (Attached && Disarmed && !East && North && Powered && South && West) return 5291;
			if (Attached && Disarmed && !East && North && Powered && South && !West) return 5292;
			if (Attached && Disarmed && !East && North && Powered && !South && West) return 5293;
			if (Attached && Disarmed && !East && North && Powered && !South && !West) return 5294;
			if (Attached && Disarmed && !East && North && !Powered && South && West) return 5295;
			if (Attached && Disarmed && !East && North && !Powered && South && !West) return 5296;
			if (Attached && Disarmed && !East && North && !Powered && !South && West) return 5297;
			if (Attached && Disarmed && !East && North && !Powered && !South && !West) return 5298;
			if (Attached && Disarmed && !East && !North && Powered && South && West) return 5299;
			if (Attached && Disarmed && !East && !North && Powered && South && !West) return 5300;
			if (Attached && Disarmed && !East && !North && Powered && !South && West) return 5301;
			if (Attached && Disarmed && !East && !North && Powered && !South && !West) return 5302;
			if (Attached && Disarmed && !East && !North && !Powered && South && West) return 5303;
			if (Attached && Disarmed && !East && !North && !Powered && South && !West) return 5304;
			if (Attached && Disarmed && !East && !North && !Powered && !South && West) return 5305;
			if (Attached && Disarmed && !East && !North && !Powered && !South && !West) return 5306;
			if (Attached && !Disarmed && East && North && Powered && South && West) return 5307;
			if (Attached && !Disarmed && East && North && Powered && South && !West) return 5308;
			if (Attached && !Disarmed && East && North && Powered && !South && West) return 5309;
			if (Attached && !Disarmed && East && North && Powered && !South && !West) return 5310;
			if (Attached && !Disarmed && East && North && !Powered && South && West) return 5311;
			if (Attached && !Disarmed && East && North && !Powered && South && !West) return 5312;
			if (Attached && !Disarmed && East && North && !Powered && !South && West) return 5313;
			if (Attached && !Disarmed && East && North && !Powered && !South && !West) return 5314;
			if (Attached && !Disarmed && East && !North && Powered && South && West) return 5315;
			if (Attached && !Disarmed && East && !North && Powered && South && !West) return 5316;
			if (Attached && !Disarmed && East && !North && Powered && !South && West) return 5317;
			if (Attached && !Disarmed && East && !North && Powered && !South && !West) return 5318;
			if (Attached && !Disarmed && East && !North && !Powered && South && West) return 5319;
			if (Attached && !Disarmed && East && !North && !Powered && South && !West) return 5320;
			if (Attached && !Disarmed && East && !North && !Powered && !South && West) return 5321;
			if (Attached && !Disarmed && East && !North && !Powered && !South && !West) return 5322;
			if (Attached && !Disarmed && !East && North && Powered && South && West) return 5323;
			if (Attached && !Disarmed && !East && North && Powered && South && !West) return 5324;
			if (Attached && !Disarmed && !East && North && Powered && !South && West) return 5325;
			if (Attached && !Disarmed && !East && North && Powered && !South && !West) return 5326;
			if (Attached && !Disarmed && !East && North && !Powered && South && West) return 5327;
			if (Attached && !Disarmed && !East && North && !Powered && South && !West) return 5328;
			if (Attached && !Disarmed && !East && North && !Powered && !South && West) return 5329;
			if (Attached && !Disarmed && !East && North && !Powered && !South && !West) return 5330;
			if (Attached && !Disarmed && !East && !North && Powered && South && West) return 5331;
			if (Attached && !Disarmed && !East && !North && Powered && South && !West) return 5332;
			if (Attached && !Disarmed && !East && !North && Powered && !South && West) return 5333;
			if (Attached && !Disarmed && !East && !North && Powered && !South && !West) return 5334;
			if (Attached && !Disarmed && !East && !North && !Powered && South && West) return 5335;
			if (Attached && !Disarmed && !East && !North && !Powered && South && !West) return 5336;
			if (Attached && !Disarmed && !East && !North && !Powered && !South && West) return 5337;
			if (Attached && !Disarmed && !East && !North && !Powered && !South && !West) return 5338;
			if (!Attached && Disarmed && East && North && Powered && South && West) return 5339;
			if (!Attached && Disarmed && East && North && Powered && South && !West) return 5340;
			if (!Attached && Disarmed && East && North && Powered && !South && West) return 5341;
			if (!Attached && Disarmed && East && North && Powered && !South && !West) return 5342;
			if (!Attached && Disarmed && East && North && !Powered && South && West) return 5343;
			if (!Attached && Disarmed && East && North && !Powered && South && !West) return 5344;
			if (!Attached && Disarmed && East && North && !Powered && !South && West) return 5345;
			if (!Attached && Disarmed && East && North && !Powered && !South && !West) return 5346;
			if (!Attached && Disarmed && East && !North && Powered && South && West) return 5347;
			if (!Attached && Disarmed && East && !North && Powered && South && !West) return 5348;
			if (!Attached && Disarmed && East && !North && Powered && !South && West) return 5349;
			if (!Attached && Disarmed && East && !North && Powered && !South && !West) return 5350;
			if (!Attached && Disarmed && East && !North && !Powered && South && West) return 5351;
			if (!Attached && Disarmed && East && !North && !Powered && South && !West) return 5352;
			if (!Attached && Disarmed && East && !North && !Powered && !South && West) return 5353;
			if (!Attached && Disarmed && East && !North && !Powered && !South && !West) return 5354;
			if (!Attached && Disarmed && !East && North && Powered && South && West) return 5355;
			if (!Attached && Disarmed && !East && North && Powered && South && !West) return 5356;
			if (!Attached && Disarmed && !East && North && Powered && !South && West) return 5357;
			if (!Attached && Disarmed && !East && North && Powered && !South && !West) return 5358;
			if (!Attached && Disarmed && !East && North && !Powered && South && West) return 5359;
			if (!Attached && Disarmed && !East && North && !Powered && South && !West) return 5360;
			if (!Attached && Disarmed && !East && North && !Powered && !South && West) return 5361;
			if (!Attached && Disarmed && !East && North && !Powered && !South && !West) return 5362;
			if (!Attached && Disarmed && !East && !North && Powered && South && West) return 5363;
			if (!Attached && Disarmed && !East && !North && Powered && South && !West) return 5364;
			if (!Attached && Disarmed && !East && !North && Powered && !South && West) return 5365;
			if (!Attached && Disarmed && !East && !North && Powered && !South && !West) return 5366;
			if (!Attached && Disarmed && !East && !North && !Powered && South && West) return 5367;
			if (!Attached && Disarmed && !East && !North && !Powered && South && !West) return 5368;
			if (!Attached && Disarmed && !East && !North && !Powered && !South && West) return 5369;
			if (!Attached && Disarmed && !East && !North && !Powered && !South && !West) return 5370;
			if (!Attached && !Disarmed && East && North && Powered && South && West) return 5371;
			if (!Attached && !Disarmed && East && North && Powered && South && !West) return 5372;
			if (!Attached && !Disarmed && East && North && Powered && !South && West) return 5373;
			if (!Attached && !Disarmed && East && North && Powered && !South && !West) return 5374;
			if (!Attached && !Disarmed && East && North && !Powered && South && West) return 5375;
			if (!Attached && !Disarmed && East && North && !Powered && South && !West) return 5376;
			if (!Attached && !Disarmed && East && North && !Powered && !South && West) return 5377;
			if (!Attached && !Disarmed && East && North && !Powered && !South && !West) return 5378;
			if (!Attached && !Disarmed && East && !North && Powered && South && West) return 5379;
			if (!Attached && !Disarmed && East && !North && Powered && South && !West) return 5380;
			if (!Attached && !Disarmed && East && !North && Powered && !South && West) return 5381;
			if (!Attached && !Disarmed && East && !North && Powered && !South && !West) return 5382;
			if (!Attached && !Disarmed && East && !North && !Powered && South && West) return 5383;
			if (!Attached && !Disarmed && East && !North && !Powered && South && !West) return 5384;
			if (!Attached && !Disarmed && East && !North && !Powered && !South && West) return 5385;
			if (!Attached && !Disarmed && East && !North && !Powered && !South && !West) return 5386;
			if (!Attached && !Disarmed && !East && North && Powered && South && West) return 5387;
			if (!Attached && !Disarmed && !East && North && Powered && South && !West) return 5388;
			if (!Attached && !Disarmed && !East && North && Powered && !South && West) return 5389;
			if (!Attached && !Disarmed && !East && North && Powered && !South && !West) return 5390;
			if (!Attached && !Disarmed && !East && North && !Powered && South && West) return 5391;
			if (!Attached && !Disarmed && !East && North && !Powered && South && !West) return 5392;
			if (!Attached && !Disarmed && !East && North && !Powered && !South && West) return 5393;
			if (!Attached && !Disarmed && !East && North && !Powered && !South && !West) return 5394;
			if (!Attached && !Disarmed && !East && !North && Powered && South && West) return 5395;
			if (!Attached && !Disarmed && !East && !North && Powered && South && !West) return 5396;
			if (!Attached && !Disarmed && !East && !North && Powered && !South && West) return 5397;
			if (!Attached && !Disarmed && !East && !North && Powered && !South && !West) return 5398;
			if (!Attached && !Disarmed && !East && !North && !Powered && South && West) return 5399;
			if (!Attached && !Disarmed && !East && !North && !Powered && South && !West) return 5400;
			if (!Attached && !Disarmed && !East && !North && !Powered && !South && West) return 5401;
			return 5402;
		}
		short Tripwire();
		bool Attached(short ID);
		bool Disarmed(short ID);
		bool East(short ID);
		bool North(short ID);
		bool Powered(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace TripwireHook
	{
		constexpr short TripwireHook(bool Attached, eBlockFace Facing, bool Powered)
		{
			if (Attached && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 5259;
			if (Attached && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 5260;
			if (Attached && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 5261;
			if (Attached && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 5262;
			if (Attached && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 5263;
			if (Attached && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 5264;
			if (Attached && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 5265;
			if (Attached && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 5266;
			if (!Attached && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 5267;
			if (!Attached && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 5268;
			if (!Attached && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 5269;
			if (!Attached && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 5270;
			if (!Attached && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 5271;
			if (!Attached && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 5272;
			if (!Attached && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 5273;
			return 5274;
		}
		short TripwireHook();
		bool Attached(short ID);
		eBlockFace Facing(short ID);
		bool Powered(short ID);
	}
	namespace TubeCoral
	{
		constexpr short TubeCoral()
		{
			return 9531;
		}
	}
	namespace TubeCoralBlock
	{
		constexpr short TubeCoralBlock()
		{
			return 9515;
		}
	}
	namespace TubeCoralFan
	{
		constexpr short TubeCoralFan()
		{
			return 9551;
		}
	}
	namespace TubeCoralWallFan
	{
		constexpr short TubeCoralWallFan(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9601;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9603;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9605;
			return 9607;
		}
		short TubeCoralWallFan();
		eBlockFace Facing(short ID);
	}
	namespace TurtleEgg
	{
		constexpr short TurtleEgg(unsigned char Eggs, unsigned char Hatch)
		{
			if (Eggs == 1 && Hatch == 0) return 9498;
			if (Eggs == 1 && Hatch == 1) return 9499;
			if (Eggs == 1 && Hatch == 2) return 9500;
			if (Eggs == 2 && Hatch == 0) return 9501;
			if (Eggs == 2 && Hatch == 1) return 9502;
			if (Eggs == 2 && Hatch == 2) return 9503;
			if (Eggs == 3 && Hatch == 0) return 9504;
			if (Eggs == 3 && Hatch == 1) return 9505;
			if (Eggs == 3 && Hatch == 2) return 9506;
			if (Eggs == 4 && Hatch == 0) return 9507;
			if (Eggs == 4 && Hatch == 1) return 9508;
			return 9509;
		}
		short TurtleEgg();
		unsigned char Eggs(short ID);
		unsigned char Hatch(short ID);
	}
	namespace TwistingVines
	{
		constexpr short TwistingVines(unsigned char Age)
		{
			if (Age == 0) return 15017;
			if (Age == 1) return 15018;
			if (Age == 2) return 15019;
			if (Age == 3) return 15020;
			if (Age == 4) return 15021;
			if (Age == 5) return 15022;
			if (Age == 6) return 15023;
			if (Age == 7) return 15024;
			if (Age == 8) return 15025;
			if (Age == 9) return 15026;
			if (Age == 10) return 15027;
			if (Age == 11) return 15028;
			if (Age == 12) return 15029;
			if (Age == 13) return 15030;
			if (Age == 14) return 15031;
			if (Age == 15) return 15032;
			if (Age == 16) return 15033;
			if (Age == 17) return 15034;
			if (Age == 18) return 15035;
			if (Age == 19) return 15036;
			if (Age == 20) return 15037;
			if (Age == 21) return 15038;
			if (Age == 22) return 15039;
			if (Age == 23) return 15040;
			if (Age == 24) return 15041;
			return 15042;
		}
		short TwistingVines();
		unsigned char Age(short ID);
	}
	namespace TwistingVinesPlant
	{
		constexpr short TwistingVinesPlant()
		{
			return 15043;
		}
	}
	namespace Vine
	{
		constexpr short Vine(bool East, bool North, bool South, bool Up, bool West)
		{
			if (East && North && South && Up && West) return 4788;
			if (East && North && South && Up && !West) return 4789;
			if (East && North && South && !Up && West) return 4790;
			if (East && North && South && !Up && !West) return 4791;
			if (East && North && !South && Up && West) return 4792;
			if (East && North && !South && Up && !West) return 4793;
			if (East && North && !South && !Up && West) return 4794;
			if (East && North && !South && !Up && !West) return 4795;
			if (East && !North && South && Up && West) return 4796;
			if (East && !North && South && Up && !West) return 4797;
			if (East && !North && South && !Up && West) return 4798;
			if (East && !North && South && !Up && !West) return 4799;
			if (East && !North && !South && Up && West) return 4800;
			if (East && !North && !South && Up && !West) return 4801;
			if (East && !North && !South && !Up && West) return 4802;
			if (East && !North && !South && !Up && !West) return 4803;
			if (!East && North && South && Up && West) return 4804;
			if (!East && North && South && Up && !West) return 4805;
			if (!East && North && South && !Up && West) return 4806;
			if (!East && North && South && !Up && !West) return 4807;
			if (!East && North && !South && Up && West) return 4808;
			if (!East && North && !South && Up && !West) return 4809;
			if (!East && North && !South && !Up && West) return 4810;
			if (!East && North && !South && !Up && !West) return 4811;
			if (!East && !North && South && Up && West) return 4812;
			if (!East && !North && South && Up && !West) return 4813;
			if (!East && !North && South && !Up && West) return 4814;
			if (!East && !North && South && !Up && !West) return 4815;
			if (!East && !North && !South && Up && West) return 4816;
			if (!East && !North && !South && Up && !West) return 4817;
			if (!East && !North && !South && !Up && West) return 4818;
			return 4819;
		}
		short Vine();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool Up(short ID);
		bool West(short ID);
	}
	namespace VoidAir
	{
		constexpr short VoidAir()
		{
			return 9665;
		}
	}
	namespace WallTorch
	{
		constexpr short WallTorch(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 1436;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 1437;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 1438;
			return 1439;
		}
		short WallTorch();
		eBlockFace Facing(short ID);
	}
	namespace WarpedButton
	{
		enum class Face
		{
			Floor,
			Wall,
			Ceiling
		};
		constexpr short WarpedButton(enum Face Face, eBlockFace Facing, bool Powered)
		{
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 15503;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 15504;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 15505;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 15506;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 15507;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 15508;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 15509;
			if (Face == Face::Floor && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 15510;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 15511;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 15512;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 15513;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 15514;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 15515;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 15516;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 15517;
			if (Face == Face::Wall && Facing == eBlockFace::BLOCK_FACE_XP && !Powered) return 15518;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && Powered) return 15519;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZM && !Powered) return 15520;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && Powered) return 15521;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_ZP && !Powered) return 15522;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && Powered) return 15523;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XM && !Powered) return 15524;
			if (Face == Face::Ceiling && Facing == eBlockFace::BLOCK_FACE_XP && Powered) return 15525;
			return 15526;
		}
		short WarpedButton();
		enum Face Face(short ID);
		eBlockFace Facing(short ID);
		bool Powered(short ID);
	}
	namespace WarpedDoor
	{
		enum class Half
		{
			Upper,
			Lower
		};
		enum class Hinge
		{
			Left,
			Right
		};
		constexpr short WarpedDoor(eBlockFace Facing, enum Half Half, enum Hinge Hinge, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 15591;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 15592;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 15593;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 15594;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 15595;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 15596;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 15597;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 15598;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 15599;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 15600;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 15601;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 15602;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 15603;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 15604;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 15605;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 15606;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 15607;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 15608;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 15609;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 15610;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 15611;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 15612;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 15613;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 15614;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 15615;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 15616;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 15617;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 15618;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 15619;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 15620;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 15621;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 15622;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 15623;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 15624;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 15625;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 15626;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 15627;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 15628;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 15629;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 15630;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 15631;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 15632;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 15633;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 15634;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 15635;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 15636;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 15637;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Lower && Hinge == Hinge::Right && !Open && !Powered) return 15638;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && Powered) return 15639;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && Open && !Powered) return 15640;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && Powered) return 15641;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Left && !Open && !Powered) return 15642;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && Powered) return 15643;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && Open && !Powered) return 15644;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && Powered) return 15645;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Upper && Hinge == Hinge::Right && !Open && !Powered) return 15646;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && Powered) return 15647;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && Open && !Powered) return 15648;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && Powered) return 15649;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Left && !Open && !Powered) return 15650;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && Powered) return 15651;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && Open && !Powered) return 15652;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Lower && Hinge == Hinge::Right && !Open && Powered) return 15653;
			return 15654;
		}
		short WarpedDoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Hinge Hinge(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace WarpedFence
	{
		constexpr short WarpedFence(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 15097;
			if (East && North && South && !West) return 15098;
			if (East && North && !South && West) return 15101;
			if (East && North && !South && !West) return 15102;
			if (East && !North && South && West) return 15105;
			if (East && !North && South && !West) return 15106;
			if (East && !North && !South && West) return 15109;
			if (East && !North && !South && !West) return 15110;
			if (!East && North && South && West) return 15113;
			if (!East && North && South && !West) return 15114;
			if (!East && North && !South && West) return 15117;
			if (!East && North && !South && !West) return 15118;
			if (!East && !North && South && West) return 15121;
			if (!East && !North && South && !West) return 15122;
			if (!East && !North && !South && West) return 15125;
			return 15126;
		}
		short WarpedFence();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace WarpedFenceGate
	{
		constexpr short WarpedFenceGate(eBlockFace Facing, bool InWall, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && Open && Powered) return 15287;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && Open && !Powered) return 15288;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && !Open && Powered) return 15289;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && InWall && !Open && !Powered) return 15290;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && Open && Powered) return 15291;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && Open && !Powered) return 15292;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && !Open && Powered) return 15293;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !InWall && !Open && !Powered) return 15294;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && Open && Powered) return 15295;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && Open && !Powered) return 15296;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && !Open && Powered) return 15297;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && InWall && !Open && !Powered) return 15298;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && Open && Powered) return 15299;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && Open && !Powered) return 15300;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && !Open && Powered) return 15301;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !InWall && !Open && !Powered) return 15302;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && Open && Powered) return 15303;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && Open && !Powered) return 15304;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && !Open && Powered) return 15305;
			if (Facing == eBlockFace::BLOCK_FACE_XM && InWall && !Open && !Powered) return 15306;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && Open && Powered) return 15307;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && Open && !Powered) return 15308;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && !Open && Powered) return 15309;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !InWall && !Open && !Powered) return 15310;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && Open && Powered) return 15311;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && Open && !Powered) return 15312;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && !Open && Powered) return 15313;
			if (Facing == eBlockFace::BLOCK_FACE_XP && InWall && !Open && !Powered) return 15314;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && Open && Powered) return 15315;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && Open && !Powered) return 15316;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !InWall && !Open && Powered) return 15317;
			return 15318;
		}
		short WarpedFenceGate();
		eBlockFace Facing(short ID);
		bool InWall(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace WarpedFungus
	{
		constexpr short WarpedFungus()
		{
			return 14971;
		}
	}
	namespace WarpedHyphae
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short WarpedHyphae(enum Axis Axis)
		{
			if (Axis == Axis::X) return 14964;
			if (Axis == Axis::Y) return 14965;
			return 14966;
		}
		short WarpedHyphae();
		enum Axis Axis(short ID);
	}
	namespace WarpedNylium
	{
		constexpr short WarpedNylium()
		{
			return 14970;
		}
	}
	namespace WarpedPlanks
	{
		constexpr short WarpedPlanks()
		{
			return 15046;
		}
	}
	namespace WarpedPressurePlate
	{
		constexpr short WarpedPressurePlate(bool Powered)
		{
			if (Powered) return 15061;
			return 15062;
		}
		short WarpedPressurePlate();
		bool Powered(short ID);
	}
	namespace WarpedRoots
	{
		constexpr short WarpedRoots()
		{
			return 14973;
		}
	}
	namespace WarpedSign
	{
		constexpr short WarpedSign(unsigned char Rotation)
		{
			if (Rotation == 0) return 15688;
			if (Rotation == 1) return 15690;
			if (Rotation == 2) return 15692;
			if (Rotation == 3) return 15694;
			if (Rotation == 4) return 15696;
			if (Rotation == 5) return 15698;
			if (Rotation == 6) return 15700;
			if (Rotation == 7) return 15702;
			if (Rotation == 8) return 15704;
			if (Rotation == 9) return 15706;
			if (Rotation == 10) return 15708;
			if (Rotation == 11) return 15710;
			if (Rotation == 12) return 15712;
			if (Rotation == 13) return 15714;
			if (Rotation == 14) return 15716;
			return 15718;
		}
		short WarpedSign();
		unsigned char Rotation(short ID);
	}
	namespace WarpedSlab
	{
		enum class Type
		{
			Top,
			Bottom,
			Double
		};
		constexpr short WarpedSlab(enum Type Type)
		{
			if (Type == Type::Top) return 15054;
			if (Type == Type::Bottom) return 15056;
			return 15058;
		}
		short WarpedSlab();
		enum Type Type(short ID);
	}
	namespace WarpedStairs
	{
		enum class Half
		{
			Top,
			Bottom
		};
		enum class Shape
		{
			Straight,
			InnerLeft,
			InnerRight,
			OuterLeft,
			OuterRight
		};
		constexpr short WarpedStairs(eBlockFace Facing, enum Half Half, enum Shape Shape)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::Straight) return 15400;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerLeft) return 15402;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::InnerRight) return 15404;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterLeft) return 15406;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Shape == Shape::OuterRight) return 15408;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::Straight) return 15410;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 15412;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::InnerRight) return 15414;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 15416;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Shape == Shape::OuterRight) return 15418;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::Straight) return 15420;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerLeft) return 15422;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::InnerRight) return 15424;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterLeft) return 15426;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Shape == Shape::OuterRight) return 15428;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::Straight) return 15430;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 15432;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::InnerRight) return 15434;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 15436;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Shape == Shape::OuterRight) return 15438;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::Straight) return 15440;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerLeft) return 15442;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::InnerRight) return 15444;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterLeft) return 15446;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Shape == Shape::OuterRight) return 15448;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::Straight) return 15450;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerLeft) return 15452;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::InnerRight) return 15454;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterLeft) return 15456;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Shape == Shape::OuterRight) return 15458;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::Straight) return 15460;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerLeft) return 15462;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::InnerRight) return 15464;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterLeft) return 15466;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Shape == Shape::OuterRight) return 15468;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::Straight) return 15470;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerLeft) return 15472;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::InnerRight) return 15474;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Shape == Shape::OuterLeft) return 15476;
			return 15478;
		}
		short WarpedStairs();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		enum Shape Shape(short ID);
	}
	namespace WarpedStem
	{
		enum class Axis
		{
			X,
			Y,
			Z
		};
		constexpr short WarpedStem(enum Axis Axis)
		{
			if (Axis == Axis::X) return 14958;
			if (Axis == Axis::Y) return 14959;
			return 14960;
		}
		short WarpedStem();
		enum Axis Axis(short ID);
	}
	namespace WarpedTrapdoor
	{
		enum class Half
		{
			Top,
			Bottom
		};
		constexpr short WarpedTrapdoor(eBlockFace Facing, enum Half Half, bool Open, bool Powered)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && Powered) return 15192;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && Open && !Powered) return 15194;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && Powered) return 15196;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Top && !Open && !Powered) return 15198;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && Powered) return 15200;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && Open && !Powered) return 15202;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && Powered) return 15204;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Half == Half::Bottom && !Open && !Powered) return 15206;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && Powered) return 15208;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && Open && !Powered) return 15210;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && Powered) return 15212;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Top && !Open && !Powered) return 15214;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && Powered) return 15216;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && Open && !Powered) return 15218;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && Powered) return 15220;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Half == Half::Bottom && !Open && !Powered) return 15222;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && Powered) return 15224;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && Open && !Powered) return 15226;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && Powered) return 15228;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Top && !Open && !Powered) return 15230;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && Powered) return 15232;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && Open && !Powered) return 15234;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && Powered) return 15236;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Half == Half::Bottom && !Open && !Powered) return 15238;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && Powered) return 15240;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && Open && !Powered) return 15242;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && Powered) return 15244;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Top && !Open && !Powered) return 15246;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && Powered) return 15248;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && Open && !Powered) return 15250;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Half == Half::Bottom && !Open && Powered) return 15252;
			return 15254;
		}
		short WarpedTrapdoor();
		eBlockFace Facing(short ID);
		enum Half Half(short ID);
		bool Open(short ID);
		bool Powered(short ID);
	}
	namespace WarpedWallSign
	{
		constexpr short WarpedWallSign(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 15728;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 15730;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 15732;
			return 15734;
		}
		short WarpedWallSign();
		eBlockFace Facing(short ID);
	}
	namespace WarpedWartBlock
	{
		constexpr short WarpedWartBlock()
		{
			return 14972;
		}
	}
	namespace Water
	{
		constexpr short Water(unsigned char Level)
		{
			if (Level == 0) return 34;
			if (Level == 1) return 35;
			if (Level == 2) return 36;
			if (Level == 3) return 37;
			if (Level == 4) return 38;
			if (Level == 5) return 39;
			if (Level == 6) return 40;
			if (Level == 7) return 41;
			if (Level == 8) return 42;
			if (Level == 9) return 43;
			if (Level == 10) return 44;
			if (Level == 11) return 45;
			if (Level == 12) return 46;
			if (Level == 13) return 47;
			if (Level == 14) return 48;
			return 49;
		}
		short Water();
		unsigned char Level(short ID);
	}
	namespace WeepingVines
	{
		constexpr short WeepingVines(unsigned char Age)
		{
			if (Age == 0) return 14990;
			if (Age == 1) return 14991;
			if (Age == 2) return 14992;
			if (Age == 3) return 14993;
			if (Age == 4) return 14994;
			if (Age == 5) return 14995;
			if (Age == 6) return 14996;
			if (Age == 7) return 14997;
			if (Age == 8) return 14998;
			if (Age == 9) return 14999;
			if (Age == 10) return 15000;
			if (Age == 11) return 15001;
			if (Age == 12) return 15002;
			if (Age == 13) return 15003;
			if (Age == 14) return 15004;
			if (Age == 15) return 15005;
			if (Age == 16) return 15006;
			if (Age == 17) return 15007;
			if (Age == 18) return 15008;
			if (Age == 19) return 15009;
			if (Age == 20) return 15010;
			if (Age == 21) return 15011;
			if (Age == 22) return 15012;
			if (Age == 23) return 15013;
			if (Age == 24) return 15014;
			return 15015;
		}
		short WeepingVines();
		unsigned char Age(short ID);
	}
	namespace WeepingVinesPlant
	{
		constexpr short WeepingVinesPlant()
		{
			return 15016;
		}
	}
	namespace WetSponge
	{
		constexpr short WetSponge()
		{
			return 230;
		}
	}
	namespace Wheat
	{
		constexpr short Wheat(unsigned char Age)
		{
			if (Age == 0) return 3357;
			if (Age == 1) return 3358;
			if (Age == 2) return 3359;
			if (Age == 3) return 3360;
			if (Age == 4) return 3361;
			if (Age == 5) return 3362;
			if (Age == 6) return 3363;
			return 3364;
		}
		short Wheat();
		unsigned char Age(short ID);
	}
	namespace WhiteBanner
	{
		constexpr short WhiteBanner(unsigned char Rotation)
		{
			if (Rotation == 0) return 7897;
			if (Rotation == 1) return 7898;
			if (Rotation == 2) return 7899;
			if (Rotation == 3) return 7900;
			if (Rotation == 4) return 7901;
			if (Rotation == 5) return 7902;
			if (Rotation == 6) return 7903;
			if (Rotation == 7) return 7904;
			if (Rotation == 8) return 7905;
			if (Rotation == 9) return 7906;
			if (Rotation == 10) return 7907;
			if (Rotation == 11) return 7908;
			if (Rotation == 12) return 7909;
			if (Rotation == 13) return 7910;
			if (Rotation == 14) return 7911;
			return 7912;
		}
		short WhiteBanner();
		unsigned char Rotation(short ID);
	}
	namespace WhiteBed
	{
		enum class Part
		{
			Head,
			Foot
		};
		constexpr short WhiteBed(eBlockFace Facing, bool Occupied, enum Part Part)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Head) return 1049;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Foot) return 1050;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Head) return 1051;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Foot) return 1052;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Head) return 1053;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Foot) return 1054;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Head) return 1055;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Foot) return 1056;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Head) return 1057;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Foot) return 1058;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Head) return 1059;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Foot) return 1060;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Head) return 1061;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Foot) return 1062;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Occupied && Part == Part::Head) return 1063;
			return 1064;
		}
		short WhiteBed();
		eBlockFace Facing(short ID);
		bool Occupied(short ID);
		enum Part Part(short ID);
	}
	namespace WhiteCarpet
	{
		constexpr short WhiteCarpet()
		{
			return 7866;
		}
	}
	namespace WhiteConcrete
	{
		constexpr short WhiteConcrete()
		{
			return 9438;
		}
	}
	namespace WhiteConcretePowder
	{
		constexpr short WhiteConcretePowder()
		{
			return 9454;
		}
	}
	namespace WhiteGlazedTerracotta
	{
		constexpr short WhiteGlazedTerracotta(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9374;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9375;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9376;
			return 9377;
		}
		short WhiteGlazedTerracotta();
		eBlockFace Facing(short ID);
	}
	namespace WhiteShulkerBox
	{
		constexpr short WhiteShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9278;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9279;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9280;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9281;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9282;
			return 9283;
		}
		short WhiteShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace WhiteStainedGlass
	{
		constexpr short WhiteStainedGlass()
		{
			return 4095;
		}
	}
	namespace WhiteStainedGlassPane
	{
		constexpr short WhiteStainedGlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 6865;
			if (East && North && South && !West) return 6866;
			if (East && North && !South && West) return 6869;
			if (East && North && !South && !West) return 6870;
			if (East && !North && South && West) return 6873;
			if (East && !North && South && !West) return 6874;
			if (East && !North && !South && West) return 6877;
			if (East && !North && !South && !West) return 6878;
			if (!East && North && South && West) return 6881;
			if (!East && North && South && !West) return 6882;
			if (!East && North && !South && West) return 6885;
			if (!East && North && !South && !West) return 6886;
			if (!East && !North && South && West) return 6889;
			if (!East && !North && South && !West) return 6890;
			if (!East && !North && !South && West) return 6893;
			return 6894;
		}
		short WhiteStainedGlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace WhiteTerracotta
	{
		constexpr short WhiteTerracotta()
		{
			return 6847;
		}
	}
	namespace WhiteTulip
	{
		constexpr short WhiteTulip()
		{
			return 1419;
		}
	}
	namespace WhiteWallBanner
	{
		constexpr short WhiteWallBanner(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 8153;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 8154;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 8155;
			return 8156;
		}
		short WhiteWallBanner();
		eBlockFace Facing(short ID);
	}
	namespace WhiteWool
	{
		constexpr short WhiteWool()
		{
			return 1384;
		}
	}
	namespace WitherRose
	{
		constexpr short WitherRose()
		{
			return 1423;
		}
	}
	namespace WitherSkeletonSkull
	{
		constexpr short WitherSkeletonSkull(unsigned char Rotation)
		{
			if (Rotation == 0) return 6510;
			if (Rotation == 1) return 6511;
			if (Rotation == 2) return 6512;
			if (Rotation == 3) return 6513;
			if (Rotation == 4) return 6514;
			if (Rotation == 5) return 6515;
			if (Rotation == 6) return 6516;
			if (Rotation == 7) return 6517;
			if (Rotation == 8) return 6518;
			if (Rotation == 9) return 6519;
			if (Rotation == 10) return 6520;
			if (Rotation == 11) return 6521;
			if (Rotation == 12) return 6522;
			if (Rotation == 13) return 6523;
			if (Rotation == 14) return 6524;
			return 6525;
		}
		short WitherSkeletonSkull();
		unsigned char Rotation(short ID);
	}
	namespace WitherSkeletonWallSkull
	{
		constexpr short WitherSkeletonWallSkull(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 6526;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 6527;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 6528;
			return 6529;
		}
		short WitherSkeletonWallSkull();
		eBlockFace Facing(short ID);
	}
	namespace YellowBanner
	{
		constexpr short YellowBanner(unsigned char Rotation)
		{
			if (Rotation == 0) return 7961;
			if (Rotation == 1) return 7962;
			if (Rotation == 2) return 7963;
			if (Rotation == 3) return 7964;
			if (Rotation == 4) return 7965;
			if (Rotation == 5) return 7966;
			if (Rotation == 6) return 7967;
			if (Rotation == 7) return 7968;
			if (Rotation == 8) return 7969;
			if (Rotation == 9) return 7970;
			if (Rotation == 10) return 7971;
			if (Rotation == 11) return 7972;
			if (Rotation == 12) return 7973;
			if (Rotation == 13) return 7974;
			if (Rotation == 14) return 7975;
			return 7976;
		}
		short YellowBanner();
		unsigned char Rotation(short ID);
	}
	namespace YellowBed
	{
		enum class Part
		{
			Head,
			Foot
		};
		constexpr short YellowBed(eBlockFace Facing, bool Occupied, enum Part Part)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Head) return 1113;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && Occupied && Part == Part::Foot) return 1114;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Head) return 1115;
			if (Facing == eBlockFace::BLOCK_FACE_ZM && !Occupied && Part == Part::Foot) return 1116;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Head) return 1117;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && Occupied && Part == Part::Foot) return 1118;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Head) return 1119;
			if (Facing == eBlockFace::BLOCK_FACE_ZP && !Occupied && Part == Part::Foot) return 1120;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Head) return 1121;
			if (Facing == eBlockFace::BLOCK_FACE_XM && Occupied && Part == Part::Foot) return 1122;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Head) return 1123;
			if (Facing == eBlockFace::BLOCK_FACE_XM && !Occupied && Part == Part::Foot) return 1124;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Head) return 1125;
			if (Facing == eBlockFace::BLOCK_FACE_XP && Occupied && Part == Part::Foot) return 1126;
			if (Facing == eBlockFace::BLOCK_FACE_XP && !Occupied && Part == Part::Head) return 1127;
			return 1128;
		}
		short YellowBed();
		eBlockFace Facing(short ID);
		bool Occupied(short ID);
		enum Part Part(short ID);
	}
	namespace YellowCarpet
	{
		constexpr short YellowCarpet()
		{
			return 7870;
		}
	}
	namespace YellowConcrete
	{
		constexpr short YellowConcrete()
		{
			return 9442;
		}
	}
	namespace YellowConcretePowder
	{
		constexpr short YellowConcretePowder()
		{
			return 9458;
		}
	}
	namespace YellowGlazedTerracotta
	{
		constexpr short YellowGlazedTerracotta(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9390;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9391;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9392;
			return 9393;
		}
		short YellowGlazedTerracotta();
		eBlockFace Facing(short ID);
	}
	namespace YellowShulkerBox
	{
		constexpr short YellowShulkerBox(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 9302;
			if (Facing == eBlockFace::BLOCK_FACE_XP) return 9303;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 9304;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 9305;
			if (Facing == eBlockFace::BLOCK_FACE_YP) return 9306;
			return 9307;
		}
		short YellowShulkerBox();
		eBlockFace Facing(short ID);
	}
	namespace YellowStainedGlass
	{
		constexpr short YellowStainedGlass()
		{
			return 4099;
		}
	}
	namespace YellowStainedGlassPane
	{
		constexpr short YellowStainedGlassPane(bool East, bool North, bool South, bool West)
		{
			if (East && North && South && West) return 6993;
			if (East && North && South && !West) return 6994;
			if (East && North && !South && West) return 6997;
			if (East && North && !South && !West) return 6998;
			if (East && !North && South && West) return 7001;
			if (East && !North && South && !West) return 7002;
			if (East && !North && !South && West) return 7005;
			if (East && !North && !South && !West) return 7006;
			if (!East && North && South && West) return 7009;
			if (!East && North && South && !West) return 7010;
			if (!East && North && !South && West) return 7013;
			if (!East && North && !South && !West) return 7014;
			if (!East && !North && South && West) return 7017;
			if (!East && !North && South && !West) return 7018;
			if (!East && !North && !South && West) return 7021;
			return 7022;
		}
		short YellowStainedGlassPane();
		bool East(short ID);
		bool North(short ID);
		bool South(short ID);
		bool West(short ID);
	}
	namespace YellowTerracotta
	{
		constexpr short YellowTerracotta()
		{
			return 6851;
		}
	}
	namespace YellowWallBanner
	{
		constexpr short YellowWallBanner(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 8169;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 8170;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 8171;
			return 8172;
		}
		short YellowWallBanner();
		eBlockFace Facing(short ID);
	}
	namespace YellowWool
	{
		constexpr short YellowWool()
		{
			return 1388;
		}
	}
	namespace ZombieHead
	{
		constexpr short ZombieHead(unsigned char Rotation)
		{
			if (Rotation == 0) return 6530;
			if (Rotation == 1) return 6531;
			if (Rotation == 2) return 6532;
			if (Rotation == 3) return 6533;
			if (Rotation == 4) return 6534;
			if (Rotation == 5) return 6535;
			if (Rotation == 6) return 6536;
			if (Rotation == 7) return 6537;
			if (Rotation == 8) return 6538;
			if (Rotation == 9) return 6539;
			if (Rotation == 10) return 6540;
			if (Rotation == 11) return 6541;
			if (Rotation == 12) return 6542;
			if (Rotation == 13) return 6543;
			if (Rotation == 14) return 6544;
			return 6545;
		}
		short ZombieHead();
		unsigned char Rotation(short ID);
	}
	namespace ZombieWallHead
	{
		constexpr short ZombieWallHead(eBlockFace Facing)
		{
			if (Facing == eBlockFace::BLOCK_FACE_ZM) return 6546;
			if (Facing == eBlockFace::BLOCK_FACE_ZP) return 6547;
			if (Facing == eBlockFace::BLOCK_FACE_XM) return 6548;
			return 6549;
		}
		short ZombieWallHead();
		eBlockFace Facing(short ID);
	}
}
