![]() |
Cuberite
A lightweight, fast and extensible game server for Minecraft
|
Base class for plants that use light values to decide whether to grow or not. More...
#include <BlockPlant.h>
Public Member Functions | |
cBlockPlant (BLOCKTYPE a_BlockType) | |
virtual void | OnUpdate (cChunkInterface &a_ChunkInterface, cWorldInterface &a_WorldInterface, cBlockPluginInterface &a_PluginInterface, cChunk &a_Chunk, int a_RelX, int a_RelY, int a_RelZ) override |
Called when the block gets ticked either by a random tick or by a queued tick. More... | |
![]() | |
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 cItems | ConvertToPickups (NIBBLETYPE a_BlockMeta, cBlockEntity *a_BlockEntity, const cEntity *a_Digger=nullptr, const cItem *a_Tool=nullptr) |
Returns the pickups that would result if the block was mined by a_Digger using a_Tool. 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 ColourID | GetMapBaseColourID (NIBBLETYPE a_Meta) |
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) |
Called before a block is placed into a world. 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 | OnBroken (cChunkInterface &a_ChunkInterface, cWorldInterface &a_WorldInterface, Vector3i a_BlockPos, BLOCKTYPE a_OldBlockType, NIBBLETYPE a_OldBlockMeta) |
Called after 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 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 () |
Protected Types | |
enum | PlantAction { paDeath, paGrowth, paStay } |
The action the plant can take on an update. More... | |
Protected Member Functions | |
virtual PlantAction | CanGrow (cChunk &a_Chunk, Vector3i a_RelPos) |
Checks whether a plant can grow grow, based on what is returned from cBlockPlant::HasEnoughLight and a random check based on what is returned from cBlockPlant::GetGrowthChance. More... | |
virtual int | GetGrowthChance (cChunk &a_Chunk, Vector3i a_RelPos) |
Generates an int value between 4 and 25 based on surrounding blocks that affect how quickly the plant grows. More... | |
PlantAction | HasEnoughLight (cChunk &a_Chunk, Vector3i a_RelPos) |
Checks whether there is enough light for the plant to grow. More... | |
Private Types | |
using | super = cBlockHandler |
Additional Inherited Members | |
![]() | |
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... | |
![]() | |
static cBlockHandler * | CreateBlockHandler (BLOCKTYPE a_BlockType) |
![]() | |
BLOCKTYPE | m_BlockType |
Base class for plants that use light values to decide whether to grow or not.
On block update, the plant decides whether to grow, die or stay as-is, based on the CanGrow() overridable method result.
Definition at line 12 of file BlockPlant.h.
|
private |
Definition at line 15 of file BlockPlant.h.
|
protected |
The action the plant can take on an update.
Enumerator | |
---|---|
paDeath | |
paGrowth | |
paStay |
Definition at line 56 of file BlockPlant.h.
|
inline |
Definition at line 20 of file BlockPlant.h.
|
inlineprotectedvirtual |
Checks whether a plant can grow grow, based on what is returned from cBlockPlant::HasEnoughLight and a random check based on what is returned from cBlockPlant::GetGrowthChance.
Can return three values. paGrowth when the conditions are right for the plant to grow. paStay when the conditions are not quite right. paDeath is returned when there isn't enough light for the plant to survive. Plants that don't require light will never have a paDeath returned
Reimplemented in cBlockCactusHandler, and cBlockSugarcaneHandler.
Definition at line 115 of file BlockPlant.h.
|
inlineprotectedvirtual |
Generates an int value between 4 and 25 based on surrounding blocks that affect how quickly the plant grows.
The higher the value, the less likely the plant is to grow
Definition at line 132 of file BlockPlant.h.
|
inlineprotected |
Checks whether there is enough light for the plant to grow.
If the plant doesn't require light to grow, then it returns paGrowth. If the plant requires light to grow and there is enough light, it returns paGrowth. If the plant requires light to grow and there isn't enough light, it returns paStay. If the plant requires light to grow and there is too little light, it returns paDeath.
Definition at line 72 of file BlockPlant.h.
|
inlineoverridevirtual |
Called when the block gets ticked either by a random tick or by a queued tick.
Note that the coords are chunk-relative!
Reimplemented from cBlockHandler.
Definition at line 29 of file BlockPlant.h.