]> git.lizzy.rs Git - minetest.git/blobdiff - src/itemdef.h
Fix Enter key after creating a new world (#12997)
[minetest.git] / src / itemdef.h
index 4c754f1da35e3ba7de47f29ea4abf43c9f49e327..3bb27559ecedf3353d4e98d5762c7b7371186527 100644 (file)
@@ -26,6 +26,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include <set>
 #include "itemgroup.h"
 #include "sound.h"
+#include "texture_override.h" // TextureOverride
 class IGameDef;
 class Client;
 struct ToolCapabilities;
@@ -55,12 +56,15 @@ struct ItemDefinition
        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;
@@ -76,12 +80,14 @@ struct ItemDefinition
        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
@@ -92,7 +98,7 @@ struct ItemDefinition
        ~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();
 };
@@ -100,8 +106,9 @@ struct ItemDefinition
 class IItemDefManager
 {
 public:
-       IItemDefManager(){}
-       virtual ~IItemDefManager(){}
+       IItemDefManager() = default;
+
+       virtual ~IItemDefManager() = default;
 
        // Get item definition
        virtual const ItemDefinition& get(const std::string &name) const=0;
@@ -133,8 +140,9 @@ class IItemDefManager
 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;
@@ -153,6 +161,10 @@ class IWritableItemDefManager : public IItemDefManager
                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;
@@ -166,7 +178,7 @@ class IWritableItemDefManager : public IItemDefManager
                        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;