diff options
author | SmallJoker <mk939@ymail.com> | 2018-03-31 12:30:43 +0200 |
---|---|---|
committer | Loïc Blot <nerzhul@users.noreply.github.com> | 2018-04-02 17:18:48 +0200 |
commit | f6eff57f7cf504c715f9b58147667f2ae77732c0 (patch) | |
tree | 0c6c9abd6fb663e042bc16e63ad484df423d77a2 /src/script/cpp_api/s_player.h | |
parent | 12edb200eb0b61972418a95c704fc1c3dd6357cf (diff) | |
download | minetest-f6eff57f7cf504c715f9b58147667f2ae77732c0.tar.gz minetest-f6eff57f7cf504c715f9b58147667f2ae77732c0.tar.bz2 minetest-f6eff57f7cf504c715f9b58147667f2ae77732c0.zip |
Add player inventory callbacks
Diffstat (limited to 'src/script/cpp_api/s_player.h')
-rw-r--r-- | src/script/cpp_api/s_player.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/script/cpp_api/s_player.h b/src/script/cpp_api/s_player.h index 59e1505ae..d60dfcaf4 100644 --- a/src/script/cpp_api/s_player.h +++ b/src/script/cpp_api/s_player.h @@ -23,6 +23,8 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "irr_v3d.h" #include "util/string.h" +struct InventoryLocation; +struct ItemStack; struct ToolCapabilities; struct PlayerHPChangeReason; @@ -48,4 +50,47 @@ public: 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 InventoryLocation &loc, + const std::string &from_list, int from_index, + const std::string &to_list, int to_index, + int count, ServerActiveObject *player); + // Return number of accepted items to be put + int player_inventory_AllowPut( + const InventoryLocation &loc, + const std::string &listname, int index, const ItemStack &stack, + ServerActiveObject *player); + // Return number of accepted items to be taken + int player_inventory_AllowTake( + const InventoryLocation &loc, + const std::string &listname, int index, const ItemStack &stack, + ServerActiveObject *player); + // Report moved items + void player_inventory_OnMove( + const InventoryLocation &loc, + const std::string &from_list, int from_index, + const std::string &to_list, int to_index, + int count, ServerActiveObject *player); + // Report put items + void player_inventory_OnPut( + const InventoryLocation &loc, + const std::string &listname, int index, const ItemStack &stack, + ServerActiveObject *player); + // Report taken items + void player_inventory_OnTake( + const InventoryLocation &loc, + const std::string &listname, int index, 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 InventoryLocation &loc, + const std::string &from_list, int from_index, + const std::string &to_list, int to_index, + int count, ServerActiveObject *player); }; |