123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- minetest.register_craftitem("bitumen:blueprint_paper", {
- description = "Blueprint Paper",
- stack_max = 99,
- inventory_image = "default_paper.png^[colorize:blue:120",
- groups = {flammable = 3},
- })
- minetest.register_craftitem("bitumen:blueprint_book", {
- description = "Blueprint Paper",
- stack_max = 99,
- inventory_image = "default_book.png^[colorize:blue:120",
- groups = {flammable = 3},
- })
- bitumen.registered_blueprints = {
- -- ["bitumen:cement_mixer_blueprint"] = 1,
- }
- -- registers the blueprint item, adds it to the bookshelf, and registers the constructor craft recipe
- bitumen.register_blueprint = function(def)
- local name = def.name.."_blueprint"
-
- local parent_def = minetest.registered_nodes[def.name]
- if parent_def == nil then
- print("Warning: parent node not registered yet. Place bitumen.register_blueprint call after node registration.")
- return
- end
-
- minetest.register_craftitem(name, {
- description = parent_def.description.." Blueprint",
- stack_max = 1,
- inventory_image = parent_def.inventory_image .. "^bitumen_blueprint.png",
- groups = {flammable = 3},
- })
- if not def.no_constructor_craft then
- -- the actual constructor must be registered elsewhere
- minetest.register_craft({
- output = def.name..'_constructor',
- recipe = {
- {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
- {'default:steel_ingot', name, 'default:steel_ingot'},
- {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
- }
- })
- end
-
- bitumen.registered_blueprints[name] = def
- end
- local blueprint_bookshelf_formspec =
- "size[8,8;]" ..
- default.gui_bg ..
- default.gui_bg_img ..
- default.gui_slots ..
- "list[context;blueprints;0,0.3;8,3;]" ..
- "list[current_player;main;0,3.85;8,1;]" ..
- "list[current_player;main;0,5.08;8,3;8]" ..
- "listring[context;blueprints]" ..
- "listring[current_player;main]" ..
- default.get_hotbar_bg(0,3.85)
- minetest.register_node("bitumen:blueprint_bookshelf", {
- description = "Blueprint Bookshelf",
- tiles = {"default_junglewood.png", "default_junglewood.png", "default_junglewood.png",
- "default_junglewood.png", "default_bookshelf.png^[colorize:blue:120", "default_junglewood.png"},
- paramtype2 = "facedir",
- is_ground_content = false,
- groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3},
- sounds = default.node_sound_wood_defaults(),
- stack_max = 1,
- on_construct = function(pos)
- local meta = minetest.get_meta(pos)
- meta:set_string("formspec", blueprint_bookshelf_formspec)
- local inv = meta:get_inventory()
- inv:set_size("blueprints", 8 * 3)
-
-
- -- fill in the known blueprints
- local list = {}
- for name,def in pairs(bitumen.registered_blueprints) do
- table.insert(list, name)
- end
-
- inv:set_list("blueprints", list)
-
- end,
- allow_metadata_inventory_put = function(pos, listname, index, stack)
- return 0
- end,
- allow_metadata_inventory_move = function(pos, listname, index, stack)
- return 0
- end,
- on_metadata_inventory_take = function(pos, listname, index, stack, player)
- -- print(" -- "..listname.. " " ..index.." "..dump(stack))
- local meta = minetest.get_meta(pos)
- local inv = meta:get_inventory(meta)
- inv:set_stack(listname, index, stack)
- end,
- })
|