class TestSAO : public ServerActiveObject
{
public:
- TestSAO(ServerEnvironment *env, u16 id, v3f pos);
+ TestSAO(ServerEnvironment *env, v3f pos);
u8 getType() const
{return ACTIVEOBJECT_TYPE_TEST;}
- static ServerActiveObject* create(ServerEnvironment *env, u16 id, v3f pos,
+ static ServerActiveObject* create(ServerEnvironment *env, v3f pos,
const std::string &data);
void step(float dtime, bool send_recommended);
private:
class ItemSAO : public ServerActiveObject
{
public:
- ItemSAO(ServerEnvironment *env, u16 id, v3f pos,
+ ItemSAO(ServerEnvironment *env, v3f pos,
const std::string inventorystring);
u8 getType() const
{return ACTIVEOBJECT_TYPE_ITEM;}
- static ServerActiveObject* create(ServerEnvironment *env, u16 id, v3f pos,
+ static ServerActiveObject* create(ServerEnvironment *env, v3f pos,
const std::string &data);
void step(float dtime, bool send_recommended);
std::string getClientInitializationData();
std::string getStaticData();
InventoryItem* createInventoryItem();
- InventoryItem* createPickedUpItem(){return createInventoryItem();}
+ void punch(ServerActiveObject *puncher);
+ void rightClick(ServerActiveObject *clicker);
+ float getMinimumSavedMovement(){ return 0.1*BS; }
private:
std::string m_inventorystring;
v3f m_speed_f;
class RatSAO : public ServerActiveObject
{
public:
- RatSAO(ServerEnvironment *env, u16 id, v3f pos);
+ RatSAO(ServerEnvironment *env, v3f pos);
u8 getType() const
{return ACTIVEOBJECT_TYPE_RAT;}
- static ServerActiveObject* create(ServerEnvironment *env, u16 id, v3f pos,
+ static ServerActiveObject* create(ServerEnvironment *env, v3f pos,
const std::string &data);
void step(float dtime, bool send_recommended);
std::string getClientInitializationData();
std::string getStaticData();
- InventoryItem* createPickedUpItem();
+ void punch(ServerActiveObject *puncher);
private:
bool m_is_active;
IntervalLimiter m_inactive_interval;
class Oerkki1SAO : public ServerActiveObject
{
public:
- Oerkki1SAO(ServerEnvironment *env, u16 id, v3f pos);
+ Oerkki1SAO(ServerEnvironment *env, v3f pos);
u8 getType() const
{return ACTIVEOBJECT_TYPE_OERKKI1;}
- static ServerActiveObject* create(ServerEnvironment *env, u16 id, v3f pos,
+ static ServerActiveObject* create(ServerEnvironment *env, v3f pos,
const std::string &data);
void step(float dtime, bool send_recommended);
std::string getClientInitializationData();
std::string getStaticData();
InventoryItem* createPickedUpItem(){return NULL;}
- u16 punch(const std::string &toolname, v3f dir);
+ void punch(ServerActiveObject *puncher);
+ bool isPeaceful(){return false;}
private:
void doDamage(u16 d);
class FireflySAO : public ServerActiveObject
{
public:
- FireflySAO(ServerEnvironment *env, u16 id, v3f pos);
+ FireflySAO(ServerEnvironment *env, v3f pos);
u8 getType() const
{return ACTIVEOBJECT_TYPE_FIREFLY;}
- static ServerActiveObject* create(ServerEnvironment *env, u16 id, v3f pos,
+ static ServerActiveObject* create(ServerEnvironment *env, v3f pos,
const std::string &data);
void step(float dtime, bool send_recommended);
std::string getClientInitializationData();
bool m_touching_ground;
};
+class Settings;
+
+class MobV2SAO : public ServerActiveObject
+{
+public:
+ MobV2SAO(ServerEnvironment *env, v3f pos,
+ Settings *init_properties);
+ virtual ~MobV2SAO();
+ u8 getType() const
+ {return ACTIVEOBJECT_TYPE_MOBV2;}
+ static ServerActiveObject* create(ServerEnvironment *env, v3f pos,
+ const std::string &data);
+ std::string getStaticData();
+ std::string getClientInitializationData();
+ void step(float dtime, bool send_recommended);
+ InventoryItem* createPickedUpItem(){return NULL;}
+ void punch(ServerActiveObject *puncher);
+ bool isPeaceful();
+private:
+ void sendPosition();
+ void setPropertyDefaults();
+ void readProperties();
+ void updateProperties();
+ void doDamage(u16 d);
+
+ std::string m_move_type;
+ v3f m_speed;
+ v3f m_last_sent_position;
+ v3f m_oldpos;
+ float m_yaw;
+ float m_counter1;
+ float m_counter2;
+ float m_age;
+ bool m_touching_ground;
+ int m_hp;
+ bool m_walk_around;
+ float m_walk_around_timer;
+ bool m_next_pos_exists;
+ v3s16 m_next_pos_i;
+ float m_shoot_reload_timer;
+ bool m_shooting;
+ float m_shooting_timer;
+ float m_die_age;
+ v2f m_size;
+ bool m_falling;
+ float m_disturb_timer;
+ std::string m_disturbing_player;
+ float m_random_disturb_timer;
+ float m_shoot_y;
+
+ Settings *m_properties;
+};
+
+struct LuaEntityProperties;
+
+class LuaEntitySAO : public ServerActiveObject
+{
+public:
+ LuaEntitySAO(ServerEnvironment *env, v3f pos,
+ const std::string &name, const std::string &state);
+ ~LuaEntitySAO();
+ u8 getType() const
+ {return ACTIVEOBJECT_TYPE_LUAENTITY;}
+ virtual void addedToEnvironment();
+ static ServerActiveObject* create(ServerEnvironment *env, v3f pos,
+ const std::string &data);
+ void step(float dtime, bool send_recommended);
+ std::string getClientInitializationData();
+ std::string getStaticData();
+ InventoryItem* createPickedUpItem();
+ void punch(ServerActiveObject *puncher);
+ void rightClick(ServerActiveObject *clicker);
+ void setPos(v3f pos);
+ void moveTo(v3f pos, bool continuous);
+ float getMinimumSavedMovement();
+private:
+ void sendPosition(bool do_interpolate, bool is_movement_end);
+
+ std::string m_init_name;
+ std::string m_init_state;
+ bool m_registered;
+ struct LuaEntityProperties *m_prop;
+
+ float m_yaw;
+ float m_last_sent_yaw;
+ v3f m_last_sent_position;
+ float m_last_sent_position_timer;
+ float m_last_sent_move_precision;
+};
+
#endif