--minetest.register_alias("darkage:box", "castle:crate") --minetest.register_alias("cottages:straw", "farming:straw") --minetest.register_alias("castle:straw", "farming:straw") --minetest.register_alias("darkage:straw", "farming:straw") --minetest.register_alias("cottages:straw_bale", "castle:bound_straw") --minetest.register_alias("darkage:straw_bale", "castle:bound_straw") --minetest.register_alias("darkage:lamp", "castle:street_light") minetest.register_alias("castle:pavement_brick", "castle:pavement") --[[ minetest.register_node("castle:anvil",{ drawtype = "nodebox", description = "Anvil", tiles = {"castle_steel.png"}, groups = {cracky=2,falling_node=1}, paramtype = "light", paramtype2 = "facedir", node_box = { type = "fixed", fixed = { {-0.500000,-0.500000,-0.500000,0.500000,-0.250000,0.500000}, {-0.187500,-0.500000,-0.375000,0.187500,0.312500,0.375000}, {-0.375000,-0.500000,-0.437500,0.375000,-0.125000,0.437500}, {-0.500000,0.312500,-0.500000,0.500000,0.500000,0.500000}, {-0.375000,0.187500,-0.437500,0.375000,0.425000,0.437500}, }, }, }) minetest.register_craft({ output = "castle:anvil", recipe = { {"default:steel_ingot","default:steel_ingot","default:steel_ingot"}, {"","default:steel_ingot", ""}, {"default:steel_ingot", "default:steel_ingot","default:steel_ingot"}, } }) minetest.register_node("castle:workbench",{ description = "Workbench", tiles = {"castle_workbench_top.png", "default_wood.png", "castle_workbench_1.png", "castle_workbench_1.png", "castle_workbench_2.png", "castle_workbench_2.png"}, paramtype2 = "facedir", paramtype = "light", groups = {choppy=2,oddly_breakable_by_hand=2,flammable=2}, drawtype = "normal", on_construct = function ( pos ) local meta = minetest.get_meta( pos ) meta:set_string( 'formspec', 'size[10,10;]' .. 'label[1,0;Source Material]' .. 'list[context;src;1,1;2,4;]' .. 'label[4,0;Recipe to Use]' .. 'list[context;rec;4,1;3,3;]' .. 'label[7.5,0;Craft Output]' .. 'list[context;dst;8,1;1,4;]' .. 'list[current_player;main;1,6;8,4;]' ) meta:set_string( 'infotext', 'Workbench' ) local inv = meta:get_inventory() inv:set_size( 'src', 2 * 4 ) inv:set_size( 'rec', 3 * 3 ) inv:set_size( 'dst', 1 * 4 ) end, can_dig = function(pos,player) local meta = minetest.get_meta(pos); local inv = meta:get_inventory() return inv:is_empty("main") end, on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) minetest.log("action", player:get_player_name().. " moves stuff in workbench at "..minetest.pos_to_string(pos)) end, on_metadata_inventory_put = function(pos, listname, index, stack, player) minetest.log("action", player:get_player_name().. " moves stuff to workbench at "..minetest.pos_to_string(pos)) end, on_metadata_inventory_take = function(pos, listname, index, stack, player) minetest.log("action", player:get_player_name().. " takes stuff from workbench at "..minetest.pos_to_string(pos)) end, }) local get_recipe = function ( inv ) local result, needed, input needed = inv:get_list( 'rec' ) result, input = minetest.get_craft_result( { method = 'normal', width = 3, items = needed } ) local totalneed = {} if result.item:is_empty() then result = nil else result = result.item for _, item in ipairs( needed ) do if item ~= nil and not item:is_empty() and not inv:contains_item( 'src', item ) then result = nil break end if item ~= nil and not item:is_empty() then if totalneed[item:get_name()] == nil then totalneed[item:get_name()] = 1 else totalneed[item:get_name()] = totalneed[item:get_name()] + 1 end end end for name, number in pairs( totalneed ) do local totallist = inv:get_list( 'src' ) for i, srcitem in pairs( totallist ) do if srcitem:get_name() == name then local taken = srcitem:take_item( number ) number = number - taken:get_count() totallist[i] = srcitem end if number <= 0 then break end end if number > 0 then result = nil break end end end return needed, input, result end minetest.register_abm( { nodenames = { 'castle:workbench' }, interval = 5, chance = 1, action = function ( pos, node ) local meta = minetest.get_meta( pos ) local inv = meta:get_inventory() local cresult, newinput, needed if not inv:is_empty( 'src' ) then -- Check for a valid recipe and sufficient resources to craft it needed, newinput, result = get_recipe( inv ) if result ~= nil and inv:room_for_item( 'dst', result ) then inv:add_item( 'dst', result ) for i, item in pairs( needed ) do if item ~= nil and item ~= '' then inv:remove_item( 'src', ItemStack( item ) ) end if newinput[i] ~= nil and not newinput[i]:is_empty() then inv:add_item( 'src', newinput[i] ) end end end end end } ) local function has_locked_chest_privilege(meta, player) if player:get_player_name() ~= meta:get_string("owner") then return false end return true end minetest.register_craft({ output = "castle:workbench", recipe = { {"default:steel_ingot","default:steel_ingot","default:steel_ingot"}, {"default:wood", "default:wood","default:steel_ingot"}, {"default:tree", "default:tree","default:steel_ingot"}, } }) ]] minetest.register_node("castle:dungeon_stone", { description = "Dungeon Stone", drawtype = "normal", tiles = {"castle_dungeon_stone.png"}, groups = {cracky=2}, paramtype = "light", }) minetest.register_craft({ output = "castle:dungeon_stone", recipe = { {"default:stonebrick", "default:obsidian"}, } }) minetest.register_craft({ output = "castle:dungeon_stone", recipe = { {"default:stonebrick"}, {"default:obsidian"}, } }) --[[ minetest.register_node("castle:crate", { description = "Crate", drawtype = "normal", tiles = {"castle_crate_top.png","castle_crate_top.png","castle_crate.png","castle_crate.png","castle_crate.png","castle_crate.png"}, groups = {choppy=3}, paramtype = "light", on_construct = function(pos) local meta = minetest.get_meta(pos) meta:set_string("formspec", "size[8,9]".. "list[current_name;main;0,1;8,4;]".. "list[current_player;main;0,5;8,4;]") meta:set_string("infotext", "Crate") local inv = meta:get_inventory() inv:set_size("main", 8*3) end, can_dig = function(pos,player) local meta = minetest.get_meta(pos); local inv = meta:get_inventory() return inv:is_empty("main") end, on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) minetest.log("action", player:get_player_name().. " moves stuff in crate at "..minetest.pos_to_string(pos)) end, on_metadata_inventory_put = function(pos, listname, index, stack, player) minetest.log("action", player:get_player_name().. " moves stuff to crate at "..minetest.pos_to_string(pos)) end, on_metadata_inventory_take = function(pos, listname, index, stack, player) minetest.log("action", player:get_player_name().. " takes stuff from crate at "..minetest.pos_to_string(pos)) end, }) local function has_locked_chest_privilege(meta, player) if player:get_player_name() ~= meta:get_string("owner") then return false end return true end minetest.register_craft({ output = "castle:crate", recipe = { {"default:wood", "default:wood", "default:wood"}, {"default:wood", "default:steel_ingot", "default:wood"}, } }) minetest.register_node("castle:bound_straw", { description = "Bound Straw", drawtype = "normal", tiles = {"castle_straw_bale.png"}, groups = {choppy=4, flammable=1, oddly_breakable_by_hand=3}, paramtype = "light", }) minetest.register_craft({ output = "castle:bound_straw", recipe = { {"castle:straw", "castle:ropes"}, } }) stairs.register_stair_and_slab("straw", "farming:straw", {choppy=3, flammable=1, oddly_breakable_by_hand=3}, {"farming_straw.png"}, "Castle Straw Stair", "Castle Straw Slab", default.node_sound_leaves_defaults() ) ]] minetest.register_node("castle:pavement", { description = "Paving Stone", drawtype = "normal", tiles = {"castle_pavement_brick.png"}, groups = {cracky=2}, paramtype = "light", sounds = default.node_sound_stone_defaults(), }) minetest.register_craft({ output = "castle:pavement 4", recipe = { {"default:stone", "default:cobble"}, {"default:cobble", "default:stone"}, } }) --[[ minetest.register_node("castle:light",{ drawtype = "glasslike", description = "Light Block", sunlight_propagates = true, light_source = 14, tiles = {"castle_street_light.png"}, groups = {cracky=2}, paramtype = "light", }) minetest.register_craft({ output = "castle:light", recipe = { {"default:stick", "default:glass", "default:stick"}, {"default:glass", "default:torch", "default:glass"}, {"default:stick", "default:glass", "default:stick"}, } }) minetest.register_node("castle:light2",{ drawtype = "glasslike", description = "Light Block", sunlight_propagates = true, light_source = 14, tiles = {"castle_street_light2.png"}, groups = {cracky=2}, paramtype = "light", }) ]] minetest.register_node( "castle:chandelier", { drawtype = "plantlike", description = "Chandelier", paramtype = "light", wield_image = "castle_chandelier_wield.png", inventory_image = "castle_chandelier_wield.png", groups = {cracky=2}, sounds = default.node_sound_glass_defaults(), sunlight_propagates = true, light_source = 14, tiles = { { name = "castle_chandelier.png", animation = { type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 1.0 }, }, }, selection_box = { type = "fixed", fixed = { {0.35,-0.375,0.35,-0.35,0.5,-0.35}, }, }, }) --[[ minetest.register_node( "castle:chandelier_chain", { drawtype = "plantlike", description = "Chandelier Chain", paramtype = "light", wield_image = "castle_chandelier_chain.png", inventory_image = "castle_chandelier_chain.png", groups = {cracky=2}, sounds = default.node_sound_glass_defaults(), sunlight_propagates = true, tiles = {"castle_chandelier_chain.png"}, selection_box = { type = "fixed", fixed = { {0.1,-0.5,0.1,-0.1,0.5,-0.1}, }, }, }) ]]