diff --git a/door_nodes.lua b/door_nodes.lua deleted file mode 100644 index 5cfc6b7d..00000000 --- a/door_nodes.lua +++ /dev/null @@ -1,226 +0,0 @@ --- Node definitions for Homedecor doors - --- Boilerplate to support localized strings if intllib mod is installed. -local S -if (minetest.get_modpath("intllib")) then - dofile(minetest.get_modpath("intllib").."/intllib.lua") - S = intllib.Getter(minetest.get_current_modname()) -else - S = function ( s ) return s end -end - -local sides = {"left", "right"} -local rsides = {"right", "left"} - --- cheater's method of detecting if default doors are right-click-to-open: --- default.generate_ore() was exposed to the modding API one day prior to the --- right-click thing. - -local use_rightclick = type(default.generate_ore) - -for i in ipairs(sides) do - local side = sides[i] - local rside = rsides[i] - - for j in ipairs(homedecor_door_models) do - local doorname = homedecor_door_models[j][1] - local doordesc = homedecor_door_models[j][2] - local nodeboxes_top = nil - local nodeboxes_bottom = nil - - if side == "left" then - nodeboxes_top = homedecor_door_models[j][3] - nodeboxes_bottomtom = homedecor_door_models[j][4] - else - nodeboxes_top = homedecor_door_models[j][5] - nodeboxes_bottomtom = homedecor_door_models[j][6] - end - - local tiles_top = { - "homedecor_door_"..doorname.."_tb.png", - "homedecor_door_"..doorname.."_tb.png", - "homedecor_door_"..doorname.."_lrt.png", - "homedecor_door_"..doorname.."_lrt.png", - "homedecor_door_"..doorname.."_"..rside.."_top.png", - "homedecor_door_"..doorname.."_"..side.."_top.png", - } - - local tiles_bottom = { - "homedecor_door_"..doorname.."_tb.png", - "homedecor_door_"..doorname.."_tb.png", - "homedecor_door_"..doorname.."_lrb.png", - "homedecor_door_"..doorname.."_lrb.png", - "homedecor_door_"..doorname.."_"..rside.."_bottom.png", - "homedecor_door_"..doorname.."_"..side.."_bottom.png", - } - - local selectboxes_top = { - type = "fixed", - fixed = { -0.5, -1.5, 6/16, 0.5, 0.5, 8/16} - } - - local selectboxes_bottom = { - type = "fixed", - fixed = { -0.5, -0.5, 6/16, 0.5, 1.5, 8/16} - } - - if use_rightclick == nil then -- register the version that uses on_punch - - minetest.register_node("homedecor:door_"..doorname.."_top_"..side, { - description = doordesc.." "..S("(Top Half, %s-opening)"):format(side), - drawtype = "nodebox", - tiles = tiles_top, - paramtype = "light", - paramtype2 = "facedir", - groups = {snappy=3, not_in_creative_inventory=1}, - sounds = default.node_sound_wood_defaults(), - walkable = true, - selection_box = selectboxes_top, - node_box = { - type = "fixed", - fixed = nodeboxes_top - }, - drop = "homedecor:door_"..doorname.."_bottom_"..side, - after_dig_node = function(pos, oldnode, oldmetadata, digger) - if minetest.env:get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "homedecor:door_"..doorname.."_bottom_"..side then - minetest.env:remove_node({x=pos.x, y=pos.y-1, z=pos.z}) - end - end, - on_punch = function(pos, node, puncher) - homedecor_flip_door({x=pos.x, y=pos.y-1, z=pos.z}, node, puncher, doorname, side) - end - }) - - minetest.register_node("homedecor:door_"..doorname.."_bottom_"..side, { - description = doordesc.." "..S("(%s-opening)"):format(side), - drawtype = "nodebox", - tiles = tiles_bottom, - inventory_image = "homedecor_door_"..doorname.."_"..side.."_inv.png", - paramtype = "light", - paramtype2 = "facedir", - groups = {snappy=3}, - sounds = default.node_sound_wood_defaults(), - walkable = true, - selection_box = selectboxes_bottom, - node_box = { - type = "fixed", - fixed = nodeboxes_bottomtom - }, - after_dig_node = function(pos, oldnode, oldmetadata, digger) - if minetest.env:get_node({x=pos.x, y=pos.y+1, z=pos.z}).name == "homedecor:door_"..doorname.."_top_"..side then - minetest.env:remove_node({x=pos.x, y=pos.y+1, z=pos.z}) - end - end, - on_punch = function(pos, node, puncher) - homedecor_flip_door(pos, node, puncher, doorname, side) - end, - on_place = function(itemstack, placer, pointed_thing) - return homedecor_place_door(itemstack, placer, pointed_thing, doorname, side) - end, - }) - - else -- register the version that uses on_rightclick - - minetest.register_node("homedecor:door_"..doorname.."_top_"..side, { - description = doordesc.." "..S("(Top Half, %s-opening)"):format(side), - drawtype = "nodebox", - tiles = tiles_top, - paramtype = "light", - paramtype2 = "facedir", - groups = {snappy=3, not_in_creative_inventory=1}, - sounds = default.node_sound_wood_defaults(), - walkable = true, - selection_box = selectboxes_top, - node_box = { - type = "fixed", - fixed = nodeboxes_top - }, - drop = "homedecor:door_"..doorname.."_bottom_"..side, - after_dig_node = function(pos, oldnode, oldmetadata, digger) - if minetest.env:get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "homedecor:door_"..doorname.."_bottom_"..side then - minetest.env:remove_node({x=pos.x, y=pos.y-1, z=pos.z}) - end - end, - on_rightclick = function(pos, node, clicker) - homedecor_flip_door({x=pos.x, y=pos.y-1, z=pos.z}, node, clicker, doorname, side) - end - }) - - minetest.register_node("homedecor:door_"..doorname.."_bottom_"..side, { - description = doordesc.." "..S("(%s-opening)"):format(side), - drawtype = "nodebox", - tiles = tiles_bottom, - inventory_image = "homedecor_door_"..doorname.."_"..side.."_inv.png", - paramtype = "light", - paramtype2 = "facedir", - groups = {snappy=3}, - sounds = default.node_sound_wood_defaults(), - walkable = true, - selection_box = selectboxes_bottom, - node_box = { - type = "fixed", - fixed = nodeboxes_bottomtom - }, - after_dig_node = function(pos, oldnode, oldmetadata, digger) - if minetest.env:get_node({x=pos.x, y=pos.y+1, z=pos.z}).name == "homedecor:door_"..doorname.."_top_"..side then - minetest.env:remove_node({x=pos.x, y=pos.y+1, z=pos.z}) - end - end, - on_place = function(itemstack, placer, pointed_thing) - - local node=minetest.env:get_node(pointed_thing.under) - if not minetest.registered_nodes[node.name] - or not minetest.registered_nodes[node.name].on_rightclick then - return homedecor_place_door(itemstack, placer, pointed_thing, doorname, side) - else - minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer) - end - end, - on_rightclick = function(pos, node, clicker) - homedecor_flip_door(pos, node, clicker, doorname, side) - end - }) - end - end -end - -function homedecor_place_door(itemstack, placer, pointed_thing, name, side) - local pos = pointed_thing.above - if homedecor_node_is_owned(pointed_thing.under, placer) == false then - - local nodename = minetest.env:get_node(pointed_thing.under).name - local field = nil - - if minetest.registered_nodes[nodename] then field = minetest.registered_nodes[nodename].on_rightclick end - - if field == nil then - fdir = minetest.dir_to_facedir(placer:get_look_dir()) - if minetest.env:get_node({x=pos.x, y=pos.y+1, z=pos.z}).name ~= "air" then - minetest.chat_send_player( placer:get_player_name(), S('Not enough vertical space to place a door!') ) - return - end - minetest.env:add_node({x=pos.x, y=pos.y+1, z=pos.z}, { name = "homedecor:door_"..name.."_top_"..side, param2=fdir}) - minetest.env:add_node(pos, { name = "homedecor:door_"..name.."_bottom_"..side, param2=fdir}) - itemstack:take_item() - return itemstack - end - return minetest.item_place(itemstack, placer, pointed_thing) - end -end - -function homedecor_flip_door(pos, node, player, name, side) - local rside = nil - local nfdir = nil - if side == "left" then - rside = "right" - nfdir=node.param2 - 1 - if nfdir < 0 then nfdir = 3 end - else - rside = "left" - nfdir=node.param2 + 1 - if nfdir > 3 then nfdir = 0 end - end - minetest.env:add_node({x=pos.x, y=pos.y+1, z=pos.z}, { name = "homedecor:door_"..name.."_top_"..rside, param2=nfdir}) - minetest.env:add_node(pos, { name = "homedecor:door_"..name.."_bottom_"..rside, param2=nfdir}) -end - diff --git a/doors_and_gates.lua b/doors_and_gates.lua new file mode 100644 index 00000000..118881c7 --- /dev/null +++ b/doors_and_gates.lua @@ -0,0 +1,294 @@ +-- Node definitions for Homedecor doors + +-- Boilerplate to support localized strings if intllib mod is installed. +local S +if (minetest.get_modpath("intllib")) then + dofile(minetest.get_modpath("intllib").."/intllib.lua") + S = intllib.Getter(minetest.get_current_modname()) +else + S = function ( s ) return s end +end + +-- doors + +local sides = {"left", "right"} +local rsides = {"right", "left"} + +for i in ipairs(sides) do + local side = sides[i] + local rside = rsides[i] + + for j in ipairs(homedecor_door_models) do + local doorname = homedecor_door_models[j][1] + local doordesc = homedecor_door_models[j][2] + local nodeboxes_top = nil + local nodeboxes_bottom = nil + + if side == "left" then + nodeboxes_top = homedecor_door_models[j][3] + nodeboxes_bottomtom = homedecor_door_models[j][4] + else + nodeboxes_top = homedecor_door_models[j][5] + nodeboxes_bottomtom = homedecor_door_models[j][6] + end + + local tiles_top = { + "homedecor_door_"..doorname.."_tb.png", + "homedecor_door_"..doorname.."_tb.png", + "homedecor_door_"..doorname.."_lrt.png", + "homedecor_door_"..doorname.."_lrt.png", + "homedecor_door_"..doorname.."_"..rside.."_top.png", + "homedecor_door_"..doorname.."_"..side.."_top.png", + } + + local tiles_bottom = { + "homedecor_door_"..doorname.."_tb.png", + "homedecor_door_"..doorname.."_tb.png", + "homedecor_door_"..doorname.."_lrb.png", + "homedecor_door_"..doorname.."_lrb.png", + "homedecor_door_"..doorname.."_"..rside.."_bottom.png", + "homedecor_door_"..doorname.."_"..side.."_bottom.png", + } + + local selectboxes_top = { + type = "fixed", + fixed = { -0.5, -1.5, 6/16, 0.5, 0.5, 8/16} + } + + local selectboxes_bottom = { + type = "fixed", + fixed = { -0.5, -0.5, 6/16, 0.5, 1.5, 8/16} + } + + minetest.register_node("homedecor:door_"..doorname.."_top_"..side, { + description = doordesc.." "..S("(Top Half, %s-opening)"):format(side), + drawtype = "nodebox", + tiles = tiles_top, + paramtype = "light", + paramtype2 = "facedir", + groups = {snappy=3, not_in_creative_inventory=1}, + sounds = default.node_sound_wood_defaults(), + walkable = true, + selection_box = selectboxes_top, + node_box = { + type = "fixed", + fixed = nodeboxes_top + }, + drop = "homedecor:door_"..doorname.."_bottom_"..side, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + if minetest.env:get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "homedecor:door_"..doorname.."_bottom_"..side then + minetest.env:remove_node({x=pos.x, y=pos.y-1, z=pos.z}) + end + end, + on_rightclick = function(pos, node, clicker) + homedecor_flip_door({x=pos.x, y=pos.y-1, z=pos.z}, node, clicker, doorname, side) + end + }) + + minetest.register_node("homedecor:door_"..doorname.."_bottom_"..side, { + description = doordesc.." "..S("(%s-opening)"):format(side), + drawtype = "nodebox", + tiles = tiles_bottom, + inventory_image = "homedecor_door_"..doorname.."_"..side.."_inv.png", + paramtype = "light", + paramtype2 = "facedir", + groups = {snappy=3}, + sounds = default.node_sound_wood_defaults(), + walkable = true, + selection_box = selectboxes_bottom, + node_box = { + type = "fixed", + fixed = nodeboxes_bottomtom + }, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + if minetest.env:get_node({x=pos.x, y=pos.y+1, z=pos.z}).name == "homedecor:door_"..doorname.."_top_"..side then + minetest.env:remove_node({x=pos.x, y=pos.y+1, z=pos.z}) + end + end, + on_place = function(itemstack, placer, pointed_thing) + + local node=minetest.env:get_node(pointed_thing.under) + if not minetest.registered_nodes[node.name] + or not minetest.registered_nodes[node.name].on_rightclick then + return homedecor_place_door(itemstack, placer, pointed_thing, doorname, side) + else + minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer) + end + end, + on_rightclick = function(pos, node, clicker) + homedecor_flip_door(pos, node, clicker, doorname, side) + end + }) + end +end + +-- Gates + +local gates_list = { "picket", "picket_white", "barbed_wire", "chainlink" } +local gate_names = { "Unpainted Picket", "White Picket", "Barbed Wire", "Chainlink" } + +local gate_models_closed = { + {{ -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }}, + + {{ -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 }}, + + {{ -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 }, -- left post + { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post + { -8/16, 7/16, 13/32, 8/16, 8/16, 15/32 }, -- top piece + { -8/16, -8/16, 13/32, 8/16, -7/16, 15/32 }, -- bottom piece + { -6/16, -8/16, 7/16, 6/16, 8/16, 7/16 }}, -- the wire + + {{ -8/16, -8/16, 6/16, -7/16, 8/16, 8/16 }, -- left post + { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post + { -8/16, 7/16, 13/32, 8/16, 8/16, 15/32 }, -- top piece + { -8/16, -8/16, 13/32, 8/16, -7/16, 15/32 }, -- bottom piece + { -8/16, -8/16, 7/16, 8/16, 8/16, 7/16 }, -- the chainlink itself + { -8/16, -3/16, 6/16, -6/16, 3/16, 8/16 }} -- the lump representing the lock +} + +local gate_models_open = { + {{ 0.498, -0.5, -0.5, 0.498, 0.5, 0.5 }}, + + {{ 0.498, -0.5, -0.5, 0.498, 0.5, 0.5 }}, + + {{ 6/16, -8/16, -8/16, 8/16, 8/16, -6/16 }, -- left post + { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post + { 13/32, 7/16, -8/16, 15/32, 8/16, 8/16 }, -- top piece + { 13/32, -8/16, -8/16, 15/32, -7/16, 8/16 }, -- bottom piece + { 7/16, -8/16, -6/16, 7/16, 8/16, 6/16 }}, -- the wire + + {{ 6/16, -8/16, -8/16, 8/16, 8/16, -7/16 }, -- left post + { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post + { 13/32, 7/16, -8/16, 15/32, 8/16, 8/16 }, -- top piece + { 13/32, -8/16, -8/16, 15/32, -7/16, 8/16 }, -- bottom piece + { 7/16, -8/16, -8/16, 7/16, 8/16, 8/16 }, -- the chainlink itself + { 6/16, -3/16, -8/16, 8/16, 3/16, -6/16 }} -- the lump representing the lock +} + +for i in ipairs(gates_list) do + + local gate=gates_list[i] + + minetest.register_node("homedecor:gate_"..gate.."_closed", { + drawtype = "nodebox", + description = S(gate_names[i].." Fence Gate"), + tiles = { + "homedecor_gate_"..gate.."_top.png", + "homedecor_gate_"..gate.."_bottom.png", + "homedecor_gate_"..gate.."_left.png", + "homedecor_gate_"..gate.."_right.png", + "homedecor_gate_"..gate.."_back.png", + "homedecor_gate_"..gate.."_front.png" + }, + paramtype = "light", + is_ground_content = true, + groups = {snappy=3}, + sounds = default.node_sound_wood_defaults(), + walkable = true, + paramtype2 = "facedir", + selection_box = { + type = "fixed", + fixed = { -0.5, -0.5, 0.4, 0.5, 0.5, 0.5 } + }, + node_box = { + type = "fixed", + fixed = gate_models_closed[i] + }, + on_rightclick = function(pos, node, clicker) + homedecor_flip_gate(pos, node, clicker, gate, "closed") + end + }) + + minetest.register_node("homedecor:gate_"..gate.."_open", { + drawtype = "nodebox", + description = S(gate_names[i].." Fence Gate"), + tiles = { + "homedecor_gate_"..gate.."_top.png", + "homedecor_gate_"..gate.."_bottom.png", + "homedecor_gate_"..gate.."_front.png", + "homedecor_gate_"..gate.."_back.png", + "homedecor_gate_"..gate.."_left.png", + "homedecor_gate_"..gate.."_right.png" + }, + paramtype = "light", + is_ground_content = true, + groups = {snappy=3, not_in_creative_inventory=1}, + sounds = default.node_sound_wood_defaults(), + walkable = true, + paramtype2 = "facedir", + selection_box = { + type = "fixed", + fixed ={ 0.4, -0.5, -0.5, 0.5, 0.5, 0.5 } + }, + node_box = { + type = "fixed", + fixed = gate_models_open[i] + }, + drop = "homedecor:gate_"..gate.."_closed", + on_rightclick = function(pos, node, clicker) + homedecor_flip_gate(pos, node, clicker, gate, "open") + end + }) + +end + +minetest.register_alias("homedecor:fence_barbed_wire_gate_open", "homedecor:gate_chainlink_open") +minetest.register_alias("homedecor:fence_barbed_wire_gate_closed", "homedecor:gate_chainlink_closed") +minetest.register_alias("homedecor:fence_chainlink_gate_open", "homedecor:gate_barbed_wire_open") +minetest.register_alias("homedecor:fence_chainlink_gate_closed", "homedecor:gate_barbed_wire_closed") +minetest.register_alias("homedecor:fence_picket_gate_open", "homedecor:gate_picket_open") +minetest.register_alias("homedecor:fence_picket_gate_closed", "homedecor:gate_picket_closed") +minetest.register_alias("homedecor:fence_picket_gate_white_open", "homedecor:gate_picket_white_open") +minetest.register_alias("homedecor:fence_picket_gate_white_closed", "homedecor:gate_picket_white_closed") + +----- helper functions + +function homedecor_place_door(itemstack, placer, pointed_thing, name, side) + local pos = pointed_thing.above + if homedecor_node_is_owned(pointed_thing.under, placer) == false then + + local nodename = minetest.env:get_node(pointed_thing.under).name + local field = nil + + if minetest.registered_nodes[nodename] then field = minetest.registered_nodes[nodename].on_rightclick end + + if field == nil then + fdir = minetest.dir_to_facedir(placer:get_look_dir()) + if minetest.env:get_node({x=pos.x, y=pos.y+1, z=pos.z}).name ~= "air" then + minetest.chat_send_player( placer:get_player_name(), S('Not enough vertical space to place a door!') ) + return + end + minetest.env:add_node({x=pos.x, y=pos.y+1, z=pos.z}, { name = "homedecor:door_"..name.."_top_"..side, param2=fdir}) + minetest.env:add_node(pos, { name = "homedecor:door_"..name.."_bottom_"..side, param2=fdir}) + itemstack:take_item() + return itemstack + end + return minetest.item_place(itemstack, placer, pointed_thing) + end +end + +function homedecor_flip_door(pos, node, player, name, side) + local rside = nil + local nfdir = nil + if side == "left" then + rside = "right" + nfdir=node.param2 - 1 + if nfdir < 0 then nfdir = 3 end + else + rside = "left" + nfdir=node.param2 + 1 + if nfdir > 3 then nfdir = 0 end + end + minetest.env:add_node({x=pos.x, y=pos.y+1, z=pos.z}, { name = "homedecor:door_"..name.."_top_"..rside, param2=nfdir}) + minetest.env:add_node(pos, { name = "homedecor:door_"..name.."_bottom_"..rside, param2=nfdir}) +end + +function homedecor_flip_gate(pos, node, player, gate, oc) + local fdir = node.param2 + + if oc == "closed" then + minetest.env:add_node(pos, { name = "homedecor:gate_"..gate.."_open", param2=fdir}) + else + minetest.env:add_node(pos, { name = "homedecor:gate_"..gate.."_closed", param2=fdir}) + end +end diff --git a/fences.lua b/fences.lua index 8ba9020f..e5afa53d 100644 --- a/fences.lua +++ b/fences.lua @@ -456,316 +456,6 @@ minetest.register_node("homedecor:fence_chainlink_corner", { }, }) - --- ===== --- Gates - -minetest.register_node("homedecor:fence_picket_gate_closed", { - drawtype = "nodebox", - description = S("Unpainted Picket Fence Gate"), - tiles = { - "homedecor_blanktile.png", - "homedecor_blanktile.png", - "homedecor_fence_picket_gate.png", - "homedecor_fence_picket_gate.png", - "homedecor_fence_picket_gate_backside.png", - "homedecor_fence_picket_gate.png" - }, - paramtype = "light", - is_ground_content = true, - groups = {snappy=3}, - sounds = default.node_sound_wood_defaults(), - walkable = true, - paramtype2 = "facedir", - selection_box = { - type = "fixed", - fixed = { -0.5, -0.5, 0.4, 0.5, 0.5, 0.5 } - }, - node_box = { - type = "fixed", - fixed = { -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 } - }, -}) - -minetest.register_node("homedecor:fence_picket_gate_open", { - drawtype = "nodebox", - description = S("Unpainted Picket Fence Gate"), - tiles = { - "homedecor_blanktile.png", - "homedecor_blanktile.png", - "homedecor_fence_picket_gate.png", - "homedecor_fence_picket_gate_backside.png", - "homedecor_fence_picket_gate.png", - "homedecor_fence_picket_gate.png" - }, - paramtype = "light", - is_ground_content = true, - groups = {snappy=3, not_in_creative_inventory=1}, - sounds = default.node_sound_wood_defaults(), - walkable = true, - paramtype2 = "facedir", - selection_box = { - type = "fixed", - fixed = { 0.4, -0.5, -0.5, 0.5, 0.5, 0.5 } - }, - node_box = { - type = "fixed", - fixed = { 0.498, -0.5, -0.5, 0.498, 0.5, 0.5 } - }, - drop = "homedecor:fence_picket_gate_closed" -}) - -minetest.register_node("homedecor:fence_picket_gate_white_closed", { - drawtype = "nodebox", - description = S("White Picket Fence Gate"), - tiles = { - "homedecor_blanktile.png", - "homedecor_blanktile.png", - "homedecor_fence_picket_gate_white.png", - "homedecor_fence_picket_gate_white.png", - "homedecor_fence_picket_gate_white_backside.png", - "homedecor_fence_picket_gate_white.png" - }, --- inventory_image = "homedecor_fence_picket_gate.png", --- wield_image = "homedecor_fence_picket_gate.png", - paramtype = "light", - is_ground_content = true, - groups = {snappy=3}, - sounds = default.node_sound_wood_defaults(), - walkable = true, - paramtype2 = "facedir", - selection_box = { - type = "fixed", - fixed = { -0.5, -0.5, 0.4, 0.5, 0.5, 0.5 } - }, - node_box = { - type = "fixed", - fixed = { -0.5, -0.5, 0.498, 0.5, 0.5, 0.498 } - }, -}) - -minetest.register_node("homedecor:fence_picket_gate_white_open", { - drawtype = "nodebox", - description = S("White Picket Fence Gate"), - tiles = { - "homedecor_blanktile.png", - "homedecor_blanktile.png", - "homedecor_fence_picket_gate_white.png", - "homedecor_fence_picket_gate_white_backside.png", - "homedecor_fence_picket_gate_white.png", - "homedecor_fence_picket_gate_white.png" - }, --- inventory_image = "homedecor_fence_picket_gate.png", --- wield_image = "homedecor_fence_picket_gate.png", - paramtype = "light", - is_ground_content = true, - groups = {snappy=3, not_in_creative_inventory=1}, - sounds = default.node_sound_wood_defaults(), - walkable = true, - paramtype2 = "facedir", - selection_box = { - type = "fixed", - fixed = { 0.4, -0.5, -0.5, 0.5, 0.5, 0.5 } - }, - node_box = { - type = "fixed", - fixed = { 0.498, -0.5, -0.5, 0.498, 0.5, 0.5 } - }, - drop = "homedecor:fence_picket_gate_closed" -}) - -minetest.register_node("homedecor:fence_barbed_wire_gate_closed", { - drawtype = "nodebox", - description = S("Barbed Wire Fence Gate"), - tiles = { - "homedecor_fence_barbed_wire_gate_edges.png", - "homedecor_fence_barbed_wire_gate_edges.png", - "homedecor_fence_barbed_wire_gate_edges.png", - "homedecor_fence_barbed_wire_gate_edges.png", - "homedecor_fence_barbed_wire_gate_backside.png", - "homedecor_fence_barbed_wire_gate_front.png" - }, - paramtype = "light", - is_ground_content = true, - groups = {snappy=3}, - sounds = default.node_sound_wood_defaults(), - walkable = true, - paramtype2 = "facedir", - selection_box = { - type = "fixed", - fixed = { -0.5, -0.5, 0.375, 0.5, 0.5, 0.5 } - }, - node_box = { - type = "fixed", - fixed = { - { -8/16, -8/16, 6/16, -6/16, 8/16, 8/16 }, -- left post - { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post - { -8/16, 7/16, 13/32, 8/16, 8/16, 15/32 }, -- top piece - { -8/16, -8/16, 13/32, 8/16, -7/16, 15/32 }, -- bottom piece - { -6/16, -8/16, 7/16, 6/16, 8/16, 7/16 } -- the wire - } - }, -}) - -minetest.register_node("homedecor:fence_barbed_wire_gate_open", { - drawtype = "nodebox", - description = S("Barbed Wire Fence Gate"), - tiles = { - "homedecor_fence_barbed_wire_gate_edges.png", - "homedecor_fence_barbed_wire_gate_edges.png", - "homedecor_fence_barbed_wire_gate_front.png", - "homedecor_fence_barbed_wire_gate_backside.png", - "homedecor_fence_barbed_wire_gate_edges.png", - "homedecor_fence_barbed_wire_gate_edges.png" - }, - paramtype = "light", - is_ground_content = true, - groups = {snappy=3, not_in_creative_inventory=1}, - sounds = default.node_sound_wood_defaults(), - walkable = true, - paramtype2 = "facedir", - selection_box = { - type = "fixed", - fixed = { 0.375, -0.5, -0.5, 0.5, 0.5, 0.5 } - }, - node_box = { - type = "fixed", - fixed = { - { 6/16, -8/16, -8/16, 8/16, 8/16, -6/16 }, -- left post - { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post - { 13/32, 7/16, -8/16, 15/32, 8/16, 8/16 }, -- top piece - { 13/32, -8/16, -8/16, 15/32, -7/16, 8/16 }, -- bottom piece - { 7/16, -8/16, -6/16, 7/16, 8/16, 6/16 } -- the wire - } - }, - drop = "homedecor:fence_barbed_wire_gate_closed" -}) - -minetest.register_node("homedecor:fence_chainlink_gate_closed", { - drawtype = "nodebox", - description = S("Chainlink Fence Gate"), - tiles = { - "homedecor_fence_chainlink_gate_tb.png", - "homedecor_fence_chainlink_gate_tb.png", - "homedecor_fence_chainlink_gate_sides.png", - "homedecor_fence_chainlink_gate_sides.png", - "homedecor_fence_chainlink_gate_backside.png", - "homedecor_fence_chainlink_gate_front.png", - }, - paramtype = "light", - is_ground_content = true, - groups = {snappy=3}, - sounds = default.node_sound_wood_defaults(), - walkable = true, - paramtype2 = "facedir", - selection_box = { - type = "fixed", - fixed = { -0.5, -0.5, 0.375, 0.5, 0.5, 0.5 } - }, - node_box = { - type = "fixed", - fixed = { - { -8/16, -8/16, 6/16, -7/16, 8/16, 8/16 }, -- left post - { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post - { -8/16, 7/16, 13/32, 8/16, 8/16, 15/32 }, -- top piece - { -8/16, -8/16, 13/32, 8/16, -7/16, 15/32 }, -- bottom piece - { -8/16, -8/16, 7/16, 8/16, 8/16, 7/16 }, -- the chainlink itself - { -8/16, -3/16, 6/16, -6/16, 3/16, 8/16 } -- the lump representing the lock - } - }, -}) - -minetest.register_node("homedecor:fence_chainlink_gate_open", { - drawtype = "nodebox", - description = S("Chainlink Fence Gate (open)"), - tiles = { - "homedecor_fence_chainlink_gate_tb.png", - "homedecor_fence_chainlink_gate_tb.png", - "homedecor_fence_chainlink_gate_front.png", - "homedecor_fence_chainlink_gate_backside.png", - "homedecor_fence_chainlink_gate_sides.png", - "homedecor_fence_chainlink_gate_sides.png", - }, - paramtype = "light", - is_ground_content = true, - groups = {snappy=3, not_in_creative_inventory=1}, - sounds = default.node_sound_wood_defaults(), - walkable = true, - paramtype2 = "facedir", - selection_box = { - type = "fixed", - fixed = { 0.375, -0.5, -0.5, 0.5, 0.5, 0.5 } - }, - node_box = { - type = "fixed", - fixed = { - { 6/16, -8/16, -8/16, 8/16, 8/16, -7/16 }, -- left post - { 6/16, -8/16, 6/16, 8/16, 8/16, 8/16 }, -- right post - { 13/32, 7/16, -8/16, 15/32, 8/16, 8/16 }, -- top piece - { 13/32, -8/16, -8/16, 15/32, -7/16, 8/16 }, -- bottom piece - { 7/16, -8/16, -8/16, 7/16, 8/16, 8/16 }, -- the chainlink itself - { 6/16, -3/16, -8/16, 8/16, 3/16, -6/16 } -- the lump representing the lock - } - }, - drop = "homedecor:fence_chainlink_gate_closed" -}) - -minetest.register_on_punchnode(function (pos, node) - if node.name=="homedecor:fence_picket_gate_white_closed" then - fdir=node.param2 - minetest.env:add_node(pos, { name = "homedecor:fence_picket_gate_white_open", param2 = fdir }) - end -end) - -minetest.register_on_punchnode(function (pos, node) - if node.name=="homedecor:fence_picket_gate_white_open" then - fdir=node.param2 - minetest.env:add_node(pos, { name = "homedecor:fence_picket_gate_white_closed", param2 = fdir }) - end -end) - -minetest.register_on_punchnode(function (pos, node) - if node.name=="homedecor:fence_picket_gate_closed" then - fdir=node.param2 - minetest.env:add_node(pos, { name = "homedecor:fence_picket_gate_open", param2 = fdir }) - end -end) - -minetest.register_on_punchnode(function (pos, node) - if node.name=="homedecor:fence_picket_gate_open" then - fdir=node.param2 - minetest.env:add_node(pos, { name = "homedecor:fence_picket_gate_closed", param2 = fdir }) - end -end) - -minetest.register_on_punchnode(function (pos, node) - if node.name=="homedecor:fence_barbed_wire_gate_closed" then - fdir=node.param2 - minetest.env:add_node(pos, { name = "homedecor:fence_barbed_wire_gate_open", param2 = fdir }) - end -end) - -minetest.register_on_punchnode(function (pos, node) - if node.name=="homedecor:fence_barbed_wire_gate_open" then - fdir=node.param2 - minetest.env:add_node(pos, { name = "homedecor:fence_barbed_wire_gate_closed", param2 = fdir }) - end -end) - -minetest.register_on_punchnode(function (pos, node) - if node.name=="homedecor:fence_chainlink_gate_closed" then - fdir=node.param2 - minetest.env:add_node(pos, { name = "homedecor:fence_chainlink_gate_open", param2 = fdir }) - end -end) - -minetest.register_on_punchnode(function (pos, node) - if node.name=="homedecor:fence_chainlink_gate_open" then - fdir=node.param2 - minetest.env:add_node(pos, { name = "homedecor:fence_chainlink_gate_closed", param2 = fdir }) - end -end) - minetest.register_alias("homedecor:fence_wood_with_sign", "signs:sign_post") homedecor_register_fence_with_sign("default:fence_wood", "signs:sign_post") diff --git a/init.lua b/init.lua index ce22cd81..8a885993 100644 --- a/init.lua +++ b/init.lua @@ -72,7 +72,7 @@ dofile(minetest.get_modpath("homedecor").."/shutters.lua") dofile(minetest.get_modpath("homedecor").."/shingles.lua") dofile(minetest.get_modpath("homedecor").."/door_models.lua") -dofile(minetest.get_modpath("homedecor").."/door_nodes.lua") +dofile(minetest.get_modpath("homedecor").."/doors_and_gates.lua") dofile(minetest.get_modpath("homedecor").."/signs_lib.lua") dofile(minetest.get_modpath("homedecor").."/fences.lua") diff --git a/textures/homedecor_fence_barbed_wire_gate_backside.png b/textures/homedecor_gate_barbed_wire_back.png similarity index 100% rename from textures/homedecor_fence_barbed_wire_gate_backside.png rename to textures/homedecor_gate_barbed_wire_back.png diff --git a/textures/homedecor_fence_barbed_wire_gate_edges.png b/textures/homedecor_gate_barbed_wire_bottom.png similarity index 100% rename from textures/homedecor_fence_barbed_wire_gate_edges.png rename to textures/homedecor_gate_barbed_wire_bottom.png diff --git a/textures/homedecor_fence_barbed_wire_gate_front.png b/textures/homedecor_gate_barbed_wire_front.png similarity index 100% rename from textures/homedecor_fence_barbed_wire_gate_front.png rename to textures/homedecor_gate_barbed_wire_front.png diff --git a/textures/homedecor_gate_barbed_wire_left.png b/textures/homedecor_gate_barbed_wire_left.png new file mode 100644 index 00000000..df12cedc Binary files /dev/null and b/textures/homedecor_gate_barbed_wire_left.png differ diff --git a/textures/homedecor_gate_barbed_wire_right.png b/textures/homedecor_gate_barbed_wire_right.png new file mode 100644 index 00000000..df12cedc Binary files /dev/null and b/textures/homedecor_gate_barbed_wire_right.png differ diff --git a/textures/homedecor_gate_barbed_wire_top.png b/textures/homedecor_gate_barbed_wire_top.png new file mode 100644 index 00000000..df12cedc Binary files /dev/null and b/textures/homedecor_gate_barbed_wire_top.png differ diff --git a/textures/homedecor_fence_chainlink_gate_backside.png b/textures/homedecor_gate_chainlink_back.png similarity index 100% rename from textures/homedecor_fence_chainlink_gate_backside.png rename to textures/homedecor_gate_chainlink_back.png diff --git a/textures/homedecor_fence_chainlink_gate_tb.png b/textures/homedecor_gate_chainlink_bottom.png similarity index 100% rename from textures/homedecor_fence_chainlink_gate_tb.png rename to textures/homedecor_gate_chainlink_bottom.png diff --git a/textures/homedecor_fence_chainlink_gate_front.png b/textures/homedecor_gate_chainlink_front.png similarity index 100% rename from textures/homedecor_fence_chainlink_gate_front.png rename to textures/homedecor_gate_chainlink_front.png diff --git a/textures/homedecor_fence_chainlink_gate_sides.png b/textures/homedecor_gate_chainlink_left.png similarity index 100% rename from textures/homedecor_fence_chainlink_gate_sides.png rename to textures/homedecor_gate_chainlink_left.png diff --git a/textures/homedecor_gate_chainlink_right.png b/textures/homedecor_gate_chainlink_right.png new file mode 100644 index 00000000..3033279e Binary files /dev/null and b/textures/homedecor_gate_chainlink_right.png differ diff --git a/textures/homedecor_gate_chainlink_top.png b/textures/homedecor_gate_chainlink_top.png new file mode 100644 index 00000000..62be7a77 Binary files /dev/null and b/textures/homedecor_gate_chainlink_top.png differ diff --git a/textures/homedecor_fence_picket_gate_backside.png b/textures/homedecor_gate_picket_back.png similarity index 100% rename from textures/homedecor_fence_picket_gate_backside.png rename to textures/homedecor_gate_picket_back.png diff --git a/textures/homedecor_gate_picket_bottom.png b/textures/homedecor_gate_picket_bottom.png new file mode 100644 index 00000000..54da3c2c Binary files /dev/null and b/textures/homedecor_gate_picket_bottom.png differ diff --git a/textures/homedecor_fence_picket_gate.png b/textures/homedecor_gate_picket_front.png similarity index 100% rename from textures/homedecor_fence_picket_gate.png rename to textures/homedecor_gate_picket_front.png diff --git a/textures/homedecor_gate_picket_left.png b/textures/homedecor_gate_picket_left.png new file mode 100644 index 00000000..54da3c2c Binary files /dev/null and b/textures/homedecor_gate_picket_left.png differ diff --git a/textures/homedecor_gate_picket_right.png b/textures/homedecor_gate_picket_right.png new file mode 100644 index 00000000..54da3c2c Binary files /dev/null and b/textures/homedecor_gate_picket_right.png differ diff --git a/textures/homedecor_gate_picket_top.png b/textures/homedecor_gate_picket_top.png new file mode 100644 index 00000000..54da3c2c Binary files /dev/null and b/textures/homedecor_gate_picket_top.png differ diff --git a/textures/homedecor_fence_picket_gate_white_backside.png b/textures/homedecor_gate_picket_white_back.png similarity index 100% rename from textures/homedecor_fence_picket_gate_white_backside.png rename to textures/homedecor_gate_picket_white_back.png diff --git a/textures/homedecor_gate_picket_white_bottom.png b/textures/homedecor_gate_picket_white_bottom.png new file mode 100644 index 00000000..54da3c2c Binary files /dev/null and b/textures/homedecor_gate_picket_white_bottom.png differ diff --git a/textures/homedecor_fence_picket_gate_white.png b/textures/homedecor_gate_picket_white_front.png similarity index 100% rename from textures/homedecor_fence_picket_gate_white.png rename to textures/homedecor_gate_picket_white_front.png diff --git a/textures/homedecor_gate_picket_white_left.png b/textures/homedecor_gate_picket_white_left.png new file mode 100644 index 00000000..54da3c2c Binary files /dev/null and b/textures/homedecor_gate_picket_white_left.png differ diff --git a/textures/homedecor_gate_picket_white_right.png b/textures/homedecor_gate_picket_white_right.png new file mode 100644 index 00000000..54da3c2c Binary files /dev/null and b/textures/homedecor_gate_picket_white_right.png differ diff --git a/textures/homedecor_gate_picket_white_top.png b/textures/homedecor_gate_picket_white_top.png new file mode 100644 index 00000000..54da3c2c Binary files /dev/null and b/textures/homedecor_gate_picket_white_top.png differ