Cuberite
A lightweight, fast and extensible game server for Minecraft
Static Public Member Functions | Private Types | Private Member Functions | List of all members
cBlockSlabHandler Class Referencefinal

#include <BlockSlab.h>

Inheritance diagram for cBlockSlabHandler:
Inheritance graph
[legend]
Collaboration diagram for cBlockSlabHandler:
Collaboration graph
[legend]

Static Public Member Functions

static bool IsAnySlabType (BLOCKTYPE a_BlockType)
 Returns true if the specified blocktype is one of the slabs handled by this handler. More...
 
- Static Public Member Functions inherited from cBlockHandler
static const cBlockHandlerFor (BLOCKTYPE a_BlockType)
 
static char FortuneDiscreteRandom (char a_MinDrop, char a_DefaultMax, unsigned char a_BonusMax, char a_DropCap=25)
 Returns a random number of drops taking into account fortune. More...
 
static void NeighborChanged (cChunkInterface &a_ChunkInterface, Vector3i a_NeighborPos, eBlockFace a_WhichNeighbor)
 Notifies the specified neighbor that the current block has changed. More...
 
static unsigned char ToolFortuneLevel (const cItem *a_Tool)
 Returns the fortune level of a tool, if it is a valid tool. More...
 
static bool ToolHasSilkTouch (const cItem *a_Tool)
 Returns true if the specified tool is valid and has a non-zero silk-touch enchantment. More...
 

Private Types

using Super = cBlockHandler
 

Private Member Functions

virtual cItems ConvertToPickups (const NIBBLETYPE a_BlockMeta, const cItem *const a_Tool) const override
 Returns the pickups that would result if the block was mined by a_Digger using a_Tool. More...
 
virtual bool DoesIgnoreBuildCollision (const cWorld &a_World, const cItem &a_HeldItem, const Vector3i a_Position, const NIBBLETYPE a_Meta, const eBlockFace a_ClickedBlockFace, const bool a_ClickedDirectly) const override
 Checks if the player can build "inside" this block. More...
 
virtual ColourID GetMapBaseColourID (NIBBLETYPE a_Meta) const override
 Returns the base colour ID of the block, as will be represented on a map, as per documentation: https://minecraft.wiki/w/Map_item_format. More...
 
virtual bool IsInsideBlock (Vector3d a_Position, const NIBBLETYPE a_BlockMeta) const override
 Tests if a_RelPosition is inside the block, where a_RelPosition is relative to the origin of the block. More...
 
virtual NIBBLETYPE MetaMirrorXZ (NIBBLETYPE a_Meta) const override
 Mirros a given block meta around the XZ plane. More...
 
virtual void OnCancelRightClick (cChunkInterface &a_ChunkInterface, cWorldInterface &a_WorldInterface, cPlayer &a_Player, const Vector3i a_BlockPos, eBlockFace a_BlockFace) const override
 Called when a right click to this block is cancelled. More...
 

Additional Inherited Members

- Public Member Functions inherited from cBlockHandler
virtual bool CanBeAt (const cChunk &a_Chunk, Vector3i a_Position, NIBBLETYPE a_Meta) const
 Checks if the block can stay at the specified relative coords in the chunk. More...
 
virtual bool CanSustainPlant (BLOCKTYPE a_Plant) const
 Checks whether the block has an effect on growing the plant. More...
 
constexpr cBlockHandler (BLOCKTYPE a_BlockType)
 
void Check (cChunkInterface &ChunkInterface, cBlockPluginInterface &a_PluginInterface, Vector3i a_RelPos, cChunk &a_Chunk) const
 Called when one of the neighbors gets set; equivalent to MC block update. More...
 
virtual cBoundingBox GetPlacementCollisionBox (BLOCKTYPE a_XM, BLOCKTYPE a_XP, BLOCKTYPE a_YM, BLOCKTYPE a_YP, BLOCKTYPE a_ZM, BLOCKTYPE a_ZP) const
 Returns the relative bounding box that must be entity-free in order for the block to be placed. More...
 
virtual int Grow (cChunk &a_Chunk, Vector3i a_RelPos, int a_NumStages=1) const
 Grows this block, if it supports growing, by the specified amount of stages (at most). More...
 
virtual bool IsUseable (void) const
 Called to check whether this block supports a rclk action. More...
 
virtual NIBBLETYPE MetaMirrorXY (NIBBLETYPE a_Meta) const
 Mirrors a given block meta around the XY plane. More...
 
virtual NIBBLETYPE MetaMirrorYZ (NIBBLETYPE a_Meta) const
 Mirros a given block meta around the YZ plane. More...
 
virtual NIBBLETYPE MetaRotateCCW (NIBBLETYPE a_Meta) const
 Rotates a given block meta counter-clockwise. More...
 
virtual NIBBLETYPE MetaRotateCW (NIBBLETYPE a_Meta) const
 Rotates a given block meta clockwise. More...
 
virtual void OnBroken (cChunkInterface &a_ChunkInterface, cWorldInterface &a_WorldInterface, Vector3i a_BlockPos, BLOCKTYPE a_OldBlockType, NIBBLETYPE a_OldBlockMeta, const cEntity *a_Digger) const
 Called after a block gets broken (replaced with air), by natural means. More...
 
