From 18bc4e68153e8a37113e38d088a1420c7d0cc0e2 Mon Sep 17 00:00:00 2001 From: Anthony Zhang Date: Mon, 29 Apr 2013 19:52:00 -0400 Subject: [PATCH] Fix deserialization for real this time. --- worldedit/serialization.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/worldedit/serialization.lua b/worldedit/serialization.lua index 9d201d8..6481fae 100644 --- a/worldedit/serialization.lua +++ b/worldedit/serialization.lua @@ -51,7 +51,7 @@ worldedit.serialize = function(pos1, pos2) --wip: check for ItemStacks and wheth --convert metadata itemstacks to itemstrings for name, inventory in pairs(meta.inventory) do for index, stack in ipairs(inventory) do - inventory[index] = stack:to_string() + inventory[index] = stack.to_string and stack:to_string() or stack end end @@ -228,13 +228,21 @@ worldedit.deserialize = function(originpos, value, env) table.insert(nodes, minetest.deserialize("return " .. current)) startpos, startpos1 = endpos, endpos end + table.insert(nodes, minetest.deserialize("return " .. value:sub(startpos1))) --local nodes = minetest.deserialize(value) --wip: this is broken for larger tables in the current version of LuaJIT + + --load the nodes count = #nodes for index = 1, count do local entry = nodes[index] entry.x, entry.y, entry.z = originx + entry.x, originy + entry.y, originz + entry.z env:add_node(entry, entry) --entry acts both as position and as node + end + + --load the metadata + for index = 1, count do + local entry = nodes[index] env:get_meta(entry):from_table(entry.meta) end end