Merge branch 'next' of gitlab.com:voxelands/voxelands into next

This commit is contained in:
Menche 2015-12-22 11:17:40 -08:00
commit 24e4b61d16
27 changed files with 12779 additions and 8112 deletions

BIN
data/textures/marble.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 657 B

After

Width:  |  Height:  |  Size: 708 B

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -206,14 +206,27 @@ void content_mapnode_init(bool repeat)
f->draw_type = CDT_CUBELIKE;
f->is_ground_content = true;
f->often_contains_mineral = true;
f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_LIMESTONE)+" 1";
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->cook_result = std::string("MaterialItem2 ")+itos(CONTENT_MARBLE)+" 1";
f->type = CMT_STONE;
f->hardness = 0.6;
if (invisible_stone)
f->solidness = 0; // For debugging, hides regular stone
lists::add("creative",i);
lists::add("cooking",i);
lists::add("decrafting",i);
i = CONTENT_MARBLE;
f = &content_features(i);
f->description = wgettext("Marble");
f->setAllTextures("marble.png");
f->setInventoryTextureCube("marble.png", "marble.png", "marble.png");
f->draw_type = CDT_CUBELIKE;
f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1";
f->type = CMT_STONE;
f->hardness = 1.0;
lists::add("creative",i);
i = CONTENT_ROCK;
f = &content_features(i);
f->description = wgettext("Rock");

View File

@ -57,7 +57,8 @@ MapNode mapnode_translate_to_internal(MapNode n_from, u8 version);
#define CONTENT_TABLE 0x008
#define CONTENT_WATERSOURCE 0x009
#define CONTENT_FORGE_FIRE 0x00A
// FREE 0x00B-0x00C
#define CONTENT_MARBLE 0x00B
// FREE 0x00C
#define CONTENT_SAFE 0x00D
#define CONTENT_SIGN_WALL 0x00E
#define CONTENT_CHEST 0x00F
@ -95,7 +96,12 @@ MapNode mapnode_translate_to_internal(MapNode n_from, u8 version);
#define CONTENT_LIMESTONE_WALL 0x02C
// FREE 0x02D-0x07C
// 0x7D-0x7F reserved values, air, ignore, etc
// FREE 0x80-0x7F6
#define CONTENT_CHAIR_CENTRE 0x080
#define CONTENT_CHAIR_ENDL 0x081
#define CONTENT_CHAIR_ENDR 0x082
#define CONTENT_CHAIR_INNER 0x083
#define CONTENT_CHAIR_OUTER 0x084
// FREE 0x085-0x7F6
#define CONTENT_LEAVES_SNOWY 0x7F7
#define CONTENT_TRIMMED_LEAVES_AUTUMN 0x7F8
#define CONTENT_TRIMMED_LEAVES_WINTER 0x7F9

View File

