+ clay and associated items

This commit is contained in:
Nils Dagsson Moskopp 2011-06-01 04:57:46 +02:00
parent fb78854e9b
commit cffd40c5d6
10 changed files with 61 additions and 3 deletions

BIN
data/clay.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 B

BIN
data/clay_brick.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 B

BIN
data/lump_of_clay.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

@ -160,8 +160,12 @@ video::ITexture * CraftItem::getImage()
name = "lump_of_coal.png"; name = "lump_of_coal.png";
else if(m_subname == "lump_of_iron") else if(m_subname == "lump_of_iron")
name = "lump_of_iron.png"; name = "lump_of_iron.png";
else if(m_subname == "lump_of_clay")
name = "lump_of_clay.png";
else if(m_subname == "steel_ingot") else if(m_subname == "steel_ingot")
name = "steel_ingot.png"; name = "steel_ingot.png";
else if(m_subname == "clay_brick")
name = "clay_brick.png";
else if(m_subname == "rat") else if(m_subname == "rat")
name = "rat.png"; name = "rat.png";
else else
@ -199,7 +203,7 @@ u16 CraftItem::getDropCount()
bool CraftItem::isCookable() bool CraftItem::isCookable()
{ {
if(m_subname == "lump_of_iron") if(m_subname == "lump_of_iron" || m_subname == "lump_of_clay")
{ {
return true; return true;
} }
@ -212,6 +216,8 @@ InventoryItem *CraftItem::createCookResult()
{ {
return new CraftItem("steel_ingot", 1); return new CraftItem("steel_ingot", 1);
} }
else if(m_subname == "lump_of_clay")
return new CraftItem("clay_brick", 1);
return NULL; return NULL;
} }

@ -3141,6 +3141,13 @@ void makeChunk(ChunkMakeData *data)
if(have_sand == false) if(have_sand == false)
continue; continue;
// Determine whether to have clay in the sand here
double claynoise = noise2d_perlin(
0.5+(float)p2d.X/500, 0.5+(float)p2d.Y/500,
data->seed+4321, 8, 0.95);
bool have_clay = have_sand && (claynoise > 0.95);
// Find ground level // Find ground level
s16 surface_y = find_ground_level_clever(data->vmanip, p2d); s16 surface_y = find_ground_level_clever(data->vmanip, p2d);
@ -3157,7 +3164,10 @@ void makeChunk(ChunkMakeData *data)
MapNode *n = &data->vmanip.m_data[i]; MapNode *n = &data->vmanip.m_data[i];
if(n->d == CONTENT_MUD || n->d == CONTENT_GRASS) if(n->d == CONTENT_MUD || n->d == CONTENT_GRASS)
{ {
n->d = CONTENT_SAND; if(have_clay && (surface_y == WATER_LEVEL))
n->d = CONTENT_CLAY;
else
n->d = CONTENT_SAND;
} }
else else
{ {

@ -189,13 +189,21 @@ void init_mapnode()
f->is_ground_content = true; f->is_ground_content = true;
f->dug_item = std::string("MaterialItem ")+itos(CONTENT_SAND)+" 1"; f->dug_item = std::string("MaterialItem ")+itos(CONTENT_SAND)+" 1";
i = CONTENT_CLAY;
f = &g_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");
i = CONTENT_BRICK; i = CONTENT_BRICK;
f = &g_content_features[i]; f = &g_content_features[i];
f->setAllTextures("brick.png"); f->setAllTextures("brick.png");
f->setInventoryTextureCube("brick.png", "brick.png", "brick.png"); f->setInventoryTextureCube("brick.png", "brick.png", "brick.png");
f->param_type = CPT_MINERAL; f->param_type = CPT_MINERAL;
f->is_ground_content = true; f->is_ground_content = true;
f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; f->dug_item = std::string("CraftItem clay_brick 4");
i = CONTENT_TREE; i = CONTENT_TREE;
f = &g_content_features[i]; f = &g_content_features[i];

@ -104,6 +104,7 @@ void init_content_inventory_texture_paths();
#define CONTENT_SANDSTONE 22 #define CONTENT_SANDSTONE 22
#define CONTENT_CACTUS 23 #define CONTENT_CACTUS 23
#define CONTENT_BRICK 24 #define CONTENT_BRICK 24
#define CONTENT_CLAY 25
/* /*
Content feature list Content feature list

@ -71,6 +71,7 @@ void initializeMaterialProperties()
setDirtLikeDiggingProperties(CONTENT_GRASS, 1.0); setDirtLikeDiggingProperties(CONTENT_GRASS, 1.0);
setDirtLikeDiggingProperties(CONTENT_GRASS_FOOTSTEPS, 1.0); setDirtLikeDiggingProperties(CONTENT_GRASS_FOOTSTEPS, 1.0);
setDirtLikeDiggingProperties(CONTENT_SAND, 1.0); setDirtLikeDiggingProperties(CONTENT_SAND, 1.0);
setDirtLikeDiggingProperties(CONTENT_CLAY, 1.0);
setWoodLikeDiggingProperties(CONTENT_TREE, 1.0); setWoodLikeDiggingProperties(CONTENT_TREE, 1.0);
setWoodLikeDiggingProperties(CONTENT_LEAVES, 0.15); setWoodLikeDiggingProperties(CONTENT_LEAVES, 0.15);

@ -3987,6 +3987,36 @@ void Server::UpdateCrafting(u16 peer_id)
found = true; found = true;
} }
} }
// Clay
if(!found)
{
ItemSpec specs[9];
specs[3] = ItemSpec(ITEM_CRAFT, "lump_of_clay");
specs[4] = ItemSpec(ITEM_CRAFT, "lump_of_clay");
specs[6] = ItemSpec(ITEM_CRAFT, "lump_of_clay");
specs[7] = ItemSpec(ITEM_CRAFT, "lump_of_clay");
if(checkItemCombination(items, specs))
{
rlist->addItem(new MaterialItem(CONTENT_CLAY, 1));
found = true;
}
}
// Brick
if(!found)
{
ItemSpec specs[9];
specs[3] = ItemSpec(ITEM_CRAFT, "clay_brick");
specs[4] = ItemSpec(ITEM_CRAFT, "clay_brick");
specs[6] = ItemSpec(ITEM_CRAFT, "clay_brick");
specs[7] = ItemSpec(ITEM_CRAFT, "clay_brick");
if(checkItemCombination(items, specs))
{
rlist->addItem(new MaterialItem(CONTENT_BRICK, 1));
found = true;
}
}
} }
} // if creative_mode == false } // if creative_mode == false
@ -4076,6 +4106,7 @@ void setCreativeInventory(Player *player)
CONTENT_STONE, CONTENT_STONE,
CONTENT_SAND, CONTENT_SAND,
CONTENT_SANDSTONE, CONTENT_SANDSTONE,
CONTENT_CLAY,
CONTENT_BRICK, CONTENT_BRICK,
CONTENT_TREE, CONTENT_TREE,
CONTENT_LEAVES, CONTENT_LEAVES,

@ -507,6 +507,7 @@ void TextureSource::buildMainAtlas()
sourcelist.push_back("mud.png"); sourcelist.push_back("mud.png");
sourcelist.push_back("sand.png"); sourcelist.push_back("sand.png");
sourcelist.push_back("sandstone.png"); sourcelist.push_back("sandstone.png");
sourcelist.push_back("clay.png");
sourcelist.push_back("brick.png"); sourcelist.push_back("brick.png");
sourcelist.push_back("grass.png"); sourcelist.push_back("grass.png");
sourcelist.push_back("grass_footsteps.png"); sourcelist.push_back("grass_footsteps.png");