Books: Fix backwards compatibility issues

Commit c68b8274fe 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
1 changed files with 6 additions and 5 deletions

View File

@ -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)