Skip to content
Permalink
Browse files
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.
  • Loading branch information
sofar authored and paramat committed Jan 5, 2016
1 parent c76a919 commit b0ec8f1b5ad46dd6da00a1901a6cc60eb13d63c3
Showing 1 changed file with 30 additions and 0 deletions.
@@ -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",

0 comments on commit b0ec8f1

Please sign in to comment.