From b0ec8f1b5ad46dd6da00a1901a6cc60eb13d63c3 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Mon, 14 Dec 2015 21:42:09 -0800 Subject: [PATCH] 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. --- mods/default/craftitems.lua | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) 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", -- 2.25.1