From: octacian Date: Tue, 14 Mar 2017 05:28:03 +0000 (-0700) Subject: Books: Fix backwards compatibility issues X-Git-Tag: 0.4.16~47 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=2a7403274511ba008d4a9427f9e676d21786f074;p=oweals%2Fminetest_game.git 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. --- diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index f002d709..aa8f56bd 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -71,6 +71,7 @@ local function book_on_use(itemstack, user) end minetest.show_formspec(player_name, "default:book", formspec) + return itemstack end 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 - local data_str = minetest.serialize(data) - stack:set_metadata(data_str) - book_on_use(stack, player) + stack:get_meta():from_table(data) + stack = book_on_use(stack, player) end + -- Update stack player:set_wielded_item(stack) end) @@ -178,9 +179,9 @@ minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv if not original then return end - local copymeta = original:get_metadata() + local copymeta = original:get_meta():to_table() -- 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 craft_inv:set_stack("craft", index, original) end)