From: Auke Kok Date: Tue, 15 Dec 2015 05:42:09 +0000 (-0800) Subject: Allow books to be copied on the craft grid. X-Git-Tag: 0.4.14~166 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=b0ec8f1b5ad46dd6da00a1901a6cc60eb13d63c3;p=oweals%2Fminetest_game.git Allow books to be copied on the craft grid. Combine any written book with an empty book to copy it. The copy is in player hands when using, and the original is put back on the crafting grid and can be directly copied again. All ownership and metadata is retained, so the copy of the book is as writable as the original is, or isn't. --- diff --git a/mods/default/craftitems.lua b/mods/default/craftitems.lua index bbe11f52..406943e2 100644 --- a/mods/default/craftitems.lua +++ b/mods/default/craftitems.lua @@ -88,6 +88,36 @@ minetest.register_craftitem("default:book_written", { on_use = book_on_use, }) +minetest.register_craft({ + type = "shapeless", + output = "default:book_written", + recipe = { "default:book", "default:book_written" } +}) + +minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv) + if itemstack:get_name() ~= "default:book_written" then + return + end + + local copy = ItemStack("default:book_written") + local original + local index + for i = 1, player:get_inventory():get_size("craft") do + if old_craft_grid[i]:get_name() == "default:book_written" then + original = old_craft_grid[i] + index = i + end + end + if not original then + return + end + local copymeta = original:get_metadata() + -- copy of the book held by player's mouse cursor + itemstack:set_metadata(copymeta) + -- put the book with metadata back in the craft grid + craft_inv:set_stack("craft", index, original) +end) + minetest.register_craftitem("default:coal_lump", { description = "Coal Lump", inventory_image = "default_coal_lump.png",