]> git.lizzy.rs Git - minetest.git/blobdiff - src/script/cpp_api/s_player.h
Merge pull request #8776 from osjc/FixGetNode
[minetest.git] / src / script / cpp_api / s_player.h
index 562805695e7e2e17684d0f4cb80e43e995ce69f0..cf24ddc730ca4943c6433b59e7a6a2cd305fe425 100644 (file)
@@ -23,7 +23,11 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "irr_v3d.h"
 #include "util/string.h"
 
+struct MoveAction;
+struct InventoryLocation;
+struct ItemStack;
 struct ToolCapabilities;
+struct PlayerHPChangeReason;
 
 class ScriptApiPlayer : virtual public ScriptApiBase
 {
@@ -31,7 +35,7 @@ class ScriptApiPlayer : virtual public ScriptApiBase
        virtual ~ScriptApiPlayer() = default;
 
        void on_newplayer(ServerActiveObject *player);
-       void on_dieplayer(ServerActiveObject *player);
+       void on_dieplayer(ServerActiveObject *player, const PlayerHPChangeReason &reason);
        bool on_respawnplayer(ServerActiveObject *player);
        bool on_prejoinplayer(const std::string &name, const std::string &ip,
                        std::string *reason);
@@ -42,8 +46,42 @@ class ScriptApiPlayer : virtual public ScriptApiBase
        bool on_punchplayer(ServerActiveObject *player, ServerActiveObject *hitter,
                        float time_from_last_punch, const ToolCapabilities *toolcap,
                        v3f dir, s16 damage);
-       s16 on_player_hpchange(ServerActiveObject *player, s16 hp_change);
+       s32 on_player_hpchange(ServerActiveObject *player, s32 hp_change,
+                       const PlayerHPChangeReason &reason);
        void on_playerReceiveFields(ServerActiveObject *player,
                        const std::string &formname, const StringMap &fields);
        void on_auth_failure(const std::string &name, const std::string &ip);
+
+       // Player inventory callbacks
+       // Return number of accepted items to be moved
+       int player_inventory_AllowMove(
+               const MoveAction &ma, int count,
+               ServerActiveObject *player);
+       // Return number of accepted items to be put
+       int player_inventory_AllowPut(
+               const MoveAction &ma, const ItemStack &stack,
+               ServerActiveObject *player);
+       // Return number of accepted items to be taken
+       int player_inventory_AllowTake(
+               const MoveAction &ma, const ItemStack &stack,
+               ServerActiveObject *player);
+       // Report moved items
+       void player_inventory_OnMove(
+               const MoveAction &ma, int count,
+               ServerActiveObject *player);
+       // Report put items
+       void player_inventory_OnPut(
+               const MoveAction &ma, const ItemStack &stack,
+               ServerActiveObject *player);
+       // Report taken items
+       void player_inventory_OnTake(
+               const MoveAction &ma, const ItemStack &stack,
+               ServerActiveObject *player);
+private:
+       void pushPutTakeArguments(
+               const char *method, const InventoryLocation &loc,
+               const std::string &listname, int index, const ItemStack &stack,
+               ServerActiveObject *player);
+       void pushMoveArguments(const MoveAction &ma,
+               int count, ServerActiveObject *player);
 };