From a7e9f88ff3dba3b99b58d2bf9ed2350e6154d876 Mon Sep 17 00:00:00 2001 From: Aiden Neill Date: Fri, 18 Dec 2020 18:42:34 -0700 Subject: New pull request for daylight sensor (#5066) * Fixes #4918 Co-authored-by: Tiger Wang --- src/Blocks/BlockDaylightSensor.h | 54 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/Blocks/BlockDaylightSensor.h (limited to 'src/Blocks/BlockDaylightSensor.h') 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; + } +}; -- cgit v1.2.3