#include "itemgroup.h"
#include "sound.h"
class IGameDef;
+class Client;
struct ToolCapabilities;
/*
/*
Item stack and interaction properties
*/
- s16 stack_max;
+ u16 stack_max;
bool usable;
bool liquids_pointable;
// May be NULL. If non-NULL, deleted by destructor
ToolCapabilities *tool_capabilities;
ItemGroupList groups;
SimpleSoundSpec sound_place;
+ SimpleSoundSpec sound_place_failed;
+ f32 range;
// Client shall immediately place this node when player places the item.
// Server will update the precise end result a moment later.
#ifndef SERVER
// Get item inventory texture
virtual video::ITexture* getInventoryTexture(const std::string &name,
- IGameDef *gamedef) const=0;
+ Client *client) const=0;
// Get item wield mesh
virtual scene::IMesh* getWieldMesh(const std::string &name,
- IGameDef *gamedef) const=0;
+ Client *client) const=0;
#endif
virtual void serialize(std::ostream &os, u16 protocol_version)=0;
#ifndef SERVER
// Get item inventory texture
virtual video::ITexture* getInventoryTexture(const std::string &name,
- IGameDef *gamedef) const=0;
+ Client *client) const=0;
// Get item wield mesh
virtual scene::IMesh* getWieldMesh(const std::string &name,
- IGameDef *gamedef) const=0;
+ Client *client) const=0;
#endif
// Remove all registered item and node definitions and aliases
virtual void clear()=0;
// Register item definition
virtual void registerItem(const ItemDefinition &def)=0;
+ virtual void unregisterItem(const std::string &name)=0;
// Set an alias so that items named <name> will load as <convert_to>.
// Alias is not set if <name> has already been defined.
// Alias will be removed if <name> is defined at a later point of time.