// CommandBlockEntity.h // Declares the cCommandBlockEntity class representing a single command block in the world #pragma once #include "BlockEntity.h" #include "RedstonePoweredEntity.h" // tolua_begin class cCommandBlockEntity : public cBlockEntity, public cRedstonePoweredEntity { typedef cBlockEntity super; public: // tolua_end BLOCKENTITY_PROTODEF(cCommandBlockEntity) /** Creates a new empty command block entity */ cCommandBlockEntity(int a_X, int a_Y, int a_Z, cWorld * a_World); virtual bool Tick(std::chrono::milliseconds a_Dt, cChunk & a_Chunk) override; virtual void SendTo(cClientHandle & a_Client) override; virtual void UsedBy(cPlayer * a_Player) override; void SetLastOutput(const AString & a_LastOut); void SetResult(const NIBBLETYPE a_Result); // tolua_begin /** Sets the internal redstone power flag to "on" or "off", depending on the parameter. Calls Activate() if appropriate */ virtual void SetRedstonePower(bool a_IsPowered) override; /** Sets the command block to execute a command in the next tick */ void Activate(void); /** Sets the command */ void SetCommand(const AString & a_Cmd); /** Retrieves stored command */ const AString & GetCommand(void) const; /** Retrieves the last line of output generated by the command block */ const AString & GetLastOutput(void) const; /** Retrieves the result (signal strength) of the last operation */ NIBBLETYPE GetResult(void) const; // tolua_end private: /** Executes the associated command */ void Execute(); bool m_ShouldExecute; bool m_IsPowered; AString m_Command; AString m_LastOutput; NIBBLETYPE m_Result; } ; // tolua_export