From 8e1eacf3a87a0cee39c8c27c3846828c12e73f9d Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sat, 30 Jul 2011 23:33:57 +0300 Subject: Fixed handling of inventory in creative mode (normal inventory is not trashed anymore), fixed mese pick speed, added some forgotten stuff --- src/content_mapnode.cpp | 19 ++++++++++++++++++- src/content_mapnode.h | 2 ++ src/mapgen.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/mapnode.h | 3 +++ src/player.cpp | 11 +++++++++-- src/player.h | 2 ++ src/server.cpp | 10 ++++++++++ 7 files changed, 89 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/content_mapnode.cpp b/src/content_mapnode.cpp index db036ebd9..b6b7a6e53 100644 --- a/src/content_mapnode.cpp +++ b/src/content_mapnode.cpp @@ -474,13 +474,30 @@ void content_mapnode_init() f->dug_item = std::string("MaterialItem ")+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("MaterialItem ")+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("MaterialItem ")+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<256; i++) + for(u16 i=0; i<=MAX_CONTENT; i++) { content_features(i).digging_properties.set("MesePick", DiggingProperties(true, 0.0, 65535./1337)); diff --git a/src/content_mapnode.h b/src/content_mapnode.h index 5fdbf45f3..7be26518f 100644 --- a/src/content_mapnode.h +++ b/src/content_mapnode.h @@ -70,6 +70,8 @@ MapNode mapnode_translate_to_internal(MapNode n_from, u8 version); #define CONTENT_BOOKSHELF 0x814 //29 #define CONTENT_JUNGLETREE 0x815 #define CONTENT_JUNGLEGRASS 0x816 +#define CONTENT_NC 0x817 +#define CONTENT_NC_RB 0x818 #endif diff --git a/src/mapgen.cpp b/src/mapgen.cpp index 0ba7f91ab..5dec7d843 100644 --- a/src/mapgen.cpp +++ b/src/mapgen.cpp @@ -976,6 +976,40 @@ static void make_dungeon1(VoxelManipulator &vmanip, PseudoRandom &random) } } +static void make_nc(VoxelManipulator &vmanip, PseudoRandom &random) +{ + v3s16 dir; + u8 facedir_i = 0; + s32 r = random.range(0, 3); + if(r == 0){ + dir = v3s16( 1, 0, 0); + facedir_i = 3; + } + if(r == 1){ + dir = v3s16(-1, 0, 0); + facedir_i = 1; + } + if(r == 2){ + dir = v3s16( 0, 0, 1); + facedir_i = 2; + } + if(r == 3){ + dir = v3s16( 0, 0,-1); + facedir_i = 0; + } + v3s16 p = vmanip.m_area.MinEdge + v3s16( + 16+random.range(0,15), + 16+random.range(0,15), + 16+random.range(0,15)); + vmanip.m_data[vmanip.m_area.index(p)] = MapNode(CONTENT_NC, facedir_i); + u32 length = random.range(3,15); + for(u32 j=0; jserialize(os); + else + inventory.serialize(os); } void Player::deSerialize(std::istream &is) diff --git a/src/player.h b/src/player.h index a7a2433ce..29460e1e1 100644 --- a/src/player.h +++ b/src/player.h @@ -121,6 +121,8 @@ public: bool swimming_up; Inventory inventory; + // Actual inventory is backed up here when creative mode is used + Inventory *inventory_backup; bool craftresult_is_preview; diff --git a/src/server.cpp b/src/server.cpp index 07f9875c4..503d60b84 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -4130,6 +4130,11 @@ Player *Server::emergePlayer(const char *name, const char *password, u16 peer_id // Reset inventory to creative if in creative mode if(g_settings.getBool("creative_mode")) { + // Warning: double code below + // Backup actual inventory + player->inventory_backup = new Inventory(); + *(player->inventory_backup) = player->inventory; + // Set creative inventory craft_set_creative_inventory(player); } @@ -4183,6 +4188,11 @@ Player *Server::emergePlayer(const char *name, const char *password, u16 peer_id if(g_settings.getBool("creative_mode")) { + // Warning: double code above + // Backup actual inventory + player->inventory_backup = new Inventory(); + *(player->inventory_backup) = player->inventory; + // Set creative inventory craft_set_creative_inventory(player); } else if(g_settings.getBool("give_initial_stuff")) -- cgit v1.2.3 From 05d0eaf5fc4947081ae743a58e8675991e3f2422 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sun, 31 Jul 2011 00:39:43 +0300 Subject: added windows icon --- src/CMakeLists.txt | 5 +++++ src/winresource.rc | 6 ++++++ 2 files changed, 11 insertions(+) create mode 100644 src/winresource.rc (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8ce69b2ad..9bb266784 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -128,6 +128,11 @@ set(common_SRCS base64.cpp ) +# This gives us the icon +if(WIN32 AND MSVC) + set(common_SRCS ${common_SRCS} winresource.rc) +endif() + # Client sources set(minetest_SRCS ${common_SRCS} diff --git a/src/winresource.rc b/src/winresource.rc new file mode 100644 index 000000000..24ec445aa --- /dev/null +++ b/src/winresource.rc @@ -0,0 +1,6 @@ +#include +#include +#include +LANGUAGE 0, SUBLANG_NEUTRAL +130 ICON "..\\minetest-icon.ico" +//131 BITMAP "..\\minetest-icon.bmp" -- cgit v1.2.3 From 149875607ca926e99bdc6c855e56aba8569bb1a9 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sun, 31 Jul 2011 00:51:18 +0300 Subject: updated CMakeList.txts a bit --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9bb266784..4d51f7104 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -130,7 +130,7 @@ set(common_SRCS # This gives us the icon if(WIN32 AND MSVC) - set(common_SRCS ${common_SRCS} winresource.rc) + set(common_SRCS ${common_SRCS} winresource.rc) endif() # Client sources -- cgit v1.2.3 From d7a5eea862ffa0602b848d3e70ae07cd50184bbd Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sun, 31 Jul 2011 01:14:56 +0300 Subject: changelog update and disable motd by default --- src/defaultsettings.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index c1104eff0..91524a6de 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -77,7 +77,7 @@ void set_default_settings() g_settings.setDefault("screenshot_path", "."); // Server stuff - g_settings.setDefault("motd", ""); + g_settings.setDefault("motd", ""); g_settings.setDefault("enable_experimental", "false"); g_settings.setDefault("creative_mode", "false"); g_settings.setDefault("enable_damage", "true"); -- cgit v1.2.3 From d6a9bec8430e39b380d3fc7b1f92683d4d02c33e Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sun, 31 Jul 2011 02:20:40 +0300 Subject: Added MaterialItem conversion from old content type namespace to new --- src/content_mapnode.cpp | 62 ++++++++++++++++++++++++------------------------- src/content_mapnode.h | 2 ++ src/inventory.cpp | 27 +++++++++++++++++++++ src/inventory.h | 2 +- src/mapnode.cpp | 2 +- 5 files changed, 62 insertions(+), 33 deletions(-) (limited to 'src') diff --git a/src/content_mapnode.cpp b/src/content_mapnode.cpp index b6b7a6e53..7589f06ed 100644 --- a/src/content_mapnode.cpp +++ b/src/content_mapnode.cpp @@ -31,7 +31,7 @@ void setStoneLikeDiggingProperties(DiggingPropertiesList &list, float toughness) void setDirtLikeDiggingProperties(DiggingPropertiesList &list, float toughness); void setWoodLikeDiggingProperties(DiggingPropertiesList &list, float toughness); -content_t trans_table_19[][2] = { +content_t trans_table_19[21][2] = { {CONTENT_GRASS, 1}, {CONTENT_TREE, 4}, {CONTENT_LEAVES, 5}, @@ -106,7 +106,7 @@ void content_mapnode_init() f->setInventoryTextureCube("stone.png", "stone.png", "stone.png"); f->param_type = CPT_MINERAL; f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(CONTENT_COBBLE)+" 1"; + 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 @@ -118,7 +118,7 @@ void content_mapnode_init() f->setTexture(1, "mud.png"); f->param_type = CPT_MINERAL; f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(CONTENT_MUD)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_MUD)+" 1"; setDirtLikeDiggingProperties(f->digging_properties, 1.0); i = CONTENT_GRASS_FOOTSTEPS; @@ -128,7 +128,7 @@ void content_mapnode_init() f->setTexture(1, "mud.png"); f->param_type = CPT_MINERAL; f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(CONTENT_MUD)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_MUD)+" 1"; setDirtLikeDiggingProperties(f->digging_properties, 1.0); i = CONTENT_MUD; @@ -137,7 +137,7 @@ void content_mapnode_init() f->setInventoryTextureCube("mud.png", "mud.png", "mud.png"); f->param_type = CPT_MINERAL; f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; setDirtLikeDiggingProperties(f->digging_properties, 1.0); i = CONTENT_SAND; @@ -146,7 +146,7 @@ void content_mapnode_init() f->setInventoryTextureCube("sand.png", "sand.png", "sand.png"); f->param_type = CPT_MINERAL; f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; setDirtLikeDiggingProperties(f->digging_properties, 1.0); i = CONTENT_GRAVEL; @@ -155,7 +155,7 @@ void content_mapnode_init() f->setInventoryTextureCube("gravel.png", "gravel.png", "gravel.png"); f->param_type = CPT_MINERAL; f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; setDirtLikeDiggingProperties(f->digging_properties, 1.75); i = CONTENT_SANDSTONE; @@ -164,7 +164,7 @@ void content_mapnode_init() f->setInventoryTextureCube("sandstone.png", "sandstone.png", "sandstone.png"); f->param_type = CPT_MINERAL; f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(CONTENT_SAND)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(CONTENT_SAND)+" 1"; setDirtLikeDiggingProperties(f->digging_properties, 1.0); i = CONTENT_CLAY; @@ -192,7 +192,7 @@ void content_mapnode_init() f->setTexture(1, "tree_top.png"); f->param_type = CPT_MINERAL; f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; setWoodLikeDiggingProperties(f->digging_properties, 1.0); i = CONTENT_JUNGLETREE; @@ -202,7 +202,7 @@ void content_mapnode_init() f->setTexture(1, "jungletree_top.png"); f->param_type = CPT_MINERAL; //f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; setWoodLikeDiggingProperties(f->digging_properties, 1.0); i = CONTENT_JUNGLEGRASS; @@ -212,7 +212,7 @@ void content_mapnode_init() f->param_type = CPT_LIGHT; //f->is_ground_content = true; f->air_equivalent = false; // grass grows underneath - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + 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); @@ -232,7 +232,7 @@ void content_mapnode_init() { f->setAllTextures("[noalpha:leaves.png"); } - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; setWoodLikeDiggingProperties(f->digging_properties, 0.15); i = CONTENT_CACTUS; @@ -243,7 +243,7 @@ void content_mapnode_init() 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("MaterialItem ")+itos(i)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; setWoodLikeDiggingProperties(f->digging_properties, 0.75); i = CONTENT_PAPYRUS; @@ -252,7 +252,7 @@ void content_mapnode_init() f->light_propagates = true; f->param_type = CPT_LIGHT; f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + 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); @@ -275,7 +275,7 @@ void content_mapnode_init() f->sunlight_propagates = true; f->param_type = CPT_LIGHT; f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + 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); @@ -285,7 +285,7 @@ void content_mapnode_init() f->light_propagates = true; f->param_type = CPT_LIGHT; f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + 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"); @@ -297,7 +297,7 @@ void content_mapnode_init() f->light_propagates = true; f->param_type = CPT_LIGHT; f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + 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; @@ -315,7 +315,7 @@ void content_mapnode_init() f->setAllTextures("wood.png"); f->setInventoryTextureCube("wood.png", "wood.png", "wood.png"); f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; setWoodLikeDiggingProperties(f->digging_properties, 0.75); i = CONTENT_MESE; @@ -323,7 +323,7 @@ void content_mapnode_init() f->setAllTextures("mese.png"); f->setInventoryTextureCube("mese.png", "mese.png", "mese.png"); f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; setStoneLikeDiggingProperties(f->digging_properties, 0.5); i = CONTENT_CLOUD; @@ -331,7 +331,7 @@ void content_mapnode_init() f->setAllTextures("cloud.png"); f->setInventoryTextureCube("cloud.png", "cloud.png", "cloud.png"); f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; i = CONTENT_AIR; f = &content_features(i); @@ -387,7 +387,7 @@ void content_mapnode_init() f->diggable = false; f->buildable_to = true; f->liquid_type = LIQUID_SOURCE; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; f->liquid_alternative_flowing = CONTENT_WATER; f->liquid_alternative_source = CONTENT_WATERSOURCE; @@ -401,7 +401,7 @@ void content_mapnode_init() f->walkable = false; f->wall_mounted = true; f->air_equivalent = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; f->light_source = LIGHT_MAX-1; f->digging_properties.set("", DiggingProperties(true, 0.0, 0)); @@ -415,7 +415,7 @@ void content_mapnode_init() f->walkable = false; f->wall_mounted = true; f->air_equivalent = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + 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)); @@ -429,7 +429,7 @@ void content_mapnode_init() 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("MaterialItem ")+itos(i)+" 1"; + 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); @@ -440,8 +440,8 @@ void content_mapnode_init() f->setAllTextures("furnace_side.png"); f->setTexture(5, "furnace_front.png"); // Z- f->setInventoryTexture("furnace_front.png"); - //f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; - f->dug_item = std::string("MaterialItem ")+itos(CONTENT_COBBLE)+" 6"; + //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); @@ -452,7 +452,7 @@ void content_mapnode_init() f->setInventoryTextureCube("cobble.png", "cobble.png", "cobble.png"); f->param_type = CPT_NONE; f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; setStoneLikeDiggingProperties(f->digging_properties, 0.9); i = CONTENT_MOSSYCOBBLE; @@ -461,7 +461,7 @@ void content_mapnode_init() f->setInventoryTextureCube("mossycobble.png", "mossycobble.png", "mossycobble.png"); f->param_type = CPT_NONE; f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; setStoneLikeDiggingProperties(f->digging_properties, 0.8); i = CONTENT_STEEL; @@ -471,7 +471,7 @@ void content_mapnode_init() "steel_block.png"); f->param_type = CPT_NONE; f->is_ground_content = true; - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; setStoneLikeDiggingProperties(f->digging_properties, 5.0); i = CONTENT_NC; @@ -481,14 +481,14 @@ void content_mapnode_init() f->setTexture(5, "nc_front.png"); // Z- f->setTexture(4, "nc_back.png"); // Z+ f->setInventoryTexture("nc_front.png"); - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + 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("MaterialItem ")+itos(i)+" 1"; + 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 diff --git a/src/content_mapnode.h b/src/content_mapnode.h index 7be26518f..609df0a95 100644 --- a/src/content_mapnode.h +++ b/src/content_mapnode.h @@ -24,6 +24,8 @@ with this program; if not, write to the Free Software Foundation, Inc., void content_mapnode_init(); +extern content_t trans_table_19[21][2]; + MapNode mapnode_translate_from_internal(MapNode n_from, u8 version); MapNode mapnode_translate_to_internal(MapNode n_from, u8 version); diff --git a/src/inventory.cpp b/src/inventory.cpp index ca050614f..30a43e37f 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -46,6 +46,18 @@ InventoryItem::~InventoryItem() { } +content_t content_translate_from_19_to_internal(content_t c_from) +{ + for(u32 i=0; i>material; + u16 count; + is>>count; + // Convert old materials + if(material <= 0xff) + { + material = content_translate_from_19_to_internal(material); + } + if(material > MAX_CONTENT) + throw SerializationError("Too large material number"); + return new MaterialItem(material, count); + } + else if(name == "MaterialItem2") + { u16 material; is>>material; u16 count; diff --git a/src/inventory.h b/src/inventory.h index 66b1cd1f0..53495c6e5 100644 --- a/src/inventory.h +++ b/src/inventory.h @@ -136,7 +136,7 @@ public: virtual void serialize(std::ostream &os) { //os.imbue(std::locale("C")); - os<setAllTextures("unknown_block.png"); - f->dug_item = std::string("MaterialItem ")+itos(i)+" 1"; + f->dug_item = std::string("MaterialItem2 ")+itos(i)+" 1"; } /* -- cgit v1.2.3 From 756f8f88d4c127917cc9ea77e2e44606c199beed Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sun, 31 Jul 2011 02:27:26 +0300 Subject: Made stricter handling for old clients because now they are not compatible at all. --- src/server.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/server.cpp b/src/server.cpp index 503d60b84..ba40ec627 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -1972,20 +1972,23 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id) } /* - Check network protocol version + Read and check network protocol version */ + u16 net_proto_version = 0; if(datasize >= 2+1+PLAYERNAME_SIZE+PASSWORD_SIZE+2) { net_proto_version = readU16(&data[2+1+PLAYERNAME_SIZE+PASSWORD_SIZE]); } + getClient(peer->id)->net_proto_version = net_proto_version; - /*if(net_proto_version == 0) + + if(net_proto_version == 0) { SendAccessDenied(m_con, peer_id, - L"Your client is too old (network protocol)"); + L"Your client is too old. Please upgrade."); return; - }*/ + } /* Set up player @@ -2181,11 +2184,12 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id) message += L" joined game"; BroadcastChatMessage(message); } - - if(getClient(peer->id)->net_proto_version == 0) + + // Warnings about protocol version can be issued here + /*if(getClient(peer->id)->net_proto_version == 0) { SendChatMessage(peer_id, L"# Server: NOTE: YOUR CLIENT IS OLD AND DOES NOT WORK PROPERLY WITH THIS SERVER"); - } + }*/ return; } -- cgit v1.2.3 From e0b8e66540d2724379d6278f83bbbf0f6d5e2aac Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Sun, 31 Jul 2011 15:32:45 +0300 Subject: Fixed problem of server always receiving an empty password from the client --- src/client.cpp | 2 +- src/main.cpp | 2 ++ src/server.cpp | 12 +++++++++--- 3 files changed, 12 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/client.cpp b/src/client.cpp index 5f299890a..55f0af6dc 100644 --- a/src/client.cpp +++ b/src/client.cpp @@ -424,7 +424,7 @@ void Client::step(float dtime) memset((char*)&data[3], 0, PLAYERNAME_SIZE); snprintf((char*)&data[3], PLAYERNAME_SIZE, "%s", myplayer->getName()); - /*dstream<<"Client: password hash is \""<= 2+1+PLAYERNAME_SIZE) + if(datasize < 2+1+PLAYERNAME_SIZE+PASSWORD_SIZE) { // old version - assume blank password password[0] = 0; @@ -2044,7 +2044,10 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id) checkpwd = g_settings.get("default_password"); } - if(password != checkpwd && checkpwd != "") + /*dstream<<"Server: Client gave password '"<getName(); if(m_authmanager.exists(playername) == false) @@ -3361,7 +3367,7 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id) } std::string checkpwd = m_authmanager.getPassword(playername); - + if(oldpwd != checkpwd) { dstream<<"Server: invalid old password"< Date: Sun, 31 Jul 2011 15:51:24 +0300 Subject: Fixes a bug that made the server to deny non-empty passwords from players connecting the first time. --- src/server.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/server.cpp b/src/server.cpp index 35c186b5d..8a19306a9 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -2047,7 +2047,7 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id) /*dstream<<"Server: Client gave password '"<