@ -160,6 +160,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -179,6 +180,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -198,6 +200,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -217,6 +220,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -236,6 +240,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -255,6 +260,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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);
@ -284,6 +290,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -303,6 +310,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -322,6 +330,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -341,6 +350,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -360,6 +370,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -379,6 +390,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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);
@ -402,6 +414,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -421,6 +434,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -440,6 +454,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -459,6 +474,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -478,6 +494,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -497,6 +514,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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);
@ -520,6 +538,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -539,6 +558,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -558,6 +578,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -577,6 +598,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -596,6 +618,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -615,6 +638,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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);
@ -638,6 +662,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -657,6 +682,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -676,6 +702,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -695,6 +722,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -714,6 +742,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -733,6 +762,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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);
@ -756,6 +786,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -775,6 +806,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -794,6 +826,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -813,6 +846,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -832,6 +866,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -851,6 +886,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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);
@ -874,6 +910,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -893,6 +930,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -912,6 +950,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -931,6 +970,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -950,6 +990,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -969,6 +1010,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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);
@ -992,6 +1034,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -1011,6 +1054,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -1030,6 +1074,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -1049,6 +1094,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -1068,6 +1114,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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;
@ -1087,6 +1134,7 @@ void content_mapnode_furniture(bool repeat)
f->type = CMT_DIRT;
f->hardness = 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);
@ -1110,24 +1158,9 @@ void content_mapnode_furniture(bool repeat)
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 = 30/32;
f->setNodeBox(NodeBox(
v3s16(0,1,0),v3f(0,0,0),-0.3*BS, -0.5*BS, 0.20*BS, -0.2*BS, 0.5*BS, 0.30*BS
));
f->addNodeBox(NodeBox(
v3s16(0,1,0),v3f(0,0,0),0.2*BS, -0.5*BS, 0.20*BS, 0.3*BS, 0.5*BS, 0.30*BS
));
f->addNodeBox(NodeBox(
v3s16(0,1,0),v3f(0,0,0),-0.3*BS, -0.5*BS, -0.30*BS, -0.2*BS, -0.1*BS, -0.20*BS
));
f->addNodeBox(NodeBox(
v3s16(0,1,0),v3f(0,0,0),0.2*BS, -0.5*BS, -0.30*BS, 0.3*BS, -0.1*BS, -0.20*BS
));
f->addNodeBox(NodeBox(
v3s16(0,1,0),v3f(0,0,0),-0.3*BS, -0.1*BS, -0.30*BS, 0.3*BS, 0.0*BS, 0.20*BS
));
f->addNodeBox(NodeBox(
v3s16(0,1,0),v3f(0,0,0),-0.2*BS, 0.1*BS, 0.25*BS, 0.2*BS, 0.4*BS, 0.26*BS
));
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->hardness = 0.25;
@ -1144,6 +1177,126 @@ void content_mapnode_furniture(bool repeat)
lists::add("creative",i);
f->suffocation_per_second = 0;
i = CONTENT_CHAIR_CENTRE;
f = &content_features(i);
f->description = wgettext("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->solidness = 0; // drawn separately, makes no faces
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 = 30/32;
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->hardness = 0.25;
f->pressure_type = CST_CRUSHABLE;
f->suffocation_per_second = 0;
i = CONTENT_CHAIR_ENDL;
f = &content_features(i);
f->description = wgettext("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->solidness = 0; // drawn separately, makes no faces
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 = 30/32;
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->hardness = 0.25;
f->pressure_type = CST_CRUSHABLE;
f->suffocation_per_second = 0;
i = CONTENT_CHAIR_ENDR;
f = &content_features(i);
f->description = wgettext("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->solidness = 0; // drawn separately, makes no faces
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 = 30/32;
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->hardness = 0.25;
f->pressure_type = CST_CRUSHABLE;
f->suffocation_per_second = 0;
i = CONTENT_CHAIR_INNER;
f = &content_features(i);
f->description = wgettext("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->solidness = 0; // drawn separately, makes no faces
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 = 30/32;
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->hardness = 0.25;
f->pressure_type = CST_CRUSHABLE;
f->suffocation_per_second = 0;
i = CONTENT_CHAIR_OUTER;
f = &content_features(i);
f->description = wgettext("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->solidness = 0; // drawn separately, makes no faces
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 = 30/32;
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->hardness = 0.25;
f->pressure_type = CST_CRUSHABLE;
f->suffocation_per_second = 0;
i = CONTENT_TABLE;
f = &content_features(i);
f->description = wgettext("Table");
@ -1158,33 +1311,7 @@ void content_mapnode_furniture(bool repeat)
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 = 30/16;
f->setNodeBox(core::aabbox3d<f32>(
-0.4*BS, -0.5*BS, -0.4*BS, -0.3*BS, 0.4*BS, -0.3*BS
));
f->addNodeBox(core::aabbox3d<f32>(
0.3*BS, -0.5*BS, -0.4*BS, 0.4*BS, 0.4*BS, -0.3*BS
));
f->addNodeBox(core::aabbox3d<f32>(
-0.4*BS, -0.5*BS, 0.3*BS, -0.3*BS, 0.4*BS, 0.4*BS
));
f->addNodeBox(core::aabbox3d<f32>(
0.3*BS, -0.5*BS, 0.3*BS, 0.4*BS, 0.4*BS, 0.4*BS
));
f->addNodeBox(core::aabbox3d<f32>(
-0.5*BS, 0.4*BS, -0.5*BS, 0.5*BS, 0.5*BS, 0.5*BS
));
f->addNodeBox(core::aabbox3d<f32>(
-0.4*BS, -0.2*BS, -0.3*BS, -0.3*BS, -0.1*BS, 0.3*BS
));
f->addNodeBox(core::aabbox3d<f32>(
0.3*BS, -0.2*BS, -0.4*BS, 0.4*BS, -0.1*BS, 0.3*BS
));
f->addNodeBox(core::aabbox3d<f32>(
-0.3*BS, -0.2*BS, -0.4*BS, 0.4*BS, -0.1*BS, -0.3*BS
));
f->addNodeBox(core::aabbox3d<f32>(
-0.3*BS, -0.2*BS, 0.3*BS, 0.3*BS, -0.1*BS, 0.4*BS
));
content_nodebox_table(f);
f->setInventoryTextureNodeBox(i,"pine.png", "pine.png", "pine.png");
f->type = CMT_WOOD;
f->hardness = 0.25;

View File

@ -1623,3 +1623,220 @@ void content_nodebox_rock(ContentFeatures *f)
-0.0625*BS,-0.5*BS,-0.25*BS,0.1875*BS,-0.375*BS,-0.125*BS
));
}
void content_nodebox_chair(ContentFeatures *f)
{
f->setNodeBox(NodeBox(
-0.3125*BS,-0.5*BS,0.21875*BS,-0.21875*BS,0.5*BS,0.3125*BS
));
f->addNodeBox(NodeBox(
0.21875*BS,-0.5*BS,0.21875*BS,0.3125*BS,0.5*BS,0.3125*BS
));
f->addNodeBox(NodeBox(
-0.3125*BS,-0.5*BS,-0.3125*BS,-0.21875*BS,-0.03125*BS,-0.21875*BS
));
f->addNodeBox(NodeBox(
0.21875*BS,-0.5*BS,-0.3125*BS,0.3125*BS,-0.03125*BS,-0.21875*BS
));
f->addNodeBox(NodeBox(
-0.3125*BS,-0.03125*BS,-0.3125*BS,0.3125*BS,0.03125*BS,0.21875*BS
));
f->addNodeBox(NodeBox(
-0.21875*BS,0.1875*BS,0.25*BS,0.21875*BS,0.4375*BS,0.28125*BS
));
f->addNodeBox(NodeBox(
-0.28125*BS,-0.40625*BS,-0.21875*BS,-0.25*BS,-0.375*BS,0.21875*BS
));
f->addNodeBox(NodeBox(
0.25*BS,-0.40625*BS,-0.21875*BS,0.28125*BS,-0.375*BS,0.21875*BS
));
f->addNodeBox(NodeBox(
-0.21875*BS,-0.40625*BS,0.25*BS,0.21875*BS,-0.375*BS,0.28125*BS
));
f->addNodeBox(NodeBox(
-0.21875*BS,-0.40625*BS,-0.28125*BS,0.21875*BS,-0.375*BS,-0.25*BS
));
}
void content_nodebox_chair_centre(ContentFeatures *f)
{
f->setNodeBox(NodeBox(
-0.03125*BS,-0.5*BS,0.21875*BS,0.0625*BS,0.5*BS,0.3125*BS
));
f->addNodeBox(NodeBox(
-0.03125*BS,-0.5*BS,-0.3125*BS,0.0625*BS,-0.03125*BS,-0.21875*BS
));
f->addNodeBox(NodeBox(
-0.5*BS,-0.03125*BS,-0.3125*BS,0.5*BS,0.03125*BS,0.21875*BS
));
f->addNodeBox(NodeBox(
-0.5*BS,0.1875*BS,0.25*BS,0.5*BS,0.4375*BS,0.28125*BS
));
f->addNodeBox(NodeBox(
0.*BS,-0.40625*BS,-0.21875*BS,0.03125*BS,-0.375*BS,0.21875*BS
));
}
void content_nodebox_chair_endl(ContentFeatures *f)
{
f->setNodeBox(NodeBox(
0.21875*BS,-0.5*BS,0.21875*BS,0.3125*BS,0.5*BS,0.3125*BS
));
f->addNodeBox(NodeBox(
0.21875*BS,-0.5*BS,-0.3125*BS,0.3125*BS,-0.03125*BS,-0.21875*BS
));
f->addNodeBox(NodeBox(
-0.5*BS,-0.03125*BS,-0.3125*BS,0.3125*BS,0.03125*BS,0.21875*BS
));
f->addNodeBox(NodeBox(
-0.5*BS,0.1875*BS,0.25*BS,0.21875*BS,0.4375*BS,0.28125*BS
));
f->addNodeBox(NodeBox(
0.25*BS,-0.40625*BS,-0.21875*BS,0.28125*BS,-0.375*BS,0.21875*BS
));
}
void content_nodebox_chair_endr(ContentFeatures *f)
{
f->setNodeBox(NodeBox(
-0.3125*BS,-0.5*BS,0.21875*BS,-0.21875*BS,0.5*BS,0.3125*BS
));
f->addNodeBox(NodeBox(
-0.3125*BS,-0.5*BS,-0.3125*BS,-0.21875*BS,-0.03125*BS,-0.21875*BS
));
f->addNodeBox(NodeBox(
-0.3125*BS,-0.03125*BS,-0.3125*BS,0.5*BS,0.03125*BS,0.21875*BS
));
f->addNodeBox(NodeBox(
-0.21875*BS,0.1875*BS,0.25*BS,0.5*BS,0.4375*BS,0.28125*BS
));
f->addNodeBox(NodeBox(
-0.28125*BS,-0.40625*BS,-0.21875*BS,-0.25*BS,-0.375*BS,0.21875*BS
));
}
void content_nodebox_chair_inner(ContentFeatures *f)
{
f->setNodeBox(NodeBox(
-0.3125*BS,-0.5*BS,0.21875*BS,-0.21875*BS,0.5*BS,0.3125*BS
));
f->addNodeBox(NodeBox(
0.21875*BS,-0.5*BS,0.21875*BS,0.3125*BS,0.5*BS,0.3125*BS
));
f->addNodeBox(NodeBox(
-0.3125*BS,-0.5*BS,-0.3125*BS,-0.21875*BS,-0.03125*BS,-0.21875*BS
));
f->addNodeBox(NodeBox(
0.21875*BS,-0.5*BS,-0.3125*BS,0.3125*BS,0.5*BS,-0.21875*BS
));
f->addNodeBox(NodeBox(
-0.5*BS,-0.03125*BS,-0.3125*BS,0.21875*BS,0.03125*BS,0.21875*BS
));
f->addNodeBox(NodeBox(
-0.21875*BS,0.1875*BS,0.25*BS,0.21875*BS,0.4375*BS,0.28125*BS
));
f->addNodeBox(NodeBox(
-0.28125*BS,-0.40625*BS,-0.21875*BS,-0.25*BS,-0.375*BS,0.21875*BS
));
f->addNodeBox(NodeBox(
0.25*BS,-0.40625*BS,-0.21875*BS,0.28125*BS,-0.375*BS,0.21875*BS
));
f->addNodeBox(NodeBox(
-0.21875*BS,-0.40625*BS,0.25*BS,0.21875*BS,-0.375*BS,0.28125*BS
));
f->addNodeBox(NodeBox(
-0.21875*BS,-0.40625*BS,-0.28125*BS,0.21875*BS,-0.375*BS,-0.25*BS
));
f->addNodeBox(NodeBox(
-0.3125*BS,-0.03125*BS,-0.5*BS,0.21875*BS,0.03125*BS,-0.3125*BS
));
f->addNodeBox(NodeBox(
0.25*BS,0.1875*BS,-0.21875*BS,0.28125*BS,0.4375*BS,0.21875*BS
));
f->addNodeBox(NodeBox(
0.25*BS,0.1875*BS,-0.5*BS,0.28125*BS,0.4375*BS,-0.3125*BS
));
f->addNodeBox(NodeBox(
-0.5*BS,0.1875*BS,0.25*BS,-0.3125*BS,0.4375*BS,0.28125*BS
));
}
void content_nodebox_chair_outer(ContentFeatures *f)
{
f->setNodeBox(NodeBox(
-0.3125*BS,-0.5*BS,0.21875*BS,-0.21875*BS,-0.03125*BS,0.3125*BS
));
f->addNodeBox(NodeBox(
0.21875*BS,-0.5*BS,0.21875*BS,0.3125*BS,0.5*BS,0.3125*BS
));
f->addNodeBox(NodeBox(
-0.3125*BS,-0.5*BS,-0.3125*BS,-0.21875*BS,-0.03125*BS,-0.21875*BS
));
f->addNodeBox(NodeBox(
0.21875*BS,-0.5*BS,-0.3125*BS,0.3125*BS,-0.03125*BS,-0.21875*BS
));
f->addNodeBox(NodeBox(
-0.3125*BS,-0.03125*BS,-0.3125*BS,0.5*BS,0.03125*BS,0.21875*BS
));
f->addNodeBox(NodeBox(
0.3125*BS,0.1875*BS,0.25*BS,0.5*BS,0.4375*BS,0.28125*BS
));
f->addNodeBox(NodeBox(
-0.28125*BS,-0.40625*BS,-0.21875*BS,-0.25*BS,-0.375*BS,0.21875*BS
));
f->addNodeBox(NodeBox(
0.25*BS,-0.40625*BS,-0.21875*BS,0.28125*BS,-0.375*BS,0.21875*BS
));
f->addNodeBox(NodeBox(
-0.21875*BS,-0.40625*BS,0.25*BS,0.21875*BS,-0.375*BS,0.28125*BS
));
f->addNodeBox(NodeBox(
-0.21875*BS,-0.40625*BS,-0.28125*BS,0.21875*BS,-0.375*BS,-0.25*BS
));
f->addNodeBox(NodeBox(
-0.3125*BS,-0.03125*BS,0.21875*BS,0.21875*BS,0.03125*BS,0.5*BS
));
f->addNodeBox(NodeBox(
0.25*BS,0.1875*BS,0.3125*BS,0.28125*BS,0.4375*BS,0.5*BS
));
}
void content_nodebox_table(ContentFeatures *f)
{
f->setNodeBox(NodeBox(
-0.5*BS,0.4375*BS,-0.5*BS,0.5*BS,0.5*BS,0.5*BS
));
f->addNodeBox(NodeBox(
-0.34375*BS,-0.5*BS,-0.34375*BS,-0.25*BS,0.4375*BS,-0.25*BS
));
f->addNodeBox(NodeBox(
-0.34375*BS,-0.5*BS,0.25*BS,-0.25*BS,0.4375*BS,0.34375*BS
));
f->addNodeBox(NodeBox(
0.25*BS,-0.5*BS,0.25*BS,0.34375*BS,0.4375*BS,0.34375*BS
));
f->addNodeBox(NodeBox(
0.25*BS,-0.5*BS,-0.34375*BS,0.34375*BS,0.4375*BS,-0.25*BS
));
f->addNodeBox(NodeBox(
-0.3125*BS,0.34375*BS,-0.25*BS,-0.28125*BS,0.4375*BS,0.25*BS
));
f->addNodeBox(NodeBox(
0.28125*BS,0.34375*BS,-0.25*BS,0.3125*BS,0.4375*BS,0.25*BS
));
f->addNodeBox(NodeBox(
-0.25*BS,0.34375*BS,0.28125*BS,0.25*BS,0.4375*BS,0.3125*BS
));
f->addNodeBox(NodeBox(
-0.25*BS,0.34375*BS,-0.3125*BS,0.25*BS,0.4375*BS,-0.28125*BS
));
f->addNodeBox(NodeBox(
-0.3125*BS,-0.375*BS,-0.25*BS,-0.28125*BS,-0.28125*BS,0.25*BS
));
f->addNodeBox(NodeBox(
0.28125*BS,-0.375*BS,-0.25*BS,0.3125*BS,-0.28125*BS,0.25*BS
));
f->addNodeBox(NodeBox(
-0.25*BS,-0.375*BS,0.28125*BS,0.25*BS,-0.28125*BS,0.3125*BS
));
f->addNodeBox(NodeBox(
-0.25*BS,-0.375*BS,-0.3125*BS,0.25*BS,-0.28125*BS,-0.28125*BS
));
}

View File

@ -72,5 +72,12 @@ void content_nodebox_furnace(ContentFeatures *f);
void content_nodebox_lockedfurnace(ContentFeatures *f);
void content_nodebox_incinerator(ContentFeatures *f);
void content_nodebox_rock(ContentFeatures *f);
void content_nodebox_chair(ContentFeatures *f);
void content_nodebox_chair_centre(ContentFeatures *f);
void content_nodebox_chair_endl(ContentFeatures *f);
void content_nodebox_chair_endr(ContentFeatures *f);
void content_nodebox_chair_inner(ContentFeatures *f);
void content_nodebox_chair_outer(ContentFeatures *f);
void content_nodebox_table(ContentFeatures *f);
#endif

View File

@ -175,12 +175,18 @@ void ItemSAO::step(float dtime, bool send_recommended)
|| m_content == CONTENT_JUNGLELEAVES
|| m_content == CONTENT_APPLE_LEAVES
|| m_content == CONTENT_CONIFER_LEAVES
|| m_content == CONTENT_LEAVES_AUTUMN
|| m_content == CONTENT_LEAVES_WINTER
|| m_content == CONTENT_LEAVES_SNOWY
)
) { // leaves falling on grass become either saplings or wild grass
if (
un.getContent() == CONTENT_MUD
|| un.getContent() == CONTENT_GRASS
|| un.getContent() == CONTENT_GRASS_FOOTSTEPS
|| un.getContent() == CONTENT_GRASS_AUTUMN
|| un.getContent() == CONTENT_GRASS_FOOTSTEPS_AUTUMN
|| un.getContent() == CONTENT_MUDSNOW
) {
content_t c = CONTENT_SAPLING;
std::vector<content_t> search;

View File

@ -1046,6 +1046,7 @@ bool GUIMainMenu::OnEvent(const SEvent& event)
case GUI_ID_JOIN_GAME_BUTTON: // Start game
acceptInput();
m_gamecallback->startGame();
quitMenu();
return true;
case GUI_ID_CHARACTER_CREATOR:
{

View File

@ -534,10 +534,11 @@ std::string http_request(char* host, char* url, char* post, int port)
HTTPResponseHeaders headers;
int s;
char buff[2048];
std::string h;
addr.setPort(port);
if (!host || !host[0]) {
std::string h = g_settings->get("api_server");
h = g_settings->get("api_server");
if (h == "")
return "";
host = (char*)h.c_str();

View File

@ -1312,6 +1312,7 @@ int main(int argc, char *argv[])
if (character_creator)
break;
g_gamecallback->startgame_requested = false;
// Delete map if requested
if (menudata.delete_map) {

View File

@ -395,6 +395,8 @@ struct ContentFeatures
std::string ondig_special_tool_append;
// when punched, this node will replace the punched node
content_t onpunch_replace_node;
// whether onpunch replace node works within borderstone
bool onpunch_replace_respects_borderstone;
// when placed against a wall, this node should be placed instead
content_t wallmount_alternate_node;
@ -554,6 +556,7 @@ struct ContentFeatures
ondig_special_tool = 0;
ondig_special_tool_append = "";
onpunch_replace_node = CONTENT_IGNORE;
onpunch_replace_respects_borderstone = false;
wallmount_alternate_node = CONTENT_IGNORE;
floormount_alternate_node = CONTENT_IGNORE;
roofmount_alternate_node = CONTENT_IGNORE;

View File

@ -2587,6 +2587,8 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
selected_node_features.onpunch_replace_node != CONTENT_IGNORE
&& !wielded_tool_features.has_rotate_effect
) {
if (selected_node_features.onpunch_replace_respects_borderstone && borderstone_locked)
return;
core::list<u16> far_players;
core::map<v3s16, MapBlock*> modified_blocks;

View File

@ -80,7 +80,7 @@ public:
}
}
bool parseConfigLine(const std::string &line)
virtual bool parseConfigLine(const std::string &line)
{
JMutexAutoLock lock(m_mutex);
@ -674,6 +674,38 @@ public:
// you'll find this in defaultsettings.cpp
void setGameDefaults(std::string mode);
virtual bool parseConfigLine(const std::string &line)
{
std::string name;
std::string value;
{
JMutexAutoLock lock(m_mutex);
std::string trimmedline = trim(line);
// Ignore comments
if (trimmedline[0] == '#')
return true;
Strfnd sf(trimmedline);
name = sf.next("=");
name = trim(name);
if (name == "")
return true;
value = sf.next("\n");
value = trim(value);
m_settings[name] = value;
}
if (name == "game_mode")
setGameDefaults(value);
return true;
}
virtual void set(std::string name, std::string value)
{
{