forked from minetest/minetest_game
e4b1c93512
This code adds the key concept to minetest_game, and integrates it with lockable nodes. Currently supported lockable items are the Steel Door, the Steel Trapdoor, and the Locked Chest. The goal of this modification is to introduce a fine-grained multi- player permission system that is intuitive and usable without any console or chat commands, and doesn't require extra privileges to be granted or setup. Keys can also physically be conveyed to other players, adding to gameplay and adding some personality that is preferable to console commands or editing formspecs. A skeleton key can be crafted with 1 gold ingot. Skeleton keys can then be matched to a lockable node by right-clicking the skeleton key on a lockable node, which changes the skeleton key to a "key". Gold was chosen as it's currently a not-so very useful item, and therefore it's likely that players have some, but aren't really using it for any purpose. This key can subsequently used by any player to open or access that lockable node, including retrieving items from Locked Chests, or putting items in them. They key is programmed to fit only the particular locked node it is programmed to. This is achieved by storing a secret value in both key and locked node. If this secret value doesn't match, the key will not open the locked node. This allows many keys to be created for one chest or door, but a key will only fit one node ever. The secrets are stored in node, and item meta for the key. If a locked node is removed, all keys that opened it are no longer valid. Even if a new door/chest is placed in exactly the same spot, the old keys will no longer fit that node. Keys can be smelted back in gold ingots if they are no longer useful. The method of storing a secret in nodemeta and itemstackmeta is secure as there is no way for the client to create new items on the server with a particular secret metadata value. Even if you could possible create such an itemstack on the client, the server does not ever read itemstackmeta from a client package. The patch adds an API that allows other nodes and nodes added by mods to use the same keys as well. The method how to implement this is described in game_api.txt. The mod should add 2 callbacks to it's node definition. Example code is given. Textures are from PixelBOX, thanks to Gambit.
1114 lines
21 KiB
Lua
1114 lines
21 KiB
Lua
-- mods/default/crafting.lua
|
|
|
|
minetest.register_craft({
|
|
output = 'default:wood 4',
|
|
recipe = {
|
|
{'default:tree'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:junglewood 4',
|
|
recipe = {
|
|
{'default:jungletree'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:pine_wood 4',
|
|
recipe = {
|
|
{'default:pine_tree'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:acacia_wood 4',
|
|
recipe = {
|
|
{'default:acacia_tree'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:aspen_wood 4',
|
|
recipe = {
|
|
{'default:aspen_tree'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:wood',
|
|
recipe = {
|
|
{'default:bush_stem'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:acacia_wood',
|
|
recipe = {
|
|
{'default:acacia_bush_stem'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:stick 4',
|
|
recipe = {
|
|
{'group:wood'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:sign_wall_steel 3',
|
|
recipe = {
|
|
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
|
|
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
|
|
{'', 'group:stick', ''},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:sign_wall_wood 3',
|
|
recipe = {
|
|
{'group:wood', 'group:wood', 'group:wood'},
|
|
{'group:wood', 'group:wood', 'group:wood'},
|
|
{'', 'group:stick', ''},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:torch 4',
|
|
recipe = {
|
|
{'default:coal_lump'},
|
|
{'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:pick_wood',
|
|
recipe = {
|
|
{'group:wood', 'group:wood', 'group:wood'},
|
|
{'', 'group:stick', ''},
|
|
{'', 'group:stick', ''},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:pick_stone',
|
|
recipe = {
|
|
{'group:stone', 'group:stone', 'group:stone'},
|
|
{'', 'group:stick', ''},
|
|
{'', 'group:stick', ''},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:pick_steel',
|
|
recipe = {
|
|
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
|
|
{'', 'group:stick', ''},
|
|
{'', 'group:stick', ''},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:pick_bronze',
|
|
recipe = {
|
|
{'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'},
|
|
{'', 'group:stick', ''},
|
|
{'', 'group:stick', ''},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:pick_mese',
|
|
recipe = {
|
|
{'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'},
|
|
{'', 'group:stick', ''},
|
|
{'', 'group:stick', ''},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:pick_diamond',
|
|
recipe = {
|
|
{'default:diamond', 'default:diamond', 'default:diamond'},
|
|
{'', 'group:stick', ''},
|
|
{'', 'group:stick', ''},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:shovel_wood',
|
|
recipe = {
|
|
{'group:wood'},
|
|
{'group:stick'},
|
|
{'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:shovel_stone',
|
|
recipe = {
|
|
{'group:stone'},
|
|
{'group:stick'},
|
|
{'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:shovel_steel',
|
|
recipe = {
|
|
{'default:steel_ingot'},
|
|
{'group:stick'},
|
|
{'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:shovel_bronze',
|
|
recipe = {
|
|
{'default:bronze_ingot'},
|
|
{'group:stick'},
|
|
{'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:shovel_mese',
|
|
recipe = {
|
|
{'default:mese_crystal'},
|
|
{'group:stick'},
|
|
{'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:shovel_diamond',
|
|
recipe = {
|
|
{'default:diamond'},
|
|
{'group:stick'},
|
|
{'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:axe_wood',
|
|
recipe = {
|
|
{'group:wood', 'group:wood'},
|
|
{'group:wood', 'group:stick'},
|
|
{'', 'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:axe_stone',
|
|
recipe = {
|
|
{'group:stone', 'group:stone'},
|
|
{'group:stone', 'group:stick'},
|
|
{'', 'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:axe_steel',
|
|
recipe = {
|
|
{'default:steel_ingot', 'default:steel_ingot'},
|
|
{'default:steel_ingot', 'group:stick'},
|
|
{'', 'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:axe_bronze',
|
|
recipe = {
|
|
{'default:bronze_ingot', 'default:bronze_ingot'},
|
|
{'default:bronze_ingot', 'group:stick'},
|
|
{'', 'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:axe_mese',
|
|
recipe = {
|
|
{'default:mese_crystal', 'default:mese_crystal'},
|
|
{'default:mese_crystal', 'group:stick'},
|
|
{'', 'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:axe_diamond',
|
|
recipe = {
|
|
{'default:diamond', 'default:diamond'},
|
|
{'default:diamond', 'group:stick'},
|
|
{'', 'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:axe_wood',
|
|
recipe = {
|
|
{'group:wood', 'group:wood'},
|
|
{'group:stick', 'group:wood'},
|
|
{'group:stick',''},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:axe_stone',
|
|
recipe = {
|
|
{'group:stone', 'group:stone'},
|
|
{'group:stick', 'group:stone'},
|
|
{'group:stick', ''},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:axe_steel',
|
|
recipe = {
|
|
{'default:steel_ingot', 'default:steel_ingot'},
|
|
{'group:stick', 'default:steel_ingot'},
|
|
{'group:stick', ''},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:axe_bronze',
|
|
recipe = {
|
|
{'default:bronze_ingot', 'default:bronze_ingot'},
|
|
{'group:stick', 'default:bronze_ingot'},
|
|
{'group:stick', ''},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:axe_mese',
|
|
recipe = {
|
|
{'default:mese_crystal', 'default:mese_crystal'},
|
|
{'group:stick', 'default:mese_crystal'},
|
|
{'group:stick', ''},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:axe_diamond',
|
|
recipe = {
|
|
{'default:diamond', 'default:diamond'},
|
|
{'group:stick', 'default:diamond'},
|
|
{'group:stick', ''},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:sword_wood',
|
|
recipe = {
|
|
{'group:wood'},
|
|
{'group:wood'},
|
|
{'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:sword_stone',
|
|
recipe = {
|
|
{'group:stone'},
|
|
{'group:stone'},
|
|
{'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:sword_steel',
|
|
recipe = {
|
|
{'default:steel_ingot'},
|
|
{'default:steel_ingot'},
|
|
{'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:sword_bronze',
|
|
recipe = {
|
|
{'default:bronze_ingot'},
|
|
{'default:bronze_ingot'},
|
|
{'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:sword_mese',
|
|
recipe = {
|
|
{'default:mese_crystal'},
|
|
{'default:mese_crystal'},
|
|
{'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:sword_diamond',
|
|
recipe = {
|
|
{'default:diamond'},
|
|
{'default:diamond'},
|
|
{'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:skeleton_key',
|
|
recipe = {
|
|
{'default:gold_ingot'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:chest',
|
|
recipe = {
|
|
{'group:wood', 'group:wood', 'group:wood'},
|
|
{'group:wood', '', 'group:wood'},
|
|
{'group:wood', 'group:wood', 'group:wood'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:chest_locked',
|
|
recipe = {
|
|
{'group:wood', 'group:wood', 'group:wood'},
|
|
{'group:wood', 'default:steel_ingot', 'group:wood'},
|
|
{'group:wood', 'group:wood', 'group:wood'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft( {
|
|
type = "shapeless",
|
|
output = "default:chest_locked",
|
|
recipe = {"default:chest", "default:steel_ingot"},
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:furnace',
|
|
recipe = {
|
|
{'group:stone', 'group:stone', 'group:stone'},
|
|
{'group:stone', '', 'group:stone'},
|
|
{'group:stone', 'group:stone', 'group:stone'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "shapeless",
|
|
output = "default:bronze_ingot",
|
|
recipe = {"default:steel_ingot", "default:copper_ingot"},
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:coalblock',
|
|
recipe = {
|
|
{'default:coal_lump', 'default:coal_lump', 'default:coal_lump'},
|
|
{'default:coal_lump', 'default:coal_lump', 'default:coal_lump'},
|
|
{'default:coal_lump', 'default:coal_lump', 'default:coal_lump'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:coal_lump 9',
|
|
recipe = {
|
|
{'default:coalblock'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:steelblock',
|
|
recipe = {
|
|
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
|
|
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
|
|
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:steel_ingot 9',
|
|
recipe = {
|
|
{'default:steelblock'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:copperblock',
|
|
recipe = {
|
|
{'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'},
|
|
{'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'},
|
|
{'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:copper_ingot 9',
|
|
recipe = {
|
|
{'default:copperblock'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:bronzeblock',
|
|
recipe = {
|
|
{'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'},
|
|
{'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'},
|
|
{'default:bronze_ingot', 'default:bronze_ingot', 'default:bronze_ingot'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:bronze_ingot 9',
|
|
recipe = {
|
|
{'default:bronzeblock'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:goldblock',
|
|
recipe = {
|
|
{'default:gold_ingot', 'default:gold_ingot', 'default:gold_ingot'},
|
|
{'default:gold_ingot', 'default:gold_ingot', 'default:gold_ingot'},
|
|
{'default:gold_ingot', 'default:gold_ingot', 'default:gold_ingot'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:gold_ingot 9',
|
|
recipe = {
|
|
{'default:goldblock'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:diamondblock',
|
|
recipe = {
|
|
{'default:diamond', 'default:diamond', 'default:diamond'},
|
|
{'default:diamond', 'default:diamond', 'default:diamond'},
|
|
{'default:diamond', 'default:diamond', 'default:diamond'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:diamond 9',
|
|
recipe = {
|
|
{'default:diamondblock'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:sandstone',
|
|
recipe = {
|
|
{'group:sand', 'group:sand'},
|
|
{'group:sand', 'group:sand'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:sand 4',
|
|
recipe = {
|
|
{'default:sandstone'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:sandstonebrick 4',
|
|
recipe = {
|
|
{'default:sandstone', 'default:sandstone'},
|
|
{'default:sandstone', 'default:sandstone'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:sandstone_block 9',
|
|
recipe = {
|
|
{'default:sandstone', 'default:sandstone', 'default:sandstone'},
|
|
{'default:sandstone', 'default:sandstone', 'default:sandstone'},
|
|
{'default:sandstone', 'default:sandstone', 'default:sandstone'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:clay',
|
|
recipe = {
|
|
{'default:clay_lump', 'default:clay_lump'},
|
|
{'default:clay_lump', 'default:clay_lump'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:clay_lump 4',
|
|
recipe = {
|
|
{'default:clay'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:brick',
|
|
recipe = {
|
|
{'default:clay_brick', 'default:clay_brick'},
|
|
{'default:clay_brick', 'default:clay_brick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:clay_brick 4',
|
|
recipe = {
|
|
{'default:brick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:paper',
|
|
recipe = {
|
|
{'default:papyrus', 'default:papyrus', 'default:papyrus'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:book',
|
|
recipe = {
|
|
{'default:paper'},
|
|
{'default:paper'},
|
|
{'default:paper'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:bookshelf',
|
|
recipe = {
|
|
{'group:wood', 'group:wood', 'group:wood'},
|
|
{'default:book', 'default:book', 'default:book'},
|
|
{'group:wood', 'group:wood', 'group:wood'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:ladder_wood 3',
|
|
recipe = {
|
|
{'group:stick', '', 'group:stick'},
|
|
{'group:stick', 'group:stick', 'group:stick'},
|
|
{'group:stick', '', 'group:stick'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:ladder_steel 15',
|
|
recipe = {
|
|
{'default:steel_ingot', '', 'default:steel_ingot'},
|
|
{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
|
|
{'default:steel_ingot', '', 'default:steel_ingot'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:mese',
|
|
recipe = {
|
|
{'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'},
|
|
{'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'},
|
|
{'default:mese_crystal', 'default:mese_crystal', 'default:mese_crystal'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:mese_crystal 9',
|
|
recipe = {
|
|
{'default:mese'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:mese_crystal_fragment 9',
|
|
recipe = {
|
|
{'default:mese_crystal'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "default:mese_crystal",
|
|
recipe = {
|
|
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
|
|
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
|
|
{"default:mese_crystal_fragment", "default:mese_crystal_fragment", "default:mese_crystal_fragment"},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:meselamp 1',
|
|
recipe = {
|
|
{'', 'default:mese_crystal',''},
|
|
{'default:mese_crystal', 'default:glass', 'default:mese_crystal'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:obsidian_shard 9',
|
|
recipe = {
|
|
{'default:obsidian'}
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:obsidian',
|
|
recipe = {
|
|
{'default:obsidian_shard', 'default:obsidian_shard', 'default:obsidian_shard'},
|
|
{'default:obsidian_shard', 'default:obsidian_shard', 'default:obsidian_shard'},
|
|
{'default:obsidian_shard', 'default:obsidian_shard', 'default:obsidian_shard'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:obsidianbrick 4',
|
|
recipe = {
|
|
{'default:obsidian', 'default:obsidian'},
|
|
{'default:obsidian', 'default:obsidian'}
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:obsidian_block 9',
|
|
recipe = {
|
|
{'default:obsidian', 'default:obsidian', 'default:obsidian'},
|
|
{'default:obsidian', 'default:obsidian', 'default:obsidian'},
|
|
{'default:obsidian', 'default:obsidian', 'default:obsidian'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:stonebrick 4',
|
|
recipe = {
|
|
{'default:stone', 'default:stone'},
|
|
{'default:stone', 'default:stone'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:stone_block 9',
|
|
recipe = {
|
|
{'default:stone', 'default:stone', 'default:stone'},
|
|
{'default:stone', 'default:stone', 'default:stone'},
|
|
{'default:stone', 'default:stone', 'default:stone'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:desert_stonebrick 4',
|
|
recipe = {
|
|
{'default:desert_stone', 'default:desert_stone'},
|
|
{'default:desert_stone', 'default:desert_stone'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:desert_stone_block 9',
|
|
recipe = {
|
|
{'default:desert_stone', 'default:desert_stone', 'default:desert_stone'},
|
|
{'default:desert_stone', 'default:desert_stone', 'default:desert_stone'},
|
|
{'default:desert_stone', 'default:desert_stone', 'default:desert_stone'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:snowblock',
|
|
recipe = {
|
|
{'default:snow', 'default:snow', 'default:snow'},
|
|
{'default:snow', 'default:snow', 'default:snow'},
|
|
{'default:snow', 'default:snow', 'default:snow'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = 'default:snow 9',
|
|
recipe = {
|
|
{'default:snowblock'},
|
|
}
|
|
})
|
|
|
|
--
|
|
-- Crafting (tool repair)
|
|
--
|
|
minetest.register_craft({
|
|
type = "toolrepair",
|
|
additional_wear = -0.02,
|
|
})
|
|
|
|
--
|
|
-- Cooking recipes
|
|
--
|
|
|
|
minetest.register_craft({
|
|
type = "cooking",
|
|
output = "default:glass",
|
|
recipe = "group:sand",
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "cooking",
|
|
output = "default:obsidian_glass",
|
|
recipe = "default:obsidian_shard",
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "cooking",
|
|
output = "default:stone",
|
|
recipe = "default:cobble",
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "cooking",
|
|
output = "default:stone",
|
|
recipe = "default:mossycobble",
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "cooking",
|
|
output = "default:desert_stone",
|
|
recipe = "default:desert_cobble",
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "cooking",
|
|
output = "default:steel_ingot",
|
|
recipe = "default:iron_lump",
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "cooking",
|
|
output = "default:copper_ingot",
|
|
recipe = "default:copper_lump",
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "cooking",
|
|
output = "default:gold_ingot",
|
|
recipe = "default:gold_lump",
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "cooking",
|
|
output = "default:clay_brick",
|
|
recipe = "default:clay_lump",
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = 'cooking',
|
|
output = 'default:gold_ingot',
|
|
recipe = 'default:skeleton_key',
|
|
cooktime = 5,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = 'cooking',
|
|
output = 'default:gold_ingot',
|
|
recipe = 'default:key',
|
|
cooktime = 5,
|
|
})
|
|
|
|
--
|
|
-- Fuels
|
|
--
|
|
|
|
-- Support use of group:tree
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "group:tree",
|
|
burntime = 30,
|
|
})
|
|
|
|
-- Burn time for all woods are in order of wood density,
|
|
-- which is also the order of wood colour darkness:
|
|
-- aspen, pine, apple, acacia, jungle
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:aspen_tree",
|
|
burntime = 22,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:pine_tree",
|
|
burntime = 26,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:tree",
|
|
burntime = 30,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:acacia_tree",
|
|
burntime = 34,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:jungletree",
|
|
burntime = 38,
|
|
})
|
|
|
|
|
|
-- Support use of group:wood
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "group:wood",
|
|
burntime = 7,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:aspen_wood",
|
|
burntime = 5,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:pine_wood",
|
|
burntime = 6,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:wood",
|
|
burntime = 7,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:acacia_wood",
|
|
burntime = 8,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:junglewood",
|
|
burntime = 9,
|
|
})
|
|
|
|
|
|
-- Support use of group:sapling
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "group:sapling",
|
|
burntime = 10,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:aspen_sapling",
|
|
burntime = 8,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:pine_sapling",
|
|
burntime = 9,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:sapling",
|
|
burntime = 10,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:acacia_sapling",
|
|
burntime = 11,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:junglesapling",
|
|
burntime = 12,
|
|
})
|
|
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:fence_aspen_wood",
|
|
burntime = 5,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:fence_pine_wood",
|
|
burntime = 6,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:fence_wood",
|
|
burntime = 7,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:fence_acacia_wood",
|
|
burntime = 8,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:fence_junglewood",
|
|
burntime = 9,
|
|
})
|
|
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:bush_stem",
|
|
burntime = 7,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:acacia_bush_stem",
|
|
burntime = 8,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:junglegrass",
|
|
burntime = 2,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "group:leaves",
|
|
burntime = 1,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:cactus",
|
|
burntime = 15,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:papyrus",
|
|
burntime = 1,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:bookshelf",
|
|
burntime = 30,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:ladder_wood",
|
|
burntime = 2,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:lava_source",
|
|
burntime = 60,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:torch",
|
|
burntime = 4,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:sign_wall_wood",
|
|
burntime = 10,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:chest",
|
|
burntime = 30,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:chest_locked",
|
|
burntime = 30,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:apple",
|
|
burntime = 3,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:coal_lump",
|
|
burntime = 40,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:coalblock",
|
|
burntime = 370,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:grass_1",
|
|
burntime = 2,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:dry_grass_1",
|
|
burntime = 2,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:paper",
|
|
burntime = 1,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:book",
|
|
burntime = 3,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:dry_shrub",
|
|
burntime = 2,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "group:stick",
|
|
burntime = 1,
|
|
})
|
|
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:pick_wood",
|
|
burntime = 6,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:shovel_wood",
|
|
burntime = 4,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:axe_wood",
|
|
burntime = 6,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "default:sword_wood",
|
|
burntime = 5,
|
|
})
|