Skip to content

Commit

Permalink
Allow books to be copied on the craft grid.
Browse files Browse the repository at this point in the history
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 b0ec8f1
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions mods/default/craftitems.lua
Expand Up @@ -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",
Expand Down

0 comments on commit b0ec8f1

Please sign in to comment.