Books: Fix backwards compatibility issues

Commit c68b8274fed183f30bd7609018766a261448b83d prevented books from
being copied in the crafting grid, and made it so that old books, though
seemingly successfully transferred to the new format, could not be written
to as the old data still persisted.
This commit is contained in:
octacian 2017-03-13 22:28:03 -07:00 committed by paramat
parent ecf160d93d
commit 2a74032745

@ -71,6 +71,7 @@ local function book_on_use(itemstack, user)
end end
minetest.show_formspec(player_name, "default:book", formspec) minetest.show_formspec(player_name, "default:book", formspec)
return itemstack
end end
minetest.register_on_player_receive_fields(function(player, formname, fields) minetest.register_on_player_receive_fields(function(player, formname, fields)
@ -133,11 +134,11 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
end end
end end
local data_str = minetest.serialize(data) stack:get_meta():from_table(data)
stack:set_metadata(data_str) stack = book_on_use(stack, player)
book_on_use(stack, player)
end end
-- Update stack
player:set_wielded_item(stack) player:set_wielded_item(stack)
end) end)
@ -178,9 +179,9 @@ minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv
if not original then if not original then
return return
end end
local copymeta = original:get_metadata() local copymeta = original:get_meta():to_table()
-- copy of the book held by player's mouse cursor -- copy of the book held by player's mouse cursor
itemstack:set_metadata(copymeta) itemstack:get_meta():from_table(copymeta)
-- put the book with metadata back in the craft grid -- put the book with metadata back in the craft grid
craft_inv:set_stack("craft", index, original) craft_inv:set_stack("craft", index, original)
end) end)