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

#include <BlockPiston.h>

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

Public Member Functions

 cBlockPistonHandler (BLOCKTYPE a_BlockType)
 
virtual ColourID GetMapBaseColourID (NIBBLETYPE a_Meta) override
 Returns the base colour ID of the block, as will be represented on a map, as per documentation: https://minecraft.gamepedia.com/Map_item_format. More...
 
virtual bool GetPlacementBlockTypeMeta (cChunkInterface &a_ChunkInterface, cPlayer &a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ, BLOCKTYPE &a_BlockType, NIBBLETYPE &a_BlockMeta) override
 Called before a block is placed into a world. More...
 
virtual void OnBroken (cChunkInterface &a_ChunkInterface, cWorldInterface &a_WorldInterface, Vector3i a_BlockPos, BLOCKTYPE a_OldBlockType, NIBBLETYPE a_OldBlockMeta) override
 Called after a block gets broken (replaced with air), either by player or by natural means. More...
 
- Public Member Functions inherited from cClearMetaOnDrop< cBlockHandler >
 cClearMetaOnDrop (BLOCKTYPE a_BlockType)
 
virtual cItems ConvertToPickups (NIBBLETYPE a_BlockMeta, cBlockEntity *a_BlockEntity, const cEntity *a_Digger, const cItem *a_Tool) override
 
- Public Member Functions inherited from cBlockHandler
virtual bool CanBeAt (cChunkInterface &a_ChunkInterface, int a_RelX, int a_RelY, int a_RelZ, const cChunk &a_Chunk)
 Checks if the block can stay at the specified relative coords in the chunk. More...
 
virtual bool CanSustainPlant (BLOCKTYPE a_Plant)
 Checks whether the block has an effect on growing the plant. More...
 
 cBlockHandler (BLOCKTYPE a_BlockType)
 
virtual void Check (cChunkInterface &ChunkInterface, cBlockPluginInterface &a_PluginInterface, Vector3i a_RelPos, cChunk &a_Chunk)
 Called when one of the neighbors gets set; equivalent to MC block update. More...
 
virtual bool DoesDropOnUnsuitable (void)
 Returns if this block drops if it gets destroyed by an unsuitable situation. More...
 
virtual bool DoesIgnoreBuildCollision (cChunkInterface &ChunkInterface, Vector3i a_Pos, cPlayer &a_Player, NIBBLETYPE a_Meta)
 Checks if the player can build "inside" this block. More...
 
virtual cBoundingBox GetPlacementCollisionBox (BLOCKTYPE a_XM, BLOCKTYPE a_XP, BLOCKTYPE a_YM, BLOCKTYPE a_YP, BLOCKTYPE a_ZM, BLOCKTYPE a_ZP)
 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)
 Grows this block, if it supports growing, by the specified amount of stages (at most). More...
 
virtual bool IsClickedThrough (void)
 Indicates whether the client will click through this block. More...
 
virtual bool IsInsideBlock (Vector3d a_Position, const BLOCKTYPE a_BlockType, const NIBBLETYPE a_BlockMeta)
 Tests if a_Position is inside the block where a_Position is relative to the origin of the block Note that this is considered from a "top-down" perspective i.e. More...
 
virtual bool IsUseable (void)
 Checks if the block can be placed at this point. More...
 
virtual NIBBLETYPE MetaMirrorXY (NIBBLETYPE a_Meta)
 Mirrors a given block meta around the XY plane. More...
 
virtual NIBBLETYPE MetaMirrorXZ (NIBBLETYPE a_Meta)
 Mirros a given block meta around the XZ plane. More...
 
virtual NIBBLETYPE MetaMirrorYZ (NIBBLETYPE a_Meta)
 Mirros a given block meta around the YZ plane. More...
 
virtual NIBBLETYPE MetaRotateCCW (NIBBLETYPE a_Meta)
 Rotates a given block meta counter-clockwise. More...
 
virtual NIBBLETYPE MetaRotateCW (NIBBLETYPE a_Meta)
 Rotates a given block meta clockwise. More...
 
virtual void OnBreaking (cChunkInterface &a_ChunkInterface, cWorldInterface &a_WorldInterface, Vector3i a_BlockPos)
 Called before a block gets broken (replaced with air), either by player or by natural means. More...
 
virtual void OnCancelRightClick (cChunkInterface &a_ChunkInterface, cWorldInterface &a_WorldInterface, cPlayer &a_Player, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace)
 Called when a right click to this block is cancelled. More...
 
virtual void OnDigging (cChunkInterface &cChunkInterface, cWorldInterface &a_WorldInterface, cPlayer &a_Player, int a_BlockX, int a_BlockY, int a_BlockZ)
 Called when the player starts digging the block. More...
 
