#include <set>
#include "itemgroup.h"
#include "sound.h"
+#include "texture_override.h" // TextureOverride
class IGameDef;
class Client;
struct ToolCapabilities;
ItemType type;
std::string name; // "" = hand
std::string description; // Shown in tooltip.
+ std::string short_description;
/*
Visual properties
*/
std::string inventory_image; // Optional for nodes, mandatory for tools/craftitems
+ std::string inventory_overlay; // Overlay of inventory_image.
std::string wield_image; // If empty, inventory_image or mesh (only nodes) is used
+ std::string wield_overlay; // Overlay of wield_image.
std::string palette_image; // If specified, the item will be colorized based on this
video::SColor color; // The fallback color of the node.
v3f wield_scale;
ItemGroupList groups;
SimpleSoundSpec sound_place;
SimpleSoundSpec sound_place_failed;
+ SimpleSoundSpec sound_use, sound_use_air;
f32 range;
// Client shall immediately place this node when player places the item.
// Server will update the precise end result a moment later.
// "" = no prediction
std::string node_placement_prediction;
+ u8 place_param2;
/*
Some helpful methods
~ItemDefinition();
void reset();
void serialize(std::ostream &os, u16 protocol_version) const;
- void deSerialize(std::istream &is);
+ void deSerialize(std::istream &is, u16 protocol_version);
private:
void resetInitial();
};
class IItemDefManager
{
public:
- IItemDefManager(){}
- virtual ~IItemDefManager(){}
+ IItemDefManager() = default;
+
+ virtual ~IItemDefManager() = default;
// Get item definition
virtual const ItemDefinition& get(const std::string &name) const=0;
class IWritableItemDefManager : public IItemDefManager
{
public:
- IWritableItemDefManager(){}
- virtual ~IWritableItemDefManager(){}
+ IWritableItemDefManager() = default;
+
+ virtual ~IWritableItemDefManager() = default;
// Get item definition
virtual const ItemDefinition& get(const std::string &name) const=0;
Client *client) const=0;
#endif
+ // Replace the textures of registered nodes with the ones specified in
+ // the texture pack's override.txt files
+ virtual void applyTextureOverrides(const std::vector<TextureOverride> &overrides)=0;
+
// Remove all registered item and node definitions and aliases
// Then re-add the builtin item definitions
virtual void clear()=0;
const std::string &convert_to)=0;
virtual void serialize(std::ostream &os, u16 protocol_version)=0;
- virtual void deSerialize(std::istream &is)=0;
+ virtual void deSerialize(std::istream &is, u16 protocol_version)=0;
// Do stuff asked by threads that can only be done in the main thread
virtual void processQueue(IGameDef *gamedef)=0;