-- Dinv recipes.lua -- Copyright Duane Robertson (duane@duanerobertson.com), 2019 -- Distributed under the LGPLv2.1 (https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html) local mod = dinv local mod_name = 'dinv' local FLIGHT_PRIV = false local GRAVITY_OFF = { gravity = 0.1 } local GRAVITY_ON = { gravity = 1 } minetest.register_craftitem(mod_name..':bag_medium', { description = 'Medium Bag', inventory_image = 'bags_medium.png', stack_max = 1, _dinv_storage_size = 16, }) minetest.register_craft({ output = mod_name..':bag_medium', recipe = { {'', '', ''}, {'farming:string', mod_name..':bag_small', 'farming:string'}, {'', mod_name..':bag_small', ''}, }, }) minetest.register_craftitem(mod_name..':bag_large', { description = 'Large Bag', inventory_image = 'bags_large.png', stack_max = 1, _dinv_storage_size = 24, }) minetest.register_craft({ output = mod_name..':bag_large', recipe = { {'', '', ''}, {'farming:string', mod_name..':bag_medium', 'farming:string'}, {'', mod_name..':bag_medium', ''}, }, }) minetest.register_craftitem(mod_name..':bag_small', { description = 'Small Bag', inventory_image = 'bags_small.png', stack_max = 1, _dinv_storage_size = 8, }) minetest.register_craft({ output = mod_name..':bag_small', recipe = { {'', 'farming:string', ''}, {'group:wool', 'group:wool', 'group:wool'}, {'group:wool', 'group:wool', 'group:wool'}, }, }) minetest.register_tool(mod_name..':boots', { inventory_image = 'boots1_brown.png', description = 'Sturdy Boots', _dinv_armor = 0.95, _dinv_location = 'feet', _dinv_texture = 'dinv_char_boots.png', }) minetest.register_craft({ output = mod_name..':boots', recipe = { {'', '', ''}, {'', 'farming:string', ''}, {'mobs:leather', 'farming:string', 'mobs:leather'}, }, }) minetest.register_tool(mod_name..':chain_armor', { inventory_image = 'chain_mail1.png', description = 'Chain Mail', _dinv_armor = 0.75, _dinv_location = 'body', _dinv_texture = 'dinv_char_chain_armor.png', }) minetest.register_craft({ output = mod_name..':chain_armor', recipe = { {'', mod_name..':steel_rings', ''}, {mod_name..':steel_rings', 'mobs:leather', mod_name..':steel_rings'}, {mod_name..':steel_rings', 'mobs:leather', mod_name..':steel_rings'}, }, }) minetest.register_craftitem(mod_name..':diamond_plate', { description = 'Diamond Plate', inventory_image = 'dinv_diamond_plate.png', }) minetest.register_craft({ output = mod_name..':diamond_plate', recipe = { {'default:diamond', 'default:diamond', 'default:diamond'}, {'default:diamond', 'default:mese_crystal', 'default:diamond'}, {'default:diamond', 'default:diamond', 'default:diamond'}, }, }) minetest.register_tool(mod_name..':diamond_plate_armor', { inventory_image = 'crystal_plate2.png', description = 'Diamond Plate Mail', _dinv_armor = 0.45, _dinv_location = 'body', _dinv_texture = 'dinv_char_diamond_plate_armor.png', }) minetest.register_craft({ output = mod_name..':diamond_plate_armor', recipe = { {'', mod_name..':diamond_plate', ''}, {mod_name..':diamond_plate', mod_name..':chain_armor', mod_name..':diamond_plate'}, {mod_name..':diamond_plate', 'default:mese', mod_name..':diamond_plate'}, }, }) minetest.register_tool(mod_name..':fur_cloak', { inventory_image = 'dinv_fur_cloak.png', description = 'Fur Cloak', _dinv_armor = 0.98, _dinv_warmth = 2, _dinv_location = 'back', _dinv_texture = 'dinv_char_fur_cloak.png', }) minetest.register_craft({ output = mod_name..':fur_cloak', recipe = { {'', 'mobs:fur', ''}, {'mobs:fur', 'farming:string', 'mobs:fur'}, {'mobs:fur', '', 'mobs:fur'}, }, }) minetest.register_tool(mod_name..':leather_armor', { inventory_image = 'leather_armour1.png', description = 'Leather Armor', _dinv_armor = 0.9, _dinv_location = 'body', _dinv_texture = 'dinv_char_leather_armor.png', }) minetest.register_craft({ output = mod_name..':leather_armor', recipe = { {'', 'mobs:leather', 'mobs:wax'}, {'mobs:leather', 'farming:string', 'mobs:leather'}, {'mobs:leather', 'farming:string', 'mobs:leather'}, }, }) minetest.register_tool(mod_name..':leather_cap', { inventory_image = 'elven_leather_helm.png', description = 'Leather Cap', _dinv_armor = 0.9, _dinv_location = 'head', _dinv_texture = 'dinv_char_leather_helm.png', }) minetest.register_craft({ output = mod_name..':leather_cap', recipe = { {'', 'mobs:leather', ''}, {'', 'mobs:leather', 'mobs:wax'}, {'', 'farming:string', ''}, }, }) minetest.register_tool(mod_name..':plate_armor', { inventory_image = 'plate1.png', description = 'Plate Mail', _dinv_armor = 0.6, _dinv_location = 'body', _dinv_texture = 'dinv_char_plate_armor.png', }) minetest.register_craft({ output = mod_name..':plate_armor', recipe = { {'', mod_name..':steel_plate', ''}, {mod_name..':steel_plate', mod_name..':chain_armor', mod_name..':steel_plate'}, {mod_name..':steel_plate', 'default:steel_ingot', mod_name..':steel_plate'}, }, }) minetest.register_tool(mod_name..':steel_helmet', { inventory_image = 'helmet1.png', description = 'Steel Helmet', _dinv_armor = 0.8, _dinv_location = 'head', _dinv_texture = 'dinv_char_steel_helm.png', }) minetest.register_craft({ output = mod_name..':steel_helmet', recipe = { {'', 'default:steel_ingot', ''}, {'default:steel_ingot', 'mobs:leather', 'default:steel_ingot'}, {'', 'mobs:fur', ''}, }, }) minetest.register_craftitem(mod_name..':steel_plate', { description = 'Steel Plate', inventory_image = 'dinv_steel_plate.png', }) minetest.register_craft({ output = mod_name..':steel_plate', recipe = { {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, {'default:steel_ingot', 'default:coal_lump', 'default:steel_ingot'}, {'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'}, }, }) minetest.register_craftitem(mod_name..':steel_rings', { description = 'Steel Rings', inventory_image = 'dinv_steel_rings.png', }) minetest.register_craft({ output = mod_name..':steel_rings', recipe = { {'', '', ''}, {'default:steel_ingot', 'default:coal_lump', 'default:steel_ingot'}, {'', 'default:steel_ingot', ''}, }, }) minetest.register_tool(mod_name..':steel_shield', { inventory_image = 'lshield_dd_dk.png', description = 'Steel Shield', _dinv_armor = 0.7, _dinv_location = 'arm', _dinv_texture = 'dinv_char_steel_shield.png', }) minetest.register_craft({ output = mod_name..':steel_shield', recipe = { {'', mod_name..':steel_plate', ''}, { mod_name..':steel_plate', 'mobs:leather', mod_name..':steel_plate'}, {'', mod_name..':steel_plate', ''}, }, }) minetest.register_tool(mod_name..':wood_shield', { inventory_image = 'buckler1.png', description = 'Wooden Shield', _dinv_armor = 0.8, _dinv_location = 'arm', _dinv_texture = 'dinv_char_wood_shield.png', }) minetest.register_craft({ output = mod_name..':wood_shield', recipe = { {'', 'group:wood', ''}, {'group:wood', 'mobs:leather', 'group:wood'}, {'', 'group:wood', ''}, }, }) minetest.register_tool(mod_name..':ring_breath', { inventory_image = 'coral.png', description = 'Ring of Breath', _dinv_wears_out = 91, -- 1 hour _dinv_while_worn = function(player) player:set_breath(11) end, }) minetest.register_craft({ type = 'shapeless', output = mod_name..':ring_breath', recipe = { mod.magic_ingredient, 'default:coral_skeleton', 'default:gold_ingot', }, }) if FLIGHT_PRIV then minetest.register_tool(mod_name..':ring_flight', { inventory_image = 'glass.png', description = 'Ring of Flight', _dinv_wears_out = 546, -- 10 minutes _dinv_on_wear = function(player) mod.modify_privs(player, { fly = true, noclip = 0 }) end, _dinv_on_remove = function(player) mod.modify_privs(player, { fly = 0, noclip = 0 }) end, }) end minetest.register_tool(mod_name..':ring_leap', { inventory_image = 'tiger_eye.png', description = 'Ring of Leaping', _dinv_wears_out = 273, -- 20 minutes _dinv_on_wear = function(player) player:set_physics_override(GRAVITY_OFF) end, _dinv_on_remove = function(player) player:set_physics_override(GRAVITY_ON) end, }) minetest.register_craft({ type = 'shapeless', output = mod_name..':ring_leap', recipe = { mod.magic_ingredient, 'flowers:mushroom_red', 'default:gold_ingot', }, }) minetest.register_tool(mod_name..':ring_protection_9', { inventory_image = 'anvil.png', description = 'Ring of Protection', _dinv_location = 'protection_finger', -- Only one per person! _dinv_armor = 0.9, }) minetest.register_craft({ type = 'shapeless', output = mod_name..':ring_protection_9', recipe = { mod.magic_ingredient, 'default:diamond', 'default:gold_ingot', }, }) local trashcan_nodebox = { type = 'fixed', fixed = { { -0.35, -0.5, -0.35, 0.35, 0.5, 0.35 }, } } minetest.register_node(mod_name..':trashcan', { description = 'Trash', tiles = { 'default_wood.png', 'default_wood.png', 'default_wood.png^recycle.png', }, drawtype = 'nodebox', node_box = trashcan_nodebox, groups = { choppy = 1, oddly_breakable_by_hand = 1 }, sounds = default.node_sound_wood_defaults(), on_rightclick = mod.trashcan_rightclick, on_construct = mod.trashcan_construct, can_dig = mod.trashcan_can_dig, }) minetest.register_craft({ output = mod_name..':trashcan', recipe = { {'', 'group:leaves', ''}, {'', 'group:wood', ''}, {'', 'group:wood', ''}, }, }) minetest.register_chatcommand('killunk', { params = '', description = 'Remove "unknown items"', privs = { }, func = function(player_name, param) if not player_name then return end local player = minetest.get_player_by_name(player_name) if not player then return end local pos = player:get_pos() if not pos then return end local pinv = player:get_inventory() if not pinv then return end local main_size = pinv:get_size('main') for i = 1, main_size do local st = pinv:get_stack('main', i) local name = st:get_name() if not minetest.registered_items[name] then minetest.chat_send_player(player_name, 'Removing ' .. name) pinv:set_stack('main', i, nil) end end end, })