virtual void OnNeighborChanged (cChunkInterface &a_ChunkInterface, Vector3i a_BlockPos, eBlockFace a_WhichNeighbor)
 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)
 Called by cWorld::SetBlock() after the block has been set. More...
 
virtual void OnPlacedByPlayer (cChunkInterface &a_ChunkInterface, cWorldInterface &a_WorldInterface, cPlayer &a_Player, const sSetBlock &a_BlockChange)
 Called by cPlayer::PlaceBlocks() for each block after it has been set to the world. More...
 
virtual void OnPlayerBreakingBlock (cChunkInterface &a_ChunkInterface, cWorldInterface &a_WorldInterface, cPlayer &a_Player, Vector3i a_BlockPos)
 Called just before the player breaks the block. More...
 
virtual void OnPlayerBrokeBlock (cChunkInterface &a_ChunkInterface, cWorldInterface &a_WorldInterface, cPlayer &a_Player, Vector3i a_BlockPos, BLOCKTYPE a_OldBlockType, NIBBLETYPE a_OldBlockMeta)
 Called just after the player breaks the block. More...
 
virtual void OnUpdate (cChunkInterface &cChunkInterface, cWorldInterface &a_WorldInterface, cBlockPluginInterface &a_BlockPluginInterface, cChunk &a_Chunk, int a_RelX, int a_RelY, int a_RelZ)
 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, int a_BlockX, int a_BlockY, int a_BlockZ, eBlockFace a_BlockFace, int a_CursorX, int a_CursorY, int a_CursorZ)
 Called if the user right clicks the block and the block is useable returns true if the use was successful, return false to use the block as a "normal" block. More...
 
virtual ~cBlockHandler ()
 

Static Public Member Functions

static void ExtendPiston (Vector3i a_BlockPos, cWorld &a_World)
 
static bool IsExtended (NIBBLETYPE a_PistonMeta)
 Returns true if the piston (with the specified meta) is extended. More...
 
static eBlockFace MetaDataToDirection (NIBBLETYPE a_MetaData)
 
static Vector3i MetadataToOffset (NIBBLETYPE a_PistonMeta)
 Converts piston block's metadata into a unit vector representing the direction in which the piston will extend. More...
 
static void RetractPiston (Vector3i a_BlockPos, cWorld &a_World)
 
static NIBBLETYPE RotationPitchToMetaData (double a_Rotation, double a_Pitch)
 
- Static Public Member Functions inherited from cBlockHandler
static void NeighborChanged (cChunkInterface &a_ChunkInterface, Vector3i a_NeighborPos, eBlockFace a_WhichNeighbor)
 Notifies the specified neighbor that the current block has changed. 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 = cClearMetaOnDrop< cBlockHandler >
 
typedef std::unordered_set< Vector3i, VectorHasher< int > > Vector3iSet
 

Static Private Member Functions

static bool CanPush (BLOCKTYPE a_BlockType, NIBBLETYPE a_BlockMeta)
 Returns true if the specified block can be pushed by a piston (and left intact) More...
 
static bool CanPushBlock (const Vector3i &a_BlockPos, cWorld &a_World, bool a_RequirePushable, Vector3iSet &a_BlocksPushed, const Vector3i &a_PushDir)
 Tries to push a block and increases the pushed blocks variable. More...
 
static bool IsSticky (BLOCKTYPE a_BlockType)
 Returns true if the piston (specified by blocktype) is a sticky piston. More...
 
static void PushBlocks (const Vector3iSet &a_BlocksToPush, cWorld &a_World, const Vector3i &a_PushDir)
 Moves a list of blocks in a specific direction. More...
 

Static Private Attributes

static const Byte PistonExtendAction = 0U
 Piston extension block action. More...
 
static const Byte PistonRetractAction = 1U
 Piston retraction block action. More...
 

Additional Inherited Members

- Static Protected Member Functions inherited from cBlockHandler
static cBlockHandlerCreateBlockHandler (BLOCKTYPE a_BlockType)
 
- Protected Attributes inherited from cBlockHandler
BLOCKTYPE m_BlockType
 

Detailed Description

Definition at line 19 of file BlockPiston.h.

Member Typedef Documentation

Definition at line 22 of file BlockPiston.h.

typedef std::unordered_set<Vector3i, VectorHasher<int> > cBlockPistonHandler::Vector3iSet
private

Definition at line 113 of file BlockPiston.h.

Constructor & Destructor Documentation

cBlockPistonHandler::cBlockPistonHandler ( BLOCKTYPE  a_BlockType)

