X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Fcontent_mapnode.cpp;h=6da5f45ad4e875e80d3ee43f65a50393c84455e4;hb=1309066be8bc9e7cd688b8f84f8cfa761bea9ebe;hp=3c135346785720c76c39dd20e3bdbb56af633179;hpb=8f42a8be0c760322207287e50b624bd3d388a2e1;p=dragonfireclient.git diff --git a/src/content_mapnode.cpp b/src/content_mapnode.cpp index 3c1353467..6da5f45ad 100644 --- a/src/content_mapnode.cpp +++ b/src/content_mapnode.cpp @@ -1,36 +1,83 @@ /* -Minetest-c55 -Copyright (C) 2010-2011 celeron55, Perttu Ahola +Minetest +Copyright (C) 2010-2013 celeron55, Perttu Ahola 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 2 of the License, or +it under the terms of the GNU Lesser General Public License as published by +the Free Software Foundation; either version 2.1 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. +GNU Lesser General Public License for more details. -You should have received a copy of the GNU General Public License along +You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -// For g_settings -#include "main.h" - #include "content_mapnode.h" + +#include "irrlichttypes_bloated.h" #include "mapnode.h" -#include "content_nodemeta.h" +#include "nodedef.h" +#include "nameidmapping.h" +#include "util/string.h" -// TODO: Get rid of these and set up some attributes like toughness, -// fluffyness, and a funciton to calculate time and durability loss -// (and sound? and whatever else) from them -void setStoneLikeDiggingProperties(DiggingPropertiesList &list, float toughness); -void setDirtLikeDiggingProperties(DiggingPropertiesList &list, float toughness); -void setWoodLikeDiggingProperties(DiggingPropertiesList &list, float toughness); +/* + Legacy node content type IDs + Ranges: + 0x000...0x07f (0...127): param2 is fully usable + 126 and 127 are reserved (CONTENT_AIR and CONTENT_IGNORE). + 0x800...0xfff (2048...4095): higher 4 bits of param2 are not usable +*/ +#define CONTENT_STONE 0 +#define CONTENT_WATER 2 +#define CONTENT_TORCH 3 +#define CONTENT_WATERSOURCE 9 +#define CONTENT_SIGN_WALL 14 +#define CONTENT_CHEST 15 +#define CONTENT_FURNACE 16 +#define CONTENT_LOCKABLE_CHEST 17 +#define CONTENT_FENCE 21 +#define CONTENT_RAIL 30 +#define CONTENT_LADDER 31 +#define CONTENT_LAVA 32 +#define CONTENT_LAVASOURCE 33 +#define CONTENT_GRASS 0x800 //1 +#define CONTENT_TREE 0x801 //4 +#define CONTENT_LEAVES 0x802 //5 +#define CONTENT_GRASS_FOOTSTEPS 0x803 //6 +#define CONTENT_MESE 0x804 //7 +#define CONTENT_MUD 0x805 //8 +#define CONTENT_CLOUD 0x806 //10 +#define CONTENT_COALSTONE 0x807 //11 +#define CONTENT_WOOD 0x808 //12 +#define CONTENT_SAND 0x809 //13 +#define CONTENT_COBBLE 0x80a //18 +#define CONTENT_STEEL 0x80b //19 +#define CONTENT_GLASS 0x80c //20 +#define CONTENT_MOSSYCOBBLE 0x80d //22 +#define CONTENT_GRAVEL 0x80e //23 +#define CONTENT_SANDSTONE 0x80f //24 +#define CONTENT_CACTUS 0x810 //25 +#define CONTENT_BRICK 0x811 //26 +#define CONTENT_CLAY 0x812 //27 +#define CONTENT_PAPYRUS 0x813 //28 +#define CONTENT_BOOKSHELF 0x814 //29 +#define CONTENT_JUNGLETREE 0x815 +#define CONTENT_JUNGLEGRASS 0x816 +#define CONTENT_NC 0x817 +#define CONTENT_NC_RB 0x818 +#define CONTENT_APPLE 0x819 +#define CONTENT_SAPLING 0x820 +/* + A conversion table for backwards compatibility. + Maps <=v19 content types to current ones. + Should never be touched. +*/ content_t trans_table_19[21][2] = { {CONTENT_GRASS, 1}, {CONTENT_TREE, 4}, @@ -55,34 +102,15 @@ content_t trans_table_19[21][2] = { {CONTENT_BOOKSHELF, 29}, }; -MapNode mapnode_translate_from_internal(MapNode n_from, u8 version) -{ - MapNode result = n_from; - if(version <= 19) - { - content_t c_from = n_from.getContent(); - for(u32 i=0; isetAllTextures("stone.png"); - f->setInventoryTextureCube("stone.png", "stone.png", "stone.png"); - f->param_type = CPT_MINERAL; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COBBLE)+" 1"; - setStoneLikeDiggingProperties(f->digging_properties, 1.0); - if(invisible_stone) - f->solidness = 0; // For debugging, hides regular stone - - i = CONTENT_GRASS; - f = &content_features(i); - f->setAllTextures("mud.png^grass_side.png"); - f->setTexture(0, "grass.png"); - f->setTexture(1, "mud.png"); - f->param_type = CPT_MINERAL; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_MUD)+" 1"; - setDirtLikeDiggingProperties(f->digging_properties, 1.0); - - i = CONTENT_GRASS_FOOTSTEPS; - f = &content_features(i); - f->setAllTextures("mud.png^grass_side.png"); - f->setTexture(0, "grass_footsteps.png"); - f->setTexture(1, "mud.png"); - f->param_type = CPT_MINERAL; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_MUD)+" 1"; - setDirtLikeDiggingProperties(f->digging_properties, 1.0); - - i = CONTENT_MUD; - f = &content_features(i); - f->setAllTextures("mud.png"); - f->setInventoryTextureCube("mud.png", "mud.png", "mud.png"); - f->param_type = CPT_MINERAL; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - setDirtLikeDiggingProperties(f->digging_properties, 1.0); - - i = CONTENT_SAND; - f = &content_features(i); - f->setAllTextures("sand.png"); - f->setInventoryTextureCube("sand.png", "sand.png", "sand.png"); - f->param_type = CPT_MINERAL; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - setDirtLikeDiggingProperties(f->digging_properties, 1.0); - - i = CONTENT_GRAVEL; - f = &content_features(i); - f->setAllTextures("gravel.png"); - f->setInventoryTextureCube("gravel.png", "gravel.png", "gravel.png"); - f->param_type = CPT_MINERAL; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - setDirtLikeDiggingProperties(f->digging_properties, 1.75); - - i = CONTENT_SANDSTONE; - f = &content_features(i); - f->setAllTextures("sandstone.png"); - f->setInventoryTextureCube("sandstone.png", "sandstone.png", "sandstone.png"); - f->param_type = CPT_MINERAL; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_SAND)+" 1"; - setDirtLikeDiggingProperties(f->digging_properties, 1.0); - - i = CONTENT_CLAY; - f = &content_features(i); - f->setAllTextures("clay.png"); - f->setInventoryTextureCube("clay.png", "clay.png", "clay.png"); - f->param_type = CPT_MINERAL; - f->is_ground_content = true; - f->dug_item = std::string("CraftItem lump_of_clay 4"); - setDirtLikeDiggingProperties(f->digging_properties, 1.0); - - i = CONTENT_BRICK; - f = &content_features(i); - f->setAllTextures("brick.png"); - f->setInventoryTextureCube("brick.png", "brick.png", "brick.png"); - f->param_type = CPT_MINERAL; - f->is_ground_content = true; - f->dug_item = std::string("CraftItem clay_brick 4"); - setStoneLikeDiggingProperties(f->digging_properties, 1.0); - - i = CONTENT_TREE; - f = &content_features(i); - f->setAllTextures("tree.png"); - f->setTexture(0, "tree_top.png"); - f->setTexture(1, "tree_top.png"); - f->param_type = CPT_MINERAL; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - setWoodLikeDiggingProperties(f->digging_properties, 1.0); - - i = CONTENT_JUNGLETREE; - f = &content_features(i); - f->setAllTextures("jungletree.png"); - f->setTexture(0, "jungletree_top.png"); - f->setTexture(1, "jungletree_top.png"); - f->param_type = CPT_MINERAL; - //f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - setWoodLikeDiggingProperties(f->digging_properties, 1.0); - - i = CONTENT_JUNGLEGRASS; - f = &content_features(i); - f->setInventoryTexture("junglegrass.png"); - f->light_propagates = true; - f->param_type = CPT_LIGHT; - //f->is_ground_content = true; - f->air_equivalent = false; // grass grows underneath - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - f->solidness = 0; // drawn separately, makes no faces - f->walkable = false; - setWoodLikeDiggingProperties(f->digging_properties, 0.10); - - i = CONTENT_LEAVES; - f = &content_features(i); - f->light_propagates = true; - //f->param_type = CPT_MINERAL; - f->param_type = CPT_LIGHT; - //f->is_ground_content = true; - if(new_style_leaves) - { - f->solidness = 0; // drawn separately, makes no faces - f->setInventoryTextureCube("leaves.png", "leaves.png", "leaves.png"); - } - else - { - f->setAllTextures("[noalpha:leaves.png"); - } - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - setWoodLikeDiggingProperties(f->digging_properties, 0.15); - - i = CONTENT_CACTUS; - f = &content_features(i); - f->setAllTextures("cactus_side.png"); - f->setTexture(0, "cactus_top.png"); - f->setTexture(1, "cactus_top.png"); - f->setInventoryTextureCube("cactus_top.png", "cactus_side.png", "cactus_side.png"); - f->param_type = CPT_MINERAL; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - setWoodLikeDiggingProperties(f->digging_properties, 0.75); - - i = CONTENT_PAPYRUS; - f = &content_features(i); - f->setInventoryTexture("papyrus.png"); - f->light_propagates = true; - f->param_type = CPT_LIGHT; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - f->solidness = 0; // drawn separately, makes no faces - f->walkable = false; - setWoodLikeDiggingProperties(f->digging_properties, 0.25); - - i = CONTENT_BOOKSHELF; - f = &content_features(i); - f->setAllTextures("bookshelf.png"); - f->setTexture(0, "wood.png"); - f->setTexture(1, "wood.png"); - // FIXME: setInventoryTextureCube() only cares for the first texture - f->setInventoryTextureCube("bookshelf.png", "bookshelf.png", "bookshelf.png"); - //f->setInventoryTextureCube("wood.png", "bookshelf.png", "bookshelf.png"); - f->param_type = CPT_MINERAL; - f->is_ground_content = true; - setWoodLikeDiggingProperties(f->digging_properties, 0.75); - - i = CONTENT_GLASS; - f = &content_features(i); - f->light_propagates = true; - f->sunlight_propagates = true; - f->param_type = CPT_LIGHT; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - f->solidness = 0; // drawn separately, makes no faces - f->setInventoryTextureCube("glass.png", "glass.png", "glass.png"); - setWoodLikeDiggingProperties(f->digging_properties, 0.15); - - i = CONTENT_FENCE; - f = &content_features(i); - f->light_propagates = true; - f->param_type = CPT_LIGHT; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - f->solidness = 0; // drawn separately, makes no faces - f->air_equivalent = true; // grass grows underneath - f->setInventoryTexture("item_fence.png"); - setWoodLikeDiggingProperties(f->digging_properties, 0.75); - - i = CONTENT_RAIL; - f = &content_features(i); - f->setInventoryTexture("rail.png"); - f->light_propagates = true; - f->param_type = CPT_LIGHT; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - f->solidness = 0; // drawn separately, makes no faces - f->air_equivalent = true; // grass grows underneath - f->walkable = false; - setDirtLikeDiggingProperties(f->digging_properties, 0.75); - - i = CONTENT_LADDER; - f = &content_features(i); - f->setInventoryTexture("ladder.png"); - f->light_propagates = true; - f->param_type = CPT_LIGHT; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; - f->wall_mounted = true; - f->solidness = 0; - f->air_equivalent = true; - f->walkable = false; - f->climbable = true; - setWoodLikeDiggingProperties(f->digging_properties, 0.5); - - // Deprecated - i = CONTENT_COALSTONE; - f = &content_features(i); - f->setAllTextures("stone.png^mineral_coal.png"); - f->is_ground_content = true; - setStoneLikeDiggingProperties(f->digging_properties, 1.5); - - i = CONTENT_WOOD; - f = &content_features(i); - f->setAllTextures("wood.png"); - f->setInventoryTextureCube("wood.png", "wood.png", "wood.png"); - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - setWoodLikeDiggingProperties(f->digging_properties, 0.75); - - i = CONTENT_MESE; - f = &content_features(i); - f->setAllTextures("mese.png"); - f->setInventoryTextureCube("mese.png", "mese.png", "mese.png"); - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - setStoneLikeDiggingProperties(f->digging_properties, 0.5); - - i = CONTENT_CLOUD; - f = &content_features(i); - f->setAllTextures("cloud.png"); - f->setInventoryTextureCube("cloud.png", "cloud.png", "cloud.png"); - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - - i = CONTENT_AIR; - f = &content_features(i); - f->param_type = CPT_LIGHT; - f->light_propagates = true; - f->sunlight_propagates = true; - f->solidness = 0; - f->walkable = false; - f->pointable = false; - f->diggable = false; - f->buildable_to = true; - f->air_equivalent = true; - - i = CONTENT_WATER; - f = &content_features(i); - f->setInventoryTextureCube("water.png", "water.png", "water.png"); - f->param_type = CPT_LIGHT; - f->light_propagates = true; - f->solidness = 0; // Drawn separately, makes no faces - f->walkable = false; - f->pointable = false; - f->diggable = false; - f->buildable_to = true; - f->liquid_type = LIQUID_FLOWING; - f->liquid_alternative_flowing = CONTENT_WATER; - f->liquid_alternative_source = CONTENT_WATERSOURCE; - f->vertex_alpha = 160; - if(f->special_material == NULL && g_texturesource) - { - // Flowing water material - f->special_material = new video::SMaterial; - f->special_material->setFlag(video::EMF_LIGHTING, false); - f->special_material->setFlag(video::EMF_BACK_FACE_CULLING, false); - f->special_material->setFlag(video::EMF_BILINEAR_FILTER, false); - f->special_material->setFlag(video::EMF_FOG_ENABLE, true); - f->special_material->MaterialType = video::EMT_TRANSPARENT_VERTEX_ALPHA; - AtlasPointer *pa_water1 = new AtlasPointer(g_texturesource->getTexture( - g_texturesource->getTextureId("water.png"))); - f->special_material->setTexture(0, pa_water1->atlas); - f->special_atlas = pa_water1; - } - - i = CONTENT_WATERSOURCE; - f = &content_features(i); - //f->setInventoryTexture("water.png"); - f->setInventoryTextureCube("water.png", "water.png", "water.png"); - if(new_style_water) - { - f->solidness = 0; // drawn separately, makes no faces - } - else // old style - { - f->solidness = 1; - - TileSpec t; - if(g_texturesource) - t.texture = g_texturesource->getTexture("water.png"); - - t.alpha = 160; - t.material_type = MATERIAL_ALPHA_VERTEX; - t.material_flags &= ~MATERIAL_FLAG_BACKFACE_CULLING; - f->setAllTiles(t); - } - f->param_type = CPT_LIGHT; - f->light_propagates = true; - f->walkable = false; - f->pointable = false; - f->diggable = false; - f->buildable_to = true; - f->liquid_type = LIQUID_SOURCE; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - f->liquid_alternative_flowing = CONTENT_WATER; - f->liquid_alternative_source = CONTENT_WATERSOURCE; - f->vertex_alpha = 160; - if(f->special_material == NULL && g_texturesource) - { - // Flowing water material - f->special_material = new video::SMaterial; - f->special_material->setFlag(video::EMF_LIGHTING, false); - f->special_material->setFlag(video::EMF_BACK_FACE_CULLING, false); - f->special_material->setFlag(video::EMF_BILINEAR_FILTER, false); - f->special_material->setFlag(video::EMF_FOG_ENABLE, true); - f->special_material->MaterialType = video::EMT_TRANSPARENT_VERTEX_ALPHA; - AtlasPointer *pa_water1 = new AtlasPointer(g_texturesource->getTexture( - g_texturesource->getTextureId("water.png"))); - f->special_material->setTexture(0, pa_water1->atlas); - f->special_atlas = pa_water1; - } - - i = CONTENT_LAVA; - f = &content_features(i); - f->setInventoryTextureCube("lava.png", "lava.png", "lava.png"); - f->param_type = CPT_LIGHT; - f->light_propagates = false; - f->light_source = LIGHT_MAX-1; - f->solidness = 0; // Drawn separately, makes no faces - f->walkable = false; - f->pointable = false; - f->diggable = false; - f->buildable_to = true; - f->liquid_type = LIQUID_FLOWING; - f->liquid_alternative_flowing = CONTENT_LAVA; - f->liquid_alternative_source = CONTENT_LAVASOURCE; - if(f->special_material == NULL && g_texturesource) - { - // Flowing lava material - f->special_material = new video::SMaterial; - f->special_material->setFlag(video::EMF_LIGHTING, false); - f->special_material->setFlag(video::EMF_BACK_FACE_CULLING, false); - f->special_material->setFlag(video::EMF_BILINEAR_FILTER, false); - f->special_material->setFlag(video::EMF_FOG_ENABLE, true); - f->special_material->MaterialType = video::EMT_TRANSPARENT_VERTEX_ALPHA; - AtlasPointer *pa_lava1 = new AtlasPointer( - g_texturesource->getTexture( - g_texturesource->getTextureId("lava.png"))); - f->special_material->setTexture(0, pa_lava1->atlas); - f->special_atlas = pa_lava1; - } - - i = CONTENT_LAVASOURCE; - f = &content_features(i); - f->setInventoryTextureCube("lava.png", "lava.png", "lava.png"); - if(new_style_water) - { - f->solidness = 0; // drawn separately, makes no faces - } - else // old style - { - f->solidness = 2; - - TileSpec t; - if(g_texturesource) - t.texture = g_texturesource->getTexture("lava.png"); - - //t.alpha = 255; - //t.material_type = MATERIAL_ALPHA_VERTEX; - //t.material_flags &= ~MATERIAL_FLAG_BACKFACE_CULLING; - f->setAllTiles(t); - } - f->param_type = CPT_LIGHT; - f->light_propagates = false; - f->light_source = LIGHT_MAX-1; - f->walkable = false; - f->pointable = false; - f->diggable = false; - f->buildable_to = true; - f->liquid_type = LIQUID_SOURCE; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - f->liquid_alternative_flowing = CONTENT_LAVA; - f->liquid_alternative_source = CONTENT_LAVASOURCE; - if(f->special_material == NULL && g_texturesource) - { - // Flowing lava material - f->special_material = new video::SMaterial; - f->special_material->setFlag(video::EMF_LIGHTING, false); - f->special_material->setFlag(video::EMF_BACK_FACE_CULLING, false); - f->special_material->setFlag(video::EMF_BILINEAR_FILTER, false); - f->special_material->setFlag(video::EMF_FOG_ENABLE, true); - f->special_material->MaterialType = video::EMT_TRANSPARENT_VERTEX_ALPHA; - AtlasPointer *pa_lava1 = new AtlasPointer( - g_texturesource->getTexture( - g_texturesource->getTextureId("lava.png"))); - f->special_material->setTexture(0, pa_lava1->atlas); - f->special_atlas = pa_lava1; - } - - i = CONTENT_TORCH; - f = &content_features(i); - f->setInventoryTexture("torch_on_floor.png"); - f->param_type = CPT_LIGHT; - f->light_propagates = true; - f->sunlight_propagates = true; - f->solidness = 0; // drawn separately, makes no faces - f->walkable = false; - f->wall_mounted = true; - f->air_equivalent = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - f->light_source = LIGHT_MAX-1; - f->digging_properties.set("", DiggingProperties(true, 0.0, 0)); - - i = CONTENT_SIGN_WALL; - f = &content_features(i); - f->setInventoryTexture("sign_wall.png"); - f->param_type = CPT_LIGHT; - f->light_propagates = true; - f->sunlight_propagates = true; - f->solidness = 0; // drawn separately, makes no faces - f->walkable = false; - f->wall_mounted = true; - f->air_equivalent = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - if(f->initial_metadata == NULL) - f->initial_metadata = new SignNodeMetadata("Some sign"); - f->digging_properties.set("", DiggingProperties(true, 0.5, 0)); - - i = CONTENT_CHEST; - f = &content_features(i); - f->param_type = CPT_FACEDIR_SIMPLE; - f->setAllTextures("chest_side.png"); - f->setTexture(0, "chest_top.png"); - f->setTexture(1, "chest_top.png"); - f->setTexture(5, "chest_front.png"); // Z- - f->setInventoryTexture("chest_top.png"); - //f->setInventoryTextureCube("chest_top.png", "chest_side.png", "chest_side.png"); - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - if(f->initial_metadata == NULL) - f->initial_metadata = new ChestNodeMetadata(); - setWoodLikeDiggingProperties(f->digging_properties, 1.0); - - i = CONTENT_FURNACE; - f = &content_features(i); - f->param_type = CPT_FACEDIR_SIMPLE; - f->setAllTextures("furnace_side.png"); - f->setTexture(5, "furnace_front.png"); // Z- - f->setInventoryTexture("furnace_front.png"); - //f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_COBBLE)+" 6"; - if(f->initial_metadata == NULL) - f->initial_metadata = new FurnaceNodeMetadata(); - setStoneLikeDiggingProperties(f->digging_properties, 3.0); - - i = CONTENT_COBBLE; - f = &content_features(i); - f->setAllTextures("cobble.png"); - f->setInventoryTextureCube("cobble.png", "cobble.png", "cobble.png"); - f->param_type = CPT_NONE; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - setStoneLikeDiggingProperties(f->digging_properties, 0.9); - - i = CONTENT_MOSSYCOBBLE; - f = &content_features(i); - f->setAllTextures("mossycobble.png"); - f->setInventoryTextureCube("mossycobble.png", "mossycobble.png", "mossycobble.png"); - f->param_type = CPT_NONE; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - setStoneLikeDiggingProperties(f->digging_properties, 0.8); - - i = CONTENT_STEEL; - f = &content_features(i); - f->setAllTextures("steel_block.png"); - f->setInventoryTextureCube("steel_block.png", "steel_block.png", - "steel_block.png"); - f->param_type = CPT_NONE; - f->is_ground_content = true; - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - setStoneLikeDiggingProperties(f->digging_properties, 5.0); - - i = CONTENT_NC; - f = &content_features(i); - f->param_type = CPT_FACEDIR_SIMPLE; - f->setAllTextures("nc_side.png"); - f->setTexture(5, "nc_front.png"); // Z- - f->setTexture(4, "nc_back.png"); // Z+ - f->setInventoryTexture("nc_front.png"); - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - setStoneLikeDiggingProperties(f->digging_properties, 3.0); - - i = CONTENT_NC_RB; - f = &content_features(i); - f->setAllTextures("nc_rb.png"); - f->setInventoryTexture("nc_rb.png"); - f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; - setStoneLikeDiggingProperties(f->digging_properties, 3.0); - - // NOTE: Remember to add frequently used stuff to the texture atlas in tile.cpp - - - /* - Add MesePick to everything - */ - for(u16 i=0; i<=MAX_CONTENT; i++) - { - content_features(i).digging_properties.set("MesePick", - DiggingProperties(true, 0.0, 65535./1337)); - } - + nimap->set(0, "default:stone"); + nimap->set(2, "default:water_flowing"); + nimap->set(3, "default:torch"); + nimap->set(9, "default:water_source"); + nimap->set(14, "default:sign_wall"); + nimap->set(15, "default:chest"); + nimap->set(16, "default:furnace"); + nimap->set(17, "default:chest_locked"); + nimap->set(21, "default:fence_wood"); + nimap->set(30, "default:rail"); + nimap->set(31, "default:ladder"); + nimap->set(32, "default:lava_flowing"); + nimap->set(33, "default:lava_source"); + nimap->set(0x800, "default:dirt_with_grass"); + nimap->set(0x801, "default:tree"); + nimap->set(0x802, "default:leaves"); + nimap->set(0x803, "default:dirt_with_grass_footsteps"); + nimap->set(0x804, "default:mese"); + nimap->set(0x805, "default:dirt"); + nimap->set(0x806, "default:cloud"); + nimap->set(0x807, "default:coalstone"); + nimap->set(0x808, "default:wood"); + nimap->set(0x809, "default:sand"); + nimap->set(0x80a, "default:cobble"); + nimap->set(0x80b, "default:steelblock"); + nimap->set(0x80c, "default:glass"); + nimap->set(0x80d, "default:mossycobble"); + nimap->set(0x80e, "default:gravel"); + nimap->set(0x80f, "default:sandstone"); + nimap->set(0x810, "default:cactus"); + nimap->set(0x811, "default:brick"); + nimap->set(0x812, "default:clay"); + nimap->set(0x813, "default:papyrus"); + nimap->set(0x814, "default:bookshelf"); + nimap->set(0x815, "default:jungletree"); + nimap->set(0x816, "default:junglegrass"); + nimap->set(0x817, "default:nyancat"); + nimap->set(0x818, "default:nyancat_rainbow"); + nimap->set(0x819, "default:apple"); + nimap->set(0x820, "default:sapling"); + // Static types + nimap->set(CONTENT_IGNORE, "ignore"); + nimap->set(CONTENT_AIR, "air"); } -void setStoneLikeDiggingProperties(DiggingPropertiesList &list, float toughness) -{ - list.set("", - DiggingProperties(true, 15.0*toughness, 0)); - - list.set("WPick", - DiggingProperties(true, 1.3*toughness, 65535./30.*toughness)); - list.set("STPick", - DiggingProperties(true, 0.75*toughness, 65535./100.*toughness)); - list.set("SteelPick", - DiggingProperties(true, 0.50*toughness, 65535./333.*toughness)); - - /*list.set("MesePick", - DiggingProperties(true, 0.0*toughness, 65535./20.*toughness));*/ -} - -void setDirtLikeDiggingProperties(DiggingPropertiesList &list, float toughness) -{ - list.set("", - DiggingProperties(true, 0.75*toughness, 0)); - - list.set("WShovel", - DiggingProperties(true, 0.4*toughness, 65535./50.*toughness)); - list.set("STShovel", - DiggingProperties(true, 0.2*toughness, 65535./150.*toughness)); - list.set("SteelShovel", - DiggingProperties(true, 0.15*toughness, 65535./400.*toughness)); -} - -void setWoodLikeDiggingProperties(DiggingPropertiesList &list, float toughness) -{ - list.set("", - DiggingProperties(true, 3.0*toughness, 0)); - - list.set("WAxe", - DiggingProperties(true, 1.5*toughness, 65535./30.*toughness)); - list.set("STAxe", - DiggingProperties(true, 0.75*toughness, 65535./100.*toughness)); - list.set("SteelAxe", - DiggingProperties(true, 0.5*toughness, 65535./333.*toughness)); -} - -