#include "Globals.h" #include "ItemHandler.h" #include "../World.h" #include "../Entities/Player.h" #include "../FastRandom.h" #include "../BlockInServerPluginInterface.h" #include "../Chunk.h" // Handlers: #include "ItemAnvil.h" #include "ItemArmor.h" #include "ItemAxe.h" #include "ItemBanner.h" #include "ItemBed.h" #include "ItemBigFlower.h" #include "ItemBoat.h" #include "ItemBottle.h" #include "ItemBow.h" #include "ItemBucket.h" #include "ItemButton.h" #include "ItemChest.h" #include "ItemChorusFruit.h" #include "ItemCloth.h" #include "ItemComparator.h" #include "ItemCookedFish.h" #include "ItemDefaultItem.h" #include "ItemDoor.h" #include "ItemDropSpenser.h" #include "ItemDye.h" #include "ItemEmptyMap.h" #include "ItemEnchantingTable.h" #include "ItemEndCrystal.h" #include "ItemEnderchest.h" #include "ItemEndPortalFrame.h" #include "ItemEyeOfEnder.h" #include "ItemFenceGate.h" #include "ItemFishingRod.h" #include "ItemFood.h" #include "ItemFoodSeeds.h" #include "ItemFurnace.h" #include "ItemGlazedTerracotta.h" #include "ItemGoldenApple.h" #include "ItemHoe.h" #include "ItemHopper.h" #include "ItemItemFrame.h" #include "ItemJackOLantern.h" #include "ItemLadder.h" #include "ItemLeaves.h" #include "ItemLever.h" #include "ItemLighter.h" #include "ItemLilypad.h" #include "ItemMap.h" #include "ItemMilk.h" #include "ItemMinecart.h" #include "ItemMobHead.h" #include "ItemNetherWart.h" #include "ItemObserver.h" #include "ItemPainting.h" #include "ItemPickaxe.h" #include "ItemPiston.h" #include "ItemPlanks.h" #include "ItemPoisonousPotato.h" #include "ItemPotion.h" #include "ItemPumpkin.h" #include "ItemQuartz.h" #include "ItemRail.h" #include "ItemRawChicken.h" #include "ItemRawFish.h" #include "ItemRedstoneDust.h" #include "ItemRedstoneRepeater.h" #include "ItemRottenFlesh.h" #include "ItemSapling.h" #include "ItemSeeds.h" #include "ItemShears.h" #include "ItemShovel.h" #include "ItemSideways.h" #include "ItemSign.h" #include "ItemSlab.h" #include "ItemSnow.h" #include "ItemSoup.h" #include "ItemSpawnEgg.h" #include "ItemSpiderEye.h" #include "ItemStairs.h" #include "ItemSword.h" #include "ItemThrowable.h" #include "ItemTorch.h" #include "ItemTrapdoor.h" #include "ItemTripwireHook.h" #include "ItemVine.h" #include "../Blocks/BlockHandler.h" #include "SimplePlaceableItemHandler.h" namespace { constexpr cDefaultItemHandler Item11DiscHandler (E_ITEM_11_DISC); constexpr cDefaultItemHandler Item13DiscHandler (E_ITEM_13_DISC); constexpr cItemBoatHandler ItemAcaciaBoatHandler (E_ITEM_ACACIA_BOAT); constexpr cDefaultItemHandler ItemAcaciaDoorBlockHandler (E_BLOCK_ACACIA_DOOR); constexpr cItemDoorHandler ItemAcaciaDoorHandler (E_ITEM_ACACIA_DOOR); constexpr cItemFenceGateHandler ItemAcaciaFenceGateHandler (E_BLOCK_ACACIA_FENCE_GATE); constexpr cDefaultItemHandler ItemAcaciaFenceHandler (E_BLOCK_ACACIA_FENCE); constexpr cItemStairsHandler ItemAcaciaStairsHandler (E_BLOCK_ACACIA_WOOD_STAIRS); constexpr cItemRailHandler ItemActivatorRailHandler (E_BLOCK_ACTIVATOR_RAIL); constexpr cDefaultItemHandler ItemActiveComparatorHandler (E_BLOCK_ACTIVE_COMPARATOR); constexpr cDefaultItemHandler ItemAirHandler (E_BLOCK_AIR); constexpr cItemAnvilHandler ItemAnvilHandler (E_BLOCK_ANVIL); constexpr cItemSimpleFoodHandler ItemAppleHandler (E_ITEM_RED_APPLE, cItemHandler::FoodInfo(4, 2.4)); constexpr cDefaultItemHandler ItemArmorStandHandler (E_ITEM_ARMOR_STAND); constexpr cDefaultItemHandler ItemArrowHandler (E_ITEM_ARROW); constexpr cItemSimpleFoodHandler ItemBakedPotatoHandler (E_ITEM_BAKED_POTATO, cItemHandler::FoodInfo(5, 6)); constexpr cItemBannerHandler ItemBannerHandler (E_ITEM_BANNER); constexpr cDefaultItemHandler ItemBarrierHandler (E_BLOCK_BARRIER); constexpr cDefaultItemHandler ItemBeaconHandler (E_BLOCK_BEACON); constexpr cItemBedHandler ItemBedBlockHandler (E_BLOCK_BED); constexpr cItemBedHandler ItemBedHandler (E_ITEM_BED); constexpr cDefaultItemHandler ItemBedrockHandler (E_BLOCK_BEDROCK); constexpr cItemSimpleFoodHandler ItemBeetrootHandler (E_ITEM_BEETROOT, cItemHandler::FoodInfo(1, 1.2)); constexpr cItemSimpleSeedsHandler ItemBeetrootSeedsHandler (E_ITEM_BEETROOT_SEEDS); constexpr cItemSoupHandler ItemBeetrootSoupHandler (E_ITEM_BEETROOT_SOUP, cItemHandler::FoodInfo(6, 7.2)); constexpr cDefaultItemHandler ItemBeetrootsBlockHandler (E_BLOCK_BEETROOTS); constexpr cItemBigFlowerHandler ItemBigFlowerHandler (E_BLOCK_BIG_FLOWER); constexpr cItemBoatHandler ItemBirchBoatHandler (E_ITEM_BIRCH_BOAT); constexpr cItemDoorHandler ItemBirchDoorHandler (E_ITEM_BIRCH_DOOR); constexpr cItemFenceGateHandler ItemBirchFenceGateHandler (E_BLOCK_BIRCH_FENCE_GATE); constexpr cDefaultItemHandler ItemBirchFenceHandler (E_BLOCK_BIRCH_FENCE); constexpr cItemStairsHandler ItemBirchStairsHandler (E_BLOCK_BIRCH_WOOD_STAIRS); constexpr cItemGlazedTerracottaHandler ItemBlackGlazedTerracottaHandler (E_BLOCK_BLACK_GLAZED_TERRACOTTA); constexpr cDefaultItemHandler ItemBlackShulkerBoxHandler (E_BLOCK_BLACK_SHULKER_BOX); constexpr cDefaultItemHandler ItemBlazePowderHandler (E_ITEM_BLAZE_POWDER); constexpr cDefaultItemHandler ItemBlazeRodHandler (E_ITEM_BLAZE_ROD); constexpr cDefaultItemHandler ItemBlocksDiscHandler (E_ITEM_BLOCKS_DISC); constexpr cItemGlazedTerracottaHandler ItemBlueGlazedTerracottaHandler (E_BLOCK_BLUE_GLAZED_TERRACOTTA); constexpr cDefaultItemHandler ItemBlueShulkerBoxHandler (E_BLOCK_BLUE_SHULKER_BOX); constexpr cDefaultItemHandler ItemBoneBlockHandler (E_BLOCK_BONE_BLOCK); constexpr cDefaultItemHandler ItemBoneHandler (E_ITEM_BONE); constexpr cDefaultItemHandler ItemBookAndQuillHandler (E_ITEM_BOOK_AND_QUILL); constexpr cDefaultItemHandler ItemBookHandler (E_ITEM_BOOK); constexpr cDefaultItemHandler ItemBookshelfHandler (E_BLOCK_BOOKCASE); constexpr cItemBottleOEnchantingHandler ItemBottleOEnchantingHandler (E_ITEM_BOTTLE_O_ENCHANTING); constexpr cItemBowHandler ItemBowHandler (E_ITEM_BOW); constexpr cDefaultItemHandler ItemBowlHandler (E_ITEM_BOWL); constexpr cItemSimpleFoodHandler ItemBreadHandler (E_ITEM_BREAD, cItemHandler::FoodInfo(5, 6)); constexpr cDefaultItemHandler ItemBrewingStandBlockHandler (E_BLOCK_BREWING_STAND); constexpr cSimplePlaceableItemHandler ItemBrewingStandHandler (E_ITEM_BREWING_STAND, E_BLOCK_BREWING_STAND); constexpr cDefaultItemHandler ItemBrickHandler (E_ITEM_CLAY_BRICK); constexpr cDefaultItemHandler ItemBricksHandler (E_BLOCK_BRICK); constexpr cItemStairsHandler ItemBricksStairsHandler (E_BLOCK_BRICK_STAIRS); constexpr cItemGlazedTerracottaHandler ItemBrownGlazedTerracottaHandler (E_BLOCK_BROWN_GLAZED_TERRACOTTA); constexpr cDefaultItemHandler ItemBrownMushroomBlockHandler (E_BLOCK_BROWN_MUSHROOM); constexpr cDefaultItemHandler ItemBrownShulkerBoxHandler (E_BLOCK_BROWN_SHULKER_BOX); constexpr cItemBucketHandler ItemBucketHandler (E_ITEM_BUCKET); constexpr cDefaultItemHandler ItemCactusHandler (E_BLOCK_CACTUS); constexpr cDefaultItemHandler ItemCakeBlockHandler (E_BLOCK_CAKE); constexpr cSimplePlaceableItemHandler ItemCakeHandler (E_ITEM_CAKE, E_BLOCK_CAKE); constexpr cDefaultItemHandler ItemCarpetHandler (E_BLOCK_CARPET); constexpr cItemFoodSeedsHandler ItemCarrotHandler (E_ITEM_CARROT, cItemHandler::FoodInfo(3, 6.6)); constexpr cDefaultItemHandler ItemCarrotOnStickHandler (E_ITEM_CARROT_ON_STICK); constexpr cDefaultItemHandler ItemCarrotsBlockHandler (E_BLOCK_CARROTS); constexpr cDefaultItemHandler ItemCatDiscHandler (E_ITEM_CAT_DISC); constexpr cDefaultItemHandler ItemCauldronBlockHandler (E_BLOCK_CAULDRON); constexpr cSimplePlaceableItemHandler ItemCauldronHandler (E_ITEM_CAULDRON, E_BLOCK_CAULDRON);; constexpr cItemArmorHandler ItemChainBootsHandler (E_ITEM_CHAIN_BOOTS); constexpr cItemArmorHandler ItemChainChestplateHandler (E_ITEM_CHAIN_CHESTPLATE); constexpr cDefaultItemHandler ItemChainCommandBlockHandler (E_BLOCK_CHAIN_COMMAND_BLOCK); constexpr cItemArmorHandler ItemChainHelmetHandler (E_ITEM_CHAIN_HELMET); constexpr cItemArmorHandler ItemChainLeggingsHandler (E_ITEM_CHAIN_LEGGINGS); constexpr cDefaultItemHandler ItemChestBlockHandler (E_BLOCK_CHEST); constexpr cItemMinecartHandler ItemChestMinecartHandler (E_ITEM_CHEST_MINECART); constexpr cDefaultItemHandler ItemChirpDiscHandler (E_ITEM_CHIRP_DISC); constexpr cDefaultItemHandler ItemChorusFlowerHandler (E_BLOCK_CHORUS_FLOWER); constexpr cItemChorusFruitHandler ItemChorusFruitHandler (E_ITEM_CHORUS_FRUIT); constexpr cDefaultItemHandler ItemChorusPlantHandler (E_BLOCK_CHORUS_PLANT); constexpr cDefaultItemHandler ItemClayBlockHandler (E_BLOCK_CLAY); constexpr cDefaultItemHandler ItemClayHandler (E_ITEM_CLAY); constexpr cDefaultItemHandler ItemClockHandler (E_ITEM_CLOCK); constexpr cDefaultItemHandler ItemCoalBlockHandler (E_BLOCK_BLOCK_OF_COAL); constexpr cDefaultItemHandler ItemCoalHandler (E_ITEM_COAL); constexpr cDefaultItemHandler ItemCoalOreHandler (E_BLOCK_COAL_ORE); constexpr cDefaultItemHandler ItemCobblestoneHandler (E_BLOCK_COBBLESTONE); constexpr cItemStairsHandler ItemCobblestoneStairsHandler (E_BLOCK_COBBLESTONE_STAIRS); constexpr cDefaultItemHandler ItemCobblestoneWallHandler (E_BLOCK_COBBLESTONE_WALL); constexpr cDefaultItemHandler ItemCobwebHandler (E_BLOCK_COBWEB); constexpr cDefaultItemHandler ItemCocoaPodHandler (E_BLOCK_COCOA_POD); constexpr cDefaultItemHandler ItemCommandBlockHandler (E_BLOCK_COMMAND_BLOCK); constexpr cDefaultItemHandler ItemComparatorHandler (E_ITEM_COMPARATOR); constexpr cDefaultItemHandler ItemCompassHandler (E_ITEM_COMPASS); constexpr cDefaultItemHandler ItemConcreteBlockHandler (E_BLOCK_CONCRETE); constexpr cDefaultItemHandler ItemConcretePowderHandler (E_BLOCK_CONCRETE_POWDER); constexpr cItemSimpleFoodHandler ItemCookedBeefHandler (E_ITEM_STEAK, cItemHandler::FoodInfo(8, 12.8)); constexpr cItemSimpleFoodHandler ItemCookedChickenHandler (E_ITEM_COOKED_CHICKEN, cItemHandler::FoodInfo(6, 7.2)); constexpr cItemCookedFishHandler ItemCookedFishHandler (E_ITEM_COOKED_FISH); constexpr cItemSimpleFoodHandler ItemCookedMuttonHandler (E_ITEM_COOKED_MUTTON, cItemHandler::FoodInfo(6, 9.6)); constexpr cItemSimpleFoodHandler ItemCookedPorkchopHandler (E_ITEM_COOKED_PORKCHOP, cItemHandler::FoodInfo(8, 12.8)); constexpr cItemSimpleFoodHandler ItemCookedRabbitHandler (E_ITEM_COOKED_RABBIT, cItemHandler::FoodInfo(5, 6)); constexpr cItemSimpleFoodHandler ItemCookieHandler (E_ITEM_COOKIE, cItemHandler::FoodInfo(2, 0.5)); constexpr cItemGlazedTerracottaHandler ItemCyanGlazedTerracottaHandler (E_BLOCK_CYAN_GLAZED_TERRACOTTA); constexpr cDefaultItemHandler ItemCyanShulkerBoxHandler (E_BLOCK_CYAN_SHULKER_BOX); constexpr cDefaultItemHandler ItemDandelionHandler (E_BLOCK_DANDELION); constexpr cItemBoatHandler ItemDarkOakBoatHandler (E_ITEM_DARK_OAK_BOAT); constexpr cDefaultItemHandler ItemDarkOakDoorBlockHandler (E_BLOCK_DARK_OAK_DOOR); constexpr cItemDoorHandler ItemDarkOakDoorHandler (E_ITEM_DARK_OAK_DOOR); constexpr cItemFenceGateHandler ItemDarkOakFenceGateHandler (E_BLOCK_DARK_OAK_FENCE_GATE); constexpr cDefaultItemHandler ItemDarkOakFenceHandler (E_BLOCK_DARK_OAK_FENCE); constexpr cItemStairsHandler ItemDarkOakStairsHandler (E_BLOCK_DARK_OAK_WOOD_STAIRS); constexpr cDefaultItemHandler ItemDaylightSensorBlockHandler (E_BLOCK_DAYLIGHT_SENSOR); constexpr cDefaultItemHandler ItemDeadBushHandler (E_BLOCK_DEAD_BUSH); constexpr cItemRailHandler ItemDetectorRailHandler (E_BLOCK_DETECTOR_RAIL); constexpr cItemAxeHandler ItemDiamondAxeHandler (E_ITEM_DIAMOND_AXE); constexpr cDefaultItemHandler ItemDiamondBlockHandler (E_BLOCK_DIAMOND_BLOCK); constexpr cItemArmorHandler ItemDiamondBootsHandler (E_ITEM_DIAMOND_BOOTS); constexpr cItemArmorHandler ItemDiamondChestplateHandler (E_ITEM_DIAMOND_CHESTPLATE); constexpr cDefaultItemHandler ItemDiamondHandler (E_ITEM_DIAMOND); constexpr cItemArmorHandler ItemDiamondHelmetHandler (E_ITEM_DIAMOND_HELMET); constexpr cItemHoeHandler ItemDiamondHoeHandler (E_ITEM_DIAMOND_HOE); constexpr cDefaultItemHandler ItemDiamondHorseArmorHandler (E_ITEM_DIAMOND_HORSE_ARMOR); constexpr cItemArmorHandler ItemDiamondLeggingsHandler (E_ITEM_DIAMOND_LEGGINGS); constexpr cDefaultItemHandler ItemDiamondOreHandler (E_BLOCK_DIAMOND_ORE); constexpr cItemPickaxeHandler ItemDiamondPickaxeHandler (E_ITEM_DIAMOND_PICKAXE); constexpr cItemShovelHandler ItemDiamondShovelHandler (E_ITEM_DIAMOND_SHOVEL); constexpr cItemSwordHandler ItemDiamondSwordHandler (E_ITEM_DIAMOND_SWORD); constexpr cDefaultItemHandler ItemDirtHandler (E_BLOCK_DIRT); constexpr cItemDropSpenserHandler ItemDispenserHandler (E_BLOCK_DISPENSER); constexpr cDefaultItemHandler ItemBirchDoorBlockHandler (E_BLOCK_BIRCH_DOOR); constexpr cDefaultItemHandler ItemDoubleOakSlabHandler (E_BLOCK_DOUBLE_WOODEN_SLAB); constexpr cDefaultItemHandler ItemDoubleRedSandstoneSlabHandler (E_BLOCK_DOUBLE_RED_SANDSTONE_SLAB); constexpr cDefaultItemHandler ItemDoubleStoneSlabHandler (E_BLOCK_DOUBLE_STONE_SLAB); constexpr cDefaultItemHandler ItemDragonBreathHandler (E_ITEM_DRAGON_BREATH); constexpr cDefaultItemHandler ItemDragonEggBlockHandler (E_BLOCK_DRAGON_EGG); constexpr cItemDropSpenserHandler ItemDropperHandler (E_BLOCK_DROPPER); constexpr cItemDyeHandler ItemDyeHandler (E_ITEM_DYE); constexpr cItemEggHandler ItemEggHandler (E_ITEM_EGG); constexpr cItemArmorHandler ItemElytraHandler (E_ITEM_ELYTRA); constexpr cDefaultItemHandler ItemEmeraldBlockHandler (E_BLOCK_EMERALD_BLOCK); constexpr cDefaultItemHandler ItemEmeraldHandler (E_ITEM_EMERALD); constexpr cDefaultItemHandler ItemEmeraldOreHandler (E_BLOCK_EMERALD_ORE); constexpr cItemEmptyMapHandler ItemEmptyMapHandler (E_ITEM_EMPTY_MAP); constexpr cDefaultItemHandler ItemEnchantedBookHandler (E_ITEM_ENCHANTED_BOOK); constexpr cItemEnchantingTableHandler ItemEnchantingTableHandler (E_BLOCK_ENCHANTMENT_TABLE); constexpr cDefaultItemHandler ItemEndBricksHandler (E_BLOCK_END_BRICKS); constexpr cItemEndCrystalHandler ItemEndCrystalHandler (E_ITEM_END_CRYSTAL); constexpr cDefaultItemHandler ItemEndGatewayHandler (E_BLOCK_END_GATEWAY); constexpr cDefaultItemHandler ItemEndPortalBlockHandler (E_BLOCK_END_PORTAL); constexpr cItemEndPortalFrameHandler ItemEndPortalFrameHandler (E_BLOCK_END_PORTAL_FRAME); constexpr cDefaultItemHandler ItemEndRodHandler (E_BLOCK_END_ROD); constexpr cDefaultItemHandler ItemEndStoneBlockHandler (E_BLOCK_END_STONE); constexpr cItemEnderPearlHandler ItemEnderPearlHandler (E_ITEM_ENDER_PEARL); constexpr cItemEnderchestHandler ItemEnderchestHandler (E_BLOCK_ENDER_CHEST); constexpr cItemEyeOfEnderHandler ItemEyeOfEnderHandler (E_ITEM_EYE_OF_ENDER); constexpr cDefaultItemHandler ItemFarDiscHandler (E_ITEM_FAR_DISC); constexpr cDefaultItemHandler ItemFarmlandHandler (E_BLOCK_FARMLAND); constexpr cDefaultItemHandler ItemFeatherHandler (E_ITEM_FEATHER); constexpr cDefaultItemHandler ItemOakFenceHandler (E_BLOCK_FENCE); constexpr cDefaultItemHandler ItemFermentedSpiderEyeHandler (E_ITEM_FERMENTED_SPIDER_EYE); constexpr cDefaultItemHandler ItemFireBlockHandler (E_BLOCK_FIRE); constexpr cItemLighterHandler ItemFireChargeHandler (E_ITEM_FIRE_CHARGE); constexpr cItemFireworkHandler ItemFireworkRocketHandler (E_ITEM_FIREWORK_ROCKET); constexpr cDefaultItemHandler ItemFireworkStarHandler (E_ITEM_FIREWORK_STAR); constexpr cItemFishingRodHandler ItemFishingRodHandler (E_ITEM_FISHING_ROD); constexpr cItemLighterHandler ItemFlintAndSteelHandler (E_ITEM_FLINT_AND_STEEL); constexpr cDefaultItemHandler ItemFlintHandler (E_ITEM_FLINT); constexpr cDefaultItemHandler ItemFlowerPotBlockHandler (E_BLOCK_FLOWER_POT); constexpr cSimplePlaceableItemHandler ItemFlowerPotHandler (E_ITEM_FLOWER_POT, E_BLOCK_FLOWER_POT); constexpr cDefaultItemHandler ItemFrostedIceHandler (E_BLOCK_FROSTED_ICE); constexpr cItemFurnaceHandler ItemFurnaceHandler (E_BLOCK_FURNACE); constexpr cItemMinecartHandler ItemFurnaceMinecartHandler (E_ITEM_FURNACE_MINECART); constexpr cDefaultItemHandler ItemGhastTearHandler (E_ITEM_GHAST_TEAR); constexpr cItemBottleHandler ItemGlassBottleHandler (E_ITEM_GLASS_BOTTLE); constexpr cDefaultItemHandler ItemGlassHandler (E_BLOCK_GLASS); constexpr cDefaultItemHandler ItemGlassPaneBlockHandler (E_BLOCK_GLASS_PANE); constexpr cDefaultItemHandler ItemGlisteringMelonHandler (E_ITEM_GLISTERING_MELON); constexpr cDefaultItemHandler ItemGlowstoneBlockHandler (E_BLOCK_GLOWSTONE); constexpr cDefaultItemHandler ItemGlowstoneDustHandler (E_ITEM_GLOWSTONE_DUST); constexpr cDefaultItemHandler ItemGoldBlockHandler (E_BLOCK_GOLD_BLOCK); constexpr cDefaultItemHandler ItemGoldHandler (E_ITEM_GOLD); constexpr cDefaultItemHandler ItemGoldNuggetHandler (E_ITEM_GOLD_NUGGET); constexpr cDefaultItemHandler ItemGoldOreHandler (E_BLOCK_GOLD_ORE); constexpr cItemGoldenAppleHandler ItemGoldenAppleHandler (E_ITEM_GOLDEN_APPLE); constexpr cItemAxeHandler ItemGoldenAxeHandler (E_ITEM_GOLD_AXE); constexpr cItemArmorHandler ItemGoldenBootsHandler (E_ITEM_GOLD_BOOTS); constexpr cItemSimpleFoodHandler ItemGoldenCarrotHandler (E_ITEM_GOLDEN_CARROT, cItemHandler::FoodInfo(6, 14.4)); constexpr cItemArmorHandler ItemGoldenChestplateHandler (E_ITEM_GOLD_CHESTPLATE); constexpr cItemArmorHandler ItemGoldenHelmetHandler (E_ITEM_GOLD_HELMET); constexpr cItemHoeHandler ItemGoldenHoeHandler (E_ITEM_GOLD_HOE); constexpr cDefaultItemHandler ItemGoldenHorseArmorHandler (E_ITEM_GOLD_HORSE_ARMOR); constexpr cItemArmorHandler ItemGoldenLeggingsHandler (E_ITEM_GOLD_LEGGINGS); constexpr cItemPickaxeHandler ItemGoldenPickaxeHandler (E_ITEM_GOLD_PICKAXE); constexpr cItemShovelHandler ItemGoldenShovelHandler (E_ITEM_GOLD_SHOVEL); constexpr cItemSwordHandler ItemGoldenSwordHandler (E_ITEM_GOLD_SWORD); constexpr cDefaultItemHandler ItemGrassBlockHandler (E_BLOCK_GRASS); constexpr cDefaultItemHandler ItemGrassPathHandler (E_BLOCK_GRASS_PATH); constexpr cDefaultItemHandler ItemGravelHandler (E_BLOCK_GRAVEL); constexpr cItemGlazedTerracottaHandler ItemGrayGlazedTerracottaHandler (E_BLOCK_GRAY_GLAZED_TERRACOTTA); constexpr cDefaultItemHandler ItemGrayShulkerBoxHandler (E_BLOCK_GRAY_SHULKER_BOX); constexpr cItemGlazedTerracottaHandler ItemGreenGlazedTerracottaHandler (E_BLOCK_GREEN_GLAZED_TERRACOTTA); constexpr cDefaultItemHandler ItemGreenShulkerBoxHandler (E_BLOCK_GREEN_SHULKER_BOX); constexpr cDefaultItemHandler ItemGunpowderHandler (E_ITEM_GUNPOWDER); constexpr cDefaultItemHandler ItemHardenedClayHandler (E_BLOCK_HARDENED_CLAY); constexpr cItemSidewaysHandler ItemHayBaleHandler (E_BLOCK_HAY_BALE); constexpr cItemMobHeadHandler ItemHeadBlockHandler (E_BLOCK_HEAD); constexpr cItemMobHeadHandler ItemHeadHandler (E_ITEM_HEAD); constexpr cDefaultItemHandler ItemHeavyWeightedPressurePlateBlockHandler (E_BLOCK_HEAVY_WEIGHTED_PRESSURE_PLATE); constexpr cItemHopperHandler ItemHopperHandler (E_BLOCK_HOPPER); constexpr cDefaultItemHandler ItemHugeBrownMushroomBlockHandler (E_BLOCK_HUGE_BROWN_MUSHROOM); constexpr cDefaultItemHandler ItemHugeRedMushroomBlockHandler (E_BLOCK_HUGE_RED_MUSHROOM); constexpr cDefaultItemHandler ItemIceHandler (E_BLOCK_ICE); constexpr cDefaultItemHandler ItemInactiveComparatorHandler (E_BLOCK_INACTIVE_COMPARATOR); constexpr cDefaultItemHandler ItemInvertedDaylightSensorHandler (E_BLOCK_INVERTED_DAYLIGHT_SENSOR); constexpr cItemAxeHandler ItemIronAxeHandler (E_ITEM_IRON_AXE); constexpr cDefaultItemHandler ItemIronBarsBlockHandler (E_BLOCK_IRON_BARS); constexpr cItemArmorHandler ItemIronBootsHandler (E_ITEM_IRON_BOOTS); constexpr cItemArmorHandler ItemIronChestplateHandler (E_ITEM_IRON_CHESTPLATE); constexpr cDefaultItemHandler ItemIronDoorBlockHandler (E_BLOCK_IRON_DOOR); constexpr cItemDoorHandler ItemIronDoorHandler (E_ITEM_IRON_DOOR); constexpr cDefaultItemHandler ItemIronHandler (E_ITEM_IRON); constexpr cItemArmorHandler ItemIronHelmetHandler (E_ITEM_IRON_HELMET); constexpr cItemHoeHandler ItemIronHoeHandler (E_ITEM_IRON_HOE); constexpr cDefaultItemHandler ItemIronHorseArmorHandler (E_ITEM_IRON_HORSE_ARMOR); constexpr cItemArmorHandler ItemIronLeggingsHandler (E_ITEM_IRON_LEGGINGS); constexpr cDefaultItemHandler ItemIronNuggetHandler (E_ITEM_IRON_NUGGET); constexpr cDefaultItemHandler ItemIronOreHandler (E_BLOCK_IRON_ORE); constexpr cItemPickaxeHandler ItemIronPickaxeHandler (E_ITEM_IRON_PICKAXE); constexpr cItemShovelHandler ItemIronShovelHandler (E_ITEM_IRON_SHOVEL); constexpr cItemSwordHandler ItemIronSwordHandler (E_ITEM_IRON_SWORD); constexpr cItemTrapdoorHandler ItemIronTrapdoorHandler (E_BLOCK_IRON_TRAPDOOR); constexpr cDefaultItemHandler ItemIronBlockHandler (E_BLOCK_IRON_BLOCK); constexpr cItemItemFrameHandler ItemItemFrameHandler (E_ITEM_ITEM_FRAME); constexpr cItemJackOLanternHandler ItemJackOLanternHandler (E_BLOCK_JACK_O_LANTERN); constexpr cDefaultItemHandler ItemJukeboxHandler (E_BLOCK_JUKEBOX); constexpr cItemBoatHandler ItemJungleBoatHandler (E_ITEM_JUNGLE_BOAT); constexpr cDefaultItemHandler ItemJungleDoorBlockHandler (E_BLOCK_JUNGLE_DOOR); constexpr cItemDoorHandler ItemJungleDoorHandler (E_ITEM_JUNGLE_DOOR); constexpr cItemFenceGateHandler ItemJungleFenceGateHandler (E_BLOCK_JUNGLE_FENCE_GATE); constexpr cDefaultItemHandler ItemJungleFenceHandler (E_BLOCK_JUNGLE_FENCE); constexpr cItemStairsHandler ItemJungleStairsHandler (E_BLOCK_JUNGLE_WOOD_STAIRS); constexpr cItemLadderHandler ItemLadderHandler (E_BLOCK_LADDER); constexpr cDefaultItemHandler ItemLapisBlockHandler (E_BLOCK_LAPIS_BLOCK); constexpr cDefaultItemHandler ItemLapisOreHandler (E_BLOCK_LAPIS_ORE); constexpr cItemBucketHandler ItemLavaBucketHandler (E_ITEM_LAVA_BUCKET); constexpr cDefaultItemHandler ItemLavaHandler (E_BLOCK_LAVA); constexpr cDefaultItemHandler ItemLeashHandler (E_ITEM_LEAD); constexpr cItemArmorHandler ItemLeatherBootsHandler (E_ITEM_LEATHER_BOOTS); constexpr cItemArmorHandler ItemLeatherCapHandler (E_ITEM_LEATHER_CAP); constexpr cDefaultItemHandler ItemLeatherHandler (E_ITEM_LEATHER); constexpr cItemArmorHandler ItemLeatherPantsHandler (E_ITEM_LEATHER_PANTS); constexpr cItemArmorHandler ItemLeatherTunicHandler (E_ITEM_LEATHER_TUNIC); constexpr cItemLeavesHandler ItemLeavesHandler (E_BLOCK_LEAVES); constexpr cItemLeverHandler ItemLeverHandler (E_BLOCK_LEVER); constexpr cItemGlazedTerracottaHandler ItemLightBlueGlazedTerracottaHandler (E_BLOCK_LIGHT_BLUE_GLAZED_TERRACOTTA); constexpr cDefaultItemHandler ItemLightBlueShulkerBoxHandler (E_BLOCK_LIGHT_BLUE_SHULKER_BOX); constexpr cItemGlazedTerracottaHandler ItemLightGrayGlazedTerracottaHandler (E_BLOCK_LIGHT_GRAY_GLAZED_TERRACOTTA); constexpr cDefaultItemHandler ItemLightGrayShulkerBoxHandler (E_BLOCK_LIGHT_GRAY_SHULKER_BOX); constexpr cDefaultItemHandler ItemLightWeightedPressurePlateBlockHandler (E_BLOCK_LIGHT_WEIGHTED_PRESSURE_PLATE); constexpr cItemLilypadHandler ItemLilypadHandler (E_BLOCK_LILY_PAD); constexpr cItemGlazedTerracottaHandler ItemLimeGlazedTerracottaHandler (E_BLOCK_LIME_GLAZED_TERRACOTTA); constexpr cDefaultItemHandler ItemLimeShulkerBoxHandler (E_BLOCK_LIME_SHULKER_BOX); constexpr cItemPotionHandler ItemLingeringPotionHandler (E_ITEM_LINGERING_POTION); constexpr cDefaultItemHandler ItemLitFurnaceHandler (E_BLOCK_LIT_FURNACE); constexpr cItemSidewaysHandler ItemLogHandler (E_BLOCK_LOG); constexpr cItemGlazedTerracottaHandler ItemMagentaGlazedTerracottaHandler (E_BLOCK_MAGENTA_GLAZED_TERRACOTTA); constexpr cDefaultItemHandler ItemMagentaShulkerBoxHandler (E_BLOCK_MAGENTA_SHULKER_BOX); constexpr cDefaultItemHandler ItemMagmaBlockHandler (E_BLOCK_MAGMA); constexpr cDefaultItemHandler ItemMagmaCreamHandler (E_ITEM_MAGMA_CREAM); constexpr cDefaultItemHandler ItemMallDiscHandler (E_ITEM_MALL_DISC); constexpr cItemMapHandler ItemMapHandler (E_ITEM_MAP); constexpr cDefaultItemHandler ItemMellohiDiscHandler (E_ITEM_MELLOHI_DISC); constexpr cDefaultItemHandler ItemMelonBlockHandler (E_BLOCK_MELON); constexpr cItemSimpleSeedsHandler ItemMelonSeedsHandler (E_ITEM_MELON_SEEDS); constexpr cItemSimpleFoodHandler ItemMelonSliceHandler (E_ITEM_MELON_SLICE, cItemHandler::FoodInfo(2, 1.2)); constexpr cDefaultItemHandler ItemMelonStemHandler (E_BLOCK_MELON_STEM); constexpr cItemMilkHandler ItemMilkHandler (E_ITEM_MILK); constexpr cItemMinecartHandler ItemMinecartHandler (E_ITEM_MINECART); constexpr cItemMinecartHandler ItemMinecartWithCommandBlockHandler (E_ITEM_MINECART_WITH_COMMAND_BLOCK); constexpr cItemMinecartHandler ItemMinecartWithHopperHandler (E_ITEM_MINECART_WITH_HOPPER); constexpr cItemMinecartHandler ItemMinecartWithTNTHandler (E_ITEM_MINECART_WITH_TNT); constexpr cDefaultItemHandler ItemMobSpawnerBlockHandler (E_BLOCK_MOB_SPAWNER); constexpr cDefaultItemHandler ItemMossyCobblestoneHandler (E_BLOCK_MOSSY_COBBLESTONE); constexpr cItemSoupHandler ItemMushroomSoupHandler (E_ITEM_MUSHROOM_SOUP, cItemHandler::FoodInfo(6, 7.2)); constexpr cDefaultItemHandler ItemMyceliumHandler (E_BLOCK_MYCELIUM); constexpr cDefaultItemHandler ItemNameTagHandler (E_ITEM_NAME_TAG); constexpr cDefaultItemHandler ItemNetherBrickBlockHandler (E_BLOCK_NETHER_BRICK); constexpr cDefaultItemHandler ItemNetherBrickFenceBlockHandler (E_BLOCK_NETHER_BRICK_FENCE); constexpr cDefaultItemHandler ItemNetherBrickHandler (E_ITEM_NETHER_BRICK); constexpr cItemStairsHandler ItemNetherBrickStairsHandler (E_BLOCK_NETHER_BRICK_STAIRS); constexpr cDefaultItemHandler ItemNetherPortalBlockHandler (E_BLOCK_NETHER_PORTAL); constexpr cDefaultItemHandler ItemNetherQuartzHandler (E_ITEM_NETHER_QUARTZ); constexpr cDefaultItemHandler ItemNetherQuartzOreHandler (E_BLOCK_NETHER_QUARTZ_ORE); constexpr cDefaultItemHandler ItemNetherStarHandler (E_ITEM_NETHER_STAR); constexpr cDefaultItemHandler ItemNetherWartBlockBlockHandler (E_BLOCK_NETHER_WART_BLOCK); constexpr cDefaultItemHandler ItemNetherWartBlockHandler (E_BLOCK_NETHER_WART); constexpr cItemNetherWartHandler ItemNetherWartHandler (E_ITEM_NETHER_WART); constexpr cDefaultItemHandler ItemNetherrackHandler (E_BLOCK_NETHERRACK); constexpr cItemLeavesHandler ItemNewLeavesHandler (E_BLOCK_NEW_LEAVES); constexpr cItemSidewaysHandler ItemNewLogHandler (E_BLOCK_NEW_LOG); constexpr cDefaultItemHandler ItemNoteBlockHandler (E_BLOCK_NOTE_BLOCK); constexpr cItemBoatHandler ItemOakBoatHandler (E_ITEM_BOAT); constexpr cItemButtonHandler ItemOakButtonHandler (E_BLOCK_WOODEN_BUTTON); constexpr cDefaultItemHandler ItemOakDoorBlockHandler (E_BLOCK_OAK_DOOR); constexpr cItemDoorHandler ItemOakDoorHandler (E_ITEM_WOODEN_DOOR); constexpr cItemFenceGateHandler ItemOakFenceGateHandler (E_BLOCK_OAK_FENCE_GATE); constexpr cItemSlabHandler ItemOakSlabHandler (E_BLOCK_WOODEN_SLAB); constexpr cItemStairsHandler ItemOakStairsHandler (E_BLOCK_OAK_WOOD_STAIRS); constexpr cItemTrapdoorHandler ItemOakTrapdoorHandler (E_BLOCK_TRAPDOOR); constexpr cItemObserverHandler ItemObserverHandler (E_BLOCK_OBSERVER); constexpr cDefaultItemHandler ItemObsidianHandler (E_BLOCK_OBSIDIAN); constexpr cItemGlazedTerracottaHandler ItemOrangeGlazedTerracottaHandler (E_BLOCK_ORANGE_GLAZED_TERRACOTTA); constexpr cDefaultItemHandler ItemOrangeShulkerBoxHandler (E_BLOCK_ORANGE_SHULKER_BOX); constexpr cDefaultItemHandler ItemPackedIceHandler (E_BLOCK_PACKED_ICE); constexpr cItemPaintingHandler ItemPaintingHandler (E_ITEM_PAINTING); constexpr cDefaultItemHandler ItemPaperHandler (E_ITEM_PAPER); constexpr cItemGlazedTerracottaHandler ItemPinkGlazedTerracottaHandler (E_BLOCK_PINK_GLAZED_TERRACOTTA); constexpr cDefaultItemHandler ItemPinkShulkerBoxHandler (E_BLOCK_PINK_SHULKER_BOX); constexpr cDefaultItemHandler ItemPistonExtensionHandler (E_BLOCK_PISTON_EXTENSION); constexpr cItemPistonHandler ItemPistonHandler (E_BLOCK_PISTON); constexpr cDefaultItemHandler ItemPistonMovedBlockHandler (E_BLOCK_PISTON_MOVED_BLOCK); constexpr cItemPlanksHandler ItemPlanksHandler (E_BLOCK_PLANKS); constexpr cItemPoisonousPotatoHandler ItemPoisonousPotatoHandler (E_ITEM_POISONOUS_POTATO); constexpr cDefaultItemHandler ItemPoppedChorusFruitHandler (E_ITEM_POPPED_CHORUS_FRUIT); constexpr cDefaultItemHandler ItemPoppyHandler (E_BLOCK_FLOWER); constexpr cItemFoodSeedsHandler ItemPotatoHandler (E_ITEM_POTATO, cItemHandler::FoodInfo(1, 0.6)); constexpr cDefaultItemHandler ItemPotatoesBlockHandler (E_BLOCK_POTATOES); constexpr cItemPotionHandler ItemPotionHandler (E_ITEM_POTION); constexpr cItemRailHandler ItemPoweredRailHandler (E_BLOCK_POWERED_RAIL); constexpr cDefaultItemHandler ItemPrismarineBlockHandler (E_BLOCK_PRISMARINE_BLOCK); constexpr cDefaultItemHandler ItemPrismarineCrystalsHandler (E_ITEM_PRISMARINE_CRYSTALS); constexpr cDefaultItemHandler ItemPrismarineShardHandler (E_ITEM_PRISMARINE_SHARD); constexpr cItemPumpkinHandler ItemPumpkinHandler (E_BLOCK_PUMPKIN); constexpr cItemSimpleFoodHandler ItemPumpkinPieHandler (E_ITEM_PUMPKIN_PIE, cItemHandler::FoodInfo(8, 4.8)); constexpr cItemSimpleSeedsHandler ItemPumpkinSeedsHandler (E_ITEM_PUMPKIN_SEEDS); constexpr cDefaultItemHandler ItemPumpkinStemHandler (E_BLOCK_PUMPKIN_STEM); constexpr cItemStairsHandler ItemPurpurStairsHandler (E_BLOCK_PURPUR_STAIRS); constexpr cItemGlazedTerracottaHandler ItemPurpleGlazedTerracottaHandler (E_BLOCK_PURPLE_GLAZED_TERRACOTTA); constexpr cDefaultItemHandler ItemPurpleShulkerBoxHandler (E_BLOCK_PURPLE_SHULKER_BOX); constexpr cDefaultItemHandler ItemPurpurBlockHandler (E_BLOCK_PURPUR_BLOCK); constexpr cDefaultItemHandler ItemPurpurDoubleSlabHandler (E_BLOCK_PURPUR_DOUBLE_SLAB); constexpr cDefaultItemHandler ItemPurpurPillarHandler (E_BLOCK_PURPUR_PILLAR); constexpr cItemSlabHandler ItemPurpurSlabHandler (E_BLOCK_PURPUR_SLAB); constexpr cItemQuartzHandler ItemQuartzBlockHandler (E_BLOCK_QUARTZ_BLOCK); constexpr cItemStairsHandler ItemQuartzStairsHandler (E_BLOCK_QUARTZ_STAIRS); constexpr cDefaultItemHandler ItemRabbitHideHandler (E_ITEM_RABBIT_HIDE); constexpr cItemSoupHandler ItemRabbitStewHandler (E_ITEM_RABBIT_STEW, cItemHandler::FoodInfo(10, 12)); constexpr cDefaultItemHandler ItemRabbitsFootHandler (E_ITEM_RABBITS_FOOT); constexpr cItemRailHandler ItemRailHandler (E_BLOCK_RAIL); constexpr cItemSimpleFoodHandler ItemRawBeefHandler (E_ITEM_RAW_BEEF, cItemHandler::FoodInfo(3, 1.8)); constexpr cItemRawChickenHandler ItemRawChickenHandler (E_ITEM_RAW_CHICKEN); constexpr cItemRawFishHandler ItemRawFishHandler (E_ITEM_RAW_FISH); constexpr cItemSimpleFoodHandler ItemRawMuttonHandler (E_ITEM_RAW_MUTTON, cItemHandler::FoodInfo(2, 1.2)); constexpr cItemSimpleFoodHandler ItemRawPorkchopHandler (E_ITEM_RAW_PORKCHOP, cItemHandler::FoodInfo(3, 1.8)); constexpr cItemSimpleFoodHandler ItemRawRabbitHandler (E_ITEM_RAW_RABBIT, cItemHandler::FoodInfo(3, 1.8)); constexpr cItemGlazedTerracottaHandler ItemRedGlazedTerracottaHandler (E_BLOCK_RED_GLAZED_TERRACOTTA); constexpr cDefaultItemHandler ItemRedMushroomBlockHandler (E_BLOCK_RED_MUSHROOM); constexpr cDefaultItemHandler ItemRedNetherBricksHandler (E_BLOCK_RED_NETHER_BRICK); constexpr cDefaultItemHandler ItemRedSandstoneHandler (E_BLOCK_RED_SANDSTONE); constexpr cItemSlabHandler ItemRedSandstoneSlabHandler (E_BLOCK_RED_SANDSTONE_SLAB); constexpr cItemStairsHandler ItemRedSandstoneStairsHandler (E_BLOCK_RED_SANDSTONE_STAIRS); constexpr cDefaultItemHandler ItemRedShulkerBoxHandler (E_BLOCK_RED_SHULKER_BOX); constexpr cDefaultItemHandler ItemRedstoneBlockHandler (E_BLOCK_BLOCK_OF_REDSTONE); constexpr cItemRedstoneDustHandler ItemRedstoneDustHandler (E_ITEM_REDSTONE_DUST); constexpr cDefaultItemHandler ItemRedstoneLampOffHandler (E_BLOCK_REDSTONE_LAMP_OFF); constexpr cDefaultItemHandler ItemRedstoneLampOnHandler (E_BLOCK_REDSTONE_LAMP_ON); constexpr cDefaultItemHandler ItemRedstoneOreHandler (E_BLOCK_REDSTONE_ORE); constexpr cDefaultItemHandler ItemRedstoneOreGlowingHandler (E_BLOCK_REDSTONE_ORE_GLOWING); constexpr cItemRedstoneRepeaterHandler ItemRedstoneRepeaterHandler (E_ITEM_REDSTONE_REPEATER); constexpr cDefaultItemHandler ItemRedstoneRepeaterOffHandler (E_BLOCK_REDSTONE_REPEATER_OFF); constexpr cDefaultItemHandler ItemRedstoneRepeaterOnHandler (E_BLOCK_REDSTONE_REPEATER_ON); constexpr cItemTorchHandler ItemRedstoneTorchHandler (E_BLOCK_REDSTONE_TORCH_ON); constexpr cDefaultItemHandler ItemRedstoneTorchOffBlockHandler (E_BLOCK_REDSTONE_TORCH_OFF); constexpr cDefaultItemHandler ItemRedstoneWireHandler (E_BLOCK_REDSTONE_WIRE); constexpr cDefaultItemHandler ItemRepeatingCommandBlockHandler (E_BLOCK_REPEATING_COMMAND_BLOCK); constexpr cItemRottenFleshHandler ItemRottenFleshHandler (E_ITEM_ROTTEN_FLESH); constexpr cDefaultItemHandler ItemSaddleHandler (E_ITEM_SADDLE); constexpr cDefaultItemHandler ItemSandHandler (E_BLOCK_SAND); constexpr cDefaultItemHandler ItemSandstoneHandler (E_BLOCK_SANDSTONE); constexpr cItemStairsHandler ItemSandstoneStairsHandler (E_BLOCK_SANDSTONE_STAIRS); constexpr cItemSaplingHandler ItemSaplingHandler (E_BLOCK_SAPLING); constexpr cDefaultItemHandler ItemSeaLanternHandler (E_BLOCK_SEA_LANTERN); constexpr cItemSimpleSeedsHandler ItemSeedsHandler (E_ITEM_SEEDS); constexpr cItemShearsHandler ItemShearsHandler (E_ITEM_SHEARS); constexpr cDefaultItemHandler ItemShieldHandler (E_ITEM_SHIELD); constexpr cDefaultItemHandler ItemShulkerShellHandler (E_ITEM_SHULKER_SHELL); constexpr cItemSignHandler ItemSignHandler (E_ITEM_SIGN); constexpr cDefaultItemHandler ItemSignPostHandler (E_BLOCK_SIGN_POST); constexpr cDefaultItemHandler ItemSilverfishEggBlockHandler (E_BLOCK_SILVERFISH_EGG); constexpr cDefaultItemHandler ItemSlimeBlockHandler (E_BLOCK_SLIME_BLOCK); constexpr cDefaultItemHandler ItemSlimeballHandler (E_ITEM_SLIMEBALL); constexpr cDefaultItemHandler ItemSnowBlockHandler (E_BLOCK_SNOW_BLOCK); constexpr cItemSnowHandler ItemSnowHandler (E_BLOCK_SNOW); constexpr cItemSnowballHandler ItemSnowballHandler (E_ITEM_SNOWBALL); constexpr cDefaultItemHandler ItemSoulsandHandler (E_BLOCK_SOULSAND); constexpr cItemSpawnEggHandler ItemSpawnEggHandler (E_ITEM_SPAWN_EGG); constexpr cItemSpiderEyeHandler ItemSpiderEyeHandler (E_ITEM_SPIDER_EYE); constexpr cItemPotionHandler ItemSplashPotionHandler (E_ITEM_SPLASH_POTION); constexpr cDefaultItemHandler ItemSpongeHandler (E_BLOCK_SPONGE); constexpr cDefaultItemHandler ItemSpectralArrowHandler (E_ITEM_SPECTRAL_ARROW); constexpr cItemBoatHandler ItemSpruceBoatHandler (E_ITEM_SPRUCE_BOAT); constexpr cDefaultItemHandler ItemSpruceDoorBlockHandler (E_BLOCK_SPRUCE_DOOR); constexpr cItemDoorHandler ItemSpruceDoorHandler (E_ITEM_SPRUCE_DOOR); constexpr cItemFenceGateHandler ItemSpruceFenceGateHandler (E_BLOCK_SPRUCE_FENCE_GATE); constexpr cDefaultItemHandler ItemSpruceFenceHandler (E_BLOCK_SPRUCE_FENCE); constexpr cItemStairsHandler ItemSpruceStairsHandler (E_BLOCK_SPRUCE_WOOD_STAIRS); constexpr cSimplePlaceableItemHandler ItemStringHandler (E_ITEM_STRING, E_BLOCK_TRIPWIRE); constexpr cDefaultItemHandler ItemStainedGlassHandler (E_BLOCK_STAINED_GLASS); constexpr cDefaultItemHandler ItemStainedGlassPaneHandler (E_BLOCK_STAINED_GLASS_PANE); constexpr cDefaultItemHandler ItemStalDiscHandler (E_ITEM_STAL_DISC); constexpr cDefaultItemHandler ItemStandingBannerHandler (E_BLOCK_STANDING_BANNER); constexpr cDefaultItemHandler ItemStationaryLavaHandler (E_BLOCK_STATIONARY_LAVA); constexpr cDefaultItemHandler ItemStationaryWaterHandler (E_BLOCK_STATIONARY_WATER); constexpr cDefaultItemHandler ItemStickHandler (E_ITEM_STICK); constexpr cItemPistonHandler ItemStickyPistonHandler (E_BLOCK_STICKY_PISTON); constexpr cItemAxeHandler ItemStoneAxeHandler (E_ITEM_STONE_AXE); constexpr cDefaultItemHandler ItemStoneBricksHandler (E_BLOCK_STONE_BRICKS); constexpr cItemStairsHandler ItemStoneBrickStairsHandler (E_BLOCK_STONE_BRICK_STAIRS); constexpr cItemButtonHandler ItemStoneButtonHandler (E_BLOCK_STONE_BUTTON); constexpr cDefaultItemHandler ItemStoneHandler (E_BLOCK_STONE); constexpr cItemHoeHandler ItemStoneHoeHandler (E_ITEM_STONE_HOE); constexpr cItemPickaxeHandler ItemStonePickaxeHandler (E_ITEM_STONE_PICKAXE); constexpr cDefaultItemHandler ItemStonePressurePlateBlockHandler (E_BLOCK_STONE_PRESSURE_PLATE); constexpr cItemShovelHandler ItemStoneShovelHandler (E_ITEM_STONE_SHOVEL); constexpr cItemSlabHandler ItemStoneSlabHandler (E_BLOCK_STONE_SLAB); constexpr cItemSwordHandler ItemStoneSwordHandler (E_ITEM_STONE_SWORD); constexpr cDefaultItemHandler ItemStradDiscHandler (E_ITEM_STRAD_DISC); constexpr cDefaultItemHandler ItemStructureBlockHandler (E_BLOCK_STRUCTURE_BLOCK); constexpr cDefaultItemHandler ItemStructureVoidHandler (E_BLOCK_STRUCTURE_VOID); constexpr cSimplePlaceableItemHandler ItemSugarCaneHandler (E_BLOCK_SUGARCANE, E_BLOCK_SUGARCANE); constexpr cDefaultItemHandler ItemSugarHandler (E_ITEM_SUGAR); constexpr cSimplePlaceableItemHandler ItemSugarcaneHandler (E_ITEM_SUGARCANE, E_BLOCK_SUGARCANE); constexpr cDefaultItemHandler ItemTNTBlockHandler (E_BLOCK_TNT); constexpr cDefaultItemHandler ItemTallGrassHandler (E_BLOCK_TALL_GRASS); constexpr cDefaultItemHandler ItemTerracottaHandler (E_BLOCK_TERRACOTTA); constexpr cDefaultItemHandler ItemTippedArrowHandler (E_ITEM_TIPPED_ARROW); constexpr cItemTorchHandler ItemTorchBlockHandler (E_BLOCK_TORCH); constexpr cDefaultItemHandler ItemTotemOfUndyingHandler (E_ITEM_TOTEM_OF_UNDYING); constexpr cItemChestHandler ItemTrappedChestHandler (E_BLOCK_TRAPPED_CHEST); constexpr cDefaultItemHandler ItemTripwireHandler (E_BLOCK_TRIPWIRE); constexpr cItemTripwireHookHandler ItemTripwireHookHandler (E_BLOCK_TRIPWIRE_HOOK); constexpr cItemVineHandler ItemVineHandler (E_BLOCK_VINES); constexpr cDefaultItemHandler ItemWaitDiscHandler (E_ITEM_WAIT_DISC); constexpr cDefaultItemHandler ItemWallBannerHandler (E_BLOCK_WALL_BANNER); constexpr cDefaultItemHandler ItemWallsignHandler (E_BLOCK_WALLSIGN); constexpr cDefaultItemHandler ItemWardDiscHandler (E_ITEM_WARD_DISC); constexpr cItemBucketHandler ItemWaterBucketHandler (E_ITEM_WATER_BUCKET); constexpr cDefaultItemHandler ItemWaterHandler (E_BLOCK_WATER); constexpr cDefaultItemHandler ItemWheatBlockHandler (E_BLOCK_WHEAT); constexpr cDefaultItemHandler ItemWheatHandler (E_ITEM_WHEAT); constexpr cItemGlazedTerracottaHandler ItemWhiteGlazedTerracottaHandler (E_BLOCK_WHITE_GLAZED_TERRACOTTA); constexpr cDefaultItemHandler ItemWhiteShulkerBoxHandler (E_BLOCK_WHITE_SHULKER_BOX); constexpr cItemAxeHandler ItemWoodenAxeHandler (E_ITEM_WOODEN_AXE); constexpr cItemHoeHandler ItemWoodenHoeHandler (E_ITEM_WOODEN_HOE); constexpr cItemPickaxeHandler ItemWoodenPickaxeHandler (E_ITEM_WOODEN_PICKAXE); constexpr cDefaultItemHandler ItemWoodenPressurePlateBlockHandler (E_BLOCK_WOODEN_PRESSURE_PLATE); constexpr cItemShovelHandler ItemWoodenShovelHandler (E_ITEM_WOODEN_SHOVEL); constexpr cItemSwordHandler ItemWoodenSwordHandler (E_ITEM_WOODEN_SWORD); constexpr cItemClothHandler ItemWoolHandler (E_BLOCK_WOOL); constexpr cDefaultItemHandler ItemWorkbenchHandler (E_BLOCK_WORKBENCH); constexpr cDefaultItemHandler ItemWrittenBookHandler (E_ITEM_WRITTEN_BOOK); constexpr cItemGlazedTerracottaHandler ItemYellowGlazedTerracottaHandler (E_BLOCK_YELLOW_GLAZED_TERRACOTTA); constexpr cDefaultItemHandler ItemYellowShulkerBoxHandler (E_BLOCK_YELLOW_SHULKER_BOX); } const cItemHandler & cItemHandler::For(int a_ItemType) { switch (a_ItemType) { case E_BLOCK_ACACIA_DOOR: return ItemAcaciaDoorBlockHandler; case E_BLOCK_ACACIA_FENCE: return ItemAcaciaFenceHandler; case E_BLOCK_ACACIA_FENCE_GATE: return ItemAcaciaFenceGateHandler; case E_BLOCK_ACACIA_WOOD_STAIRS: return ItemAcaciaStairsHandler; case E_BLOCK_ACTIVATOR_RAIL: return ItemActivatorRailHandler; case E_BLOCK_ACTIVE_COMPARATOR: return ItemActiveComparatorHandler; case E_BLOCK_AIR: return ItemAirHandler; case E_BLOCK_ANVIL: return ItemAnvilHandler; case E_BLOCK_BARRIER: return ItemBarrierHandler; case E_BLOCK_BEACON: return ItemBeaconHandler; case E_BLOCK_BED: return ItemBedBlockHandler; case E_BLOCK_BEDROCK: return ItemBedrockHandler; case E_BLOCK_BEETROOTS: return ItemBeetrootsBlockHandler; case E_BLOCK_BIG_FLOWER: return ItemBigFlowerHandler; case E_BLOCK_BIRCH_DOOR: return ItemBirchDoorBlockHandler; case E_BLOCK_BIRCH_FENCE: return ItemBirchFenceHandler; case E_BLOCK_BIRCH_FENCE_GATE: return ItemBirchFenceGateHandler; case E_BLOCK_BIRCH_WOOD_STAIRS: return ItemBirchStairsHandler; case E_BLOCK_BLACK_GLAZED_TERRACOTTA: return ItemBlackGlazedTerracottaHandler; case E_BLOCK_BLACK_SHULKER_BOX: return ItemBlackShulkerBoxHandler; case E_BLOCK_BLOCK_OF_COAL: return ItemCoalBlockHandler; case E_BLOCK_BLOCK_OF_REDSTONE: return ItemRedstoneBlockHandler; case E_BLOCK_BLUE_GLAZED_TERRACOTTA: return ItemBlueGlazedTerracottaHandler; case E_BLOCK_BLUE_SHULKER_BOX: return ItemBlueShulkerBoxHandler; case E_BLOCK_BONE_BLOCK: return ItemBoneBlockHandler; case E_BLOCK_BOOKCASE: return ItemBookshelfHandler; case E_BLOCK_BREWING_STAND: return ItemBrewingStandBlockHandler; case E_BLOCK_BRICK: return ItemBrickHandler; case E_BLOCK_BRICK_STAIRS: return ItemBricksStairsHandler; case E_BLOCK_BROWN_GLAZED_TERRACOTTA: return ItemBrownGlazedTerracottaHandler; case E_BLOCK_BROWN_MUSHROOM: return ItemBrownMushroomBlockHandler; case E_BLOCK_BROWN_SHULKER_BOX: return ItemBrownShulkerBoxHandler; case E_BLOCK_CACTUS: return ItemCactusHandler; case E_BLOCK_CAKE: return ItemCakeBlockHandler; case E_BLOCK_CARPET: return ItemCarpetHandler; case E_BLOCK_CARROTS: return ItemCarrotsBlockHandler; case E_BLOCK_CAULDRON: return ItemCauldronBlockHandler; case E_BLOCK_CHAIN_COMMAND_BLOCK: return ItemChainCommandBlockHandler; case E_BLOCK_CHEST: return ItemChestBlockHandler; case E_BLOCK_CHORUS_FLOWER: return ItemChorusFlowerHandler; case E_BLOCK_CHORUS_PLANT: return ItemChorusPlantHandler; case E_BLOCK_CLAY: return ItemClayBlockHandler; case E_BLOCK_COAL_ORE: return ItemCoalOreHandler; case E_BLOCK_COBBLESTONE: return ItemCobblestoneHandler; case E_BLOCK_COBBLESTONE_STAIRS: return ItemCobblestoneStairsHandler; case E_BLOCK_COBBLESTONE_WALL: return ItemCobblestoneWallHandler; case E_BLOCK_COBWEB: return ItemCobwebHandler; case E_BLOCK_COCOA_POD: return ItemCocoaPodHandler; case E_BLOCK_COMMAND_BLOCK: return ItemCommandBlockHandler; case E_BLOCK_CONCRETE: return ItemConcreteBlockHandler; case E_BLOCK_CONCRETE_POWDER: return ItemConcretePowderHandler; case E_BLOCK_CRAFTING_TABLE: return ItemWorkbenchHandler; case E_BLOCK_CYAN_GLAZED_TERRACOTTA: return ItemCyanGlazedTerracottaHandler; case E_BLOCK_CYAN_SHULKER_BOX: return ItemCyanShulkerBoxHandler; case E_BLOCK_DANDELION: return ItemDandelionHandler; case E_BLOCK_DARK_OAK_DOOR: return ItemDarkOakDoorBlockHandler; case E_BLOCK_DARK_OAK_FENCE: return ItemDarkOakFenceHandler; case E_BLOCK_DARK_OAK_FENCE_GATE: return ItemDarkOakFenceGateHandler; case E_BLOCK_DARK_OAK_WOOD_STAIRS: return ItemDarkOakStairsHandler; case E_BLOCK_DAYLIGHT_SENSOR: return ItemDaylightSensorBlockHandler; case E_BLOCK_DEAD_BUSH: return ItemDeadBushHandler; case E_BLOCK_DETECTOR_RAIL: return ItemDetectorRailHandler; case E_BLOCK_DIAMOND_BLOCK: return ItemDiamondBlockHandler; case E_BLOCK_DIAMOND_ORE: return ItemDiamondOreHandler; case E_BLOCK_DIRT: return ItemDirtHandler; case E_BLOCK_DISPENSER: return ItemDispenserHandler; case E_BLOCK_DOUBLE_RED_SANDSTONE_SLAB: return ItemDoubleRedSandstoneSlabHandler; case E_BLOCK_DOUBLE_STONE_SLAB: return ItemDoubleStoneSlabHandler; case E_BLOCK_DOUBLE_WOODEN_SLAB: return ItemDoubleOakSlabHandler; case E_BLOCK_DRAGON_EGG: return ItemDragonEggBlockHandler; case E_BLOCK_DROPPER: return ItemDropperHandler; case E_BLOCK_EMERALD_BLOCK: return ItemEmeraldBlockHandler; case E_BLOCK_EMERALD_ORE: return ItemEmeraldOreHandler; case E_BLOCK_ENCHANTMENT_TABLE: return ItemEnchantingTableHandler; case E_BLOCK_ENDER_CHEST: return ItemEnderchestHandler; case E_BLOCK_END_BRICKS: return ItemEndBricksHandler; case E_BLOCK_END_GATEWAY: return ItemEndGatewayHandler; case E_BLOCK_END_PORTAL: return ItemEndPortalBlockHandler; case E_BLOCK_END_PORTAL_FRAME: return ItemEndPortalFrameHandler; case E_BLOCK_END_ROD: return ItemEndRodHandler; case E_BLOCK_END_STONE: return ItemEndStoneBlockHandler; case E_BLOCK_FARMLAND: return ItemFarmlandHandler; case E_BLOCK_FENCE: return ItemOakFenceHandler; case E_BLOCK_FIRE: return ItemFireBlockHandler; case E_BLOCK_FLOWER: return ItemPoppyHandler; case E_BLOCK_FLOWER_POT: return ItemFlowerPotBlockHandler; case E_BLOCK_FROSTED_ICE: return ItemFrostedIceHandler; case E_BLOCK_FURNACE: return ItemFurnaceHandler; case E_BLOCK_GLASS: return ItemGlassHandler; case E_BLOCK_GLASS_PANE: return ItemGlassPaneBlockHandler; case E_BLOCK_GLOWSTONE: return ItemGlowstoneBlockHandler; case E_BLOCK_GOLD_BLOCK: return ItemGoldBlockHandler; case E_BLOCK_GOLD_ORE: return ItemGoldOreHandler; case E_BLOCK_GRASS: return ItemGrassBlockHandler; case E_BLOCK_GRASS_PATH: return ItemGrassPathHandler; case E_BLOCK_GRAVEL: return ItemGravelHandler; case E_BLOCK_GRAY_GLAZED_TERRACOTTA: return ItemGrayGlazedTerracottaHandler; case E_BLOCK_GRAY_SHULKER_BOX: return ItemGrayShulkerBoxHandler; case E_BLOCK_GREEN_GLAZED_TERRACOTTA: return ItemGreenGlazedTerracottaHandler; case E_BLOCK_GREEN_SHULKER_BOX: return ItemGreenShulkerBoxHandler; case E_BLOCK_HARDENED_CLAY: return ItemHardenedClayHandler; case E_BLOCK_HAY_BALE: return ItemHayBaleHandler; case E_BLOCK_HEAD: return ItemHeadBlockHandler; case E_BLOCK_HEAVY_WEIGHTED_PRESSURE_PLATE: return ItemHeavyWeightedPressurePlateBlockHandler; case E_BLOCK_HOPPER: return ItemHopperHandler; case E_BLOCK_HUGE_BROWN_MUSHROOM: return ItemHugeBrownMushroomBlockHandler; case E_BLOCK_HUGE_RED_MUSHROOM: return ItemHugeRedMushroomBlockHandler; case E_BLOCK_ICE: return ItemIceHandler; case E_BLOCK_INACTIVE_COMPARATOR: return ItemInactiveComparatorHandler; case E_BLOCK_INVERTED_DAYLIGHT_SENSOR: return ItemInvertedDaylightSensorHandler; case E_BLOCK_IRON_BARS: return ItemIronBarsBlockHandler; case E_BLOCK_IRON_BLOCK: return ItemIronBlockHandler; case E_BLOCK_IRON_DOOR: return ItemIronDoorBlockHandler; case E_BLOCK_IRON_ORE: return ItemIronOreHandler; case E_BLOCK_IRON_TRAPDOOR: return ItemIronTrapdoorHandler; case E_BLOCK_JACK_O_LANTERN: return ItemJackOLanternHandler; case E_BLOCK_JUKEBOX: return ItemJukeboxHandler; case E_BLOCK_JUNGLE_DOOR: return ItemJungleDoorBlockHandler; case E_BLOCK_JUNGLE_FENCE: return ItemJungleFenceHandler; case E_BLOCK_JUNGLE_FENCE_GATE: return ItemJungleFenceGateHandler; case E_BLOCK_JUNGLE_WOOD_STAIRS: return ItemJungleStairsHandler; case E_BLOCK_LADDER: return ItemLadderHandler; case E_BLOCK_LAPIS_BLOCK: return ItemLapisBlockHandler; case E_BLOCK_LAPIS_ORE: return ItemLapisOreHandler; case E_BLOCK_LAVA: return ItemLavaHandler; case E_BLOCK_LEAVES: return ItemLeavesHandler; case E_BLOCK_LEVER: return ItemLeverHandler; case E_BLOCK_LIGHT_BLUE_GLAZED_TERRACOTTA: return ItemLightBlueGlazedTerracottaHandler; case E_BLOCK_LIGHT_BLUE_SHULKER_BOX: return ItemLightBlueShulkerBoxHandler; case E_BLOCK_LIGHT_GRAY_GLAZED_TERRACOTTA: return ItemLightGrayGlazedTerracottaHandler; case E_BLOCK_LIGHT_GRAY_SHULKER_BOX: return ItemLightGrayShulkerBoxHandler; case E_BLOCK_LIGHT_WEIGHTED_PRESSURE_PLATE: return ItemLightWeightedPressurePlateBlockHandler; case E_BLOCK_LILY_PAD: return ItemLilypadHandler; case E_BLOCK_LIME_GLAZED_TERRACOTTA: return ItemLimeGlazedTerracottaHandler; case E_BLOCK_LIME_SHULKER_BOX: return ItemLimeShulkerBoxHandler; case E_BLOCK_LIT_FURNACE: return ItemLitFurnaceHandler; case E_BLOCK_LOG: return ItemLogHandler; case E_BLOCK_MAGENTA_GLAZED_TERRACOTTA: return ItemMagentaGlazedTerracottaHandler; case E_BLOCK_MAGENTA_SHULKER_BOX: return ItemMagentaShulkerBoxHandler; case E_BLOCK_MAGMA: return ItemMagmaBlockHandler; case E_BLOCK_MELON: return ItemMelonBlockHandler; case E_BLOCK_MELON_STEM: return ItemMelonStemHandler; case E_BLOCK_MOB_SPAWNER: return ItemMobSpawnerBlockHandler; case E_BLOCK_MOSSY_COBBLESTONE: return ItemMossyCobblestoneHandler; case E_BLOCK_MYCELIUM: return ItemMyceliumHandler; case E_BLOCK_NETHERRACK: return ItemNetherrackHandler; case E_BLOCK_NETHER_BRICK: return ItemNetherBrickBlockHandler; case E_BLOCK_NETHER_BRICK_FENCE: return ItemNetherBrickFenceBlockHandler; case E_BLOCK_NETHER_BRICK_STAIRS: return ItemNetherBrickStairsHandler; case E_BLOCK_NETHER_PORTAL: return ItemNetherPortalBlockHandler; case E_BLOCK_NETHER_QUARTZ_ORE: return ItemNetherQuartzOreHandler; case E_BLOCK_NETHER_WART: return ItemNetherWartBlockHandler; case E_BLOCK_NETHER_WART_BLOCK: return ItemNetherWartBlockBlockHandler; case E_BLOCK_NEW_LEAVES: return ItemNewLeavesHandler; case E_BLOCK_NEW_LOG: return ItemNewLogHandler; case E_BLOCK_NOTE_BLOCK: return ItemNoteBlockHandler; case E_BLOCK_OAK_DOOR: return ItemOakDoorBlockHandler; case E_BLOCK_OAK_FENCE_GATE: return ItemOakFenceGateHandler; case E_BLOCK_OAK_WOOD_STAIRS: return ItemOakStairsHandler; case E_BLOCK_OBSERVER: return ItemObserverHandler; case E_BLOCK_OBSIDIAN: return ItemObsidianHandler; case E_BLOCK_ORANGE_GLAZED_TERRACOTTA: return ItemOrangeGlazedTerracottaHandler; case E_BLOCK_ORANGE_SHULKER_BOX: return ItemOrangeShulkerBoxHandler; case E_BLOCK_PACKED_ICE: return ItemPackedIceHandler; case E_BLOCK_PINK_GLAZED_TERRACOTTA: return ItemPinkGlazedTerracottaHandler; case E_BLOCK_PINK_SHULKER_BOX: return ItemPinkShulkerBoxHandler; case E_BLOCK_PISTON: return ItemPistonHandler; case E_BLOCK_PISTON_EXTENSION: return ItemPistonExtensionHandler; case E_BLOCK_PISTON_MOVED_BLOCK: return ItemPistonMovedBlockHandler; case E_BLOCK_PLANKS: return ItemPlanksHandler; case E_BLOCK_POTATOES: return ItemPotatoesBlockHandler; case E_BLOCK_POWERED_RAIL: return ItemPoweredRailHandler; case E_BLOCK_PRISMARINE_BLOCK: return ItemPrismarineBlockHandler; case E_BLOCK_PUMPKIN: return ItemPumpkinHandler; case E_BLOCK_PUMPKIN_STEM: return ItemPumpkinStemHandler; case E_BLOCK_PURPLE_GLAZED_TERRACOTTA: return ItemPurpleGlazedTerracottaHandler; case E_BLOCK_PURPLE_SHULKER_BOX: return ItemPurpleShulkerBoxHandler; case E_BLOCK_PURPUR_BLOCK: return ItemPurpurBlockHandler; case E_BLOCK_PURPUR_DOUBLE_SLAB: return ItemPurpurDoubleSlabHandler; case E_BLOCK_PURPUR_PILLAR: return ItemPurpurPillarHandler; case E_BLOCK_PURPUR_SLAB: return ItemPurpurSlabHandler; case E_BLOCK_PURPUR_STAIRS: return ItemPurpurStairsHandler; case E_BLOCK_QUARTZ_BLOCK: return ItemQuartzBlockHandler; case E_BLOCK_QUARTZ_STAIRS: return ItemQuartzStairsHandler; case E_BLOCK_RAIL: return ItemRailHandler; case E_BLOCK_REDSTONE_LAMP_OFF: return ItemRedstoneLampOffHandler; case E_BLOCK_REDSTONE_LAMP_ON: return ItemRedstoneLampOnHandler; case E_BLOCK_REDSTONE_ORE: return ItemRedstoneOreHandler; case E_BLOCK_REDSTONE_ORE_GLOWING: return ItemRedstoneOreGlowingHandler; case E_BLOCK_REDSTONE_REPEATER_OFF: return ItemRedstoneRepeaterOffHandler; case E_BLOCK_REDSTONE_REPEATER_ON: return ItemRedstoneRepeaterOnHandler; case E_BLOCK_REDSTONE_TORCH_OFF: return ItemRedstoneTorchOffBlockHandler; case E_BLOCK_REDSTONE_TORCH_ON: return ItemRedstoneTorchHandler; case E_BLOCK_REDSTONE_WIRE: return ItemRedstoneWireHandler; case E_BLOCK_RED_GLAZED_TERRACOTTA: return ItemRedGlazedTerracottaHandler; case E_BLOCK_RED_MUSHROOM: return ItemRedMushroomBlockHandler; case E_BLOCK_RED_NETHER_BRICK: return ItemRedNetherBricksHandler; case E_BLOCK_RED_SANDSTONE: return ItemRedSandstoneHandler; case E_BLOCK_RED_SANDSTONE_SLAB: return ItemRedSandstoneSlabHandler; case E_BLOCK_RED_SANDSTONE_STAIRS: return ItemRedSandstoneStairsHandler; case E_BLOCK_RED_SHULKER_BOX: return ItemRedShulkerBoxHandler; case E_BLOCK_REPEATING_COMMAND_BLOCK: return ItemRepeatingCommandBlockHandler; case E_BLOCK_SAND: return ItemSandHandler; case E_BLOCK_SANDSTONE: return ItemSandstoneHandler; case E_BLOCK_SANDSTONE_STAIRS: return ItemSandstoneStairsHandler; case E_BLOCK_SAPLING: return ItemSaplingHandler; case E_BLOCK_SEA_LANTERN: return ItemSeaLanternHandler; case E_BLOCK_SIGN_POST: return ItemSignPostHandler; case E_BLOCK_SILVERFISH_EGG: return ItemSilverfishEggBlockHandler; case E_BLOCK_SLIME_BLOCK: return ItemSlimeBlockHandler; case E_BLOCK_SNOW: return ItemSnowHandler; case E_BLOCK_SNOW_BLOCK: return ItemSnowBlockHandler; case E_BLOCK_SOULSAND: return ItemSoulsandHandler; case E_BLOCK_SPONGE: return ItemSpongeHandler; case E_BLOCK_SPRUCE_DOOR: return ItemSpruceDoorBlockHandler; case E_BLOCK_SPRUCE_FENCE: return ItemSpruceFenceHandler; case E_BLOCK_SPRUCE_FENCE_GATE: return ItemSpruceFenceGateHandler; case E_BLOCK_SPRUCE_WOOD_STAIRS: return ItemSpruceStairsHandler; case E_BLOCK_STAINED_GLASS: return ItemStainedGlassHandler; case E_BLOCK_STAINED_GLASS_PANE: return ItemStainedGlassPaneHandler; case E_BLOCK_STANDING_BANNER: return ItemStandingBannerHandler; case E_BLOCK_STATIONARY_LAVA : return ItemStationaryLavaHandler; case E_BLOCK_STATIONARY_WATER: return ItemStationaryWaterHandler; case E_BLOCK_STICKY_PISTON: return ItemStickyPistonHandler; case E_BLOCK_STONE: return ItemStoneHandler; case E_BLOCK_STONE_BRICKS: return ItemStoneBricksHandler; case E_BLOCK_STONE_BRICK_STAIRS: return ItemStoneBrickStairsHandler; case E_BLOCK_STONE_BUTTON: return ItemStoneButtonHandler; case E_BLOCK_STONE_PRESSURE_PLATE: return ItemStonePressurePlateBlockHandler; case E_BLOCK_STONE_SLAB: return ItemStoneSlabHandler; case E_BLOCK_STRUCTURE_BLOCK: return ItemStructureBlockHandler; case E_BLOCK_STRUCTURE_VOID: return ItemStructureVoidHandler; case E_BLOCK_SUGARCANE: return ItemSugarcaneHandler; case E_BLOCK_TALL_GRASS: return ItemTallGrassHandler; case E_BLOCK_TERRACOTTA: return ItemTerracottaHandler; case E_BLOCK_TNT: return ItemTNTBlockHandler; case E_BLOCK_TORCH: return ItemTorchBlockHandler; case E_BLOCK_TRAPDOOR: return ItemOakTrapdoorHandler; case E_BLOCK_TRAPPED_CHEST: return ItemTrappedChestHandler; case E_BLOCK_TRIPWIRE: return ItemTripwireHandler; case E_BLOCK_TRIPWIRE_HOOK: return ItemTripwireHookHandler; case E_BLOCK_VINES: return ItemVineHandler; case E_BLOCK_WALLSIGN: return ItemWallsignHandler; case E_BLOCK_WALL_BANNER: return ItemWallBannerHandler; case E_BLOCK_WATER: return ItemWaterHandler; case E_BLOCK_WHEAT: return ItemWheatBlockHandler; case E_BLOCK_WHITE_GLAZED_TERRACOTTA: return ItemWhiteGlazedTerracottaHandler; case E_BLOCK_WHITE_SHULKER_BOX: return ItemWhiteShulkerBoxHandler; case E_BLOCK_WOODEN_BUTTON: return ItemOakButtonHandler; case E_BLOCK_WOODEN_PRESSURE_PLATE: return ItemWoodenPressurePlateBlockHandler; case E_BLOCK_WOODEN_SLAB: return ItemOakSlabHandler; case E_BLOCK_WOOL: return ItemWoolHandler; case E_BLOCK_YELLOW_GLAZED_TERRACOTTA: return ItemYellowGlazedTerracottaHandler; case E_BLOCK_YELLOW_SHULKER_BOX: return ItemYellowShulkerBoxHandler; case E_ITEM_11_DISC: return Item11DiscHandler; case E_ITEM_13_DISC: return Item13DiscHandler; case E_ITEM_ACACIA_BOAT: return ItemAcaciaBoatHandler; case E_ITEM_ACACIA_DOOR: return ItemAcaciaDoorHandler; case E_ITEM_ARMOR_STAND: return ItemArmorStandHandler; case E_ITEM_ARROW: return ItemArrowHandler; case E_ITEM_BAKED_POTATO: return ItemBakedPotatoHandler; case E_ITEM_BANNER: return ItemBannerHandler; case E_ITEM_BED: return ItemBedHandler; case E_ITEM_BEETROOT: return ItemBeetrootHandler; case E_ITEM_BEETROOT_SEEDS: return ItemBeetrootSeedsHandler; case E_ITEM_BEETROOT_SOUP: return ItemBeetrootSoupHandler; case E_ITEM_BIRCH_BOAT: return ItemBirchBoatHandler; case E_ITEM_BIRCH_DOOR: return ItemBirchDoorHandler; case E_ITEM_BLAZE_POWDER: return ItemBlazePowderHandler; case E_ITEM_BLAZE_ROD: return ItemBlazeRodHandler; case E_ITEM_BLOCKS_DISC: return ItemBlocksDiscHandler; case E_ITEM_BOAT: return ItemOakBoatHandler; case E_ITEM_BONE: return ItemBoneHandler; case E_ITEM_BOOK: return ItemBookHandler; case E_ITEM_BOOK_AND_QUILL: return ItemBookAndQuillHandler; case E_ITEM_BOTTLE_O_ENCHANTING: return ItemBottleOEnchantingHandler; case E_ITEM_BOW: return ItemBowHandler; case E_ITEM_BOWL: return ItemBowlHandler; case E_ITEM_BREAD: return ItemBreadHandler; case E_ITEM_BREWING_STAND: return ItemBrewingStandHandler; case E_ITEM_BUCKET: return ItemBucketHandler; case E_ITEM_CAKE: return ItemCakeHandler; case E_ITEM_CARROT: return ItemCarrotHandler; case E_ITEM_CARROT_ON_STICK: return ItemCarrotOnStickHandler; case E_ITEM_CAT_DISC: return ItemCatDiscHandler; case E_ITEM_CAULDRON: return ItemCauldronHandler; case E_ITEM_CHAIN_BOOTS: return ItemChainBootsHandler; case E_ITEM_CHAIN_CHESTPLATE: return ItemChainChestplateHandler; case E_ITEM_CHAIN_HELMET: return ItemChainHelmetHandler; case E_ITEM_CHAIN_LEGGINGS: return ItemChainLeggingsHandler; case E_ITEM_CHEST_MINECART: return ItemChestMinecartHandler; case E_ITEM_CHIRP_DISC: return ItemChirpDiscHandler; case E_ITEM_CHORUS_FRUIT: return ItemChorusFruitHandler; case E_ITEM_CLAY: return ItemClayHandler; case E_ITEM_CLAY_BRICK: return ItemBricksHandler; case E_ITEM_CLOCK: return ItemClockHandler; case E_ITEM_COAL: return ItemCoalHandler; case E_ITEM_COMPARATOR: return ItemComparatorHandler; case E_ITEM_COMPASS: return ItemCompassHandler; case E_ITEM_COOKED_CHICKEN: return ItemCookedChickenHandler; case E_ITEM_COOKED_FISH: return ItemCookedFishHandler; case E_ITEM_COOKED_MUTTON: return ItemCookedMuttonHandler; case E_ITEM_COOKED_PORKCHOP: return ItemCookedPorkchopHandler; case E_ITEM_COOKED_RABBIT: return ItemCookedRabbitHandler; case E_ITEM_COOKIE: return ItemCookieHandler; case E_ITEM_DARK_OAK_BOAT: return ItemDarkOakBoatHandler; case E_ITEM_DARK_OAK_DOOR: return ItemDarkOakDoorHandler; case E_ITEM_DIAMOND: return ItemDiamondHandler; case E_ITEM_DIAMOND_AXE: return ItemDiamondAxeHandler; case E_ITEM_DIAMOND_BOOTS: return ItemDiamondBootsHandler; case E_ITEM_DIAMOND_CHESTPLATE: return ItemDiamondChestplateHandler; case E_ITEM_DIAMOND_HELMET: return ItemDiamondHelmetHandler; case E_ITEM_DIAMOND_HOE: return ItemDiamondHoeHandler; case E_ITEM_DIAMOND_HORSE_ARMOR: return ItemDiamondHorseArmorHandler; case E_ITEM_DIAMOND_LEGGINGS: return ItemDiamondLeggingsHandler; case E_ITEM_DIAMOND_PICKAXE: return ItemDiamondPickaxeHandler; case E_ITEM_DIAMOND_SHOVEL: return ItemDiamondShovelHandler; case E_ITEM_DIAMOND_SWORD: return ItemDiamondSwordHandler; case E_ITEM_DRAGON_BREATH: return ItemDragonBreathHandler; case E_ITEM_DYE: return ItemDyeHandler; case E_ITEM_EGG: return ItemEggHandler; case E_ITEM_ELYTRA: return ItemElytraHandler; case E_ITEM_EMERALD: return ItemEmeraldHandler; case E_ITEM_EMPTY_MAP: return ItemEmptyMapHandler; case E_ITEM_ENCHANTED_BOOK: return ItemEnchantedBookHandler; case E_ITEM_ENDER_PEARL: return ItemEnderPearlHandler; case E_ITEM_END_CRYSTAL: return ItemEndCrystalHandler; case E_ITEM_EYE_OF_ENDER: return ItemEyeOfEnderHandler; case E_ITEM_FAR_DISC: return ItemFarDiscHandler; case E_ITEM_FEATHER: return ItemFeatherHandler; case E_ITEM_FERMENTED_SPIDER_EYE: return ItemFermentedSpiderEyeHandler; case E_ITEM_FIREWORK_ROCKET: return ItemFireworkRocketHandler; case E_ITEM_FIREWORK_STAR: return ItemFireworkStarHandler; case E_ITEM_FIRE_CHARGE: return ItemFireChargeHandler; case E_ITEM_FISHING_ROD: return ItemFishingRodHandler; case E_ITEM_FLINT: return ItemFlintHandler; case E_ITEM_FLINT_AND_STEEL: return ItemFlintAndSteelHandler; case E_ITEM_FLOWER_POT: return ItemFlowerPotHandler; case E_ITEM_FURNACE_MINECART: return ItemFurnaceMinecartHandler; case E_ITEM_GHAST_TEAR: return ItemGhastTearHandler; case E_ITEM_GLASS_BOTTLE: return ItemGlassBottleHandler; case E_ITEM_GLISTERING_MELON: return ItemGlisteringMelonHandler; case E_ITEM_GLOWSTONE_DUST: return ItemGlowstoneDustHandler; case E_ITEM_GOLD: return ItemGoldHandler; case E_ITEM_GOLDEN_APPLE: return ItemGoldenAppleHandler; case E_ITEM_GOLDEN_CARROT: return ItemGoldenCarrotHandler; case E_ITEM_GOLD_AXE: return ItemGoldenAxeHandler; case E_ITEM_GOLD_BOOTS: return ItemGoldenBootsHandler; case E_ITEM_GOLD_CHESTPLATE: return ItemGoldenChestplateHandler; case E_ITEM_GOLD_HELMET: return ItemGoldenHelmetHandler; case E_ITEM_GOLD_HOE: return ItemGoldenHoeHandler; case E_ITEM_GOLD_HORSE_ARMOR: return ItemGoldenHorseArmorHandler; case E_ITEM_GOLD_LEGGINGS: return ItemGoldenLeggingsHandler; case E_ITEM_GOLD_NUGGET: return ItemGoldNuggetHandler; case E_ITEM_GOLD_PICKAXE: return ItemGoldenPickaxeHandler; case E_ITEM_GOLD_SHOVEL: return ItemGoldenShovelHandler; case E_ITEM_GOLD_SWORD: return ItemGoldenSwordHandler; case E_ITEM_GUNPOWDER: return ItemGunpowderHandler; case E_ITEM_HEAD: return ItemHeadHandler; case E_ITEM_IRON: return ItemIronHandler; case E_ITEM_IRON_AXE: return ItemIronAxeHandler; case E_ITEM_IRON_BOOTS: return ItemIronBootsHandler; case E_ITEM_IRON_CHESTPLATE: return ItemIronChestplateHandler; case E_ITEM_IRON_DOOR: return ItemIronDoorHandler; case E_ITEM_IRON_HELMET: return ItemIronHelmetHandler; case E_ITEM_IRON_HOE: return ItemIronHoeHandler; case E_ITEM_IRON_HORSE_ARMOR: return ItemIronHorseArmorHandler; case E_ITEM_IRON_LEGGINGS: return ItemIronLeggingsHandler; case E_ITEM_IRON_NUGGET: return ItemIronNuggetHandler; case E_ITEM_IRON_PICKAXE: return ItemIronPickaxeHandler; case E_ITEM_IRON_SHOVEL: return ItemIronShovelHandler; case E_ITEM_IRON_SWORD: return ItemIronSwordHandler; case E_ITEM_ITEM_FRAME: return ItemItemFrameHandler; case E_ITEM_JUNGLE_BOAT: return ItemJungleBoatHandler; case E_ITEM_JUNGLE_DOOR: return ItemJungleDoorHandler; case E_ITEM_LAVA_BUCKET: return ItemLavaBucketHandler; case E_ITEM_LEASH: return ItemLeashHandler; case E_ITEM_LEATHER: return ItemLeatherHandler; case E_ITEM_LEATHER_BOOTS: return ItemLeatherBootsHandler; case E_ITEM_LEATHER_CAP: return ItemLeatherCapHandler; case E_ITEM_LEATHER_PANTS: return ItemLeatherPantsHandler; case E_ITEM_LEATHER_TUNIC: return ItemLeatherTunicHandler; case E_ITEM_LINGERING_POTION: return ItemLingeringPotionHandler; case E_ITEM_MAGMA_CREAM: return ItemMagmaCreamHandler; case E_ITEM_MALL_DISC: return ItemMallDiscHandler; case E_ITEM_MAP: return ItemMapHandler; case E_ITEM_MELLOHI_DISC: return ItemMellohiDiscHandler; case E_ITEM_MELON_SEEDS: return ItemMelonSeedsHandler; case E_ITEM_MELON_SLICE: return ItemMelonSliceHandler; case E_ITEM_MILK: return ItemMilkHandler; case E_ITEM_MINECART: return ItemMinecartHandler; case E_ITEM_MINECART_WITH_COMMAND_BLOCK: return ItemMinecartWithCommandBlockHandler; case E_ITEM_MINECART_WITH_HOPPER: return ItemMinecartWithHopperHandler; case E_ITEM_MINECART_WITH_TNT: return ItemMinecartWithTNTHandler; case E_ITEM_MUSHROOM_SOUP: return ItemMushroomSoupHandler; case E_ITEM_NAME_TAG: return ItemNameTagHandler; case E_ITEM_NETHER_BRICK: return ItemNetherBrickHandler; case E_ITEM_NETHER_QUARTZ: return ItemNetherQuartzHandler; case E_ITEM_NETHER_STAR: return ItemNetherStarHandler; case E_ITEM_NETHER_WART: return ItemNetherWartHandler; case E_ITEM_PAINTING: return ItemPaintingHandler; case E_ITEM_PAPER: return ItemPaperHandler; case E_ITEM_POISONOUS_POTATO: return ItemPoisonousPotatoHandler; case E_ITEM_POPPED_CHORUS_FRUIT: return ItemPoppedChorusFruitHandler; case E_ITEM_POTATO: return ItemPotatoHandler; case E_ITEM_POTION: return ItemPotionHandler; case E_ITEM_PRISMARINE_CRYSTALS: return ItemPrismarineCrystalsHandler; case E_ITEM_PRISMARINE_SHARD: return ItemPrismarineShardHandler; case E_ITEM_PUMPKIN_PIE: return ItemPumpkinPieHandler; case E_ITEM_PUMPKIN_SEEDS: return ItemPumpkinSeedsHandler; case E_ITEM_RABBITS_FOOT: return ItemRabbitsFootHandler; case E_ITEM_RABBIT_HIDE: return ItemRabbitHideHandler; case E_ITEM_RABBIT_STEW: return ItemRabbitStewHandler; case E_ITEM_RAW_BEEF: return ItemRawBeefHandler; case E_ITEM_RAW_CHICKEN: return ItemRawChickenHandler; case E_ITEM_RAW_FISH: return ItemRawFishHandler; case E_ITEM_RAW_MUTTON: return ItemRawMuttonHandler; case E_ITEM_RAW_PORKCHOP: return ItemRawPorkchopHandler; case E_ITEM_RAW_RABBIT: return ItemRawRabbitHandler; case E_ITEM_REDSTONE_DUST: return ItemRedstoneDustHandler; case E_ITEM_REDSTONE_REPEATER: return ItemRedstoneRepeaterHandler; case E_ITEM_RED_APPLE: return ItemAppleHandler; case E_ITEM_ROTTEN_FLESH: return ItemRottenFleshHandler; case E_ITEM_SADDLE: return ItemSaddleHandler; case E_ITEM_SEEDS: return ItemSeedsHandler; case E_ITEM_SHEARS: return ItemShearsHandler; case E_ITEM_SHIELD: return ItemShieldHandler; case E_ITEM_SHULKER_SHELL: return ItemShulkerShellHandler; case E_ITEM_SIGN: return ItemSignHandler; case E_ITEM_SLIMEBALL: return ItemSlimeballHandler; case E_ITEM_SNOWBALL: return ItemSnowballHandler; case E_ITEM_SPAWN_EGG: return ItemSpawnEggHandler; case E_ITEM_SPECTRAL_ARROW: return ItemSpectralArrowHandler; case E_ITEM_SPIDER_EYE: return ItemSpiderEyeHandler; case E_ITEM_SPLASH_POTION: return ItemSplashPotionHandler; case E_ITEM_SPRUCE_BOAT: return ItemSpruceBoatHandler; case E_ITEM_SPRUCE_DOOR: return ItemSpruceDoorHandler; case E_ITEM_STAL_DISC: return ItemStalDiscHandler; case E_ITEM_STEAK: return ItemCookedBeefHandler; case E_ITEM_STICK: return ItemStickHandler; case E_ITEM_STONE_AXE: return ItemStoneAxeHandler; case E_ITEM_STONE_HOE: return ItemStoneHoeHandler; case E_ITEM_STONE_PICKAXE: return ItemStonePickaxeHandler; case E_ITEM_STONE_SHOVEL: return ItemStoneShovelHandler; case E_ITEM_STONE_SWORD: return ItemStoneSwordHandler; case E_ITEM_STRAD_DISC: return ItemStradDiscHandler; case E_ITEM_STRING: return ItemStringHandler; case E_ITEM_SUGAR: return ItemSugarHandler; case E_ITEM_SUGAR_CANE: return ItemSugarCaneHandler; case E_ITEM_TIPPED_ARROW: return ItemTippedArrowHandler; case E_ITEM_TOTEM_OF_UNDYING: return ItemTotemOfUndyingHandler; case E_ITEM_WAIT_DISC: return ItemWaitDiscHandler; case E_ITEM_WARD_DISC: return ItemWardDiscHandler; case E_ITEM_WATER_BUCKET: return ItemWaterBucketHandler; case E_ITEM_WHEAT: return ItemWheatHandler; case E_ITEM_WOODEN_DOOR: return ItemOakDoorHandler; case E_ITEM_WOODEN_AXE: return ItemWoodenAxeHandler; case E_ITEM_WOODEN_HOE: return ItemWoodenHoeHandler; case E_ITEM_WOODEN_PICKAXE: return ItemWoodenPickaxeHandler; case E_ITEM_WOODEN_SHOVEL: return ItemWoodenShovelHandler; case E_ITEM_WOODEN_SWORD: return ItemWoodenSwordHandler; case E_ITEM_WRITTEN_BOOK: return ItemWrittenBookHandler; } ASSERT("Unknown item type!"); return ItemAirHandler; } void cItemHandler::OnPlayerPlace(cPlayer & a_Player, const cItem & a_HeldItem, const Vector3i a_ClickedBlockPosition, const eBlockFace a_ClickedBlockFace, const Vector3i a_CursorPosition) const { if (a_ClickedBlockFace == BLOCK_FACE_NONE) { // Clicked in the air, no placement possible return; } if (!cChunkDef::IsValidHeight(a_ClickedBlockPosition.y)) { // The clicked block is outside the world, ignore this call altogether (GH #128): return; } const auto & World = *a_Player.GetWorld(); BLOCKTYPE ClickedBlockType; NIBBLETYPE ClickedBlockMeta; World.GetBlockTypeMeta(a_ClickedBlockPosition, ClickedBlockType, ClickedBlockMeta); // Check if the block ignores build collision (water, grass etc.): if (cBlockHandler::For(ClickedBlockType).DoesIgnoreBuildCollision(World, a_HeldItem, a_ClickedBlockPosition, ClickedBlockMeta, a_ClickedBlockFace, true)) { // Try to place the block at the clicked position: if (!CommitPlacement(a_Player, a_HeldItem, a_ClickedBlockPosition, a_ClickedBlockFace, a_CursorPosition)) { // The placement failed, the blocks have already been re-sent, re-send inventory: a_Player.GetInventory().SendEquippedSlot(); return; } } else { const auto PlacedPosition = AddFaceDirection(a_ClickedBlockPosition, a_ClickedBlockFace); if (!cChunkDef::IsValidHeight(PlacedPosition.y)) { // The block is being placed outside the world, ignore this packet altogether (GH #128): return; } NIBBLETYPE PlaceMeta; BLOCKTYPE PlaceBlock; World.GetBlockTypeMeta(PlacedPosition, PlaceBlock, PlaceMeta); // Clicked on side of block, make sure that placement won't be cancelled if there is a slab able to be double slabbed. // No need to do combinability (dblslab) checks, client will do that here. if (!cBlockHandler::For(PlaceBlock).DoesIgnoreBuildCollision(World, a_HeldItem, PlacedPosition, PlaceMeta, a_ClickedBlockFace, false)) { // Tried to place a block into another? // Happens when you place a block aiming at side of block with a torch on it or stem beside it return; } // Try to place the block: if (!CommitPlacement(a_Player, a_HeldItem, PlacedPosition, a_ClickedBlockFace, a_CursorPosition)) { // The placement failed, the blocks have already been re-sent, re-send inventory: a_Player.GetInventory().SendEquippedSlot(); return; } } // Remove the "placed" item: if (a_Player.IsGameModeSurvival()) { a_Player.GetInventory().RemoveOneEquippedItem(); } } bool cItemHandler::OnItemUse( cWorld * a_World, cPlayer * a_Player, cBlockPluginInterface & a_PluginInterface, const cItem & a_Item, const Vector3i a_ClickedBlockPos, eBlockFace a_ClickedBlockFace ) const { UNUSED(a_World); UNUSED(a_Player); UNUSED(a_PluginInterface); UNUSED(a_Item); UNUSED(a_ClickedBlockPos); UNUSED(a_ClickedBlockFace); return false; } bool cItemHandler::OnDiggingBlock( cWorld * a_World, cPlayer * a_Player, const cItem & a_HeldItem, const Vector3i a_ClickedBlockPos, eBlockFace a_ClickedBlockFace ) const { UNUSED(a_World); UNUSED(a_Player); UNUSED(a_HeldItem); UNUSED(a_ClickedBlockPos); UNUSED(a_ClickedBlockFace); return false; } void cItemHandler::OnEntityAttack(cPlayer * a_Attacker, cEntity * a_AttackedEntity) const { UNUSED(a_AttackedEntity); a_Attacker->UseEquippedItem(dlaAttackEntity); } void cItemHandler::OnFoodEaten(cWorld * a_World, cPlayer * a_Player, cItem * a_Item) const { UNUSED(a_World); UNUSED(a_Player); UNUSED(a_Item); } short cItemHandler::GetDurabilityLossByAction(eDurabilityLostAction a_Action) const { UNUSED(a_Action); return 0; } char cItemHandler::GetMaxStackSize(void) const { if (m_ItemType < 256) { // All blocks can stack up to 64 return 64; } switch (m_ItemType) { case E_ITEM_ACACIA_DOOR: return 64; case E_ITEM_ARMOR_STAND: return 16; case E_ITEM_ARROW: return 64; case E_ITEM_BAKED_POTATO: return 64; case E_ITEM_BANNER: return 16; case E_ITEM_BEETROOT: return 64; case E_ITEM_BEETROOT_SEEDS: return 64; case E_ITEM_BIRCH_DOOR: return 64; case E_ITEM_BLAZE_POWDER: return 64; case E_ITEM_BLAZE_ROD: return 64; case E_ITEM_BONE: return 64; case E_ITEM_BOOK: return 64; case E_ITEM_BOTTLE_O_ENCHANTING: return 64; case E_ITEM_BOWL: return 64; case E_ITEM_BREAD: return 64; case E_ITEM_BREWING_STAND: return 64; case E_ITEM_BUCKET: return 16; case E_ITEM_CARROT: return 64; case E_ITEM_CAULDRON: return 64; case E_ITEM_CHORUS_FRUIT: return 64; case E_ITEM_CLAY: return 64; case E_ITEM_CLAY_BRICK: return 64; case E_ITEM_CLOCK: return 64; case E_ITEM_COAL: return 64; case E_ITEM_COMPARATOR: return 64; case E_ITEM_COMPASS: return 64; case E_ITEM_COOKED_CHICKEN: return 64; case E_ITEM_COOKED_FISH: return 64; case E_ITEM_COOKED_MUTTON: return 64; case E_ITEM_COOKED_PORKCHOP: return 64; case E_ITEM_COOKED_RABBIT: return 64; case E_ITEM_COOKIE: return 64; case E_ITEM_DARK_OAK_DOOR: return 64; case E_ITEM_DIAMOND: return 64; case E_ITEM_DRAGON_BREATH: return 64; case E_ITEM_DYE: return 64; case E_ITEM_EGG: return 16; case E_ITEM_EMERALD: return 64; case E_ITEM_EMPTY_MAP: return 64; case E_ITEM_ENDER_PEARL: return 16; case E_ITEM_EYE_OF_ENDER: return 64; case E_ITEM_FEATHER: return 64; case E_ITEM_FERMENTED_SPIDER_EYE: return 64; case E_ITEM_FIRE_CHARGE: return 64; case E_ITEM_FIREWORK_ROCKET: return 64; case E_ITEM_FIREWORK_STAR: return 64; case E_ITEM_FLINT: return 64; case E_ITEM_FLOWER_POT: return 64; case E_ITEM_GHAST_TEAR: return 64; case E_ITEM_GLASS_BOTTLE: return 64; case E_ITEM_GLISTERING_MELON: return 64; case E_ITEM_GLOWSTONE_DUST: return 64; case E_ITEM_GOLD: return 64; case E_ITEM_GOLDEN_APPLE: return 64; case E_ITEM_GOLDEN_CARROT: return 64; case E_ITEM_GOLD_NUGGET: return 64; case E_ITEM_GUNPOWDER: return 64; case E_ITEM_HEAD: return 64; case E_ITEM_JUNGLE_DOOR: return 64; case E_ITEM_IRON: return 64; case E_ITEM_IRON_DOOR: return 64; case E_ITEM_IRON_NUGGET: return 64; case E_ITEM_ITEM_FRAME: return 64; case E_ITEM_LEAD: return 64; case E_ITEM_LEATHER: return 64; case E_ITEM_MAGMA_CREAM: return 64; case E_ITEM_MAP: return 64; case E_ITEM_MELON_SEEDS: return 64; case E_ITEM_MELON_SLICE: return 64; case E_ITEM_NETHER_BRICK: return 64; case E_ITEM_NETHER_QUARTZ: return 64; case E_ITEM_NETHER_WART: return 64; case E_ITEM_PAINTING: return 64; case E_ITEM_PAPER: return 64; case E_ITEM_POISONOUS_POTATO: return 64; case E_ITEM_POPPED_CHORUS_FRUIT: return 64; case E_ITEM_POTATO: return 64; case E_ITEM_PRISMARINE_CRYSTALS: return 64; case E_ITEM_PRISMARINE_SHARD: return 64; case E_ITEM_PUMPKIN_PIE: return 64; case E_ITEM_PUMPKIN_SEEDS: return 64; case E_ITEM_RABBITS_FOOT: return 64; case E_ITEM_RABBIT_HIDE: return 64; case E_ITEM_RAW_BEEF: return 64; case E_ITEM_RAW_CHICKEN: return 64; case E_ITEM_RAW_FISH: return 64; case E_ITEM_RAW_MUTTON: return 64; case E_ITEM_RAW_PORKCHOP: return 64; case E_ITEM_RAW_RABBIT: return 64; case E_ITEM_RED_APPLE: return 64; case E_ITEM_REDSTONE_DUST: return 64; case E_ITEM_REDSTONE_REPEATER: return 64; case E_ITEM_ROTTEN_FLESH: return 64; case E_ITEM_SEEDS: return 64; case E_ITEM_SIGN: return 16; case E_ITEM_SLIMEBALL: return 64; case E_ITEM_SNOWBALL: return 16; case E_ITEM_SPAWN_EGG: return 64; case E_ITEM_SPECTRAL_ARROW: return 64; case E_ITEM_SPIDER_EYE: return 64; case E_ITEM_SPRUCE_DOOR: return 64; case E_ITEM_STEAK: return 64; case E_ITEM_STICK: return 64; case E_ITEM_STRING: return 64; case E_ITEM_SUGAR: return 64; case E_ITEM_SUGAR_CANE: return 64; case E_ITEM_TIPPED_ARROW: return 64; case E_ITEM_WHEAT: return 64; case E_ITEM_WOODEN_DOOR: return 64; // By default items don't stack: default: return 1; } } bool cItemHandler::IsFood(void) const { return false; } bool cItemHandler::IsDrinkable(short a_ItemDamage) const { UNUSED(a_ItemDamage); return false; } bool cItemHandler::IsPlaceable(void) const { // We can place any block that has a corresponding E_BLOCK_TYPE: return (m_ItemType >= 1) && (m_ItemType <= E_BLOCK_MAX_TYPE_ID); } bool cItemHandler::CanRepairWithRawMaterial(short a_ItemType) const { UNUSED(a_ItemType); return false; } bool cItemHandler::CanHarvestBlock(BLOCKTYPE a_BlockType) const { switch (a_BlockType) { case E_BLOCK_ANVIL: case E_BLOCK_BLACK_GLAZED_TERRACOTTA: case E_BLOCK_BLOCK_OF_COAL: case E_BLOCK_BLOCK_OF_REDSTONE: case E_BLOCK_BLUE_GLAZED_TERRACOTTA: case E_BLOCK_BONE_BLOCK: case E_BLOCK_BREWING_STAND: case E_BLOCK_BRICK: case E_BLOCK_BRICK_STAIRS: case E_BLOCK_BROWN_GLAZED_TERRACOTTA: case E_BLOCK_CAULDRON: case E_BLOCK_COAL_ORE: case E_BLOCK_COBBLESTONE: case E_BLOCK_COBBLESTONE_STAIRS: case E_BLOCK_COBBLESTONE_WALL: case E_BLOCK_COBWEB: case E_BLOCK_CONCRETE: case E_BLOCK_CYAN_GLAZED_TERRACOTTA: case E_BLOCK_DIAMOND_BLOCK: case E_BLOCK_DIAMOND_ORE: case E_BLOCK_DISPENSER: case E_BLOCK_DOUBLE_RED_SANDSTONE_SLAB: case E_BLOCK_DOUBLE_STONE_SLAB: case E_BLOCK_DROPPER: case E_BLOCK_EMERALD_ORE: case E_BLOCK_ENCHANTMENT_TABLE: case E_BLOCK_END_BRICKS: case E_BLOCK_END_STONE: case E_BLOCK_FURNACE: case E_BLOCK_GOLD_BLOCK: case E_BLOCK_GOLD_ORE: case E_BLOCK_GRAY_GLAZED_TERRACOTTA: case E_BLOCK_GREEN_GLAZED_TERRACOTTA: case E_BLOCK_HARDENED_CLAY: case E_BLOCK_HEAVY_WEIGHTED_PRESSURE_PLATE: case E_BLOCK_HOPPER: case E_BLOCK_IRON_BARS: case E_BLOCK_IRON_BLOCK: case E_BLOCK_IRON_DOOR: case E_BLOCK_IRON_ORE: case E_BLOCK_IRON_TRAPDOOR: case E_BLOCK_LAPIS_BLOCK: case E_BLOCK_LAPIS_ORE: case E_BLOCK_LIGHT_BLUE_GLAZED_TERRACOTTA: case E_BLOCK_LIGHT_GRAY_GLAZED_TERRACOTTA: case E_BLOCK_LIGHT_WEIGHTED_PRESSURE_PLATE: case E_BLOCK_LIME_GLAZED_TERRACOTTA: case E_BLOCK_LIT_FURNACE: case E_BLOCK_MAGENTA_GLAZED_TERRACOTTA: case E_BLOCK_MAGMA: case E_BLOCK_MOB_SPAWNER: case E_BLOCK_MOSSY_COBBLESTONE: case E_BLOCK_NETHERRACK: case E_BLOCK_NETHER_BRICK: case E_BLOCK_NETHER_BRICK_FENCE: case E_BLOCK_NETHER_BRICK_STAIRS: case E_BLOCK_NETHER_QUARTZ_ORE: case E_BLOCK_OBSERVER: case E_BLOCK_OBSIDIAN: case E_BLOCK_ORANGE_GLAZED_TERRACOTTA: case E_BLOCK_PINK_GLAZED_TERRACOTTA: case E_BLOCK_PRISMARINE_BLOCK: case E_BLOCK_PURPLE_GLAZED_TERRACOTTA: case E_BLOCK_PURPUR_BLOCK: case E_BLOCK_PURPUR_DOUBLE_SLAB: case E_BLOCK_PURPUR_PILLAR: case E_BLOCK_PURPUR_SLAB: case E_BLOCK_PURPUR_STAIRS: case E_BLOCK_QUARTZ_BLOCK: case E_BLOCK_QUARTZ_STAIRS: case E_BLOCK_REDSTONE_ORE: case E_BLOCK_REDSTONE_ORE_GLOWING: case E_BLOCK_RED_GLAZED_TERRACOTTA: case E_BLOCK_RED_NETHER_BRICK: case E_BLOCK_RED_SANDSTONE: case E_BLOCK_RED_SANDSTONE_SLAB: case E_BLOCK_RED_SANDSTONE_STAIRS: case E_BLOCK_SANDSTONE: case E_BLOCK_SANDSTONE_STAIRS: case E_BLOCK_SNOW: case E_BLOCK_STONE: case E_BLOCK_STONE_BRICKS: case E_BLOCK_STONE_BRICK_STAIRS: case E_BLOCK_STONE_PRESSURE_PLATE: case E_BLOCK_STONE_SLAB: case E_BLOCK_VINES: case E_BLOCK_WHITE_GLAZED_TERRACOTTA: case E_BLOCK_YELLOW_GLAZED_TERRACOTTA: { return false; } default: return true; } } bool cItemHandler::EatItem(cPlayer * a_Player, cItem * a_Item) const { auto FoodInfo = GetFoodInfo(a_Item); return a_Player->Feed(FoodInfo.FoodLevel, FoodInfo.Saturation); } cItemHandler::FoodInfo cItemHandler::GetFoodInfo(const cItem * a_Item) const { UNUSED(a_Item); return FoodInfo(0, 0); } float cItemHandler::GetBlockBreakingStrength(BLOCKTYPE a_Block) const { return 1.0f; } bool cItemHandler::CommitPlacement(cPlayer & a_Player, const cItem & a_HeldItem, const Vector3i a_PlacePosition, const eBlockFace a_ClickedBlockFace, const Vector3i a_CursorPosition) const { ASSERT(m_ItemType < 256); // Items with IDs above 255 should all be handled by specific handlers. // By default, all blocks can be placed and the meta is copied over from the item's damage value: return a_Player.PlaceBlock( a_PlacePosition, static_cast(m_ItemType), static_cast(a_HeldItem.m_ItemDamage & 0x0f) ); }