mirror of
https://github.com/minetest/minetest_game.git
synced 2024-12-23 07:10:19 +01:00
Move duplicate recipe from books to default.register_craft_metadata_copy()
This allows mods to easily implement the same behaviour, e.g. for letters.
This commit is contained in:
parent
6e32287a42
commit
1940961d63
@ -1055,3 +1055,11 @@ for the wielded skeleton key.
|
|||||||
|
|
||||||
if `nil` is returned, it is assumed that the wielder did not have
|
if `nil` is returned, it is assumed that the wielder did not have
|
||||||
permissions to create a key for this node, and no key is created.
|
permissions to create a key for this node, and no key is created.
|
||||||
|
|
||||||
|
`default.register_craft_metadata_copy(ingredient, result)`
|
||||||
|
----------------------------------------------------------
|
||||||
|
|
||||||
|
This function registers a shapeless recipe that takes `ingredient`
|
||||||
|
and `result` as input and outputs `result`.
|
||||||
|
|
||||||
|
The metadata of the input `result` is copied to the output `result`.
|
||||||
|
@ -145,29 +145,6 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||||||
player:set_wielded_item(stack)
|
player:set_wielded_item(stack)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
|
|
||||||
if itemstack:get_name() ~= "default:book_written" then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
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_meta():to_table()
|
|
||||||
-- copy of the book held by player's mouse cursor
|
|
||||||
itemstack:get_meta():from_table(copymeta)
|
|
||||||
-- put the book with metadata back in the craft grid
|
|
||||||
craft_inv:set_stack("craft", index, original)
|
|
||||||
end)
|
|
||||||
|
|
||||||
minetest.register_craftitem("default:skeleton_key", {
|
minetest.register_craftitem("default:skeleton_key", {
|
||||||
description = S("Skeleton Key"),
|
description = S("Skeleton Key"),
|
||||||
inventory_image = "default_key_skeleton.png",
|
inventory_image = "default_key_skeleton.png",
|
||||||
@ -361,11 +338,7 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
default.register_craft_metadata_copy("default:book", "default:book_written")
|
||||||
type = "shapeless",
|
|
||||||
output = "default:book_written",
|
|
||||||
recipe = {"default:book", "default:book_written"}
|
|
||||||
})
|
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = "default:bronze_ingot 9",
|
output = "default:bronze_ingot 9",
|
||||||
|
@ -581,6 +581,40 @@ minetest.register_abm({
|
|||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Register a craft to copy the metadata of items
|
||||||
|
--
|
||||||
|
|
||||||
|
function default.register_craft_metadata_copy(ingredient, result)
|
||||||
|
minetest.register_craft({
|
||||||
|
type = "shapeless",
|
||||||
|
output = result,
|
||||||
|
recipe = {ingredient, result}
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv)
|
||||||
|
if itemstack:get_name() ~= result then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
local original
|
||||||
|
local index
|
||||||
|
for i = 1, #old_craft_grid do
|
||||||
|
if old_craft_grid[i]:get_name() == result then
|
||||||
|
original = old_craft_grid[i]
|
||||||
|
index = i
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not original then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local copymeta = original:get_meta():to_table()
|
||||||
|
itemstack:get_meta():from_table(copymeta)
|
||||||
|
-- put the book with metadata back in the craft grid
|
||||||
|
craft_inv:set_stack("craft", index, original)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- NOTICE: This method is not an official part of the API yet.
|
-- NOTICE: This method is not an official part of the API yet.
|
||||||
|
Loading…
Reference in New Issue
Block a user