diff options
author | Perttu Ahola <celeron55@gmail.com> | 2012-06-03 00:32:49 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2012-06-03 22:31:01 +0300 |
commit | 81c5e5200bcc20be6b1513a440b2c45985fe3c49 (patch) | |
tree | a82c21e853b297203e278b97f5752a08b14be848 | |
parent | 9c3830dd35e7fdf601d83fcd969b67dd3fe189d3 (diff) | |
download | minetest-81c5e5200bcc20be6b1513a440b2c45985fe3c49.tar.gz minetest-81c5e5200bcc20be6b1513a440b2c45985fe3c49.tar.bz2 minetest-81c5e5200bcc20be6b1513a440b2c45985fe3c49.zip |
Fix loading of legacy chests
-rw-r--r-- | src/content_nodemeta.cpp | 15 | ||||
-rw-r--r-- | src/inventory.cpp | 5 | ||||
-rw-r--r-- | src/inventory.h | 1 |
3 files changed, 13 insertions, 8 deletions
diff --git a/src/content_nodemeta.cpp b/src/content_nodemeta.cpp index a2a341ae0..2f32cf16a 100644 --- a/src/content_nodemeta.cpp +++ b/src/content_nodemeta.cpp @@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "inventory.h" #include "log.h" #include "utility.h" +#include <sstream> #define NODEMETA_GENERIC 1 #define NODEMETA_SIGN 14 @@ -70,11 +71,10 @@ static bool content_nodemeta_deserialize_legacy_body( // Rename inventory list "0" to "main" Inventory *inv = meta->getInventory(); if(!inv->getList("main") && inv->getList("0")){ - inv->addList("main", 8*4); - *inv->getList("main") = *inv->getList("0"); - inv->deleteList("0"); + inv->getList("0")->setName("main"); } - + assert(inv->getList("main") && !inv->getList("0")); + meta->setString("formspec","invsize[8,9;]" "list[current_name;main;0,0;8,4;]" "list[current_player;main;0,5;8,4;]"); @@ -88,11 +88,10 @@ static bool content_nodemeta_deserialize_legacy_body( // Rename inventory list "0" to "main" Inventory *inv = meta->getInventory(); if(!inv->getList("main") && inv->getList("0")){ - inv->addList("main", 8*4); - *inv->getList("main") = *inv->getList("0"); - inv->deleteList("0"); + inv->getList("0")->setName("main"); } - + assert(inv->getList("main") && !inv->getList("0")); + meta->setString("formspec","invsize[8,9;]" "list[current_name;main;0,0;8,4;]" "list[current_player;main;0,5;8,4;]"); diff --git a/src/inventory.cpp b/src/inventory.cpp index df75ebcd5..7c31c85c8 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -458,6 +458,11 @@ void InventoryList::setSize(u32 newsize) m_size = newsize; } +void InventoryList::setName(const std::string &name) +{ + m_name = name; +} + void InventoryList::serialize(std::ostream &os) const { //os.imbue(std::locale("C")); diff --git a/src/inventory.h b/src/inventory.h index 411eabb09..e280bbf79 100644 --- a/src/inventory.h +++ b/src/inventory.h @@ -176,6 +176,7 @@ public: ~InventoryList(); void clearItems(); void setSize(u32 newsize); + void setName(const std::string &name); void serialize(std::ostream &os) const; void deSerialize(std::istream &is); |