Fix door model UV for open and close (#2372)
[oweals/minetest_game.git] / mods / doors / init.lua
index 6cc7d23f05d3fc0a4110bdd600f73d115b109195..08b650f336d88a182ca727a1e2fbd5683cfc4ba9 100644 (file)
@@ -115,10 +115,10 @@ local transform = {
                {v = "_a", param2 = 2},
        },
        {
-               {v = "_b", param2 = 1},
-               {v = "_b", param2 = 2},
-               {v = "_b", param2 = 3},
-               {v = "_b", param2 = 0},
+               {v = "_c", param2 = 1},
+               {v = "_c", param2 = 2},
+               {v = "_c", param2 = 3},
+               {v = "_c", param2 = 0},
        },
        {
                {v = "_b", param2 = 1},
@@ -127,10 +127,10 @@ local transform = {
                {v = "_b", param2 = 0},
        },
        {
-               {v = "_a", param2 = 3},
-               {v = "_a", param2 = 0},
-               {v = "_a", param2 = 1},
-               {v = "_a", param2 = 2},
+               {v = "_d", param2 = 3},
+               {v = "_d", param2 = 0},
+               {v = "_d", param2 = 1},
+               {v = "_d", param2 = 2},
        },
 }
 
@@ -176,10 +176,10 @@ function doors.door_toggle(pos, node, clicker)
 
        if state % 2 == 0 then
                minetest.sound_play(def.door.sounds[1],
-                       {pos = pos, gain = 0.3, max_hear_distance = 10})
+                       {pos = pos, gain = 0.3, max_hear_distance = 10}, true)
        else
                minetest.sound_play(def.door.sounds[2],
-                       {pos = pos, gain = 0.3, max_hear_distance = 10})
+                       {pos = pos, gain = 0.3, max_hear_distance = 10}, true)
        end
 
        minetest.swap_node(pos, {
@@ -340,7 +340,7 @@ function doors.register(name, def)
                                itemstack:take_item()
                        end
 
-                       minetest.sound_play(def.sounds.place, {pos = pos})
+                       minetest.sound_play(def.sounds.place, {pos = pos}, true)
 
                        on_place_node(pos, minetest.get_node(pos),
                                placer, node, itemstack, pointed_thing)
@@ -449,15 +449,23 @@ function doors.register(name, def)
        def.mesh = "door_b.obj"
        minetest.register_node(":" .. name .. "_b", def)
 
+       def.mesh = "door_a2.obj"
+       minetest.register_node(":" .. name .. "_c", def)
+
+       def.mesh = "door_b2.obj"
+       minetest.register_node(":" .. name .. "_d", def)
+
        doors.registered_doors[name .. "_a"] = true
        doors.registered_doors[name .. "_b"] = true
+       doors.registered_doors[name .. "_c"] = true
+       doors.registered_doors[name .. "_d"] = true
 end
 
 doors.register("door_wood", {
                tiles = {{ name = "doors_door_wood.png", backface_culling = true }},
                description = S("Wooden Door"),
                inventory_image = "doors_item_wood.png",
-               groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
+               groups = {node = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
                recipe = {
                        {"group:wood", "group:wood"},
                        {"group:wood", "group:wood"},
@@ -470,7 +478,7 @@ doors.register("door_steel", {
                description = S("Steel Door"),
                inventory_image = "doors_item_steel.png",
                protected = true,
-               groups = {cracky = 1, level = 2},
+               groups = {node = 1, cracky = 1, level = 2},
                sounds = default.node_sound_metal_defaults(),
                sound_open = "doors_steel_door_open",
                sound_close = "doors_steel_door_close",
@@ -485,7 +493,7 @@ doors.register("door_glass", {
                tiles = {"doors_door_glass.png"},
                description = S("Glass Door"),
                inventory_image = "doors_item_glass.png",
-               groups = {cracky=3, oddly_breakable_by_hand=3},
+               groups = {node = 1, cracky=3, oddly_breakable_by_hand=3},
                sounds = default.node_sound_glass_defaults(),
                sound_open = "doors_glass_door_open",
                sound_close = "doors_glass_door_close",
@@ -500,7 +508,7 @@ doors.register("door_obsidian_glass", {
                tiles = {"doors_door_obsidian_glass.png"},
                description = S("Obsidian Glass Door"),
                inventory_image = "doors_item_obsidian_glass.png",
-               groups = {cracky=3},
+               groups = {node = 1, cracky=3},
                sounds = default.node_sound_glass_defaults(),
                sound_open = "doors_glass_door_open",
                sound_close = "doors_glass_door_close",
@@ -550,12 +558,12 @@ function doors.trapdoor_toggle(pos, node, clicker)
 
        if string.sub(node.name, -5) == "_open" then
                minetest.sound_play(def.sound_close,
-                       {pos = pos, gain = 0.3, max_hear_distance = 10})
+                       {pos = pos, gain = 0.3, max_hear_distance = 10}, true)
                minetest.swap_node(pos, {name = string.sub(node.name, 1,
                        string.len(node.name) - 5), param1 = node.param1, param2 = node.param2})
        else
                minetest.sound_play(def.sound_open,
-                       {pos = pos, gain = 0.3, max_hear_distance = 10})
+                       {pos = pos, gain = 0.3, max_hear_distance = 10}, true)
                minetest.swap_node(pos, {name = node.name .. "_open",
                        param1 = node.param1, param2 = node.param2})
        end
@@ -586,7 +594,7 @@ function doors.register_trapdoor(name, def)
                        local pn = placer:get_player_name()
                        local meta = minetest.get_meta(pos)
                        meta:set_string("owner", pn)
-                       meta:set_string("infotext", S("Steel Trapdoor") .. "\n" .. S("Owned by @1", pn))
+                       meta:set_string("infotext", def.description .. "\n" .. S("Owned by @1", pn))
 
                        return (creative and creative.is_enabled_for and creative.is_enabled_for(pn))
                end
@@ -744,7 +752,7 @@ function doors.register_fencegate(name, def)
                        local node_def = minetest.registered_nodes[node.name]
                        minetest.swap_node(pos, {name = node_def.gate, param2 = node.param2})
                        minetest.sound_play(node_def.sound, {pos = pos, gain = 0.3,
-                               max_hear_distance = 8})
+                               max_hear_distance = 8}, true)
                        return itemstack
                end,
                selection_box = {