From 67673f7fdc9c512306285379dc2cefd6a279d7b0 Mon Sep 17 00:00:00 2001 From: crabman77 Date: Sat, 4 Jun 2016 01:27:26 +0200 Subject: [PATCH] update doors and convert doors 3 nodes in new systeme --- minetestforfun_game/mods/doors/doors3.lua | 671 ------------------ minetestforfun_game/mods/doors/init.lua | 400 ++++++++++- .../mods/doors/models/door3_a.obj | 42 ++ .../mods/doors/models/door3_b.obj | 42 ++ .../mods/doors/textures/doors3_brown.png | Bin 99 -> 0 bytes ..._cherry_inv.png => doors3_item_cherry.png} | Bin ...s3_glass_inv.png => doors3_item_glass.png} | Bin ...inv.png => doors3_item_obsidian_glass.png} | Bin ..._prison_inv.png => doors3_item_prison.png} | Bin ...s3_steel_inv.png => doors3_item_steel.png} | Bin .../{doors3_wood.png => doors3_item_wood.png} | Bin .../mods/doors/textures/doors3_steel_b.png | Bin 428 -> 0 bytes .../mods/doors/textures/doors3_steel_m.png | Bin 471 -> 0 bytes .../mods/doors/textures/doors3_steel_t.png | Bin 490 -> 0 bytes .../mods/doors/textures/doors3_wood_b.png | Bin 166 -> 0 bytes .../mods/doors/textures/doors3_wood_m.png | Bin 185 -> 0 bytes .../mods/doors/textures/doors3_wood_t.png | Bin 185 -> 0 bytes .../mods/doors/textures/doors_black.png | Bin 101 -> 0 bytes .../mods/doors/textures/doors_brown.png | Bin 109 -> 0 bytes .../doors/textures/doors_door3_cherry.png | Bin 0 -> 614 bytes .../mods/doors/textures/doors_door3_glass.png | Bin 0 -> 632 bytes .../textures/doors_door3_obsidian_glass.png | Bin 0 -> 288 bytes .../doors/textures/doors_door3_prison.png | Bin 0 -> 227 bytes .../mods/doors/textures/doors_door3_steel.png | Bin 0 -> 2116 bytes .../mods/doors/textures/doors_door3_wood.png | Bin 0 -> 319 bytes .../textures/doors_door_obsidian_glass.png | Bin 205 -> 202 bytes .../mods/doors/textures/doors_glass_a.png | Bin 172 -> 0 bytes .../mods/doors/textures/doors_glass_b.png | Bin 172 -> 0 bytes .../mods/doors/textures/doors_glass_side.png | Bin 82 -> 0 bytes .../mods/doors/textures/doors_grey.png | Bin 104 -> 0 bytes .../mods/doors/textures/doors_grey2.png | Bin 102 -> 0 bytes .../mods/doors/textures/doors_invisible.png | Bin 95 -> 0 bytes .../mods/doors/textures/doors_item_tin.png | Bin 214 -> 211 bytes .../doors/textures/doors_obsidian_glass_a.png | Bin 139 -> 0 bytes .../doors/textures/doors_obsidian_glass_b.png | Bin 139 -> 0 bytes .../textures/doors_obsidian_glass_side.png | Bin 82 -> 0 bytes .../mods/doors/textures/doors_prison_b.png | Bin 158 -> 0 bytes .../mods/doors/textures/doors_prison_t.png | Bin 152 -> 0 bytes .../mods/doors/textures/doors_steel_a.png | Bin 320 -> 0 bytes .../mods/doors/textures/doors_steel_b.png | Bin 332 -> 0 bytes .../doors/textures/doors_trapdoor_side.png | Bin 126 -> 123 bytes .../mods/doors/textures/doors_white.png | Bin 103 -> 0 bytes .../mods/doors/textures/doors_wood_a.png | Bin 369 -> 0 bytes .../mods/doors/textures/doors_wood_b.png | Bin 370 -> 0 bytes .../doors/textures/doors_wood_cherry_a.png | Bin 261 -> 0 bytes .../doors/textures/doors_wood_cherry_b.png | Bin 295 -> 0 bytes 46 files changed, 473 insertions(+), 682 deletions(-) delete mode 100755 minetestforfun_game/mods/doors/doors3.lua create mode 100644 minetestforfun_game/mods/doors/models/door3_a.obj create mode 100644 minetestforfun_game/mods/doors/models/door3_b.obj delete mode 100644 minetestforfun_game/mods/doors/textures/doors3_brown.png rename minetestforfun_game/mods/doors/textures/{doors3_wood_cherry_inv.png => doors3_item_cherry.png} (100%) rename minetestforfun_game/mods/doors/textures/{doors3_glass_inv.png => doors3_item_glass.png} (100%) rename minetestforfun_game/mods/doors/textures/{doors3_obsidian_glass_inv.png => doors3_item_obsidian_glass.png} (100%) rename minetestforfun_game/mods/doors/textures/{doors3_prison_inv.png => doors3_item_prison.png} (100%) rename minetestforfun_game/mods/doors/textures/{doors3_steel_inv.png => doors3_item_steel.png} (100%) rename minetestforfun_game/mods/doors/textures/{doors3_wood.png => doors3_item_wood.png} (100%) delete mode 100644 minetestforfun_game/mods/doors/textures/doors3_steel_b.png delete mode 100755 minetestforfun_game/mods/doors/textures/doors3_steel_m.png delete mode 100755 minetestforfun_game/mods/doors/textures/doors3_steel_t.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors3_wood_b.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors3_wood_m.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors3_wood_t.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors_black.png delete mode 100755 minetestforfun_game/mods/doors/textures/doors_brown.png create mode 100644 minetestforfun_game/mods/doors/textures/doors_door3_cherry.png create mode 100644 minetestforfun_game/mods/doors/textures/doors_door3_glass.png create mode 100644 minetestforfun_game/mods/doors/textures/doors_door3_obsidian_glass.png create mode 100644 minetestforfun_game/mods/doors/textures/doors_door3_prison.png create mode 100644 minetestforfun_game/mods/doors/textures/doors_door3_steel.png create mode 100644 minetestforfun_game/mods/doors/textures/doors_door3_wood.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors_glass_a.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors_glass_b.png delete mode 100755 minetestforfun_game/mods/doors/textures/doors_glass_side.png delete mode 100755 minetestforfun_game/mods/doors/textures/doors_grey.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors_grey2.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors_invisible.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors_obsidian_glass_a.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors_obsidian_glass_b.png delete mode 100755 minetestforfun_game/mods/doors/textures/doors_obsidian_glass_side.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors_prison_b.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors_prison_t.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors_steel_a.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors_steel_b.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors_white.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors_wood_a.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors_wood_b.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors_wood_cherry_a.png delete mode 100644 minetestforfun_game/mods/doors/textures/doors_wood_cherry_b.png diff --git a/minetestforfun_game/mods/doors/doors3.lua b/minetestforfun_game/mods/doors/doors3.lua deleted file mode 100755 index 07dafb3a..00000000 --- a/minetestforfun_game/mods/doors/doors3.lua +++ /dev/null @@ -1,671 +0,0 @@ -doors3 = {} - - -function doors3.get_pos(pos, dir, p1, b) - local pos2 = {x=pos.x, y=pos.y, z=pos.z} - if b == 0 then - if p1 == 1 then - if dir == 1 then - pos2.z=pos2.z-1 - elseif dir == 2 then - pos2.x=pos2.x-1 - elseif dir == 3 then - pos2.z=pos2.z+1 - else - pos2.x=pos2.x+1 - end - else - if dir == 1 then - pos2.x=pos2.x+1 - elseif dir == 2 then - pos2.z=pos2.z-1 - elseif dir == 3 then - pos2.x=pos2.x-1 - else - pos2.z=pos2.z+1 - end - end - else - if p1 == 1 then - if dir == 1 then - pos2.x=pos2.x+1 - elseif dir == 2 then - pos2.z=pos2.z-1 - elseif dir == 3 then - pos2.x=pos2.x-1 - else - pos2.z=pos2.z+1 - end - else - if dir == 1 then - pos2.z=pos2.z+1 - elseif dir == 2 then - pos2.x=pos2.x+1 - elseif dir == 3 then - pos2.z=pos2.z-1 - else - pos2.x=pos2.x-1 - end - end - end - return pos2 -end - - - --- Registers a door -function doors3.register_door(name, def) - def.groups.not_in_creative_inventory = 1 - - local box = {{-0.5, -0.5, -0.5, 0.5, 0.5, -0.5+1.5/16}} - - if not def.node_box_bottom then - def.node_box_bottom = box - end - if not def.node_box_middle then - def.node_box_middle = box - end - if not def.node_box_top then - def.node_box_top = box - end - if not def.selection_box_bottom then - def.selection_box_bottom= box - end - if not def.selection_box_middle then - def.selection_box_middle = box - end - if not def.selection_box_top then - def.selection_box_top = box - end - - if not def.sound_close_door then - def.sound_close_door = "doors_door_close" - end - if not def.sound_open_door then - def.sound_open_door = "doors_door_open" - end - - - minetest.register_craftitem(name, { - description = def.description, - inventory_image = def.inventory_image, - - on_place = function(itemstack, placer, pointed_thing) - if not pointed_thing.type == "node" then - return itemstack - end - - local ptu = pointed_thing.under - local nu = minetest.get_node(ptu) - if minetest.registered_nodes[nu.name].on_rightclick then - return minetest.registered_nodes[nu.name].on_rightclick(ptu, nu, placer, itemstack) - end - - local pt = pointed_thing.above - local pt1 = {x=pt.x, y=pt.y+1, z=pt.z} - local pt2 = {x=pt.x, y=pt.y+2, z=pt.z} - if - not minetest.registered_nodes[minetest.get_node(pt).name].buildable_to or - not minetest.registered_nodes[minetest.get_node(pt1).name].buildable_to or - not minetest.registered_nodes[minetest.get_node(pt2).name].buildable_to or - not placer or - not placer:is_player() - then - return itemstack - end - - if minetest.is_protected(pt, placer:get_player_name()) or minetest.is_protected(pt2, placer:get_player_name()) then - minetest.record_protection_violation(pt, placer:get_player_name()) - return itemstack - end - - local p2 = minetest.dir_to_facedir(placer:get_look_dir()) - local pt3 = {x=pt.x, y=pt.y, z=pt.z} - if p2 == 0 then - pt3.x = pt3.x-1 - elseif p2 == 1 then - pt3.z = pt3.z+1 - elseif p2 == 2 then - pt3.x = pt3.x+1 - elseif p2 == 3 then - pt3.z = pt3.z-1 - end - if minetest.get_item_group(minetest.get_node(pt3).name, "door") == 0 then - minetest.set_node(pt, {name=name.."_b_1", param2=p2}) - minetest.set_node(pt1, {name=name.."_m_1", param2=p2}) - minetest.set_node(pt2, {name=name.."_t_1", param2=p2}) - else - minetest.set_node(pt, {name=name.."_b_2", param2=p2}) - minetest.set_node(pt1, {name=name.."_m_2", param2=p2}) - minetest.set_node(pt2, {name=name.."_t_2", param2=p2}) - minetest.get_meta(pt):set_int("right", 1) - minetest.get_meta(pt1):set_int("right", 1) - minetest.get_meta(pt2):set_int("right", 1) - end - - if def.only_placer_can_open then - local pn = placer:get_player_name() - local meta = minetest.get_meta(pt) - meta:set_string("doors_owner", pn) - meta:set_string("infotext", "Owned by "..pn) - meta = minetest.get_meta(pt1) - meta:set_string("doors_owner", pn) - meta:set_string("infotext", "Owned by "..pn) - meta = minetest.get_meta(pt2) - meta:set_string("doors_owner", pn) - meta:set_string("infotext", "Owned by "..pn) - end - - if not minetest.setting_getbool("creative_mode") then - itemstack:take_item() - end - return itemstack - end, - }) - - local tt = def.tiles_top - local tm = def.tiles_middle - local tb = def.tiles_bottom - - local function after_dig_node(pos, letter, name, num, digger) - local p - if letter == "b" then -- bottom - p = { {y=1, l="m"}, {y=2, l="t"} } - elseif letter == "m" then -- middle - p = { {y=-1, l="b"}, {y=1, l="t"} } - else -- top - p = { {y=-2, l="b"}, {y=-1, l="m"} } - end - for _,t in pairs(p) do - local pos1 = {x=pos.x, y=pos.y+t["y"], z=pos.z} - local node = minetest.get_node(pos1) - if node.name == name.."_"..t["l"].."_"..num then - minetest.node_dig(pos1, node, digger) - end - end - end - - local function check_and_blast(pos, name) - local node = minetest.get_node(pos) - if node.name == name then - minetest.remove_node(pos) - end - end - - local function make_on_blast(base_name, letter, num) - if def.only_placer_can_open then - return function() end - else - return function(pos, intensity) - local p - if letter == "b" then -- bottom - p = { {y=1, l="m"}, {y=2, l="t"} } - elseif letter == "m" then -- middle - p = { {y=-1, l="b"}, {y=1, l="t"} } - else -- top - p = { {y=-2, l="b"}, {y=-1, l="m"} } - end - for _,t in pairs(p) do - check_and_blast({x=pos.x, y=pos.y+t["y"], z=pos.z}, base_name.."_"..t["l"].."_"..num) - end - end - end - end - - - local function on_rightclick(pos, letter, name, oldnum, params, clicker, oldparam2) - local p - if letter == "b" then -- bottom - p = { {y=0, l="b"}, {y=1, l="m"}, {y=2, l="t"} } - elseif letter == "m" then -- middle - p = { {y=-1, l="b"}, {y=0, l="m"}, {y=1, l="t"} } - else -- top - p = { {y=-2, l="b"}, {y=-1, l="m"}, {y=0, l="t"} } - end - - local newnum - if oldnum == 1 then - newnum = 2 - else - newnum = 1 - end - - for _,t in pairs(p) do - local pos1 = {x=pos.x, y=pos.y+t["y"], z=pos.z} - if minetest.get_node(pos1).name == name.."_"..t["l"].."_"..oldnum then - local p2 = minetest.get_node(pos1).param2 - p2 = params[p2+1] - minetest.swap_node(pos1, {name=name.."_"..t["l"].."_"..newnum, param2=p2}) - end - end - - local snd_1 = def.sound_close_door - local snd_2 = def.sound_open_door - if params[1] == 3 then - snd_1 = def.sound_open_door - snd_2 = def.sound_close_door - end - local b = minetest.get_meta(pos):get_int("right") - - local pos2 = doors3.get_pos(pos, oldparam2, params[1], b) - local node = minetest.get_node_or_nil(pos2) - if node and node.name and node.name == name.."_"..letter.."_"..newnum then - if minetest.get_meta(pos2):get_int("right") ~= b then - if minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick(pos2, node, clicker) - end - end - end - - --if double doors, only 2eme play sound - if b ~= 0 then - minetest.sound_play(snd_1, {pos = pos, gain = 0.3, max_hear_distance = 10}) - else - minetest.sound_play(snd_2, {pos = pos, gain = 0.3, max_hear_distance = 10}) - end - end - - - local function check_player_priv(pos, player) - if not def.only_placer_can_open then - return true - end - local meta = minetest.get_meta(pos) - local pn = player:get_player_name() - return meta:get_string("doors_owner") == pn - end - - - local function on_rotate(pos, node, dir, user, name, num, mode, new_param2) - if not check_player_priv(pos, user) then - return false - end - if mode ~= screwdriver.ROTATE_FACE then - return false - end - - local p - if dir == 0 then -- bottom - p = { {y=0, l="b"}, {y=1, l="m"}, {y=2, l="t"} } - elseif dir == 1 then -- middle - p = { {y=-1, l="b"}, {y=0, l="m"}, {y=1, l="t"} } - else -- top - p = { {y=-2, l="b"}, {y=-1, l="m"}, {y=0, l="t"} } - end - - for _,t in pairs(p) do - local pos1 = {x=pos.x, y=pos.y+t["y"], z=pos.z} - if not minetest.get_node(pos1).name == name.."_"..t["l"].."_"..num then - return false - end - if minetest.is_protected(pos1, user:get_player_name()) then - minetest.record_protection_violation(pos4, user:get_player_name()) - return false - end - end - - for _,t in pairs(p) do - local pos1 = {x=pos.x, y=pos.y+t["y"], z=pos.z} - local node2 = minetest.get_node(pos1) - node2.param2 = (node2.param2 + 1) % 4 - minetest.swap_node(pos1, node2) - end - return true - end - - - minetest.register_node(name.."_b_1", { - tiles = {tb[2], tb[2], tb[2], tb[2], tb[1], tb[1].."^[transformfx"}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - drop = name, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = def.node_box_bottom - }, - selection_box = { - type = "fixed", - fixed = def.selection_box_bottom - }, - groups = def.groups, - - after_dig_node = function(pos, oldnode, oldmetadata, digger) - after_dig_node(pos, "b", name, 1, digger) - end, - - on_rightclick = function(pos, node, clicker) - if check_player_priv(pos, clicker) then - on_rightclick(pos, "b", name, 1, {1,2,3,0}, clicker, node.param2) - end - end, - - on_rotate = function(pos, node, user, mode, new_param2) - return on_rotate(pos, node, 0, user, name, 1, mode) - end, - - can_dig = check_player_priv, - sounds = def.sounds, - sunlight_propagates = def.sunlight, - on_blast = make_on_blast(name, "b", 1) - }) - - - minetest.register_node(name.."_m_1", { - tiles = {tm[2], tm[2], tm[2], tm[2], tm[1], tm[1].."^[transformfx"}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - drop = "", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = def.node_box_middle - }, - selection_box = { - type = "fixed", - fixed = def.selection_box_middle - }, - groups = def.groups, - - after_dig_node = function(pos, oldnode, oldmetadata, digger) - after_dig_node(pos, "m", name, 1, digger) - end, - - on_rightclick = function(pos, node, clicker) - if check_player_priv(pos, clicker) then - on_rightclick(pos, "m", name, 1, {1,2,3,0}, clicker, node.param2) - end - end, - - on_rotate = function(pos, node, user, mode, new_param2) - return on_rotate(pos, node, 1, user, name, 1, mode) - end, - - can_dig = check_player_priv, - sounds = def.sounds, - sunlight_propagates = def.sunlight, - on_blast = make_on_blast(name, "m", 1) - }) - - - - minetest.register_node(name.."_t_1", { - tiles = {tt[2], tt[2], tt[2], tt[2], tt[1], tt[1].."^[transformfx"}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - drop = "", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = def.node_box_top - }, - selection_box = { - type = "fixed", - fixed = def.selection_box_top - }, - groups = def.groups, - - after_dig_node = function(pos, oldnode, oldmetadata, digger) - after_dig_node(pos, "t", name, 1, digger) - end, - - on_rightclick = function(pos, node, clicker) - if check_player_priv(pos, clicker) then - on_rightclick(pos, "t", name, 1, {1,2,3,0}, clicker, node.param2) - end - end, - - on_rotate = function(pos, node, user, mode, new_param2) - return on_rotate(pos, node, 2, user, name, 1, mode) - end, - - can_dig = check_player_priv, - sounds = def.sounds, - sunlight_propagates = def.sunlight, - on_blast = make_on_blast(name, "t", 1) - }) - - - - minetest.register_node(name.."_b_2", { - tiles = {tb[2], tb[2], tb[2], tb[2], tb[1].."^[transformfx", tb[1]}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - drop = name, - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = def.node_box_bottom - }, - selection_box = { - type = "fixed", - fixed = def.selection_box_bottom - }, - groups = def.groups, - - after_dig_node = function(pos, oldnode, oldmetadata, digger) - after_dig_node(pos, "b", name, 2, digger) - end, - - on_rightclick = function(pos, node, clicker) - if check_player_priv(pos, clicker) then - on_rightclick(pos, "b", name, 2, {3,0,1,2}, clicker, node.param2) - end - end, - - on_rotate = function(pos, node, user, mode, new_param2) - return on_rotate(pos, node, 0, user, name, 2, mode) - end, - - can_dig = check_player_priv, - sounds = def.sounds, - sunlight_propagates = def.sunlight, - on_blast = make_on_blast(name, "b", 2) - }) - - - minetest.register_node(name.."_m_2", { - tiles = {tm[2], tm[2], tm[2], tm[2], tm[1].."^[transformfx", tm[1]}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - drop = "", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = def.node_box_middle - }, - selection_box = { - type = "fixed", - fixed = def.selection_box_middle - }, - groups = def.groups, - - after_dig_node = function(pos, oldnode, oldmetadata, digger) - after_dig_node(pos, "m", name, 2, digger) - end, - - on_rightclick = function(pos, node, clicker) - if check_player_priv(pos, clicker) then - on_rightclick(pos, "m", name, 2, {3,0,1,2}, clicker, node.param2) - end - end, - - on_rotate = function(pos, node, user, mode, new_param2) - return on_rotate(pos, node, 1, user, name, 2, mode) - end, - - can_dig = check_player_priv, - sounds = def.sounds, - sunlight_propagates = def.sunlight, - on_blast = make_on_blast(name, "m", 2) - }) - - - - minetest.register_node(name.."_t_2", { - tiles = {tt[2], tt[2], tt[2], tt[2], tt[1].."^[transformfx", tt[1]}, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = false, - drop = "", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = def.node_box_top - }, - selection_box = { - type = "fixed", - fixed = def.selection_box_top - }, - groups = def.groups, - - after_dig_node = function(pos, oldnode, oldmetadata, digger) - after_dig_node(pos, "t", name, 2, digger) - end, - - on_rightclick = function(pos, node, clicker) - if check_player_priv(pos, clicker) then - on_rightclick(pos, "t", name, 2, {3,0,1,2}, clicker, node.param2) - end - end, - - on_rotate = function(pos, node, user, mode, new_param2) - return on_rotate(pos, node, 2, user, name, 2, mode) - end, - - can_dig = check_player_priv, - sounds = def.sounds, - sunlight_propagates = def.sunlight, - on_blast = make_on_blast(name, "t", 2) - }) - -end - -doors3.register_door("doors:door3_wood", { - description = "Wooden Door 3", - inventory_image = "doors3_wood.png", - groups = {snappy=1,choppy=2,oddly_breakable_by_hand=2,flammable=2,door=1}, - tiles_bottom = {"doors3_wood_b.png", "doors3_brown.png"}, - tiles_middle = {"doors3_wood_m.png", "doors3_brown.png"}, - tiles_top = {"doors3_wood_t.png", "doors3_brown.png"}, - sounds = default.node_sound_wood_defaults(), - sunlight = false, -}) - -minetest.register_craft({ - output = "doors:door3_wood", - recipe = { - {"", "", ""}, - {"", "doors:door_wood", ""}, - {"", "doors:door_wood", ""} - } -}) - -doors3.register_door("doors:door3_steel", { - description = "Steel Door 3", - inventory_image = "doors3_steel_inv.png", - groups = {snappy=1,bendy=2,cracky=1,melty=2,level=2,door=1}, - tiles_bottom = {"doors3_steel_b.png", "doors_grey.png"}, - tiles_middle = {"doors3_steel_m.png", "doors_grey.png"}, - tiles_top = {"doors3_steel_t.png", "doors_grey.png"}, - only_placer_can_open = true, - sounds = default.node_sound_wood_defaults(), - sunlight = false, -}) - -minetest.register_craft({ - output = "doors:door3_steel", - recipe = { - {"", "", ""}, - {"", "doors:door_steel", ""}, - {"", "doors:door_steel", ""} - } -}) - -doors3.register_door("doors:door3_glass", { - description = "Glass Door 3", - inventory_image = "doors3_glass_inv.png", - groups = {snappy=1,cracky=1,oddly_breakable_by_hand=3,door=1}, - tiles_bottom = {"doors_glass_b.png", "doors_glass_side.png"}, - tiles_middle = {"doors_glass_a.png", "doors_glass_side.png"}, - tiles_top = {"doors_glass_a.png", "doors_glass_side.png"}, - sounds = default.node_sound_glass_defaults(), - sunlight = true, -}) - -minetest.register_craft({ - output = "doors:door3_glass", - recipe = { - {"", "", ""}, - {"", "doors:door_glass", ""}, - {"", "doors:door_glass", ""} - } -}) - - -doors3.register_door("doors:door3_obsidian_glass", { - description = "Obsidian Glass Door 3", - inventory_image = "doors3_obsidian_glass_inv.png", - groups = {snappy=1,cracky=1,oddly_breakable_by_hand=3,door=1}, - tiles_bottom = {"doors_obsidian_glass_b.png", "doors_obsidian_glass_side.png"}, - tiles_middle = {"doors_obsidian_glass_a.png", "doors_obsidian_glass_side.png"}, - tiles_top = {"doors_obsidian_glass_a.png", "doors_obsidian_glass_side.png"}, - sounds = default.node_sound_glass_defaults(), - sunlight = true, -}) - -minetest.register_craft({ - output = "doors:door3_obsidian_glass", - recipe = { - {"", "", ""}, - {"", "doors:door_obsidian_glass", ""}, - {"", "doors:door_obsidian_glass", ""} - } -}) - --- From BFD: Cherry planks doors -doors3.register_door("doors:door3_cherry", { - description = "Cherry Door 3", - inventory_image = "doors3_wood_cherry_inv.png", - groups = {choppy=2,oddly_breakable_by_hand=2,flammable=2,door=1}, - tiles_bottom = {"doors_wood_cherry_b.png", "default_wood_cherry_planks.png"}, - tiles_middle = {"doors_wood_cherry_a.png", "default_wood_cherry_planks.png"}, - tiles_top = {"doors_wood_cherry_a.png", "default_wood_cherry_planks.png"}, - sounds = default.node_sound_wood_defaults(), - sunlight = false, -}) - -minetest.register_craft({ - output = "doors:door3_cherry", - recipe = { - {"", "", ""}, - {"", "doors:door_cherry", ""}, - {"", "doors:door_cherry", ""} - } -}) - -doors3.register_door("doors:door3_prison", { - description = "Prison Door 3", - inventory_image = "doors3_prison_inv.png", - groups = {snappy=1,bendy=2,cracky=1,melty=2,level=2,door=1}, - tiles_bottom = {"doors_prison_b.png", "doors_black.png"}, - tiles_middle = {"doors_prison_t.png", "doors_black.png"}, - tiles_top = {"doors_prison_t.png", "doors_black.png"}, - only_placer_can_open = true, - sounds = default.node_sound_wood_defaults(), - sunlight = false, -}) - -minetest.register_craft({ - output = "doors:door3_prison", - recipe = { - {"", "", ""}, - {"", "doors:door_prison", ""}, - {"", "doors:door_prison", ""} - } -}) diff --git a/minetestforfun_game/mods/doors/init.lua b/minetestforfun_game/mods/doors/init.lua index 5e244398..c6417c3d 100755 --- a/minetestforfun_game/mods/doors/init.lua +++ b/minetestforfun_game/mods/doors/init.lua @@ -13,6 +13,7 @@ doors = {} -- private data local _doors = {} _doors.registered_doors = {} +_doors.registered_doors3 = {} --MFF doors3 _doors.registered_trapdoors = {} -- returns an object to a door object or nil @@ -65,6 +66,30 @@ function doors.get(pos) return name:sub(-5) == "_open" end } + elseif _doors.registered_doors3[minetest.get_node(pos).name] then --MFF doors3 + -- A normal upright door + return { + pos = pos, + open = function(self, player) + if self:state() then + return false + end + return _doors.door_toggle(self.pos, player) + end, + close = function(self, player) + if not self:state() then + return false + end + return _doors.door_toggle(self.pos, player) + end, + toggle = function(self, player) + return _doors.door_toggle(self.pos, player) + end, + state = function(self) + local state = minetest.get_meta(self.pos):get_int("state") + return state %2 == 1 + end + } else return nil end @@ -192,6 +217,8 @@ function _doors.door_toggle(pos, clicker) -- fix up lvm-placed right-hinged doors, default closed if minetest.get_node(pos).name:sub(-2) == "_b" then state = 2 + else + state = 0 end else state = tonumber(state) @@ -272,11 +299,10 @@ function doors.register(name, def) end -- replace old doors of this type automatically - minetest.register_abm({ + minetest.register_lbm({ + name = ":doors:replace_" .. name:gsub(":", "_"), nodenames = {name.."_b_1", name.."_b_2"}, - interval = 7.0, - chance = 1, - action = function(pos, node, active_object_count, active_object_count_wider) + action = function(pos, node) local l = tonumber(node.name:sub(-1)) local meta = minetest.get_meta(pos) local h = meta:get_int("right") + 1 @@ -322,7 +348,7 @@ function doors.register(name, def) local pdef = minetest.registered_nodes[node.name] if pdef and pdef.on_rightclick then return pdef.on_rightclick(pointed_thing.under, - node, placer, itemstack) + node, placer, itemstack, pointed_thing) end if pdef and pdef.buildable_to then @@ -365,11 +391,10 @@ function doors.register(name, def) if minetest.get_item_group(minetest.get_node(aside).name, "door") == 1 then state = state + 2 minetest.set_node(pos, {name = name .. "_b", param2 = dir}) - minetest.set_node(above, {name = "doors:hidden", param2 = (dir + 3) % 4}) else minetest.set_node(pos, {name = name .. "_a", param2 = dir}) - minetest.set_node(above, {name = "doors:hidden", param2 = dir}) end + minetest.set_node(above, { name = "doors:hidden" }) local meta = minetest.get_meta(pos) meta:set_int("state", state) @@ -583,12 +608,11 @@ doors.register("door_obsidian_glass", { }) -- From BFD: Cherry planks doors - doors.register("door_cherry", { tiles = { "doors_door_cherry.png" }, description = "Cherry Door", inventory_image = "doors_item_cherry.png", - groups = {choppy=2,oddly_breakable_by_hand=2,flammable=2,door=1}, + groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2, door=1}, sounds = default.node_sound_wood_defaults(), recipe = { {"default:cherry_plank", "default:cherry_plank"}, @@ -614,6 +638,7 @@ doors.register("door_tin", { } }) + -- doors prison MFF doors.register("door_prison", { tiles = { "doors_door_prison.png" }, @@ -626,7 +651,6 @@ doors.register("door_prison", { {"darkage:iron_stick", "darkage:iron_stick"}, {"darkage:iron_stick", "darkage:iron_stick"}, {"darkage:iron_stick", "darkage:iron_stick"} - } }) @@ -947,4 +971,358 @@ doors.register_fencegate("doors:gate_aspen_wood", { }) -- door 3 nodes -dofile(minetest.get_modpath("doors").."/doors3.lua") +function doors.register3(name, def) + if not name:find(":") then + name = "doors:" .. name + end + + -- replace old doors of this type automatically + minetest.register_lbm({ + name = ":doors:replace_" .. name:gsub(":", "_"), + nodenames = {name.."_b_1", name.."_b_2"}, + action = function(pos, node) + local l = tonumber(node.name:sub(-1)) + local meta = minetest.get_meta(pos) + local h = meta:get_int("right") + 1 + local p2 = node.param2 + local replace = { + { { type = "a", state = 0 }, { type = "a", state = 3 } }, + { { type = "b", state = 1 }, { type = "b", state = 2 } } + } + local new = replace[l][h] + -- retain infotext and doors_owner fields + minetest.swap_node(pos, {name = name .. "_" .. new.type, param2 = p2}) + meta:set_int("state", new.state) + -- properly place doors:hidden at the right spot + local p3 = p2 + if new.state >= 2 then + p3 = (p3 + 3) % 4 + end + if new.state % 2 == 1 then + if new.state >= 2 then + p3 = (p3 + 1) % 4 + else + p3 = (p3 + 3) % 4 + end + end + -- wipe meta on top node as it's unused + minetest.set_node({x = pos.x, y = pos.y + 1, z = pos.z}, + {name = "doors:hidden", param2 = p3}) + minetest.set_node({x = pos.x, y = pos.y + 2, z = pos.z}, + {name = "doors:hidden", param2 = p3}) + end + }) + + minetest.register_craftitem(":" .. name, { + description = def.description, + inventory_image = def.inventory_image, + + on_place = function(itemstack, placer, pointed_thing) + local pos = nil + + if not pointed_thing.type == "node" then + return itemstack + end + + local node = minetest.get_node(pointed_thing.under) + local pdef = minetest.registered_nodes[node.name] + if pdef and pdef.on_rightclick then + return pdef.on_rightclick(pointed_thing.under, + node, placer, itemstack, pointed_thing) + end + + if pdef and pdef.buildable_to then + pos = pointed_thing.under + else + pos = pointed_thing.above + node = minetest.get_node(pos) + pdef = minetest.registered_nodes[node.name] + if not pdef or not pdef.buildable_to then + return itemstack + end + end + + local above = { x = pos.x, y = pos.y + 1, z = pos.z } + if not minetest.registered_nodes[minetest.get_node(above).name].buildable_to then + return itemstack + end + + local above2 = { x = pos.x, y = pos.y + 2, z = pos.z } + if not minetest.registered_nodes[minetest.get_node(above2).name].buildable_to then + return itemstack + end + + local pn = placer:get_player_name() + if minetest.is_protected(pos, pn) or minetest.is_protected(above, pn) or minetest.is_protected(above2, pn) then + return itemstack + end + + local dir = minetest.dir_to_facedir(placer:get_look_dir()) + + local ref = { + { x = -1, y = 0, z = 0 }, + { x = 0, y = 0, z = 1 }, + { x = 1, y = 0, z = 0 }, + { x = 0, y = 0, z = -1 }, + } + + local aside = { + x = pos.x + ref[dir + 1].x, + y = pos.y + ref[dir + 1].y, + z = pos.z + ref[dir + 1].z, + } + + local state = 0 + if minetest.get_item_group(minetest.get_node(aside).name, "door") == 1 then + state = state + 2 + minetest.set_node(pos, {name = name .. "_b", param2 = dir}) + else + minetest.set_node(pos, {name = name .. "_a", param2 = dir}) + end + minetest.set_node(above, { name = "doors:hidden" }) + minetest.set_node(above2, { name = "doors:hidden" }) + + local meta = minetest.get_meta(pos) + meta:set_int("state", state) + + if def.protected then + local pn = placer:get_player_name() + meta:set_string("doors_owner", pn) + meta:set_string("infotext", "Owned by " .. pn) + end + + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + + on_place_node(pos, minetest.get_node(pos), placer, node, itemstack, pointed_thing) + + return itemstack + end + }) + + local can_dig = function(pos, digger) + if not def.protected then + return true + end + if minetest.check_player_privs(digger:get_player_name(), {protection_bypass = true}) then + return true + end + local meta = minetest.get_meta(pos) + local name = "" + if digger then + name = digger:get_player_name() + end + return meta:get_string("doors_owner") == name + end + + if not def.sounds then + def.sounds = default.node_sound_wood_defaults() + end + + if not def.sound_open then + def.sound_open = "doors_door_open" + end + + if not def.sound_close then + def.sound_close = "doors_door_close" + end + + def.groups.not_in_creative_inventory = 1 + def.groups.door = 1 + def.drop = name + def.door = { + name = name, + sounds = { def.sound_close, def.sound_open }, + } + + def.on_rightclick = function(pos, node, clicker) + _doors.door_toggle(pos, clicker) + end + def.after_dig_node = function(pos, node, meta, digger) + minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z}) + minetest.remove_node({x = pos.x, y = pos.y + 2, z = pos.z}) + nodeupdate({x = pos.x, y = pos.y + 2, z = pos.z}) + end + def.can_dig = function(pos, player) + return can_dig(pos, player) + end + def.on_rotate = function(pos, node, user, mode, new_param2) + return false + end + + if def.protected then + def.on_blast = function() end + else + def.on_blast = function(pos, intensity) + minetest.remove_node(pos) + -- hidden node doesn't get blasted away. + minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z}) + minetest.remove_node({x = pos.x, y = pos.y + 2, z = pos.z}) + return {name} + end + end + + def.on_destruct = function(pos) + minetest.remove_node({x = pos.x, y = pos.y + 1, z = pos.z}) + minetest.remove_node({x = pos.x, y = pos.y + 2, z = pos.z}) + end + + minetest.register_node(":" .. name .. "_a", { + description = def.description, + visual = "mesh", + mesh = "door3_a.obj", + tiles = def.tiles, + drawtype = "mesh", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + walkable = true, + is_ground_content = false, + buildable_to = false, + drop = def.drop, + groups = def.groups, + sounds = def.sounds, + door = def.door, + on_rightclick = def.on_rightclick, + after_dig_node = def.after_dig_node, + can_dig = def.can_dig, + on_rotate = def.on_rotate, + on_blast = def.on_blast, + on_destruct = def.on_destruct, + selection_box = { + type = "fixed", + fixed = { -1/2,-1/2,-1/2,1/2,2.5,-6/16} + }, + collision_box = { + type = "fixed", + fixed = { -1/2,-1/2,-1/2,1/2,2.5,-6/16} + }, + }) + + minetest.register_node(":" .. name .. "_b", { + description = def.description, + visual = "mesh", + mesh = "door3_b.obj", + tiles = def.tiles, + drawtype = "mesh", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + walkable = true, + is_ground_content = false, + buildable_to = false, + drop = def.drop, + groups = def.groups, + sounds = def.sounds, + door = def.door, + on_rightclick = def.on_rightclick, + after_dig_node = def.after_dig_node, + can_dig = def.can_dig, + on_rotate = def.on_rotate, + on_blast = def.on_blast, + on_destruct = def.on_destruct, + selection_box = { + type = "fixed", + fixed = { -1/2,-1/2,-1/2,1/2,2.5,-6/16} + }, + collision_box = { + type = "fixed", + fixed = { -1/2,-1/2,-1/2,1/2,2.5,-6/16} + }, + }) + + if def.recipe then + minetest.register_craft({ + output = name, + recipe = def.recipe, + }) + end + + _doors.registered_doors3[name .. "_a"] = true + _doors.registered_doors3[name .. "_b"] = true +end + + +doors.register3("door3_wood", { + tiles = {{ name = "doors_door3_wood.png", backface_culling = true }}, + description = "Wooden Door 3 Nodes", + inventory_image = "doors3_item_wood.png", + groups = { snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2 }, + recipe = { + {"", "", ""}, + {"", "doors:door_wood", ""}, + {"", "doors:door_wood", ""}, + } +}) + +doors.register3("door3_steel", { + tiles = {{ name = "doors_door3_steel.png", backface_culling = true }}, + description = "Steel Door 3 Nodes", + inventory_image = "doors3_item_steel.png", + protected = true, + groups = { snappy = 1, bendy = 2, cracky = 1, melty = 2, level = 2 }, + sound_open = "doors_steel_door_open", + sound_close = "doors_steel_door_close", + recipe = { + {"", "", ""}, + {"", "doors:door_steel", ""}, + {"", "doors:door_steel", ""}, + } +}) + +doors.register3("door3_glass", { + tiles = { "doors_door3_glass.png"}, + description = "Glass Door 3 Nodes", + inventory_image = "doors3_item_glass.png", + groups = { snappy=1, cracky=1, oddly_breakable_by_hand=3 }, + sounds = default.node_sound_glass_defaults(), + recipe = { + {"", "", ""}, + {"", "doors:door_glass", ""}, + {"", "doors:door_glass", ""}, + } +}) + +doors.register3("door3_obsidian_glass", { + tiles = { "doors_door3_obsidian_glass.png" }, + description = "Obsidian Glass Door 3 Nodes", + inventory_image = "doors3_item_obsidian_glass.png", + groups = { snappy=1, cracky=1, oddly_breakable_by_hand=3 }, + sounds = default.node_sound_glass_defaults(), + recipe = { + {"", "", ""}, + {"", "doors:door_obsidian_glass", ""}, + {"", "doors:door_obsidian_glass", ""}, + }, +}) + + +-- From BFD: Cherry planks doors +doors.register3("door3_cherry", { + tiles = { "doors_door3_cherry.png" }, + description = "Cherry Door 3 Nodes", + inventory_image = "doors3_item_cherry.png", + groups = {choppy=2, oddly_breakable_by_hand=2, flammable=2, door=1}, + sounds = default.node_sound_wood_defaults(), + recipe = { + {"", "", ""}, + {"", "doors:door_cherry", ""}, + {"", "doors:door_cherry", ""}, + }, +}) + +-- doors prison MFF +doors.register3("door3_prison", { + tiles = { "doors_door3_prison.png" }, + description = "Prison Door 3 Nodes", + inventory_image = "doors3_item_prison.png", + groups = {snappy=1,bendy=2,cracky=1,melty=2,level=2,door=1}, + protected = true, + sounds = default.node_sound_stone_defaults(), + recipe = { + {"", "", ""}, + {"", "doors:door_prison", ""}, + {"", "doors:door_prison", ""}, + } +}) diff --git a/minetestforfun_game/mods/doors/models/door3_a.obj b/minetestforfun_game/mods/doors/models/door3_a.obj new file mode 100644 index 00000000..1865e5e0 --- /dev/null +++ b/minetestforfun_game/mods/doors/models/door3_a.obj @@ -0,0 +1,42 @@ +# Blender v2.76 (sub 0) OBJ File: '3node_door.blend' +# www.blender.org +mtllib 3node_door.mtl +o Cube_Cube.001 +v -0.499000 -0.499000 -0.375000 +v 0.499000 -0.499000 -0.375000 +v 0.498998 2.498000 -0.375000 +v -0.499000 2.498000 -0.375000 +v -0.499000 2.498000 -0.499000 +v -0.499000 -0.499000 -0.499000 +v 0.498998 2.498000 -0.499000 +v 0.499000 -0.499000 -0.499000 +vt 0.842905 0.000000 +vt 0.421453 0.000000 +vt 0.421453 1.000000 +vt 0.842905 1.000000 +vt 0.895270 0.000000 +vt 0.895270 1.000000 +vt 1.000000 0.665999 +vt 0.947635 0.665999 +vt 0.947635 0.333000 +vt 1.000000 0.333000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 0.947635 0.000000 +vt 0.947635 1.000000 +vt 1.000000 0.000000 +vn 0.000000 -0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +usemtl None +s off +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 1/4/2 4/1/2 5/5/2 6/6/2 +f 3/7/3 7/8/3 5/9/3 4/10/3 +f 6/11/4 5/12/4 7/3/4 8/2/4 +f 2/5/5 8/13/5 7/14/5 3/6/5 +s 1 +f 8/13/6 2/15/6 1/10/6 6/9/6 diff --git a/minetestforfun_game/mods/doors/models/door3_b.obj b/minetestforfun_game/mods/doors/models/door3_b.obj new file mode 100644 index 00000000..27b62403 --- /dev/null +++ b/minetestforfun_game/mods/doors/models/door3_b.obj @@ -0,0 +1,42 @@ +# Blender v2.76 (sub 0) OBJ File: '3node_door_b.blend' +# www.blender.org +mtllib 3node_door_b.mtl +o Cube_Cube.001 +v -0.499000 -0.499000 -0.375000 +v 0.499000 -0.499000 -0.375000 +v 0.498998 2.498000 -0.375000 +v -0.499000 2.498000 -0.375000 +v -0.499000 2.498000 -0.499000 +v -0.499000 -0.499000 -0.499000 +v 0.498998 2.498000 -0.499000 +v 0.499000 -0.499000 -0.499000 +vt 0.421453 0.000000 +vt 0.842905 0.000000 +vt 0.842905 1.000000 +vt 0.421453 1.000000 +vt 0.895270 0.000000 +vt 0.895270 1.000000 +vt 1.000000 0.665999 +vt 0.947635 0.665999 +vt 0.947635 0.333000 +vt 1.000000 0.333000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.947635 0.000000 +vt 0.947635 1.000000 +vt 1.000000 0.000000 +vn 0.000000 -0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 -0.000000 +usemtl None +s off +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 1/3/2 4/2/2 5/5/2 6/6/2 +f 3/7/3 7/8/3 5/9/3 4/10/3 +f 6/1/4 5/4/4 7/11/4 8/12/4 +f 2/5/5 8/13/5 7/14/5 3/6/5 +s 1 +f 8/13/6 2/15/6 1/10/6 6/9/6 diff --git a/minetestforfun_game/mods/doors/textures/doors3_brown.png b/minetestforfun_game/mods/doors/textures/doors3_brown.png deleted file mode 100644 index 8e888528bcbd2b5e100d2a5a88002ef666479e8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{F!3-oHI6iF!Qk(%kA+DxUTt4c21(u>khXM}* v1w}nw978G?lM_-B5)zmuDa;adQ$E7L@RNbhqv~ZkPyvIdtDnm{r-UW|)MFPf diff --git a/minetestforfun_game/mods/doors/textures/doors3_wood_cherry_inv.png b/minetestforfun_game/mods/doors/textures/doors3_item_cherry.png similarity index 100% rename from minetestforfun_game/mods/doors/textures/doors3_wood_cherry_inv.png rename to minetestforfun_game/mods/doors/textures/doors3_item_cherry.png diff --git a/minetestforfun_game/mods/doors/textures/doors3_glass_inv.png b/minetestforfun_game/mods/doors/textures/doors3_item_glass.png similarity index 100% rename from minetestforfun_game/mods/doors/textures/doors3_glass_inv.png rename to minetestforfun_game/mods/doors/textures/doors3_item_glass.png diff --git a/minetestforfun_game/mods/doors/textures/doors3_obsidian_glass_inv.png b/minetestforfun_game/mods/doors/textures/doors3_item_obsidian_glass.png similarity index 100% rename from minetestforfun_game/mods/doors/textures/doors3_obsidian_glass_inv.png rename to minetestforfun_game/mods/doors/textures/doors3_item_obsidian_glass.png diff --git a/minetestforfun_game/mods/doors/textures/doors3_prison_inv.png b/minetestforfun_game/mods/doors/textures/doors3_item_prison.png similarity index 100% rename from minetestforfun_game/mods/doors/textures/doors3_prison_inv.png rename to minetestforfun_game/mods/doors/textures/doors3_item_prison.png diff --git a/minetestforfun_game/mods/doors/textures/doors3_steel_inv.png b/minetestforfun_game/mods/doors/textures/doors3_item_steel.png similarity index 100% rename from minetestforfun_game/mods/doors/textures/doors3_steel_inv.png rename to minetestforfun_game/mods/doors/textures/doors3_item_steel.png diff --git a/minetestforfun_game/mods/doors/textures/doors3_wood.png b/minetestforfun_game/mods/doors/textures/doors3_item_wood.png similarity index 100% rename from minetestforfun_game/mods/doors/textures/doors3_wood.png rename to minetestforfun_game/mods/doors/textures/doors3_item_wood.png diff --git a/minetestforfun_game/mods/doors/textures/doors3_steel_b.png b/minetestforfun_game/mods/doors/textures/doors3_steel_b.png deleted file mode 100644 index 3a50011400dc50229a2bcf0bd654fb4ee1f4e93f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^3Lwk@BpAX3RW*PVXMsm#F#`j)FbFd;%$g$s6l5>) z^mS#w&%wjXW4ipvi+G?AQOSz&Zddc44qFq zZa(;#H&@FzcuDk{$CdkJf_KK9uismi$~I%ESmp1RwI$*H3?DpoKRppmSU4f>R@4D^ z1_q1Gk$eRV36O(yRqc3|qFAOiy5DXs8TgYG9mT zz{DWIJfX7?7zz%{vKbjRFq$m4T*k^UduQ{R4KLUj3Ysj>=|AISXyBFLk>p~?5r~)s z^zPm1>z~U6GBLbMn9qO4n3LfEb4k2}5Kw}jZATshgGrVy=e;evR!{Z0AS5QcY2j6& zgtQGdaee;Qj^FQz&eTk?5Ukdg00002VoOIv0K=%@ zus8q!010qNS#tmY3ljhU3ljkVnw%H_000McNliru-v|s7F#=;Li+d3daX|Q$SD@0CVVH<9G#3O^Z-AiC=^1E$0AfTR`Hp+X2#x!Y4B7-zW&4hJ64n zd*F&=rvF#wn;>WhB#QtJ9vGI}Vh@H~{0~4E(5NVFA7CCtjpC0(kP}ia!+<4fJt^kdg00002VoOIv0K=%@ zus8q!010qNS#tmY3ljhU3ljkVnw%H_000McNliru-v|s7FEWv_gy#SN0eeYAK~zY` zos~gO!!Qs4~sZ)8tgQwcZog!&;0pg zn^%Pou2}+r1$a2yFbJS1S`0P_4L|(00Jl__vu$7^yghRybQw5=nvgrE1~s|#EmZ;l z!)J-8u%yiVrdHOj%rv!Uk7Wp3w$up zATe!b1#7RG00gRnh*c3H5D0)cKsYV#fkt@ofW~^30aUmo;yC;;!vj9~;D7yVwv%$U zgwKF=1s`r^xNzV^C1BVU{Jhr*03T-`>cyRS!FL)c2FrKh;CtrZ-SA$TYN9FZ**Fun zb(O)Ov#0S*g&L?hcGH+=X^MF{1f@yCG-ndFBO^x*+-%MB&Jcg`3ZL;hgsa0Nfab6C zxd85puvD~wkB`}sHm0mEI`L9*790l9%rxGd>Q(E!oWc9o*+;5c+QhU!P_IA(60m)z g+QF-X6@v%<0LRjGuNA8&+yDRo07*qoM6N<$f@)9AfdBvi diff --git a/minetestforfun_game/mods/doors/textures/doors3_wood_b.png b/minetestforfun_game/mods/doors/textures/doors3_wood_b.png deleted file mode 100644 index 526c1f510d95c765b7e7669326c954bc6a060baf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@o&cW^S2Z;?Qz`Fw diff --git a/minetestforfun_game/mods/doors/textures/doors3_wood_t.png b/minetestforfun_game/mods/doors/textures/doors3_wood_t.png deleted file mode 100644 index 0fe0fb8faefc3a2a6e4e7894af3c74c27905215a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyLIFM@u0Z<#|Nm-gYNk?LKI(i0 zmZDc~rW^%|GL;1R1v4;|O+IS@CrO{{#E2UNn~>FVdQ&MBb@0K!fdcK`qY diff --git a/minetestforfun_game/mods/doors/textures/doors_brown.png b/minetestforfun_game/mods/doors/textures/doors_brown.png deleted file mode 100755 index 8c8e3d898f41a2e9e859f2717d0a5729cec260b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^j6f{F!VDx;H*&N9DgFST5LY)72_H)tM*}e@LvcGj z(aqaii-A&-o-U3d9M_Wt5(*L$5(F5WSlKuX8a60OFbIEOG_;G)*$!01;OXk;vd$@? F2>>+r7bO4y diff --git a/minetestforfun_game/mods/doors/textures/doors_door3_cherry.png b/minetestforfun_game/mods/doors/textures/doors_door3_cherry.png new file mode 100644 index 0000000000000000000000000000000000000000..c80eb6bcb98e7a14fd74f83334504e0aa8ef9814 GIT binary patch literal 614 zcmV-s0-61ZP)B0000sP)t-s0001A zE=XlDOnOISe@bVPJ87Orb*NQ?u!o_QVCozmVv0s-T zaYFfB1U+XKg|%26%);ZhjzN1I{a1>4e-oyu)SPR@kyZGu@BON<6-x;VVr);`gjOI% z97$&fEizA2v>!znDt_wA;mVgtC7GvDa;Vpwo&TDC5m)>@30v1z%3%LKM!DPdXfjgCt1O+&HE z<;apSE#@thf}RmOQ_z`$&J=W}pfd&iZwkU=yCb;ty#wsU%B|89T*^v_tqNN)@25Li z=nXD~de+{wwqhye{BB0000XP)t-sCMG5| z8VXD&4sbaYz`*1G|NkZ?Ccwbs#Khyw%;?|W@H1-V6951J26R$RQvd(}0001PrU#J# z00IC>L_t(|+U?olZiFBZ1Ymb5hw}ap+#4Vr18k^9Nw0B!)LRd~E3M+1Tf#1?!N~7M zU5zcGPJ0nu(hwEx#i=X}CN?G*A~q%srfOk%LTX~FT}--BeZBL>x-qdBeTty)r6Pt3 zd!3>v)nN=djCmgdu~PAGR`w7>H3@rX+lZw}5kuvPVdVXoBF>i(tEWkf1#%x2!f7l~ z5BB%45cU|V77KwGsyUeV>w4ru$LKj&zO;#@gSj|ns$hBKh1k4RqZ?wb7h<>FH_zYE zTkNZfDqjzNvoR*pVBHKb?`wGQ-#msri{k`rLVrf=>Cc}2?724oO@HPXRP9Z;9b;p< zOR0$c>}4`$Jfp8`!|@rtq1M%UMmI3t(M`;LMvt-L*iuzgjKgR27-g3bgczz4jx<*d zO`_&F>32ctaK6aZeOL&uk|WrwgwTbU-Jd!3Eh!yr$(7V{`ZFZPssSd3s)Qr$RijG1Y}esImtr6DjhOw#-uRs%#?Ld}G4l;c1$R7j SF#-$#0000D-sa>8fjv*C{Z)b*zF&pw6G22@7UwQh>SgHLbU*0Z1s?w&} zm*9KnVcn7Csh4H1DV9sPT$|3L*j%16VZzZ#tBh7?HeX40+oSyZd~4j><+2avemq&O z7RlK3lqEFvRO`KOXRd8gPV&s&u3WNdpNsnC=TgbC8afkCd|5s@^_TG7pELKXS>F8Z z>gwj^^i0P??{&1%rhQMB=}g`sbCN}KYTPqp1>NGhw3(lcpQpQAjA7Q8JwG)ix!3m2 ebqy=m7=|M|Wc6Q!1*HOg!QkoY=d#Wzp$P!}yl?>k literal 0 HcmV?d00001 diff --git a/minetestforfun_game/mods/doors/textures/doors_door3_prison.png b/minetestforfun_game/mods/doors/textures/doors_door3_prison.png new file mode 100644 index 0000000000000000000000000000000000000000..b6abf08c6bd0c2d6830c2ba4151310831b96578f GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^K0utn!3-oD)Kfx$lu&?Ah%1l=0x2meO-)T_XXpR_ z|9_X)W&{c`mIV0)GdMiEkp|?{d%8G=RNQ)d&5`SX0*}kZo{#_1^|_e7wtBN~L~ZxgkT(y^AGB0002bP)t-sdPie_ zN@u85gR)|d)N!Z#-0j!b*TTZW#l^+a($d1h!qU>x)z#J4*VowC*d`_>udlDLu&}qc zx4F5wy1Kf%ySu!+yuH1>zP`S{zrVo1z`?=6!otGC!^6bH#KpzM#>U3S$H&RZ$;!&g z%gf8n&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4|NsB56kk^W z000kkQchC<000000Qvp>{r>*`{{AcEBx(Qv2Ng*~K~z}7rI}lk-NX^cf8C=wUK^+^ zB&JBfsdB;^$XoLLze66A;22jKrxHwIuIpW&(RAlwM$+htL-cSonwxt1^6!7^$Q9qP zdkFx(KjGK2rw)Eo7b@3$}vM^bAl{|?#fAx zFdj&!GpK+RIb<9uvuv6=(^=lti8r^6E3b8C!6#P_gA@*!S^e=*+EB*@JlI0Ah@SV& z70T+J>#PtX5z4(wxQZLr2%iT@L%bmd2d5wR9OsHUBuG&1TC}|5Wp&!_1YPOO0c|W1 zs(lf72`}G5>bTW+grU7qKo|D|Kvs>FPU9*9+~m`y>n|Id4Sg?w&uaVHmQr*Hclteh z-A#*^H&-9r(@JM9-F4IT_1Jp1u4+(&>t?C@I-F!vQAO-HfWembHmqqP{$;i1XCrE4 z9%)aw<%0g6eO~(>@HT&|)_fphYt+~Q4WfF6>>76hQr4(}L#{qlkgQ*TpVQbVl(ui6 zqelL}YZ;sFbQNhCqrn#1(8ah@GUFmP&3~y>ZtK`ICX8DA&Rs$lY2H>yyRWpG;NAU5 zV?<&s_l|U-lN@F!$P#NFt^PBw|t$eAVN*@3V2m3rul$%k~&akc7vU&D~Ms1y@+^`|R{zK}wKF zsodo%-p$|508iX&M*LO&H}Ko=eLbLv&#ZhIZf25oG2NRxflnbfShLB^3y(=eQcOT3 z#V#QN&uUbD!jJO2@`^`@oz9%ByWsOW{-M3YKkE4J5m`mR>}6S&6lqQZB=3P=o1G?@ zD7-@{I>JSUaT~O{!^QN7fEDG5@N?;_f$hA@f?6BDAq$dUiW;)T9Os08VnIvB*^X~X zps)`L?g`S-_}ZH8vdMztfEqDvvY-_<>GJIJ@yG)2{6J-NAP#?;a?iv&8q^q&;>N=` z_ZpYA&Snwt4GgI9#5F)re=?v3e3K6=W3TN|{hPk-~MMT3CM%KW%m2i3r zz#k)qBf2W_2R15V?jj+iCuIc(u^FYY-du7|Di=%(a|eRk4RVn?*s32GgCc#}QR^K-|jb8&n(+!yM6WC|PyM zX}g&Edr=+9xBZQ0b7Vj#g8SE71{g@i>Kjy7 z#Bu3#BRJErY(iSyuWxd8QBd)mcdH)*!^-EZ7SHrF2REClx(mkiuqvF(xKkVni zF+Y_1G_~I>I5*18e#RXgFB9o-bD9eM4K5qMBby_5i4R;ffzK0-?$-gj{wSSl?V1uv zR|!j}B~reI%EnNO1QcWzI{JeOMZLrIphD?^zUr{wA}$TXMLYGjFp|3x$RPuP9J=+Vj?wlSOHjx134hIRmL90-ARR91%}w8#TN7E4y?W9ubJ5e0_X4Ucm67Un(U(pOr*lDs%JR;A+dXqyA>z@2h(}EulATA% z3Kmt#&Kr_RN|J`V9+k~y`I+OgdliUz14>k&^L6UJs%*1^`!(p-}M28an3B@lS*)Slp#h_qk-}d+`I4@@6wfkdo06Ezzr| z@@R!?Xo;_Qp)sFuAL34GtcqI7tGqeO*PYjo1A?QL uA^)g`loL84vk-mnuy$HUv-fXYJN*}ka&X>q1h2CI0000RRLg literal 0 HcmV?d00001 diff --git a/minetestforfun_game/mods/doors/textures/doors_door3_wood.png b/minetestforfun_game/mods/doors/textures/doors_door3_wood.png new file mode 100644 index 0000000000000000000000000000000000000000..3aefdba130c6a678eb633c67c40b17c86bdbb248 GIT binary patch literal 319 zcmV-F0l@x=P)B0000FP)t-s|Ns9c zCMGo+3QQ*sa5)uw{F>?j0004WQchCT zVw(;Uy`$MAZjatG`KDq;@1H9BM_XeF7fXncT#VGi@G-s^KE`g7Sz(w}n3;=ZMRZ=| zkriqCMPP5nU^^^*dI2U7>seqgz|3k)&2~RM5Iihba4{r~=z#?m*!ftTImVgejSs?c zjlS%No{N&F*kguD^Pg8^DQ^yz^7h8~Hg_`lcCQ7n6f@`9QjGD*R6GowJ@M!t!p9oqvKHPsA9WOcbP0l+XkKT09h# diff --git a/minetestforfun_game/mods/doors/textures/doors_item_tin.png b/minetestforfun_game/mods/doors/textures/doors_item_tin.png index 71509d671ac04dddcf205719862b961721db9c1d..c2c4a42736f86bc0680b90e0b3c1166ec64d0958 100644 GIT binary patch delta 40 wcmcb{c$sm6ikxVGPlzi61A~KuLs)WrR!LPsK|yIl`>I_>c5In^Wuogu01^ifCIA2c delta 43 zcmcc2c#Uy_ilRh-Plzi61A~KuLs)WrR!LPsK|yIl`>I_>{{R2~SpJN}M5l=WOpC zV@Z%-FoVOh8)-m}fv1aOh(vfY2QP2zRuK<_1Coq92?xAbnz;`~FickJbiBc3v&$gY iJxL(hNR3(9gkit7Fa@d89ZJ6T-G@yGywoQA0Orb diff --git a/minetestforfun_game/mods/doors/textures/doors_obsidian_glass_b.png b/minetestforfun_game/mods/doors/textures/doors_obsidian_glass_b.png deleted file mode 100644 index 9a6251aa0dc91f19bdc911e70010c21b311f6e36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnH3?%tPCZz)@&H$efR|bZ30RaJdHN$FkyE>pC zV@Z%-FoVOh8)-m}fv1aOh(vfY2QP2zRuK<_1Coq92?xAbnz;`~FickJbiBc3v&$gY iJxL(hNR3(9gkit7Fa@d89ZJ6T-G@yGywoQA0Orb diff --git a/minetestforfun_game/mods/doors/textures/doors_obsidian_glass_side.png b/minetestforfun_game/mods/doors/textures/doors_obsidian_glass_side.png deleted file mode 100755 index aa4c63aac9cb88b6361fa5964c4892504eac3841..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^j3CU&3?x-=hn)ga%mF?jt^xuAZ#3u32XeVQT^vI= bt|un|*-Q+Kj}-S916d57u6{1-oD!MFMGaQo)#gTe~DWM4f-{L6Q diff --git a/minetestforfun_game/mods/doors/textures/doors_prison_t.png b/minetestforfun_game/mods/doors/textures/doors_prison_t.png deleted file mode 100644 index 7579fb8857077709e4557cc76e77e35bf6dbe4b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy`~f~8u0UE!N(w@1YH9|n@@xij zm`Z~Df*BafCZDwc^2|J4978G?lM|E}Isy)yVPNyoiO^t6+ri}K#3hljIw6EnSX9*D pQGme_rmPS~ZV7|L#St@RGQ?Z3$lv$)c@t;?gQu&X%Q~loCIFn6BJ%(M diff --git a/minetestforfun_game/mods/doors/textures/doors_steel_a.png b/minetestforfun_game/mods/doors/textures/doors_steel_a.png deleted file mode 100644 index 34694a130bc50da50f1367ad7afb209d42088442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dymH|E?u4-UlXlS^7`}UnXckbJ_ z@4$fr2M-=Rbm-8jQ>V_HIdksZxr-MsUcP+!+O=ypZ{ECf=gz%*_Z~cWaQo8f0-zy` zB|(0{3=Yq3qyafwJzX3_BqUo8-u5~iAi{d!W@2|m=HLJOzc?y}otfmU(Yt8Q%sP?X zu178|+S2(fPSPu<&1g!+Wi>0Y_ZluNsozy@x#(-GzI*dkQu(${vy0M?mc_UNY1O_* zT1gkxtUC6K0u{7vUci&?IAx)435#~qA+56h3}N3R%kQ3S@4kETg4(Pik#NB+oq9|E zEZ@@k&H2wYwOs=0hAuYNS;Bvxo;#V=Q4!!JsdURlJWf#GYf6!D?jz~cLYs4s!X2W3 P9$@fv^>bP0l+XkK>hqB_ diff --git a/minetestforfun_game/mods/doors/textures/doors_steel_b.png b/minetestforfun_game/mods/doors/textures/doors_steel_b.png deleted file mode 100644 index 66f4906ec1f5cac2b592e6f472fbe321b34843c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 332 zcmV-S0ki&zP)`2*S5B{<>lns+S<9fxy{YZ&(F`x%ge#R!X_prGcz+TE-pL5 zYnA{20MSWAK~#9!jnTmp!XOMqQ3!1!1d9Iu&l-qN$5nb4?I>pmOp|I#uh+CnNh$Br zC!#s;fyXzZoQcXOqSj(C2GL<%yW_8%MPi^zbX}!jh#hrT3UjS7zz7Ha1Ub)ITZ@6} z0z|ecGCJ5g^6#Pqu)_9Z>56xEu!HnlZqL z-{E}uHo!G40MtA4^BDvGSXitUbKNa4XAF8@;M{dfwRiktZY>65_}0F;FYz~#7^t?L e2;Lt43Beo4suUgmyqSvt0000Pbpoxl#mMWeujv*Yf$pwXhMTLchMTrJxDF$X{VkRjZtxQ!0 e52hWO!^m)wUoAY*$M!f-AA_f>pUXO@geCxXju&nK delta 78 zcmb=fn;^l-!OXzGprOkjJW)~6M%~lJF{FYqIf0Q$O-+o0;S$f8GiQ2u6oif>uxyIF ictAkxzz3PO?~Dn5SSk;G2;2w=Kq;WdR_@b+XoX?EQa&wR4NF z2h%g6Fdr?EnIK-DhM1IE6NOQxW#YhE9!+|TC<|J9zcc6Q2VL`%o)Lv7=1CZVoEX@8 P00000NkvXXu0mjfo1Tn% diff --git a/minetestforfun_game/mods/doors/textures/doors_wood_b.png b/minetestforfun_game/mods/doors/textures/doors_wood_b.png deleted file mode 100644 index 366e685432766e92016cb0578142ca3aa358a310..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyP60k4uBkq%>AtE79?D6c${GIZ z?xs@l?n+4krm?PyK9(|pwsN_FnyEo%kxufNVV3zJTCqMxF2)jSYHAMpVtG;41_lOm ztqjG0roHxbaSV}=Y(4leZ?=I1!vW)e5gfUuE8qX0vRce($Q-Zc^kQy3$1kcLdzE@u6)-OEWr_W_Ut-^N>8HFNH2|G6_o8J^ZWpA$7j zMX6<4)kE=vdeL0=99QnemASH%eogFIIoWx`rW@yj%M^Zk)h9DJUXl}RT$0hx?zpw@ zSOUwW?(ZG$A5L$4FL>;~_vT|vj;C~|-*!B|EUTU81LMA9SuZj+pXdX+jlt8^&t;uc GLK6TN>uQ_; diff --git a/minetestforfun_game/mods/doors/textures/doors_wood_cherry_b.png b/minetestforfun_game/mods/doors/textures/doors_wood_cherry_b.png deleted file mode 100644 index da235021f7abc430e9c013568ac1979c36dba30a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295 zcmV+?0oeYDP)e6aSO|=SwRs&!_~LyC?}7K4bDuL7 zi1?yj=;2IeO%W`VQtRs?4d#_;y<;Ipz1p9ca%))7Awx(DJkS)uf^$~OUetMFAx0aC z`QF=*SRh)jYJC=kg;MNuPZ2B--PNqL4ZWb!F}y3&&sFK-Zk1@Bwq