]> git.lizzy.rs Git - minetest.git/blobdiff - src/script/cpp_api/s_player.h
Fix damage wraparound if very high damage (#11872)
[minetest.git] / src / script / cpp_api / s_player.h
index 88221f4869431a62635e9424ae6eb212c09a2217..e866aee464c9b0769ee60451ab78318da70a6150 100644 (file)
@@ -17,31 +17,73 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 */
 
-#ifndef S_PLAYER_H_
-#define S_PLAYER_H_
-
-#include <map>
+#pragma once
 
 #include "cpp_api/s_base.h"
+#include "irr_v3d.h"
+#include "util/string.h"
 
+struct MoveAction;
+struct InventoryLocation;
+struct ItemStack;
+struct ToolCapabilities;
+struct PlayerHPChangeReason;
+class ServerActiveObject;
 
-class ScriptApiPlayer
-               : virtual public ScriptApiBase
+class ScriptApiPlayer : virtual public ScriptApiBase
 {
 public:
-       virtual ~ScriptApiPlayer();
+       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);
-       void on_joinplayer(ServerActiveObject *player);
-       void on_leaveplayer(ServerActiveObject *player);
+       bool on_prejoinplayer(const std::string &name, const std::string &ip,
+                       std::string *reason);
+       bool can_bypass_userlimit(const std::string &name, const std::string &ip);
+       void on_joinplayer(ServerActiveObject *player, s64 last_login);
+       void on_leaveplayer(ServerActiveObject *player, bool timeout);
        void on_cheat(ServerActiveObject *player, const std::string &cheat_type);
-
+       bool on_punchplayer(ServerActiveObject *player, ServerActiveObject *hitter,
+                       float time_from_last_punch, const ToolCapabilities *toolcap,
+                       v3f dir, s32 damage);
+       void on_rightclickplayer(ServerActiveObject *player, ServerActiveObject *clicker);
+       s32 on_player_hpchange(ServerActiveObject *player, s32 hp_change,
+                       const PlayerHPChangeReason &reason);
        void on_playerReceiveFields(ServerActiveObject *player,
-                       const std::string &formname,
-                       const std::map<std::string, std::string> &fields);
-};
+                       const std::string &formname, const StringMap &fields);
+       void on_authplayer(const std::string &name, const std::string &ip, bool is_success);
 
-
-#endif /* S_PLAYER_H_ */
+       // 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);
+};