Handlers: update item and block handlers (#5371)

+ Resend blocks when server rejects placement because in a block

* Fix chest handler not invoked, fixes #5367
* Fix comparator handler not invoked
* Update some naming
This commit is contained in:
Tiger Wang 2022-01-02 11:56:36 +00:00 committed by GitHub
parent 1616108af3
commit c52f299e72
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 81 additions and 89 deletions

View File

@ -6,7 +6,7 @@
class cBlockEnderchestHandler final :
class cBlockEnderChestHandler final :
public cYawRotator<cBlockEntityHandler, 0x07, 0x03, 0x04, 0x02, 0x05>
{
using Super = cYawRotator<cBlockEntityHandler, 0x07, 0x03, 0x04, 0x02, 0x05>;
@ -38,7 +38,3 @@ private:
}
};

View File

@ -33,7 +33,7 @@
#include "BlockDropSpenser.h"
#include "BlockEnchantingTable.h"
#include "BlockEndPortalFrame.h"
#include "BlockEnderchest.h"
#include "BlockEnderChest.h"
#include "BlockEntity.h"
#include "BlockFarmland.h"
#include "BlockFence.h"
@ -75,7 +75,7 @@
#include "BlockPumpkin.h"
#include "BlockQuartz.h"
#include "BlockRail.h"
#include "BlockRedstone.h"
#include "BlockRedstoneWire.h"
#include "BlockRedstoneLamp.h"
#include "BlockRedstoneOre.h"
#include "BlockRedstoneRepeater.h"
@ -91,14 +91,14 @@
#include "BlockStairs.h"
#include "BlockStems.h"
#include "BlockStone.h"
#include "BlockSugarcane.h"
#include "BlockSugarCane.h"
#include "BlockTNT.h"
#include "BlockTallGrass.h"
#include "BlockTorch.h"
#include "BlockTrapdoor.h"
#include "BlockTripwire.h"
#include "BlockTripwireHook.h"
#include "BlockVine.h"
#include "BlockVines.h"
#include "BlockWallSign.h"
#include "BlockWorkbench.h"
@ -215,14 +215,14 @@ namespace
constexpr cBlockStairsHandler BlockBirchWoodStairsHandler (E_BLOCK_BIRCH_WOOD_STAIRS);
constexpr cBlockGlazedTerracottaHandler BlockBlackGlazedTerracottaHandler (E_BLOCK_BLACK_GLAZED_TERRACOTTA);
constexpr cDefaultBlockHandler BlockBlackShulkerBoxHandler (E_BLOCK_BLACK_SHULKER_BOX);
constexpr cDefaultBlockHandler BlockBlockOfCoalHandler (E_BLOCK_BLOCK_OF_COAL);
constexpr cDefaultBlockHandler BlockBlockOfRedstoneHandler (E_BLOCK_BLOCK_OF_REDSTONE);
constexpr cDefaultBlockHandler BlockCoalBlockHandler (E_BLOCK_BLOCK_OF_COAL);
constexpr cDefaultBlockHandler BlockRedstoneBlockHandler (E_BLOCK_BLOCK_OF_REDSTONE);
constexpr cBlockGlazedTerracottaHandler BlockBlueGlazedTerracottaHandler (E_BLOCK_BLUE_GLAZED_TERRACOTTA);
constexpr cDefaultBlockHandler BlockBlueShulkerBoxHandler (E_BLOCK_BLUE_SHULKER_BOX);
constexpr cDefaultBlockHandler BlockBoneBlockHandler (E_BLOCK_BONE_BLOCK);
constexpr cBlockBookShelfHandler BlockBookcaseHandler (E_BLOCK_BOOKCASE);
constexpr cBlockBrewingStandHandler BlockBrewingStandHandler (E_BLOCK_BREWING_STAND);
constexpr cDefaultBlockHandler BlockBrickHandler (E_BLOCK_BRICK);
constexpr cDefaultBlockHandler BlockBricksHandler (E_BLOCK_BRICK);
constexpr cBlockStairsHandler BlockBrickStairsHandler (E_BLOCK_BRICK_STAIRS);
constexpr cBlockGlazedTerracottaHandler BlockBrownGlazedTerracottaHandler (E_BLOCK_BROWN_GLAZED_TERRACOTTA);
constexpr cBlockMushroomHandler BlockBrownMushroomHandler (E_BLOCK_BROWN_MUSHROOM);
@ -274,7 +274,7 @@ namespace
constexpr cDefaultBlockHandler BlockEndPortalHandler (E_BLOCK_END_PORTAL);
constexpr cDefaultBlockHandler BlockEndRodHandler (E_BLOCK_END_ROD);
constexpr cDefaultBlockHandler BlockEndStoneHandler (E_BLOCK_END_STONE);
constexpr cBlockEnderchestHandler BlockEnderChestHandler (E_BLOCK_ENDER_CHEST);
constexpr cBlockEnderChestHandler BlockEnderChestHandler (E_BLOCK_ENDER_CHEST);
constexpr cBlockFarmlandHandler BlockFarmlandHandler (E_BLOCK_FARMLAND);
constexpr cBlockFenceHandler BlockFenceHandler (E_BLOCK_FENCE);
constexpr cBlockFireHandler BlockFireHandler (E_BLOCK_FIRE);
@ -339,7 +339,7 @@ namespace
constexpr cDefaultBlockHandler BlockMossyCobblestoneHandler (E_BLOCK_MOSSY_COBBLESTONE);
constexpr cBlockMyceliumHandler BlockMyceliumHandler (E_BLOCK_MYCELIUM);
constexpr cBlockFenceHandler BlockNetherBrickFenceHandler (E_BLOCK_NETHER_BRICK_FENCE);
constexpr cDefaultBlockHandler BlockNetherBrickHandler (E_BLOCK_NETHER_BRICK);
constexpr cDefaultBlockHandler BlockNetherBricksHandler (E_BLOCK_NETHER_BRICK);
constexpr cBlockStairsHandler BlockNetherBrickStairsHandler (E_BLOCK_NETHER_BRICK_STAIRS);
constexpr cBlockPortalHandler BlockNetherPortalHandler (E_BLOCK_NETHER_PORTAL);
constexpr cDefaultOreHandler BlockNetherQuartzOreHandler (E_BLOCK_NETHER_QUARTZ_ORE);
@ -380,7 +380,7 @@ namespace
constexpr cBlockRailHandler BlockRailHandler (E_BLOCK_RAIL);
constexpr cBlockGlazedTerracottaHandler BlockRedGlazedTerracottaHandler (E_BLOCK_RED_GLAZED_TERRACOTTA);
constexpr cBlockMushroomHandler BlockRedMushroomHandler (E_BLOCK_RED_MUSHROOM);
constexpr cDefaultBlockHandler BlockRedNetherBrickHandler (E_BLOCK_RED_NETHER_BRICK);
constexpr cDefaultBlockHandler BlockRedNetherBricksHandler (E_BLOCK_RED_NETHER_BRICK);
constexpr cBlockFlowerHandler BlockRedRoseHandler (E_BLOCK_RED_ROSE);
constexpr cDefaultBlockHandler BlockRedSandstoneHandler (E_BLOCK_RED_SANDSTONE);
constexpr cBlockSlabHandler BlockRedSandstoneSlabHandler (E_BLOCK_RED_SANDSTONE_SLAB);
@ -393,7 +393,7 @@ namespace
constexpr cBlockRedstoneRepeaterHandler BlockRedstoneRepeaterOnHandler (E_BLOCK_REDSTONE_REPEATER_ON);
constexpr cBlockRedstoneTorchHandler BlockRedstoneTorchOffHandler (E_BLOCK_REDSTONE_TORCH_OFF);
constexpr cBlockRedstoneTorchHandler BlockRedstoneTorchOnHandler (E_BLOCK_REDSTONE_TORCH_ON);
constexpr cBlockRedstoneHandler BlockRedstoneWireHandler (E_BLOCK_REDSTONE_WIRE);
constexpr cBlockRedstoneWireHandler BlockRedstoneWireHandler (E_BLOCK_REDSTONE_WIRE);
constexpr cBlockCommandBlockHandler BlockRepeatingCommandBlockHandler (E_BLOCK_REPEATING_COMMAND_BLOCK);
constexpr cBlockSandHandler BlockSandHandler (E_BLOCK_SAND);
constexpr cDefaultBlockHandler BlockSandstoneHandler (E_BLOCK_SANDSTONE);
@ -425,15 +425,15 @@ namespace
constexpr cBlockSlabHandler BlockStoneSlabHandler (E_BLOCK_STONE_SLAB);
constexpr cDefaultBlockHandler BlockStructureBlockHandler (E_BLOCK_STRUCTURE_BLOCK);
constexpr cDefaultBlockHandler BlockStructureVoidHandler (E_BLOCK_STRUCTURE_VOID);
constexpr cBlockSugarcaneHandler BlockSugarcaneHandler (E_BLOCK_SUGARCANE);
constexpr cBlockSugarCaneHandler BlockSugarCaneHandler (E_BLOCK_SUGARCANE);
constexpr cBlockTallGrassHandler BlockTallGrassHandler (E_BLOCK_TALL_GRASS);
constexpr cBlockTNTHandler BlockTntHandler (E_BLOCK_TNT);
constexpr cBlockTNTHandler BlockTNTHandler (E_BLOCK_TNT);
constexpr cBlockTorchHandler BlockTorchHandler (E_BLOCK_TORCH);
constexpr cBlockTrapdoorHandler BlockTrapdoorHandler (E_BLOCK_TRAPDOOR);
constexpr cBlockChestHandler BlockTrappedChestHandler (E_BLOCK_TRAPPED_CHEST);
constexpr cBlockTripwireHandler BlockTripwireHandler (E_BLOCK_TRIPWIRE);
constexpr cBlockTripwireHookHandler BlockTripwireHookHandler (E_BLOCK_TRIPWIRE_HOOK);
constexpr cBlockVineHandler BlockVinesHandler (E_BLOCK_VINES);
constexpr cBlockVinesHandler BlockVinesHandler (E_BLOCK_VINES);
constexpr cBlockBannerHandler BlockWallBannerHandler (E_BLOCK_WALL_BANNER);
constexpr cBlockWallSignHandler BlockWallsignHandler (E_BLOCK_WALLSIGN);
constexpr cBlockWaterHandler BlockWaterHandler (E_BLOCK_WATER);
@ -655,14 +655,14 @@ const cBlockHandler & cBlockHandler::For(BLOCKTYPE a_BlockType)
case E_BLOCK_BIRCH_WOOD_STAIRS: return BlockBirchWoodStairsHandler;
case E_BLOCK_BLACK_GLAZED_TERRACOTTA: return BlockBlackGlazedTerracottaHandler;
case E_BLOCK_BLACK_SHULKER_BOX: return BlockBlackShulkerBoxHandler;
case E_BLOCK_BLOCK_OF_COAL: return BlockBlockOfCoalHandler;
case E_BLOCK_BLOCK_OF_REDSTONE: return BlockBlockOfRedstoneHandler;
case E_BLOCK_BLOCK_OF_COAL: return BlockCoalBlockHandler;
case E_BLOCK_BLOCK_OF_REDSTONE: return BlockRedstoneBlockHandler;
case E_BLOCK_BLUE_GLAZED_TERRACOTTA: return BlockBlueGlazedTerracottaHandler;
case E_BLOCK_BLUE_SHULKER_BOX: return BlockBlueShulkerBoxHandler;
case E_BLOCK_BONE_BLOCK: return BlockBoneBlockHandler;
case E_BLOCK_BOOKCASE: return BlockBookcaseHandler;
case E_BLOCK_BREWING_STAND: return BlockBrewingStandHandler;
case E_BLOCK_BRICK: return BlockBrickHandler;
case E_BLOCK_BRICK: return BlockBricksHandler;
case E_BLOCK_BRICK_STAIRS: return BlockBrickStairsHandler;
case E_BLOCK_BROWN_GLAZED_TERRACOTTA: return BlockBrownGlazedTerracottaHandler;
case E_BLOCK_BROWN_MUSHROOM: return BlockBrownMushroomHandler;
@ -779,7 +779,7 @@ const cBlockHandler & cBlockHandler::For(BLOCKTYPE a_BlockType)
case E_BLOCK_MOSSY_COBBLESTONE: return BlockMossyCobblestoneHandler;
case E_BLOCK_MYCELIUM: return BlockMyceliumHandler;
case E_BLOCK_NETHERRACK: return BlockNetherrackHandler;
case E_BLOCK_NETHER_BRICK: return BlockNetherBrickHandler;
case E_BLOCK_NETHER_BRICK: return BlockNetherBricksHandler;
case E_BLOCK_NETHER_BRICK_FENCE: return BlockNetherBrickFenceHandler;
case E_BLOCK_NETHER_BRICK_STAIRS: return BlockNetherBrickStairsHandler;
case E_BLOCK_NETHER_PORTAL: return BlockNetherPortalHandler;
@ -829,7 +829,7 @@ const cBlockHandler & cBlockHandler::For(BLOCKTYPE a_BlockType)
case E_BLOCK_REDSTONE_WIRE: return BlockRedstoneWireHandler;
case E_BLOCK_RED_GLAZED_TERRACOTTA: return BlockRedGlazedTerracottaHandler;
case E_BLOCK_RED_MUSHROOM: return BlockRedMushroomHandler;
case E_BLOCK_RED_NETHER_BRICK: return BlockRedNetherBrickHandler;
case E_BLOCK_RED_NETHER_BRICK: return BlockRedNetherBricksHandler;
case E_BLOCK_RED_ROSE: return BlockRedRoseHandler;
case E_BLOCK_RED_SANDSTONE: return BlockRedSandstoneHandler;
case E_BLOCK_RED_SANDSTONE_SLAB: return BlockRedSandstoneSlabHandler;
@ -867,9 +867,9 @@ const cBlockHandler & cBlockHandler::For(BLOCKTYPE a_BlockType)
case E_BLOCK_STONE_SLAB: return BlockStoneSlabHandler;
case E_BLOCK_STRUCTURE_BLOCK: return BlockStructureBlockHandler;
case E_BLOCK_STRUCTURE_VOID: return BlockStructureVoidHandler;
case E_BLOCK_SUGARCANE: return BlockSugarcaneHandler;
case E_BLOCK_SUGARCANE: return BlockSugarCaneHandler;
case E_BLOCK_TALL_GRASS: return BlockTallGrassHandler;
case E_BLOCK_TNT: return BlockTntHandler;
case E_BLOCK_TNT: return BlockTNTHandler;
case E_BLOCK_TORCH: return BlockTorchHandler;
case E_BLOCK_TRAPDOOR: return BlockTrapdoorHandler;
case E_BLOCK_TRAPPED_CHEST: return BlockTrappedChestHandler;

