#include "irrlichttypes.h"
#include "activeobject.h"
#include "utility.h"
+#include "inventorymanager.h"
/*
*/
class ServerEnvironment;
-class InventoryItem;
+class ItemStack;
class Player;
+struct ToolDiggingProperties;
class ServerActiveObject : public ActiveObject
{
// environment
virtual bool environmentDeletes() const
{ return true; }
+
+ virtual bool unlimitedTransferDistance() const
+ { return false; }
// Create a certain type of ServerActiveObject
static ServerActiveObject* create(u8 type,
virtual bool isStaticAllowed() const
{return true;}
- virtual void punch(ServerActiveObject *puncher){}
- virtual void rightClick(ServerActiveObject *clicker){}
-
- // Returns a reference
- virtual InventoryItem* getWieldedItem()
- { return NULL; }
- virtual void damageWieldedItem(u16 amount)
- {}
- // If all fits, eats item and returns true. Otherwise returns false.
- virtual bool addToInventory(InventoryItem *item)
- {return false;}
- virtual void addToInventoryLater(InventoryItem *item)
- {}
+ // time_from_last_punch is used for lessening damage if punching fast
+ virtual void punch(ServerActiveObject *puncher,
+ float time_from_last_punch=1000000)
+ {}
+ virtual void rightClick(ServerActiveObject *clicker)
+ {}
virtual void setHP(s16 hp)
- {}
+ {}
virtual s16 getHP()
- {return 0;}
+ { return 0; }
+
+ // Inventory and wielded item
+ virtual Inventory* getInventory()
+ { return NULL; }
+ virtual const Inventory* getInventory() const
+ { return NULL; }
+ virtual InventoryLocation getInventoryLocation() const
+ { return InventoryLocation(); }
+ virtual void setInventoryModified()
+ {}
+ virtual std::string getWieldList() const
+ { return ""; }
+ virtual int getWieldIndex() const
+ { return 0; }
+ virtual ItemStack getWieldedItem() const;
+ virtual bool setWieldedItem(const ItemStack &item);
/*
Number of players which know about this object. Object won't be