virtual void OnDigging (cChunkInterface &a_ChunkInterface, cWorldInterface &a_WorldInterface, cPlayer &a_Player, const Vector3i a_BlockPos) const
 Called when the player starts digging the block. More...
 
virtual void OnNeighborChanged (cChunkInterface &a_ChunkInterface, Vector3i a_BlockPos, eBlockFace a_WhichNeighbor) const
 Called when a direct neighbor of this block has been changed. More...
 
virtual void OnPlaced (cChunkInterface &a_ChunkInterface, cWorldInterface &a_WorldInterface, Vector3i a_BlockPos, BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta) const
 Called by cWorld::SetBlock() after the block has been set. More...
 
virtual void OnUpdate (cChunkInterface &a_ChunkInterface, cWorldInterface &a_WorldInterface, cBlockPluginInterface &a_BlockPluginInterface, cChunk &a_Chunk, const Vector3i a_RelPos) const
 Called when the block gets ticked either by a random tick or by a queued tick. More...
 
virtual bool OnUse (cChunkInterface &a_ChunkInterface, cWorldInterface &a_WorldInterface, cPlayer &a_Player, const Vector3i a_BlockPos, eBlockFace a_BlockFace, const Vector3i a_CursorPos) const
 Called when the user right clicks the block and the block is useable. More...
 
- Protected Member Functions inherited from cBlockHandler
 ~cBlockHandler ()=default
 
- Protected Attributes inherited from cBlockHandler
const BLOCKTYPE m_BlockType
 

Detailed Description

Definition at line 20 of file BlockSlab.h.

Member Typedef Documentation

◆ Super

Definition at line 23 of file BlockSlab.h.

Member Function Documentation

◆ ConvertToPickups()

virtual cItems cBlockSlabHandler::ConvertToPickups ( const NIBBLETYPE  a_BlockMeta,
const cItem *const  a_Tool 
) const
inlineoverrideprivatevirtual

Returns the pickups that would result if the block was mined by a_Digger using a_Tool.

Doesn't do any actual block change / mining, only calculates the pickups. a_Digger is the entity that caused the conversion, usually the player digging. a_Tool is the tool used for the digging. The default implementation drops a single item created from m_BlockType and the current meta.

Reimplemented from cBlockHandler.

Definition at line 42 of file BlockSlab.h.

◆ DoesIgnoreBuildCollision()

virtual bool cBlockSlabHandler::DoesIgnoreBuildCollision ( const cWorld a_World,
const cItem a_HeldItem,
const Vector3i  a_Position,
const NIBBLETYPE  a_Meta,
const eBlockFace  a_ClickedBlockFace,
const bool  a_ClickedDirectly 
) const
inlineoverrideprivatevirtual

Checks if the player can build "inside" this block.

For example blocks placed "on" snow will be placed at the same position. So: Snow ignores Build collision

Parameters
a_PosPosition of the block
a_PlayerPlayer trying to build on the block
a_MetaMeta value of the block currently at a_Pos

Reimplemented from cBlockHandler.

Definition at line 49 of file BlockSlab.h.

◆ GetMapBaseColourID()

virtual ColourID cBlockSlabHandler::GetMapBaseColourID ( NIBBLETYPE  a_Meta) const
inlineoverrideprivatevirtual

Returns the base colour ID of the block, as will be represented on a map, as per documentation: https://minecraft.wiki/w/Map_item_format.

Reimplemented from cBlockHandler.

Definition at line 105 of file BlockSlab.h.

◆ IsAnySlabType()

static bool cBlockSlabHandler::IsAnySlabType ( BLOCKTYPE  a_BlockType)
inlinestatic

Returns true if the specified blocktype is one of the slabs handled by this handler.

Definition at line 30 of file BlockSlab.h.

◆ IsInsideBlock()

virtual bool cBlockSlabHandler::IsInsideBlock ( Vector3d  a_RelPosition,
const NIBBLETYPE  a_BlockMeta 
) const
inlineoverrideprivatevirtual

Tests if a_RelPosition is inside the block, where a_RelPosition is relative to the origin of the block.

Coords in a_RelPosition are guaranteed to be in the [0..1] range.

Reimplemented from cBlockHandler.

Definition at line 167 of file BlockSlab.h.

◆ MetaMirrorXZ()

virtual NIBBLETYPE cBlockSlabHandler::MetaMirrorXZ ( NIBBLETYPE  a_Meta) const
inlineoverrideprivatevirtual

Mirros a given block meta around the XZ plane.

Default: no change Returns block meta following rotation

Reimplemented from cBlockHandler.

Definition at line 95 of file BlockSlab.h.

◆ OnCancelRightClick()

virtual void cBlockSlabHandler::OnCancelRightClick ( cChunkInterface a_ChunkInterface,
cWorldInterface a_WorldInterface,
cPlayer a_Player,
const Vector3i  a_BlockPos,
eBlockFace  a_BlockFace 
) const
inlineoverrideprivatevirtual

Called when a right click to this block is cancelled.

Descendants should force the server to send the real state of a block to the client to prevent client assuming the operation was successfull.

Reimplemented from cBlockHandler.

Definition at line 74 of file BlockSlab.h.


The documentation for this class was generated from the following file: