diff options
Diffstat (limited to '')
-rw-r--r-- | src/Blocks/BlockDaylightSensor.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/Blocks/BlockDaylightSensor.h b/src/Blocks/BlockDaylightSensor.h new file mode 100644 index 000000000..3c8cfd0eb --- /dev/null +++ b/src/Blocks/BlockDaylightSensor.h @@ -0,0 +1,54 @@ + +#pragma once + +#include "BlockHandler.h" + + + + + +class cBlockDaylightSensorHandler final : + public cBlockHandler +{ + using Super = cBlockHandler; + +public: + + using Super::Super; + +private: + + virtual bool OnUse( + cChunkInterface & a_ChunkInterface, + cWorldInterface & a_WorldInterface, + cPlayer & a_Player, + const Vector3i a_BlockPos, + eBlockFace a_BlockFace, + const Vector3i a_CursorPos + ) const override + { + if (a_ChunkInterface.GetBlock(a_BlockPos) == E_BLOCK_DAYLIGHT_SENSOR) + { + a_ChunkInterface.SetBlock(a_BlockPos, E_BLOCK_INVERTED_DAYLIGHT_SENSOR, 0); + } + else + { + a_ChunkInterface.SetBlock(a_BlockPos, E_BLOCK_DAYLIGHT_SENSOR, 0); + } + + return true; + } + + + virtual cItems ConvertToPickups(NIBBLETYPE a_BlockMeta, const cEntity * a_Digger, const cItem * a_Tool) const override + { + // Always drop the regular daylight sensor: + return { E_BLOCK_DAYLIGHT_SENSOR }; + } + + + virtual bool IsUseable(void) const override + { + return true; + } +}; |