class PlayerSAO : public UnitSAO
{
public:
- PlayerSAO(ServerEnvironment *env_, u16 peer_id_, bool is_singleplayer);
+ PlayerSAO(ServerEnvironment *env_, RemotePlayer *player_, u16 peer_id_, bool is_singleplayer);
~PlayerSAO();
ActiveObjectType getType() const
{ return ACTIVEOBJECT_TYPE_PLAYER; }
InventoryLocation getInventoryLocation() const;
std::string getWieldList() const;
ItemStack getWieldedItem() const;
+ ItemStack getWieldedItemOrHand() const;
bool setWieldedItem(const ItemStack &item);
int getWieldIndex() const;
void setWieldIndex(int i);
return true;
}
+ inline void removeExtendedAttribute(const std::string &attr)
+ {
+ PlayerAttributes::iterator it = m_extra_attributes.find(attr);
+ if (it == m_extra_attributes.end())
+ return;
+
+ m_extra_attributes.erase(it);
+ m_extended_attributes_modified = true;
+ }
+
inline const PlayerAttributes &getExtendedAttributes()
{
return m_extra_attributes;
bool getCollisionBox(aabb3f *toset) const;
bool collideWithObjects() const { return true; }
- void initialize(RemotePlayer *player, const std::set<std::string> &privs);
+ void finalize(RemotePlayer *player, const std::set<std::string> &privs);
v3f getEyePosition() const { return m_base_position + getEyeOffset(); }
v3f getEyeOffset() const;
// Timers
IntervalLimiter m_breathing_interval;
IntervalLimiter m_drowning_interval;
+ IntervalLimiter m_node_hurt_interval;
int m_wield_index;
bool m_position_not_sent;
float m_physics_override_gravity;
bool m_physics_override_sneak;
bool m_physics_override_sneak_glitch;
+ bool m_physics_override_new_move;
bool m_physics_override_sent;
};