View File

@ -8,7 +8,7 @@
class cBlockRedstoneHandler final :
class cBlockRedstoneWireHandler final :
public cBlockHandler
{
using Super = cBlockHandler;

View File

@ -7,7 +7,7 @@
class cBlockSugarcaneHandler final :
class cBlockSugarCaneHandler final :
public cBlockPlant<false>
{
using Super = cBlockPlant<false>;

View File

@ -6,7 +6,7 @@
class cBlockVineHandler final :
class cBlockVinesHandler final :
public cBlockHandler
{
using Super = cBlockHandler;

View File

@ -34,7 +34,7 @@ target_sources(
BlockDoor.h
BlockDropSpenser.h
BlockEnchantingTable.h
BlockEnderchest.h
BlockEnderChest.h
BlockEndPortalFrame.h
BlockEntity.h
BlockFarmland.h
@ -80,7 +80,7 @@ target_sources(
BlockPumpkin.h
BlockQuartz.h
BlockRail.h
BlockRedstone.h
BlockRedstoneWire.h
BlockRedstoneLamp.h
BlockRedstoneOre.h
BlockRedstoneRepeater.h
@ -96,14 +96,14 @@ target_sources(
BlockStairs.h
BlockStems.h
BlockStone.h
BlockSugarcane.h
BlockSugarCane.h
BlockTNT.h
BlockTallGrass.h
BlockTorch.h
BlockTrapdoor.h
BlockTripwire.h
BlockTripwireHook.h
BlockVine.h
BlockVines.h
BlockWallSign.h
BlockWorkbench.h
BroadcastInterface.h

View File

@ -27,7 +27,7 @@ target_sources(
ItemEnchantingTable.h
ItemEndCrystal.h
ItemEndPortalFrame.h
ItemEnderchest.h
ItemEnderChest.h
ItemEyeOfEnder.h
ItemFenceGate.h
ItemFishingRod.h
@ -83,6 +83,6 @@ target_sources(
ItemTorch.h
ItemTrapdoor.h
ItemTripwireHook.h
ItemVine.h
ItemVines.h
SimplePlaceableItemHandler.h
)

View File

@ -15,13 +15,7 @@ class cItemComparatorHandler final:
public:
cItemComparatorHandler(int a_ItemType):
cItemHandler(a_ItemType)
{
}
using Super::Super;
virtual bool CommitPlacement(cPlayer & a_Player, const cItem & a_HeldItem, const Vector3i a_PlacePosition, const eBlockFace a_ClickedBlockFace, const Vector3i a_CursorPosition) const override
@ -30,15 +24,8 @@ public:
}
virtual bool IsPlaceable(void) const override
{
return true;
}
} ;

View File

@ -1,9 +1,16 @@
#pragma once
#include "ItemHandler.h"
class cDefaultItemHandler final :
public cItemHandler
{
public:
using cItemHandler::cItemHandler;
};

View File

@ -2,13 +2,13 @@
#pragma once
#include "ItemHandler.h"
#include "Blocks/BlockEnderchest.h"
#include "Blocks/BlockEnderChest.h"
class cItemEnderchestHandler final :
class cItemEnderChestHandler final :
public cItemHandler
{
using Super = cItemHandler;
@ -21,6 +21,6 @@ private:
virtual bool CommitPlacement(cPlayer & a_Player, const cItem & a_HeldItem, const Vector3i a_PlacePosition, const eBlockFace a_ClickedBlockFace, const Vector3i a_CursorPosition) const override
{
return a_Player.PlaceBlock(a_PlacePosition, E_BLOCK_ENDER_CHEST, cBlockEnderchestHandler::YawToMetaData(a_Player.GetYaw()));
return a_Player.PlaceBlock(a_PlacePosition, E_BLOCK_ENDER_CHEST, cBlockEnderChestHandler::YawToMetaData(a_Player.GetYaw()));
}
};

View File

@ -31,7 +31,7 @@
#include "ItemEmptyMap.h"
#include "ItemEnchantingTable.h"
#include "ItemEndCrystal.h"
#include "ItemEnderchest.h"
#include "ItemEnderChest.h"
#include "ItemEndPortalFrame.h"
#include "ItemEyeOfEnder.h"
#include "ItemFenceGate.h"
@ -87,7 +87,7 @@
#include "ItemTorch.h"
#include "ItemTrapdoor.h"
#include "ItemTripwireHook.h"
#include "ItemVine.h"
#include "ItemVines.h"
#include "../Blocks/BlockHandler.h"
#include "SimplePlaceableItemHandler.h"
@ -117,7 +117,7 @@ namespace
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 cDefaultItemHandler 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));
@ -170,7 +170,7 @@ namespace
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 cItemChestHandler ItemChestHandler (E_BLOCK_CHEST);
constexpr cItemMinecartHandler ItemChestMinecartHandler (E_ITEM_CHEST_MINECART);
constexpr cDefaultItemHandler ItemChirpDiscHandler (E_ITEM_CHIRP_DISC);
constexpr cDefaultItemHandler ItemChorusFlowerHandler (E_BLOCK_CHORUS_FLOWER);
@ -188,7 +188,7 @@ namespace
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 cItemComparatorHandler ItemComparatorHandler (E_ITEM_COMPARATOR);
constexpr cDefaultItemHandler ItemCompassHandler (E_ITEM_COMPASS);
constexpr cDefaultItemHandler ItemConcreteBlockHandler (E_BLOCK_CONCRETE);
constexpr cDefaultItemHandler ItemConcretePowderHandler (E_BLOCK_CONCRETE_POWDER);
@ -250,7 +250,7 @@ namespace
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 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);
@ -272,7 +272,7 @@ namespace
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 ItemGlassPaneHandler (E_BLOCK_GLASS_PANE);
constexpr cDefaultItemHandler ItemGlisteringMelonHandler (E_ITEM_GLISTERING_MELON);
constexpr cDefaultItemHandler ItemGlowstoneBlockHandler (E_BLOCK_GLOWSTONE);
constexpr cDefaultItemHandler ItemGlowstoneDustHandler (E_ITEM_GLOWSTONE_DUST);
@ -302,9 +302,9 @@ namespace
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 cDefaultItemHandler ItemHeadBlockHandler (E_BLOCK_HEAD);
constexpr cItemMobHeadHandler ItemHeadHandler (E_ITEM_HEAD);
constexpr cDefaultItemHandler ItemHeavyWeightedPressurePlateBlockHandler (E_BLOCK_HEAVY_WEIGHTED_PRESSURE_PLATE);
constexpr cDefaultItemHandler ItemHeavyWeightedPressurePlateHandler (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);
@ -355,7 +355,7 @@ namespace
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 cDefaultItemHandler ItemLightWeightedPressurePlateHandler (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);
@ -383,16 +383,16 @@ namespace
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 ItemNetherBricksHandler (E_BLOCK_NETHER_BRICK);
constexpr cDefaultItemHandler ItemNetherBrickFenceHandler (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 cDefaultItemHandler ItemNetherWartBlockHandler (E_BLOCK_NETHER_WART_BLOCK);
constexpr cDefaultItemHandler ItemNetherWartTechnicalBlockHandler (E_BLOCK_NETHER_WART);
constexpr cItemNetherWartHandler ItemNetherWartHandler (E_ITEM_NETHER_WART);
constexpr cDefaultItemHandler ItemNetherrackHandler (E_BLOCK_NETHERRACK);
constexpr cItemLeavesHandler ItemNewLeavesHandler (E_BLOCK_NEW_LEAVES);
@ -519,26 +519,26 @@ namespace
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 cDefaultItemHandler ItemStonePressurePlateHandler (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 ItemSugarCaneBlockHandler (E_BLOCK_SUGARCANE);
constexpr cSimplePlaceableItemHandler ItemSugarCaneHandler (E_ITEM_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 ItemTNTHandler (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 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 cItemVinesHandler ItemVinesHandler (E_BLOCK_VINES);
constexpr cDefaultItemHandler ItemWaitDiscHandler (E_ITEM_WAIT_DISC);
constexpr cDefaultItemHandler ItemWallBannerHandler (E_BLOCK_WALL_BANNER);
constexpr cDefaultItemHandler ItemWallsignHandler (E_BLOCK_WALLSIGN);
@ -552,7 +552,7 @@ namespace
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 cDefaultItemHandler ItemWoodenPressurePlateHandler (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);
@ -608,7 +608,7 @@ const cItemHandler & cItemHandler::For(int a_ItemType)
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_CHEST: return ItemChestHandler;
case E_BLOCK_CHORUS_FLOWER: return ItemChorusFlowerHandler;
case E_BLOCK_CHORUS_PLANT: return ItemChorusPlantHandler;
case E_BLOCK_CLAY: return ItemClayBlockHandler;
@ -644,7 +644,7 @@ const cItemHandler & cItemHandler::For(int a_ItemType)
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_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;
@ -659,7 +659,7 @@ const cItemHandler & cItemHandler::For(int a_ItemType)
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_GLASS_PANE: return ItemGlassPaneHandler;
case E_BLOCK_GLOWSTONE: return ItemGlowstoneBlockHandler;
case E_BLOCK_GOLD_BLOCK: return ItemGoldBlockHandler;
case E_BLOCK_GOLD_ORE: return ItemGoldOreHandler;
@ -673,7 +673,7 @@ const cItemHandler & cItemHandler::For(int a_ItemType)
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_HEAVY_WEIGHTED_PRESSURE_PLATE: return ItemHeavyWeightedPressurePlateHandler;
case E_BLOCK_HOPPER: return ItemHopperHandler;
case E_BLOCK_HUGE_BROWN_MUSHROOM: return ItemHugeBrownMushroomBlockHandler;
case E_BLOCK_HUGE_RED_MUSHROOM: return ItemHugeRedMushroomBlockHandler;
@ -701,7 +701,7 @@ const cItemHandler & cItemHandler::For(int a_ItemType)
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_LIGHT_WEIGHTED_PRESSURE_PLATE: return ItemLightWeightedPressurePlateHandler;
case E_BLOCK_LILY_PAD: return ItemLilypadHandler;
case E_BLOCK_LIME_GLAZED_TERRACOTTA: return ItemLimeGlazedTerracottaHandler;
case E_BLOCK_LIME_SHULKER_BOX: return ItemLimeShulkerBoxHandler;
@ -716,13 +716,13 @@ const cItemHandler & cItemHandler::For(int a_ItemType)
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: return ItemNetherBricksHandler;
case E_BLOCK_NETHER_BRICK_FENCE: return ItemNetherBrickFenceHandler;
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_NETHER_WART: return ItemNetherWartTechnicalBlockHandler;
case E_BLOCK_NETHER_WART_BLOCK: return ItemNetherWartBlockHandler;
case E_BLOCK_NEW_LEAVES: return ItemNewLeavesHandler;
case E_BLOCK_NEW_LOG: return ItemNewLogHandler;
case E_BLOCK_NOTE_BLOCK: return ItemNoteBlockHandler;
@ -798,20 +798,20 @@ const cItemHandler & cItemHandler::For(int a_ItemType)
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_PRESSURE_PLATE: return ItemStonePressurePlateHandler;
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_SUGARCANE: return ItemSugarCaneBlockHandler;
case E_BLOCK_TALL_GRASS: return ItemTallGrassHandler;
case E_BLOCK_TERRACOTTA: return ItemTerracottaHandler;
case E_BLOCK_TNT: return ItemTNTBlockHandler;
case E_BLOCK_TNT: return ItemTNTHandler;
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_VINES: return ItemVinesHandler;
case E_BLOCK_WALLSIGN: return ItemWallsignHandler;
case E_BLOCK_WALL_BANNER: return ItemWallBannerHandler;
case E_BLOCK_WATER: return ItemWaterHandler;
@ -819,7 +819,7 @@ const cItemHandler & cItemHandler::For(int a_ItemType)
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_PRESSURE_PLATE: return ItemWoodenPressurePlateHandler;
case E_BLOCK_WOODEN_SLAB: return ItemOakSlabHandler;
case E_BLOCK_WOOL: return ItemWoolHandler;
case E_BLOCK_YELLOW_GLAZED_TERRACOTTA: return ItemYellowGlazedTerracottaHandler;
@ -1091,7 +1091,9 @@ void cItemHandler::OnPlayerPlace(cPlayer & a_Player, const cItem & a_HeldItem, c
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
// Happens when you place a block aiming at side of block with a torch on it or stem beside it.
a_Player.SendBlocksAround(PlacedPosition.x, PlacedPosition.y, PlacedPosition.z, 2);
a_Player.GetInventory().SendEquippedSlot();
return;
}

View File

@ -7,7 +7,7 @@
class cItemVineHandler final :
class cItemVinesHandler final :
public cItemHandler
{
using Super = cItemHandler;