voxelands/src/content_mapnode_furniture.cpp

2032 lines
78 KiB
C++

/************************************************************************
* Minetest-c55
* Copyright (C) 2010 celeron55, Perttu Ahola <celeron55@gmail.com>
*
* content_mapnode_furniture.cpp
* Copyright (C) Lisa 'darkrose' Milne 2014 <lisa@ltmnet.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>
************************************************************************/
#include "content_mapnode.h"
#include "content_nodebox.h"
#include "content_list.h"
#include "content_craft.h"
#include "content_nodemeta.h"
#include "intl.h"
#include "content_burntimes.h"
void content_mapnode_furniture(bool repeat)
{
content_t i;
ContentFeatures *f = NULL;
i = CONTENT_BOOKSHELF;
f = &content_features(i);
f->description = gettext("Book Shelf");
f->setAllTextures("wood.png");
f->setAllMetaTextures("bookshelf_book.png");
f->setMetaTexture(0, "bookshelf_book_top.png");
f->rotate_tile_with_nodebox = true;
//f->setInventoryTextureCube("wood.png", "bookshelf.png", "bookshelf.png");
f->draw_type = CDT_NODEBOX_META;
f->param_type = CPT_FACEDIR_SIMPLE;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_BOOKSHELF)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BOOKSHELF;
f->type = CMT_WOOD;
f->dig_time = 0.75;
content_nodebox_bookshelf(f);
f->setInventoryTextureNodeBox(i,"wood.png", "wood.png", "wood.png");
if (f->initial_metadata == NULL)
f->initial_metadata = new BookShelfNodeMetadata();
{
u16 r[9] = {
CONTENT_WOOD, CONTENT_WOOD, CONTENT_WOOD,
CONTENT_IGNORE, CONTENT_IGNORE, CONTENT_IGNORE,
CONTENT_WOOD, CONTENT_WOOD, CONTENT_WOOD
};
crafting::setRecipe(r,CONTENT_BOOKSHELF,1);
}
f->pressure_type = CST_SOLID;
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_BOOKSHELF_JUNGLE;
f = &content_features(i);
f->description = gettext("Junglewood Book Shelf");
f->setAllTextures("junglewood.png");
f->setAllMetaTextures("bookshelf_book.png");
f->setMetaTexture(0, "bookshelf_book_top.png");
f->rotate_tile_with_nodebox = true;
//f->setInventoryTextureCube("wood.png", "bookshelf.png", "bookshelf.png");
f->draw_type = CDT_NODEBOX_META;
f->param_type = CPT_FACEDIR_SIMPLE;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BOOKSHELF;
f->type = CMT_WOOD;
f->dig_time = 0.75;
content_nodebox_bookshelf(f);
f->setInventoryTextureNodeBox(i,"junglewood.png", "junglewood.png", "junglewood.png");
if (f->initial_metadata == NULL)
f->initial_metadata = new BookShelfNodeMetadata();
{
u16 r[9] = {
CONTENT_JUNGLEWOOD, CONTENT_JUNGLEWOOD, CONTENT_JUNGLEWOOD,
CONTENT_IGNORE, CONTENT_IGNORE, CONTENT_IGNORE,
CONTENT_JUNGLEWOOD, CONTENT_JUNGLEWOOD, CONTENT_JUNGLEWOOD
};
crafting::setRecipe(r,CONTENT_BOOKSHELF_JUNGLE,1);
}
f->pressure_type = CST_SOLID;
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_BOOKSHELF_PINE;
f = &content_features(i);
f->description = gettext("Pine Book Shelf");
f->setAllTextures("pine.png");
f->setAllMetaTextures("bookshelf_book.png");
f->setMetaTexture(0, "bookshelf_book_top.png");
f->rotate_tile_with_nodebox = true;
//f->setInventoryTextureCube("wood.png", "bookshelf.png", "bookshelf.png");
f->draw_type = CDT_NODEBOX_META;
f->param_type = CPT_FACEDIR_SIMPLE;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BOOKSHELF;
f->type = CMT_WOOD;
f->dig_time = 0.75;
content_nodebox_bookshelf(f);
f->setInventoryTextureNodeBox(i,"pine.png", "pine.png", "pine.png");
if (f->initial_metadata == NULL)
f->initial_metadata = new BookShelfNodeMetadata();
{
u16 r[9] = {
CONTENT_WOOD_PINE, CONTENT_WOOD_PINE, CONTENT_WOOD_PINE,
CONTENT_IGNORE, CONTENT_IGNORE, CONTENT_IGNORE,
CONTENT_WOOD_PINE, CONTENT_WOOD_PINE, CONTENT_WOOD_PINE
};
crafting::setRecipe(r,CONTENT_BOOKSHELF_PINE,1);
}
f->pressure_type = CST_SOLID;
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_BOOKSHELF_APPLE;
f = &content_features(i);
f->description = gettext("Applewood Book Shelf");
f->setAllTextures("applewood.png");
f->setAllMetaTextures("bookshelf_book.png");
f->setMetaTexture(0, "bookshelf_book_top.png");
f->rotate_tile_with_nodebox = true;
//f->setInventoryTextureCube("wood.png", "bookshelf.png", "bookshelf.png");
f->draw_type = CDT_NODEBOX_META;
f->param_type = CPT_FACEDIR_SIMPLE;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BOOKSHELF;
f->type = CMT_WOOD;
f->dig_time = 0.75;
content_nodebox_bookshelf(f);
f->setInventoryTextureNodeBox(i,"applewood.png", "applewood.png", "applewood.png");
if (f->initial_metadata == NULL)
f->initial_metadata = new BookShelfNodeMetadata();
{
u16 r[9] = {
CONTENT_APPLEWOOD, CONTENT_APPLEWOOD, CONTENT_APPLEWOOD,
CONTENT_IGNORE, CONTENT_IGNORE, CONTENT_IGNORE,
CONTENT_APPLEWOOD, CONTENT_APPLEWOOD, CONTENT_APPLEWOOD
};
crafting::setRecipe(r,CONTENT_BOOKSHELF_APPLE,1);
}
f->pressure_type = CST_SOLID;
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_COUCH_CENTRE;
f = &content_features(i);
f->description = gettext("Couch");
f->setAllTextures("cotton.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_ENDL;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_centre(f);
f->setInventoryTextureNodeBox(i,"cotton.png", "cotton.png", "cotton.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_ENDL;
f = &content_features(i);
f->description = gettext("Couch");
f->setAllTextures("cotton.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_ENDR;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_left(f);
f->setInventoryTextureNodeBox(i,"cotton.png", "cotton.png", "cotton.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_ENDR;
f = &content_features(i);
f->description = gettext("Couch");
f->setAllTextures("cotton.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_INNER;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_right(f);
f->setInventoryTextureNodeBox(i,"cotton.png", "cotton.png", "cotton.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_INNER;
f = &content_features(i);
f->description = gettext("Couch");
f->setAllTextures("cotton.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_OUTER;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_inner(f);
f->setInventoryTextureNodeBox(i,"cotton.png", "cotton.png", "cotton.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_OUTER;
f = &content_features(i);
f->description = gettext("Couch");
f->setAllTextures("cotton.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_CHAIR;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_outer(f);
f->setInventoryTextureNodeBox(i,"cotton.png", "cotton.png", "cotton.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_CHAIR;
f = &content_features(i);
f->description = gettext("Couch");
f->setAllTextures("cotton.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_CENTRE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_chair(f);
f->setInventoryTextureNodeBox(i,"cotton.png", "cotton.png", "cotton.png");
crafting::setVRecipe(CONTENT_COTTON,CONTENT_COUCH_CHAIR,2);
crafting::set1Any2Recipe(CONTENT_COUCH_CHAIR_BLUE,CONTENT_CRAFTITEM_STARCH,CONTENT_COUCH_CHAIR);
crafting::set1Any2Recipe(CONTENT_COUCH_CHAIR_GREEN,CONTENT_CRAFTITEM_STARCH,CONTENT_COUCH_CHAIR);
crafting::set1Any2Recipe(CONTENT_COUCH_CHAIR_ORANGE,CONTENT_CRAFTITEM_STARCH,CONTENT_COUCH_CHAIR);
crafting::set1Any2Recipe(CONTENT_COUCH_CHAIR_PURPLE,CONTENT_CRAFTITEM_STARCH,CONTENT_COUCH_CHAIR);
crafting::set1Any2Recipe(CONTENT_COUCH_CHAIR_RED,CONTENT_CRAFTITEM_STARCH,CONTENT_COUCH_CHAIR);
crafting::set1Any2Recipe(CONTENT_COUCH_CHAIR_YELLOW,CONTENT_CRAFTITEM_STARCH,CONTENT_COUCH_CHAIR);
crafting::set1Any2Recipe(CONTENT_COUCH_CHAIR_BLACK,CONTENT_CRAFTITEM_STARCH,CONTENT_COUCH_CHAIR);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_COUCH_CENTRE_BLUE;
f = &content_features(i);
f->description = gettext("Blue Couch");
f->setAllTextures("cotton_blue.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_BLUE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_ENDL_BLUE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_centre(f);
f->setInventoryTextureNodeBox(i,"cotton_blue.png", "cotton_blue.png", "cotton_blue.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_ENDL_BLUE;
f = &content_features(i);
f->description = gettext("Blue Couch");
f->setAllTextures("cotton_blue.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_BLUE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_ENDR_BLUE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_left(f);
f->setInventoryTextureNodeBox(i,"cotton_blue.png", "cotton_blue.png", "cotton_blue.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_ENDR_BLUE;
f = &content_features(i);
f->description = gettext("Blue Couch");
f->setAllTextures("cotton_blue.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_BLUE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_INNER_BLUE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_right(f);
f->setInventoryTextureNodeBox(i,"cotton_blue.png", "cotton_blue.png", "cotton_blue.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_INNER_BLUE;
f = &content_features(i);
f->description = gettext("Blue Couch");
f->setAllTextures("cotton_blue.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_BLUE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_OUTER_BLUE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_inner(f);
f->setInventoryTextureNodeBox(i,"cotton_blue.png", "cotton_blue.png", "cotton_blue.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_OUTER_BLUE;
f = &content_features(i);
f->description = gettext("Blue Couch");
f->setAllTextures("cotton_blue.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_BLUE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_CHAIR_BLUE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_outer(f);
f->setInventoryTextureNodeBox(i,"cotton_blue.png", "cotton_blue.png", "cotton_blue.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_CHAIR_BLUE;
f = &content_features(i);
f->description = gettext("Blue Couch");
f->setAllTextures("cotton_blue.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_BLUE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_CENTRE_BLUE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_chair(f);
f->setInventoryTextureNodeBox(i,"cotton_blue.png", "cotton_blue.png", "cotton_blue.png");
crafting::setVRecipe(CONTENT_COTTON_BLUE,CONTENT_COUCH_CHAIR_BLUE,2);
crafting::set1Any2Recipe(CONTENT_COUCH_CHAIR,CONTENT_CRAFTITEM_DYE_BLUE,CONTENT_COUCH_CHAIR_BLUE);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_COUCH_CENTRE_GREEN;
f = &content_features(i);
f->description = gettext("Green Couch");
f->setAllTextures("cotton_green.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_GREEN)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_ENDL_GREEN;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_centre(f);
f->setInventoryTextureNodeBox(i,"cotton_green.png", "cotton_green.png", "cotton_green.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_ENDL_GREEN;
f = &content_features(i);
f->description = gettext("Green Couch");
f->setAllTextures("cotton_green.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_GREEN)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_ENDR_GREEN;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_left(f);
f->setInventoryTextureNodeBox(i,"cotton_green.png", "cotton_green.png", "cotton_green.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_ENDR_GREEN;
f = &content_features(i);
f->description = gettext("Green Couch");
f->setAllTextures("cotton_green.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_GREEN)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_INNER_GREEN;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_right(f);
f->setInventoryTextureNodeBox(i,"cotton_green.png", "cotton_green.png", "cotton_green.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_INNER_GREEN;
f = &content_features(i);
f->description = gettext("Green Couch");
f->setAllTextures("cotton_green.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_GREEN)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_OUTER_GREEN;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_inner(f);
f->setInventoryTextureNodeBox(i,"cotton_green.png", "cotton_green.png", "cotton_green.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_OUTER_GREEN;
f = &content_features(i);
f->description = gettext("Green Couch");
f->setAllTextures("cotton_green.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_GREEN)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_CHAIR_GREEN;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_outer(f);
f->setInventoryTextureNodeBox(i,"cotton_green.png", "cotton_green.png", "cotton_green.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_CHAIR_GREEN;
f = &content_features(i);
f->description = gettext("Green Couch");
f->setAllTextures("cotton_green.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_GREEN)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_CENTRE_GREEN;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_chair(f);
f->setInventoryTextureNodeBox(i,"cotton_green.png", "cotton_green.png", "cotton_green.png");
crafting::setVRecipe(CONTENT_COTTON_GREEN,CONTENT_COUCH_CHAIR_GREEN,2);
crafting::set1Any2Recipe(CONTENT_COUCH_CHAIR,CONTENT_CRAFTITEM_DYE_GREEN,CONTENT_COUCH_CHAIR_GREEN);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_COUCH_CENTRE_ORANGE;
f = &content_features(i);
f->description = gettext("Orange Couch");
f->setAllTextures("cotton_orange.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_ORANGE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_ENDL_ORANGE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_centre(f);
f->setInventoryTextureNodeBox(i,"cotton_orange.png", "cotton_orange.png", "cotton_orange.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_ENDL_ORANGE;
f = &content_features(i);
f->description = gettext("Orange Couch");
f->setAllTextures("cotton_orange.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_ORANGE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_ENDR_ORANGE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_left(f);
f->setInventoryTextureNodeBox(i,"cotton_orange.png", "cotton_orange.png", "cotton_orange.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_ENDR_ORANGE;
f = &content_features(i);
f->description = gettext("Orange Couch");
f->setAllTextures("cotton_orange.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_ORANGE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_INNER_ORANGE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_right(f);
f->setInventoryTextureNodeBox(i,"cotton_orange.png", "cotton_orange.png", "cotton_orange.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_INNER_ORANGE;
f = &content_features(i);
f->description = gettext("Orange Couch");
f->setAllTextures("cotton_orange.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_ORANGE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_OUTER_ORANGE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_inner(f);
f->setInventoryTextureNodeBox(i,"cotton_orange.png", "cotton_orange.png", "cotton_orange.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_OUTER_ORANGE;
f = &content_features(i);
f->description = gettext("Orange Couch");
f->setAllTextures("cotton_orange.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_ORANGE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_CHAIR_ORANGE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_outer(f);
f->setInventoryTextureNodeBox(i,"cotton_orange.png", "cotton_orange.png", "cotton_orange.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_CHAIR_ORANGE;
f = &content_features(i);
f->description = gettext("Orange Couch");
f->setAllTextures("cotton_orange.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_ORANGE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_CENTRE_ORANGE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_chair(f);
f->setInventoryTextureNodeBox(i,"cotton_orange.png", "cotton_orange.png", "cotton_orange.png");
crafting::setVRecipe(CONTENT_COTTON_ORANGE,CONTENT_COUCH_CHAIR_ORANGE,2);
crafting::set1Any2Recipe(CONTENT_COUCH_CHAIR,CONTENT_CRAFTITEM_DYE_ORANGE,CONTENT_COUCH_CHAIR_ORANGE);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_COUCH_CENTRE_PURPLE;
f = &content_features(i);
f->description = gettext("Purple Couch");
f->setAllTextures("cotton_purple.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_PURPLE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_ENDL_PURPLE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_centre(f);
f->setInventoryTextureNodeBox(i,"cotton_purple.png", "cotton_purple.png", "cotton_purple.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_ENDL_PURPLE;
f = &content_features(i);
f->description = gettext("Purple Couch");
f->setAllTextures("cotton_purple.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_PURPLE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_ENDR_PURPLE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_left(f);
f->setInventoryTextureNodeBox(i,"cotton_purple.png", "cotton_purple.png", "cotton_purple.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_ENDR_PURPLE;
f = &content_features(i);
f->description = gettext("Purple Couch");
f->setAllTextures("cotton_purple.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_PURPLE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_INNER_PURPLE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_right(f);
f->setInventoryTextureNodeBox(i,"cotton_purple.png", "cotton_purple.png", "cotton_purple.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_INNER_PURPLE;
f = &content_features(i);
f->description = gettext("Purple Couch");
f->setAllTextures("cotton_purple.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_PURPLE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_OUTER_PURPLE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_inner(f);
f->setInventoryTextureNodeBox(i,"cotton_purple.png", "cotton_purple.png", "cotton_purple.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_OUTER_PURPLE;
f = &content_features(i);
f->description = gettext("Purple Couch");
f->setAllTextures("cotton_purple.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_PURPLE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_CHAIR_PURPLE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_outer(f);
f->setInventoryTextureNodeBox(i,"cotton_purple.png", "cotton_purple.png", "cotton_purple.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_CHAIR_PURPLE;
f = &content_features(i);
f->description = gettext("Purple Couch");
f->setAllTextures("cotton_purple.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_PURPLE)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_CENTRE_PURPLE;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_chair(f);
f->setInventoryTextureNodeBox(i,"cotton_purple.png", "cotton_purple.png", "cotton_purple.png");
crafting::setVRecipe(CONTENT_COTTON_PURPLE,CONTENT_COUCH_CHAIR_PURPLE,2);
crafting::set1Any2Recipe(CONTENT_COUCH_CHAIR,CONTENT_CRAFTITEM_DYE_PURPLE,CONTENT_COUCH_CHAIR_PURPLE);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_COUCH_CENTRE_RED;
f = &content_features(i);
f->description = gettext("Red Couch");
f->setAllTextures("cotton_red.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_RED)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_ENDL_RED;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_centre(f);
f->setInventoryTextureNodeBox(i,"cotton_red.png", "cotton_red.png", "cotton_red.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_ENDL_RED;
f = &content_features(i);
f->description = gettext("Red Couch");
f->setAllTextures("cotton_red.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_RED)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_ENDR_RED;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_left(f);
f->setInventoryTextureNodeBox(i,"cotton_red.png", "cotton_red.png", "cotton_red.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_ENDR_RED;
f = &content_features(i);
f->description = gettext("Red Couch");
f->setAllTextures("cotton_red.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_RED)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_INNER_RED;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_right(f);
f->setInventoryTextureNodeBox(i,"cotton_red.png", "cotton_red.png", "cotton_red.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_INNER_RED;
f = &content_features(i);
f->description = gettext("Red Couch");
f->setAllTextures("cotton_red.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_RED)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_OUTER_RED;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_inner(f);
f->setInventoryTextureNodeBox(i,"cotton_red.png", "cotton_red.png", "cotton_red.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_OUTER_RED;
f = &content_features(i);
f->description = gettext("Red Couch");
f->setAllTextures("cotton_red.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_RED)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_CHAIR_RED;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_outer(f);
f->setInventoryTextureNodeBox(i,"cotton_red.png", "cotton_red.png", "cotton_red.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_CHAIR_RED;
f = &content_features(i);
f->description = gettext("Red Couch");
f->setAllTextures("cotton_red.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_RED)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_CENTRE_RED;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_chair(f);
f->setInventoryTextureNodeBox(i,"cotton_red.png", "cotton_red.png", "cotton_red.png");
crafting::setVRecipe(CONTENT_COTTON_RED,CONTENT_COUCH_CHAIR_RED,2);
crafting::set1Any2Recipe(CONTENT_COUCH_CHAIR,CONTENT_CRAFTITEM_DYE_RED,CONTENT_COUCH_CHAIR_RED);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_COUCH_CENTRE_YELLOW;
f = &content_features(i);
f->description = gettext("Yellow Couch");
f->setAllTextures("cotton_yellow.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_YELLOW)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_ENDL_YELLOW;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_centre(f);
f->setInventoryTextureNodeBox(i,"cotton_yellow.png", "cotton_yellow.png", "cotton_yellow.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_ENDL_YELLOW;
f = &content_features(i);
f->description = gettext("Yellow Couch");
f->setAllTextures("cotton_yellow.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_YELLOW)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_ENDR_YELLOW;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_left(f);
f->setInventoryTextureNodeBox(i,"cotton_yellow.png", "cotton_yellow.png", "cotton_yellow.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_ENDR_YELLOW;
f = &content_features(i);
f->description = gettext("Yellow Couch");
f->setAllTextures("cotton_yellow.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_YELLOW)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_INNER_YELLOW;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_right(f);
f->setInventoryTextureNodeBox(i,"cotton_yellow.png", "cotton_yellow.png", "cotton_yellow.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_INNER_YELLOW;
f = &content_features(i);
f->description = gettext("Yellow Couch");
f->setAllTextures("cotton_yellow.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_YELLOW)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_OUTER_YELLOW;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_inner(f);
f->setInventoryTextureNodeBox(i,"cotton_yellow.png", "cotton_yellow.png", "cotton_yellow.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_OUTER_YELLOW;
f = &content_features(i);
f->description = gettext("Yellow Couch");
f->setAllTextures("cotton_yellow.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_YELLOW)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_CHAIR_YELLOW;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_outer(f);
f->setInventoryTextureNodeBox(i,"cotton_yellow.png", "cotton_yellow.png", "cotton_yellow.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_CHAIR_YELLOW;
f = &content_features(i);
f->description = gettext("Yellow Couch");
f->setAllTextures("cotton_yellow.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_YELLOW)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_CENTRE_YELLOW;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_chair(f);
f->setInventoryTextureNodeBox(i,"cotton_yellow.png", "cotton_yellow.png", "cotton_yellow.png");
crafting::setVRecipe(CONTENT_COTTON_YELLOW,CONTENT_COUCH_CHAIR_YELLOW,2);
crafting::set1Any2Recipe(CONTENT_COUCH_CHAIR,CONTENT_CRAFTITEM_DYE_YELLOW,CONTENT_COUCH_CHAIR_YELLOW);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_COUCH_CENTRE_BLACK;
f = &content_features(i);
f->description = gettext("Black Couch");
f->setAllTextures("cotton_black.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_BLACK)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_ENDL_BLACK;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_centre(f);
f->setInventoryTextureNodeBox(i,"cotton_black.png", "cotton_black.png", "cotton_black.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_ENDL_BLACK;
f = &content_features(i);
f->description = gettext("Black Couch");
f->setAllTextures("cotton_black.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_BLACK)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_ENDR_BLACK;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_left(f);
f->setInventoryTextureNodeBox(i,"cotton_black.png", "cotton_black.png", "cotton_black.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_ENDR_BLACK;
f = &content_features(i);
f->description = gettext("Black Couch");
f->setAllTextures("cotton_black.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_BLACK)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_INNER_BLACK;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_right(f);
f->setInventoryTextureNodeBox(i,"cotton_black.png", "cotton_black.png", "cotton_black.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_INNER_BLACK;
f = &content_features(i);
f->description = gettext("Black Couch");
f->setAllTextures("cotton_black.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_BLACK)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_OUTER_BLACK;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_inner(f);
f->setInventoryTextureNodeBox(i,"cotton_black.png", "cotton_black.png", "cotton_black.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_OUTER_BLACK;
f = &content_features(i);
f->description = gettext("Black Couch");
f->setAllTextures("cotton_black.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_BLACK)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_CHAIR_BLACK;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_outer(f);
f->setInventoryTextureNodeBox(i,"cotton_black.png", "cotton_black.png", "cotton_black.png");
f->suffocation_per_second = 0;
i = CONTENT_COUCH_CHAIR_BLACK;
f = &content_features(i);
f->description = gettext("Black Couch");
f->setAllTextures("cotton_black.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->is_ground_content = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COUCH_CHAIR_BLACK)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_COUCH;
f->type = CMT_DIRT;
f->dig_time = 1.0;
f->onpunch_replace_node = CONTENT_COUCH_CENTRE_BLACK;
f->onpunch_replace_respects_borderstone = true;
content_nodebox_couch_chair(f);
f->setInventoryTextureNodeBox(i,"cotton_black.png", "cotton_black.png", "cotton_black.png");
crafting::setVRecipe(CONTENT_COTTON_BLACK,CONTENT_COUCH_CHAIR_BLACK,2);
crafting::set1Any2Recipe(CONTENT_COUCH_CHAIR,CONTENT_CRAFTITEM_DYE_BLACK,CONTENT_COUCH_CHAIR_BLACK);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_CHAIR;
f = &content_features(i);
f->description = gettext("Chair");
f->setAllTextures("pine.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->air_equivalent = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_CHAIR;
content_nodebox_chair(f);
f->onpunch_replace_node = CONTENT_CHAIR_CENTRE;
f->onpunch_replace_respects_borderstone = true;
f->setInventoryTextureNodeBox(i,"pine.png", "pine.png", "pine.png");
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_CRUSHABLE;
{
u16 r[9] = {
CONTENT_CRAFTITEM_PINE_PLANK, CONTENT_IGNORE, CONTENT_IGNORE,
CONTENT_WOOD_PINE, CONTENT_WOOD_PINE, CONTENT_IGNORE,
CONTENT_CRAFTITEM_PINE_PLANK, CONTENT_CRAFTITEM_PINE_PLANK, CONTENT_IGNORE
};
crafting::setRecipe(r,CONTENT_CHAIR,2);
}
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_CHAIR_CENTRE;
f = &content_features(i);
f->description = gettext("Chair");
f->setAllTextures("pine.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->air_equivalent = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_CHAIR)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_CHAIR;
content_nodebox_chair_centre(f);
f->onpunch_replace_node = CONTENT_CHAIR_ENDL;
f->onpunch_replace_respects_borderstone = true;
f->setInventoryTextureNodeBox(i,"pine.png", "pine.png", "pine.png");
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_CRUSHABLE;
f->suffocation_per_second = 0;
i = CONTENT_CHAIR_ENDL;
f = &content_features(i);
f->description = gettext("Chair");
f->setAllTextures("pine.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->air_equivalent = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_CHAIR)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_CHAIR;
content_nodebox_chair_endl(f);
f->onpunch_replace_node = CONTENT_CHAIR_ENDR;
f->onpunch_replace_respects_borderstone = true;
f->setInventoryTextureNodeBox(i,"pine.png", "pine.png", "pine.png");
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_CRUSHABLE;
f->suffocation_per_second = 0;
i = CONTENT_CHAIR_ENDR;
f = &content_features(i);
f->description = gettext("Chair");
f->setAllTextures("pine.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->air_equivalent = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_CHAIR)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_CHAIR;
content_nodebox_chair_endr(f);
f->onpunch_replace_node = CONTENT_CHAIR_INNER;
f->onpunch_replace_respects_borderstone = true;
f->setInventoryTextureNodeBox(i,"pine.png", "pine.png", "pine.png");
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_CRUSHABLE;
f->suffocation_per_second = 0;
i = CONTENT_CHAIR_INNER;
f = &content_features(i);
f->description = gettext("Chair");
f->setAllTextures("pine.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->air_equivalent = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_CHAIR)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_CHAIR;
content_nodebox_chair_inner(f);
f->onpunch_replace_node = CONTENT_CHAIR_OUTER;
f->onpunch_replace_respects_borderstone = true;
f->setInventoryTextureNodeBox(i,"pine.png", "pine.png", "pine.png");
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_CRUSHABLE;
f->suffocation_per_second = 0;
i = CONTENT_CHAIR_OUTER;
f = &content_features(i);
f->description = gettext("Chair");
f->setAllTextures("pine.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->air_equivalent = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_CHAIR)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_CHAIR;
content_nodebox_chair_outer(f);
f->onpunch_replace_node = CONTENT_CHAIR;
f->onpunch_replace_respects_borderstone = true;
f->setInventoryTextureNodeBox(i,"pine.png", "pine.png", "pine.png");
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_CRUSHABLE;
f->suffocation_per_second = 0;
i = CONTENT_TABLE;
f = &content_features(i);
f->description = gettext("Table");
f->setAllTextures("pine.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->air_equivalent = true;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_TABLE;
content_nodebox_table(f);
f->setInventoryTextureNodeBox(i,"pine.png", "pine.png", "pine.png");
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_CRUSHABLE;
{
u16 r[9] = {
CONTENT_WOOD_PINE, CONTENT_WOOD_PINE, CONTENT_WOOD_PINE,
CONTENT_CRAFTITEM_PINE_PLANK, CONTENT_IGNORE, CONTENT_CRAFTITEM_PINE_PLANK,
CONTENT_IGNORE, CONTENT_IGNORE, CONTENT_IGNORE,
};
crafting::setRecipe(r,CONTENT_TABLE,1);
}
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_BED_HEAD;
f = &content_features(i);
f->description = gettext("Bed");
f->setTexture(0,"cotton.png^bed_head.png");
f->setTexture(1,"bed_bottom.png");
f->setTexture(2,"cotton.png^bed_side_head.png");
f->setTexture(3,"cotton.png^bed_side_head.png^[transformFX");
f->setTexture(4,"cotton.png^bed_end.png");
f->setTexture(5,"cotton.png^bed_end.png");
f->setInventoryTexture("bed_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->onact_also_affects = v3s16(0,0,1);
content_nodebox_bed_head(f);
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_SOLID;
crafting::setBedRecipe(CONTENT_COTTON,CONTENT_BED_HEAD);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
if (f->initial_metadata == NULL)
f->initial_metadata = new BedNodeMetadata();
i = CONTENT_BED_FOOT;
f = &content_features(i);
f->description = gettext("Bed");
f->setTexture(0,"cotton.png^bed_top.png");
f->setTexture(1,"bed_bottom.png");
f->setTexture(2,"cotton.png^bed_side.png^[transformFX");
f->setTexture(3,"cotton.png^bed_side.png");
f->setTexture(4,"cotton.png^bed_end.png");
f->setTexture(5,"cotton.png^bed_end.png");
f->setInventoryTexture("bed_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_BED_HEAD)+" 1";
f->onact_also_affects = v3s16(0,0,-1);
content_nodebox_bed_foot(f);
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_SOLID;
f->suffocation_per_second = 0;
i = CONTENT_BED_BLUE_HEAD;
f = &content_features(i);
f->description = gettext("Blue Bed");
f->setTexture(0,"cotton_blue.png^bed_head.png");
f->setTexture(1,"bed_bottom.png");
f->setTexture(2,"cotton_blue.png^bed_side_head.png");
f->setTexture(3,"cotton_blue.png^bed_side_head.png^[transformFX");
f->setTexture(4,"cotton_blue.png^bed_end.png");
f->setTexture(5,"cotton_blue.png^bed_end.png");
f->setInventoryTexture("bed_blue_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->onact_also_affects = v3s16(0,0,1);
content_nodebox_bed_head(f);
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_SOLID;
crafting::setBedRecipe(CONTENT_COTTON_BLUE,CONTENT_BED_BLUE_HEAD);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
if (f->initial_metadata == NULL)
f->initial_metadata = new BedNodeMetadata();
i = CONTENT_BED_BLUE_FOOT;
f = &content_features(i);
f->description = gettext("Blue Bed");
f->setTexture(0,"cotton_blue.png^bed_top.png");
f->setTexture(1,"bed_bottom.png");
f->setTexture(2,"cotton_blue.png^bed_side.png^[transformFX");
f->setTexture(3,"cotton_blue.png^bed_side.png");
f->setTexture(4,"cotton_blue.png^bed_end.png");
f->setTexture(5,"cotton_blue.png^bed_end.png");
f->setInventoryTexture("bed_blue_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_BED_BLUE_HEAD)+" 1";
f->onact_also_affects = v3s16(0,0,-1);
content_nodebox_bed_foot(f);
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_SOLID;
f->suffocation_per_second = 0;
i = CONTENT_BED_GREEN_HEAD;
f = &content_features(i);
f->description = gettext("Green Bed");
f->setTexture(0,"cotton_green.png^bed_head.png");
f->setTexture(1,"bed_bottom.png");
f->setTexture(2,"cotton_green.png^bed_side_head.png");
f->setTexture(3,"cotton_green.png^bed_side_head.png^[transformFX");
f->setTexture(4,"cotton_green.png^bed_end.png");
f->setTexture(5,"cotton_green.png^bed_end.png");
f->setInventoryTexture("bed_green_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->onact_also_affects = v3s16(0,0,1);
content_nodebox_bed_head(f);
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_SOLID;
crafting::setBedRecipe(CONTENT_COTTON_GREEN,CONTENT_BED_GREEN_HEAD);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
if (f->initial_metadata == NULL)
f->initial_metadata = new BedNodeMetadata();
i = CONTENT_BED_GREEN_FOOT;
f = &content_features(i);
f->description = gettext("Green Bed");
f->setTexture(0,"cotton_green.png^bed_top.png");
f->setTexture(1,"bed_bottom.png");
f->setTexture(2,"cotton_green.png^bed_side.png^[transformFX");
f->setTexture(3,"cotton_green.png^bed_side.png");
f->setTexture(4,"cotton_green.png^bed_end.png");
f->setTexture(5,"cotton_green.png^bed_end.png");
f->setInventoryTexture("bed_green_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_BED_GREEN_HEAD)+" 1";
f->onact_also_affects = v3s16(0,0,-1);
content_nodebox_bed_foot(f);
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_SOLID;
f->suffocation_per_second = 0;
i = CONTENT_BED_ORANGE_HEAD;
f = &content_features(i);
f->description = gettext("Orange Bed");
f->setTexture(0,"cotton_orange.png^bed_head.png");
f->setTexture(1,"bed_bottom.png");
f->setTexture(2,"cotton_orange.png^bed_side_head.png");
f->setTexture(3,"cotton_orange.png^bed_side_head.png^[transformFX");
f->setTexture(4,"cotton_orange.png^bed_end.png");
f->setTexture(5,"cotton_orange.png^bed_end.png");
f->setInventoryTexture("bed_orange_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->onact_also_affects = v3s16(0,0,1);
content_nodebox_bed_head(f);
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_SOLID;
crafting::setBedRecipe(CONTENT_COTTON_ORANGE,CONTENT_BED_ORANGE_HEAD);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
if (f->initial_metadata == NULL)
f->initial_metadata = new BedNodeMetadata();
i = CONTENT_BED_ORANGE_FOOT;
f = &content_features(i);
f->description = gettext("Orange Bed");
f->setTexture(0,"cotton_orange.png^bed_top.png");
f->setTexture(1,"cotton_orange.png^bed_bottom.png");
f->setTexture(2,"cotton_orange.png^bed_side.png^[transformFX");
f->setTexture(3,"cotton_orange.png^bed_side.png");
f->setTexture(4,"cotton_orange.png^bed_end.png");
f->setTexture(5,"cotton_orange.png^bed_end.png");
f->setInventoryTexture("bed_orange_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_BED_ORANGE_HEAD)+" 1";
f->onact_also_affects = v3s16(0,0,-1);
content_nodebox_bed_foot(f);
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_SOLID;
f->suffocation_per_second = 0;
i = CONTENT_BED_PURPLE_HEAD;
f = &content_features(i);
f->description = gettext("Purple Bed");
f->setTexture(0,"cotton_purple.png^bed_head.png");
f->setTexture(1,"bed_bottom.png");
f->setTexture(2,"cotton_purple.png^bed_side_head.png");
f->setTexture(3,"cotton_purple.png^bed_side_head.png^[transformFX");
f->setTexture(4,"cotton_purple.png^bed_end.png");
f->setTexture(5,"cotton_purple.png^bed_end.png");
f->setInventoryTexture("bed_purple_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->onact_also_affects = v3s16(0,0,1);
content_nodebox_bed_head(f);
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_SOLID;
crafting::setBedRecipe(CONTENT_COTTON_PURPLE,CONTENT_BED_PURPLE_HEAD);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
if (f->initial_metadata == NULL)
f->initial_metadata = new BedNodeMetadata();
i = CONTENT_BED_PURPLE_FOOT;
f = &content_features(i);
f->description = gettext("Purple Bed");
f->setTexture(0,"cotton_purple.png^bed_top.png");
f->setTexture(1,"bed_bottom.png");
f->setTexture(2,"cotton_purple.png^bed_side.png^[transformFX");
f->setTexture(3,"cotton_purple.png^bed_side.png");
f->setTexture(4,"cotton_purple.png^bed_end.png");
f->setTexture(5,"cotton_purple.png^bed_end.png");
f->setInventoryTexture("bed_purple_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_BED_PURPLE_HEAD)+" 1";
f->onact_also_affects = v3s16(0,0,-1);
content_nodebox_bed_foot(f);
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_SOLID;
f->suffocation_per_second = 0;
i = CONTENT_BED_RED_HEAD;
f = &content_features(i);
f->description = gettext("Red Bed");
f->setTexture(0,"cotton_red.png^bed_head.png");
f->setTexture(1,"bed_bottom.png");
f->setTexture(2,"cotton_red.png^bed_side_head.png");
f->setTexture(3,"cotton_red.png^bed_side_head.png^[transformFX");
f->setTexture(4,"cotton_red.png^bed_end.png");
f->setTexture(5,"cotton_red.png^bed_end.png");
f->setInventoryTexture("bed_red_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->onact_also_affects = v3s16(0,0,1);
content_nodebox_bed_head(f);
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_SOLID;
crafting::setBedRecipe(CONTENT_COTTON_RED,CONTENT_BED_RED_HEAD);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
if (f->initial_metadata == NULL)
f->initial_metadata = new BedNodeMetadata();
i = CONTENT_BED_RED_FOOT;
f = &content_features(i);
f->description = gettext("Red Bed");
f->setTexture(0,"cotton_red.png^bed_top.png");
f->setTexture(1,"bed_bottom.png");
f->setTexture(2,"cotton_red.png^bed_side.png^[transformFX");
f->setTexture(3,"cotton_red.png^bed_side.png");
f->setTexture(4,"cotton_red.png^bed_end.png");
f->setTexture(5,"cotton_red.png^bed_end.png");
f->setInventoryTexture("bed_red_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_BED_RED_HEAD)+" 1";
f->onact_also_affects = v3s16(0,0,-1);
content_nodebox_bed_foot(f);
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_SOLID;
f->suffocation_per_second = 0;
i = CONTENT_BED_YELLOW_HEAD;
f = &content_features(i);
f->description = gettext("Yellow Bed");
f->setTexture(0,"cotton_yellow.png^bed_head.png");
f->setTexture(1,"bed_bottom.png");
f->setTexture(2,"cotton_yellow.png^bed_side_head.png");
f->setTexture(3,"cotton_yellow.png^bed_side_head.png^[transformFX");
f->setTexture(4,"cotton_yellow.png^bed_end.png");
f->setTexture(5,"cotton_yellow.png^bed_end.png");
f->setInventoryTexture("bed_yellow_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->onact_also_affects = v3s16(0,0,1);
content_nodebox_bed_head(f);
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_SOLID;
crafting::setBedRecipe(CONTENT_COTTON_YELLOW,CONTENT_BED_YELLOW_HEAD);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
if (f->initial_metadata == NULL)
f->initial_metadata = new BedNodeMetadata();
i = CONTENT_BED_YELLOW_FOOT;
f = &content_features(i);
f->description = gettext("Yellow Bed");
f->setTexture(0,"cotton_yellow.png^bed_top.png");
f->setTexture(1,"bed_bottom.png");
f->setTexture(2,"cotton_yellow.png^bed_side.png^[transformFX");
f->setTexture(3,"cotton_yellow.png^bed_side.png");
f->setTexture(4,"cotton_yellow.png^bed_end.png");
f->setTexture(5,"cotton_yellow.png^bed_end.png");
f->setInventoryTexture("bed_yellow_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_BED_YELLOW_HEAD)+" 1";
f->onact_also_affects = v3s16(0,0,-1);
content_nodebox_bed_foot(f);
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_SOLID;
f->suffocation_per_second = 0;
i = CONTENT_BED_BLACK_HEAD;
f = &content_features(i);
f->description = gettext("Black Bed");
f->setTexture(0,"cotton_black.png^bed_head.png");
f->setTexture(1,"bed_bottom.png");
f->setTexture(2,"cotton_black.png^bed_side_head.png");
f->setTexture(3,"cotton_black.png^bed_side_head.png^[transformFX");
f->setTexture(4,"cotton_black.png^bed_end.png");
f->setTexture(5,"cotton_black.png^bed_end.png");
f->setInventoryTexture("bed_black_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->onact_also_affects = v3s16(0,0,1);
content_nodebox_bed_head(f);
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_SOLID;
crafting::setBedRecipe(CONTENT_COTTON_BLACK,CONTENT_BED_BLACK_HEAD);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
if (f->initial_metadata == NULL)
f->initial_metadata = new BedNodeMetadata();
i = CONTENT_BED_BLACK_FOOT;
f = &content_features(i);
f->description = gettext("Black Bed");
f->setTexture(0,"cotton_black.png^bed_top.png");
f->setTexture(1,"bed_bottom.png");
f->setTexture(2,"cotton_black.png^bed_side.png^[transformFX");
f->setTexture(3,"cotton_black.png^bed_side.png");
f->setTexture(4,"cotton_black.png^bed_end.png");
f->setTexture(5,"cotton_black.png^bed_end.png");
f->setInventoryTexture("bed_black_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_BED_BLACK_HEAD)+" 1";
f->onact_also_affects = v3s16(0,0,-1);
content_nodebox_bed_foot(f);
f->type = CMT_WOOD;
f->dig_time = 0.25;
f->pressure_type = CST_SOLID;
f->suffocation_per_second = 0;
i = CONTENT_BED_CAMP_HEAD;
f = &content_features(i);
f->description = gettext("Camp Bed");
f->setAllTextures("hay_bale.png");
f->setTexture(0,"bed_camp_top.png");
f->setInventoryTexture("bed_camp_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_CAMP_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->onact_also_affects = v3s16(0,0,1);
content_nodebox_slab(f);
f->type = CMT_PLANT;
f->dig_time = 0.25;
f->pressure_type = CST_CRUSHABLE;
{
content_t r[9] = {
CONTENT_CRAFTITEM_FUR, CONTENT_CRAFTITEM_FUR, CONTENT_IGNORE,
CONTENT_HAY, CONTENT_HAY, CONTENT_IGNORE,
CONTENT_IGNORE, CONTENT_IGNORE, CONTENT_IGNORE
};
crafting::setRecipe(r,CONTENT_BED_CAMP_HEAD,1);
}
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
if (f->initial_metadata == NULL)
f->initial_metadata = new CampBedNodeMetadata();
i = CONTENT_BED_CAMP_FOOT;
f = &content_features(i);
f->description = gettext("Camp Bed");
f->setAllTextures("hay_bale.png");
f->setTexture(0,"bed_camp_top.png");
f->setInventoryTexture("bed_camp_inv.png");
f->wield_nodebox = false;
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->rotate_tile_with_nodebox = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_CAMP_BED;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_BED_CAMP_HEAD)+" 1";
f->onact_also_affects = v3s16(0,0,-1);
content_nodebox_slab(f);
f->type = CMT_PLANT;
f->dig_time = 0.25;
f->pressure_type = CST_CRUSHABLE;
f->suffocation_per_second = 0;
// Paintings
i = CONTENT_PAINTING_WHITE;
f = &content_features(i);
f->description = gettext("Colorful Painting");
f->setAllTextures("painting.png");
f->setTexture(4, "painting.png");
f->setTexture(5, "painting_white.png");
f->setInventoryTexture("painting_white.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_WALLMOUNT;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->walkable = false;
f->air_equivalent = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_PAINTING;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_PAINTING_WHITE)+" 1";
f->type = CMT_WOOD;
content_nodebox_painting(f);
f->dig_time = 0.1;
f->pressure_type = CST_CRUSHABLE;
{
u16 r[9] = {
CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK,
CONTENT_CRAFTITEM_STRING, CONTENT_CRAFTITEM_DYE_WHITE, CONTENT_CRAFTITEM_STRING,
CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK
};
crafting::setRecipe(r,CONTENT_PAINTING_WHITE,1);
}
crafting::set1Any2Recipe(CONTENT_PAINTING_CANVAS,CONTENT_CRAFTITEM_DYE_WHITE,CONTENT_PAINTING_WHITE);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_PAINTING_RED;
f = &content_features(i);
f->description = gettext("Red Rose Painting");
f->setAllTextures("painting.png");
f->setTexture(4, "painting.png");
f->setTexture(5, "painting_red.png");
f->setInventoryTexture("painting_red.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_WALLMOUNT;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->walkable = false;
f->air_equivalent = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_PAINTING;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_PAINTING_RED)+" 1";
f->type = CMT_WOOD;
content_nodebox_painting(f);
f->dig_time = 0.1;
f->pressure_type = CST_CRUSHABLE;
{
u16 r[9] = {
CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK,
CONTENT_CRAFTITEM_STRING, CONTENT_CRAFTITEM_DYE_RED, CONTENT_CRAFTITEM_STRING,
CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK
};
crafting::setRecipe(r,CONTENT_PAINTING_RED,1);
}
crafting::set1Any2Recipe(CONTENT_PAINTING_CANVAS,CONTENT_CRAFTITEM_DYE_RED,CONTENT_PAINTING_RED);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_PAINTING_GREEN;
f = &content_features(i);
f->description = gettext("Field Painting");
f->setAllTextures("painting.png");
f->setTexture(4, "painting.png");
f->setTexture(5, "painting_green.png");
f->setInventoryTexture("painting_green.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_WALLMOUNT;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->walkable = false;
f->air_equivalent = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_PAINTING;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_PAINTING_GREEN)+" 1";
f->type = CMT_WOOD;
content_nodebox_painting(f);
f->dig_time = 0.1;
f->pressure_type = CST_CRUSHABLE;
{
u16 r[9] = {
CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK,
CONTENT_CRAFTITEM_STRING, CONTENT_CRAFTITEM_DYE_GREEN, CONTENT_CRAFTITEM_STRING,
CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK
};
crafting::setRecipe(r,CONTENT_PAINTING_GREEN,1);
}
crafting::set1Any2Recipe(CONTENT_PAINTING_CANVAS,CONTENT_CRAFTITEM_DYE_GREEN,CONTENT_PAINTING_GREEN);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_PAINTING_BLUE;
f = &content_features(i);
f->description = gettext("Blue Flower Painting");
f->setAllTextures("painting.png");
f->setTexture(4, "painting.png");
f->setTexture(5, "painting_blue.png");
f->setInventoryTexture("painting_blue.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_WALLMOUNT;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->walkable = false;
f->air_equivalent = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_PAINTING;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_PAINTING_BLUE)+" 1";
f->type = CMT_WOOD;
content_nodebox_painting(f);
f->dig_time = 0.1;
f->pressure_type = CST_CRUSHABLE;
{
u16 r[9] = {
CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK,
CONTENT_CRAFTITEM_STRING, CONTENT_CRAFTITEM_DYE_BLUE, CONTENT_CRAFTITEM_STRING,
CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK
};
crafting::setRecipe(r,CONTENT_PAINTING_BLUE,1);
}
crafting::set1Any2Recipe(CONTENT_PAINTING_CANVAS,CONTENT_CRAFTITEM_DYE_BLUE,CONTENT_PAINTING_BLUE);
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_PAINTING_CANVAS;
f = &content_features(i);
f->description = gettext("Painting Canvas");
f->setAllTextures("painting.png");
f->setTexture(4, "painting.png");
f->setTexture(5, "painting_canvas.png");
f->setInventoryTexture("painting_canvas.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_WALLMOUNT;
f->draw_type = CDT_NODEBOX;
f->light_propagates = true;
f->sunlight_propagates = true;
f->walkable = false;
f->air_equivalent = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_PAINTING;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_PAINTING_CANVAS)+" 1";
f->type = CMT_WOOD;
content_nodebox_painting(f);
f->dig_time = 0.1;
f->pressure_type = CST_CRUSHABLE;
crafting::set1Any2Recipe(CONTENT_PAINTING_WHITE,CONTENT_CRAFTITEM_STARCH,CONTENT_PAINTING_CANVAS);
crafting::set1Any2Recipe(CONTENT_PAINTING_RED,CONTENT_CRAFTITEM_STARCH,CONTENT_PAINTING_CANVAS);
crafting::set1Any2Recipe(CONTENT_PAINTING_GREEN,CONTENT_CRAFTITEM_STARCH,CONTENT_PAINTING_CANVAS);
crafting::set1Any2Recipe(CONTENT_PAINTING_BLUE,CONTENT_CRAFTITEM_STARCH,CONTENT_PAINTING_CANVAS);
{
u16 r[9] = {
CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK,
CONTENT_CRAFTITEM_STRING, CONTENT_IGNORE, CONTENT_CRAFTITEM_STRING,
CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK, CONTENT_CRAFTITEM_STICK
};
crafting::setRecipe(r,CONTENT_PAINTING_CANVAS,1);
}
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
i = CONTENT_CLOCK;
f = &content_features(i);
f->description = gettext("Clock");
f->setAllTextures("clock.png");
f->setTexture(5, "clock_front.png");
f->setAllMetaTextures("clock_numbers.png");
f->param_type = CPT_LIGHT;
f->param2_type = CPT_FACEDIR_SIMPLE;
f->draw_type = CDT_NODEBOX_META;
f->light_propagates = true;
f->sunlight_propagates = true;
f->walkable = false;
f->air_equivalent = true;
f->flammable = 1; // can be replaced by fire if the node under it is set on fire
f->fuel_time = BT_CLOCK;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->type = CMT_WOOD;
f->dig_time = 0.1;
content_nodebox_clock(f);
f->setInventoryTextureNodeBox(i,"clock.png","clock_front.png","clock.png");
f->pressure_type = CST_CRUSHABLE;
if (f->initial_metadata == NULL)
f->initial_metadata = new ClockNodeMetadata();
{
u16 r[9] = {
CONTENT_CRAFTITEM_PINE_PLANK, CONTENT_CRAFTITEM_PINE_PLANK, CONTENT_CRAFTITEM_PINE_PLANK,
CONTENT_CRAFTITEM_PINE_PLANK, CONTENT_CRAFTITEM_MITHRILDUST, CONTENT_CRAFTITEM_PINE_PLANK,
CONTENT_CRAFTITEM_PINE_PLANK, CONTENT_CRAFTITEM_PINE_PLANK, CONTENT_CRAFTITEM_PINE_PLANK
};
crafting::setRecipe(r,CONTENT_CLOCK,1);
}
content_list_add("craftguide",i,1,0);
content_list_add("creative",i,1,0);
f->suffocation_per_second = 0;
}