+ void setBasePosition(const v3f &position);
+ void setPos(v3f pos);
+ void moveTo(v3f pos, bool continuous);
+ void setYaw(float);
+ void setPitch(float);
+
+ /*
+ Interaction interface
+ */
+
+ int punch(v3f dir,
+ const ToolCapabilities *toolcap,
+ ServerActiveObject *puncher,
+ float time_from_last_punch);
+ void rightClick(ServerActiveObject *clicker);
+ s16 getHP() const;
+ void setHP(s16 hp);
+ s16 readDamage();
+ u16 getBreath() const;
+ void setBreath(u16 breath);
+ void setArmorGroups(const ItemGroupList &armor_groups);
+ void setAnimation(v2f frame_range, float frame_speed, float frame_blend);
+ void setBonePosition(std::string bone, v3f position, v3f rotation);
+ void setAttachment(int parent_id, std::string bone, v3f position, v3f rotation);
+ ObjectProperties* accessObjectProperties();
+ void notifyObjectPropertiesModified();
+
+ /*
+ Inventory interface
+ */
+
+ Inventory* getInventory();
+ const Inventory* getInventory() const;
+ InventoryLocation getInventoryLocation() const;
+ void setInventoryModified();
+ std::string getWieldList() const;
+ int getWieldIndex() const;
+ void setWieldIndex(int i);
+
+ /*
+ PlayerSAO-specific
+ */
+
+ void disconnected();
+
+ Player* getPlayer()
+ {
+ return m_player;
+ }
+ u16 getPeerID() const
+ {
+ return m_peer_id;
+ }
+
+ // Cheat prevention
+
+ v3f getLastGoodPosition() const
+ {
+ return m_last_good_position;
+ }
+ float resetTimeFromLastPunch()
+ {
+ float r = m_time_from_last_punch;
+ m_time_from_last_punch = 0.0;
+ return r;
+ }
+ void noCheatDigStart(v3s16 p)
+ {
+ m_nocheat_dig_pos = p;
+ m_nocheat_dig_time = 0;
+ }
+ v3s16 getNoCheatDigPos()
+ {
+ return m_nocheat_dig_pos;
+ }
+ float getNoCheatDigTime()
+ {
+ return m_nocheat_dig_time;
+ }
+ void noCheatDigEnd()
+ {
+ m_nocheat_dig_pos = v3s16(32767, 32767, 32767);
+ }
+ LagPool& getDigPool()
+ {
+ return m_dig_pool;
+ }
+ // Returns true if cheated
+ bool checkMovementCheat();
+
+ // Other
+
+ void updatePrivileges(const std::set<std::string> &privs,
+ bool is_singleplayer)
+ {
+ m_privs = privs;
+ m_is_singleplayer = is_singleplayer;
+ }
+
+ bool getCollisionBox(aabb3f *toset);
+ bool collideWithObjects();
+