doors: Update Italian translation (#2670)
[oweals/minetest_game.git] / mods / doors / init.lua
index 9a5c9b43accfa5060382ec006aee36ff6f9a5761..2048a643877463ac93dd7627b2ca41a161d05f59 100644 (file)
@@ -1,9 +1,15 @@
+-- doors/init.lua
+
 -- our API object
 doors = {}
 
 doors.registered_doors = {}
 doors.registered_trapdoors = {}
 
+-- Load support for MT game translation.
+local S = minetest.get_translator("doors")
+
+
 local function replace_old_owner_information(pos)
        local meta = minetest.get_meta(pos)
        local owner = meta:get_string("doors_owner")
@@ -71,10 +77,8 @@ end
 -- this hidden node is placed on top of the bottom, and prevents
 -- nodes from being placed in the top half of the door.
 minetest.register_node("doors:hidden", {
-       description = "Hidden Door Segment",
-       -- can't use airlike otherwise falling nodes will turn to entities
-       -- and will be forever stuck until door is removed.
-       drawtype = "nodebox",
+       description = S("Hidden Door Segment"),
+       drawtype = "airlike",
        paramtype = "light",
        paramtype2 = "facedir",
        sunlight_propagates = true,
@@ -87,13 +91,7 @@ minetest.register_node("doors:hidden", {
        drop = "",
        groups = {not_in_creative_inventory = 1},
        on_blast = function() end,
-       tiles = {"doors_blank.png"},
-       -- 1px transparent block inside door hinge near node top.
-       node_box = {
-               type = "fixed",
-               fixed = {-15/32, 13/32, -15/32, -13/32, 1/2, -13/32},
-       },
-       -- collision_box needed otherise selection box would be full node size
+       -- 1px block inside door hinge near node top
        collision_box = {
                type = "fixed",
                fixed = {-15/32, 13/32, -15/32, -13/32, 1/2, -13/32},
@@ -109,10 +107,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},
@@ -121,10 +119,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},
        },
 }
 
@@ -170,10 +168,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, {
@@ -327,14 +325,14 @@ function doors.register(name, def)
 
                        if def.protected then
                                meta:set_string("owner", pn)
-                               meta:set_string("infotext", "Owned by " .. pn)
+                               meta:set_string("infotext", def.description .. "\n" .. S("Owned by @1", pn))
                        end
 
                        if not (creative and creative.is_enabled_for and creative.is_enabled_for(pn)) then
                                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)
@@ -401,7 +399,7 @@ function doors.register(name, def)
                        -- verify placer is owner of lockable door
                        if owner ~= pname then
                                minetest.record_protection_violation(pos, pname)
-                               minetest.chat_send_player(pname, "You do not own this locked door.")
+                               minetest.chat_send_player(pname, S("You do not own this locked door."))
                                return nil
                        end
 
@@ -411,7 +409,7 @@ function doors.register(name, def)
                                meta:set_string("key_lock_secret", secret)
                        end
 
-                       return secret, "a locked door", owner
+                       return secret, S("a locked door"), owner
                end
                def.node_dig_prediction = ""
        else
@@ -443,15 +441,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 = "Wooden Door",
+               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"},
@@ -461,10 +467,10 @@ doors.register("door_wood", {
 
 doors.register("door_steel", {
                tiles = {{name = "doors_door_steel.png", backface_culling = true}},
-               description = "Steel Door",
+               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",
@@ -477,9 +483,9 @@ doors.register("door_steel", {
 
 doors.register("door_glass", {
                tiles = {"doors_door_glass.png"},
-               description = "Glass Door",
+               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",
@@ -492,9 +498,9 @@ doors.register("door_glass", {
 
 doors.register("door_obsidian_glass", {
                tiles = {"doors_door_obsidian_glass.png"},
-               description = "Obsidian Glass Door",
+               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",
@@ -544,12 +550,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
@@ -580,7 +586,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", "Owned by "..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
@@ -599,7 +605,7 @@ function doors.register_trapdoor(name, def)
                        -- verify placer is owner of lockable door
                        if owner ~= pname then
                                minetest.record_protection_violation(pos, pname)
-                               minetest.chat_send_player(pname, "You do not own this trapdoor.")
+                               minetest.chat_send_player(pname, S("You do not own this trapdoor."))
                                return nil
                        end
 
@@ -609,7 +615,7 @@ function doors.register_trapdoor(name, def)
                                meta:set_string("key_lock_secret", secret)
                        end
 
-                       return secret, "a locked trapdoor", owner
+                       return secret, S("a locked trapdoor"), owner
                end
                def.node_dig_prediction = ""
        else
@@ -679,7 +685,7 @@ function doors.register_trapdoor(name, def)
 end
 
 doors.register_trapdoor("doors:trapdoor", {
-       description = "Wooden Trapdoor",
+       description = S("Wooden Trapdoor"),
        inventory_image = "doors_trapdoor.png",
        wield_image = "doors_trapdoor.png",
        tile_front = "doors_trapdoor.png",
@@ -688,7 +694,7 @@ doors.register_trapdoor("doors:trapdoor", {
 })
 
 doors.register_trapdoor("doors:trapdoor_steel", {
-       description = "Steel Trapdoor",
+       description = S("Steel Trapdoor"),
        inventory_image = "doors_trapdoor_steel.png",
        wield_image = "doors_trapdoor_steel.png",
        tile_front = "doors_trapdoor_steel.png",
@@ -719,6 +725,7 @@ minetest.register_craft({
 
 
 ----fence gate----
+local fence_collision_extra = minetest.settings:get_bool("enable_fence_tall") and 3/8 or 0
 
 function doors.register_fencegate(name, def)
        local fence = {
@@ -737,12 +744,12 @@ 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 = {
                        type = "fixed",
-                       fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4},
+                       fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4}
                },
        }
 
@@ -768,7 +775,7 @@ function doors.register_fencegate(name, def)
        fence_closed.sound = "doors_fencegate_open"
        fence_closed.collision_box = {
                type = "fixed",
-               fixed = {-1/2, -1/2, -1/4, 1/2, 1/2, 1/4},
+               fixed = {-1/2, -1/2, -1/8, 1/2, 1/2 + fence_collision_extra, 1/8}
        }
 
        local fence_open = table.copy(fence)
@@ -778,8 +785,8 @@ function doors.register_fencegate(name, def)
        fence_open.groups.not_in_creative_inventory = 1
        fence_open.collision_box = {
                type = "fixed",
-               fixed = {{-1/2, -1/2, -1/4, -3/8, 1/2, 1/4},
-                       {-1/2, -3/8, -1/2, -3/8, 3/8, 0}},
+               fixed = {{-1/2, -1/2, -1/8, -3/8, 1/2 + fence_collision_extra, 1/8},
+                        {-1/2, -3/8, -1/2, -3/8, 3/8,                         0  }}
        }
 
        minetest.register_node(":" .. name .. "_closed", fence_closed)
@@ -795,35 +802,35 @@ function doors.register_fencegate(name, def)
 end
 
 doors.register_fencegate("doors:gate_wood", {
-       description = "Apple Wood Fence Gate",
+       description = S("Apple Wood Fence Gate"),
        texture = "default_wood.png",
        material = "default:wood",
        groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}
 })
 
 doors.register_fencegate("doors:gate_acacia_wood", {
-       description = "Acacia Wood Fence Gate",
+       description = S("Acacia Wood Fence Gate"),
        texture = "default_acacia_wood.png",
        material = "default:acacia_wood",
        groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}
 })
 
 doors.register_fencegate("doors:gate_junglewood", {
-       description = "Jungle Wood Fence Gate",
+       description = S("Jungle Wood Fence Gate"),
        texture = "default_junglewood.png",
        material = "default:junglewood",
        groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}
 })
 
 doors.register_fencegate("doors:gate_pine_wood", {
-       description = "Pine Wood Fence Gate",
+       description = S("Pine Wood Fence Gate"),
        texture = "default_pine_wood.png",
        material = "default:pine_wood",
        groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}
 })
 
 doors.register_fencegate("doors:gate_aspen_wood", {
-       description = "Aspen Wood Fence Gate",
+       description = S("Aspen Wood Fence Gate"),
        texture = "default_aspen_wood.png",
        material = "default:aspen_wood",
        groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}