+ // Inventory item string as which the node appears in inventory when dug.
+ // Mineral overrides this.
+ std::string dug_item;
+
+ // Initial metadata is cloned from this
+ NodeMetadata *initial_metadata;
+
+ // If the content is liquid, this is the flowing version of the liquid.
+ // If content is liquid, this is the same content.
+ content_t liquid_alternative_flowing;
+ // If the content is liquid, this is the source version of the liquid.
+ content_t liquid_alternative_source;
+
+ // Amount of light the node emits
+ u8 light_source;
+
+ // Digging properties for different tools
+ DiggingPropertiesList digging_properties;
+
+ // NOTE: Move relevant properties to here from elsewhere
+
+ void reset()
+ {
+ param_type = CPT_NONE;
+ inventory_texture = NULL;
+ is_ground_content = false;
+ light_propagates = false;
+ sunlight_propagates = false;
+ solidness = 2;
+ walkable = true;
+ pointable = true;
+ diggable = true;
+ climbable = false;
+ buildable_to = false;
+ liquid_type = LIQUID_NONE;
+ wall_mounted = false;
+ air_equivalent = false;
+ dug_item = "";
+ initial_metadata = NULL;
+ liquid_alternative_flowing = CONTENT_IGNORE;
+ light_source = 0;
+ digging_properties.clear();
+ }
+
+ ContentFeatures()
+ {
+ reset();
+ }
+
+ ~ContentFeatures();
+
+ /*
+ Quickhands for simple materials
+ */
+
+ void setTexture(u16 i, std::string name, u8 alpha=255);
+
+ void setAllTextures(std::string name, u8 alpha=255)
+ {
+ for(u16 i=0; i<6; i++)
+ {
+ setTexture(i, name, alpha);
+ }
+ // Force inventory texture too
+ setInventoryTexture(name);
+ }
+
+ void setTile(u16 i, const TileSpec &tile)
+ {
+ tiles[i] = tile;
+ }
+ void setAllTiles(const TileSpec &tile)
+ {
+ for(u16 i=0; i<6; i++)
+ {
+ setTile(i, tile);
+ }
+ }
+
+ void setInventoryTexture(std::string imgname);
+
+ void setInventoryTextureCube(std::string top,
+ std::string left, std::string right);