Definition at line 19 of file BlockPiston.cpp.

Member Function Documentation

static bool cBlockPistonHandler::CanPush ( BLOCKTYPE  a_BlockType,
NIBBLETYPE  a_BlockMeta 
)
inlinestaticprivate

Returns true if the specified block can be pushed by a piston (and left intact)

Definition at line 125 of file BlockPiston.h.

bool cBlockPistonHandler::CanPushBlock ( const Vector3i a_BlockPos,
cWorld a_World,
bool  a_RequirePushable,
Vector3iSet a_BlocksPushed,
const Vector3i a_PushDir 
)
staticprivate

Tries to push a block and increases the pushed blocks variable.

Returns true if the block is pushable

Definition at line 127 of file BlockPiston.cpp.

void cBlockPistonHandler::ExtendPiston ( Vector3i  a_BlockPos,
cWorld a_World 
)
static

Definition at line 195 of file BlockPiston.cpp.

virtual ColourID cBlockPistonHandler::GetMapBaseColourID ( NIBBLETYPE  a_Meta)
inlineoverridevirtual

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

Reimplemented from cBlockHandler.

Definition at line 102 of file BlockPiston.h.

bool cBlockPistonHandler::GetPlacementBlockTypeMeta ( cChunkInterface a_ChunkInterface,
cPlayer a_Player,
int  a_BlockX,
int  a_BlockY,
int  a_BlockZ,
eBlockFace  a_BlockFace,
int  a_CursorX,
int  a_CursorY,
int  a_CursorZ,
BLOCKTYPE a_BlockType,
NIBBLETYPE a_BlockMeta 
)
overridevirtual

Called before a block is placed into a world.

The handler should return true to allow placement, false to refuse. Also, the handler should set a_BlockType and a_BlockMeta to correct values for the newly placed block. Called by cItemHandler::GetPlacementBlockTypeMeta() if the item is a block

Reimplemented from cBlockHandler.

Definition at line 49 of file BlockPiston.cpp.

static bool cBlockPistonHandler::IsExtended ( NIBBLETYPE  a_PistonMeta)
inlinestatic

Returns true if the piston (with the specified meta) is extended.

Definition at line 109 of file BlockPiston.h.

static bool cBlockPistonHandler::IsSticky ( BLOCKTYPE  a_BlockType)
inlinestaticprivate

Returns true if the piston (specified by blocktype) is a sticky piston.

Definition at line 122 of file BlockPiston.h.

static eBlockFace cBlockPistonHandler::MetaDataToDirection ( NIBBLETYPE  a_MetaData)
inlinestatic

Definition at line 78 of file BlockPiston.h.

Vector3i cBlockPistonHandler::MetadataToOffset ( NIBBLETYPE  a_PistonMeta)
static

Converts piston block's metadata into a unit vector representing the direction in which the piston will extend.

Definition at line 65 of file BlockPiston.cpp.

void cBlockPistonHandler::OnBroken ( cChunkInterface a_ChunkInterface,
cWorldInterface a_WorldInterface,
Vector3i  a_BlockPos,
BLOCKTYPE  a_OldBlockType,
NIBBLETYPE  a_OldBlockMeta 
)
overridevirtual

Called after a block gets broken (replaced with air), either by player or by natural means.

If by player, it is called before the OnPlayerBrokeBlock() callback. The block is already dug up in the world, the original block type and meta is passed in a_OldBlockType and a_OldBlockMeta. By default notifies all direct neighbors via their OnNeighborChanged() callbacks.

Reimplemented from cBlockHandler.

Definition at line 28 of file BlockPiston.cpp.

void cBlockPistonHandler::PushBlocks ( const Vector3iSet a_BlocksToPush,
cWorld a_World,
const Vector3i a_PushDir 
)
staticprivate

Moves a list of blocks in a specific direction.

Definition at line 88 of file BlockPiston.cpp.

void cBlockPistonHandler::RetractPiston ( Vector3i  a_BlockPos,
cWorld a_World 
)
static

Definition at line 256 of file BlockPiston.cpp.

static NIBBLETYPE cBlockPistonHandler::RotationPitchToMetaData ( double  a_Rotation,
double  a_Pitch 
)
inlinestatic

Definition at line 41 of file BlockPiston.h.

Member Data Documentation

const Byte cBlockPistonHandler::PistonExtendAction = 0U
staticprivate

Piston extension block action.

Definition at line 116 of file BlockPiston.h.

const Byte cBlockPistonHandler::PistonRetractAction = 1U
staticprivate

Piston retraction block action.

Definition at line 119 of file BlockPiston.h.


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