Add backface_culling to open chests and fencegates
authorDS-Minetest <vorunbekannt75@web.de>
Mon, 19 Jun 2017 16:51:21 +0000 (18:51 +0200)
committersfan5 <sfan5@live.de>
Sun, 19 Nov 2017 21:53:53 +0000 (22:53 +0100)
game_api.txt
mods/default/nodes.lua
mods/doors/init.lua

index 887f394e28f4f0e84ed6687e6c191f990d30db11..1864cba4279b6e1b021b20d59f449887f2330a2c 100644 (file)
@@ -155,7 +155,8 @@ The doors mod allows modders to register custom doors and trapdoors.
 ### Fence gate definition
 
        description = "Wooden Fence Gate",
-       texture = "default_wood.png",
+       texture = "default_wood.png", -- `backface_culling` will automatically be
+                                     -- set to `true` if not specified.
        material = "default:wood",
        groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
        sounds = default.node_sound_wood_defaults(), -- optional
index 016b6aa8f2f99be1ef00bc0c84ccaacebd499306..8e4d7120cc95f2a0afd5678dab7c2859c5608b64 100644 (file)
@@ -1990,12 +1990,19 @@ function default.register_chest(name, d)
        local def_closed = table.copy(def)
 
        def_opened.mesh = "chest_open.obj"
+       for i = 1, #def_opened.tiles do
+               if type(def_opened.tiles[i]) == "string" then
+                       def_opened.tiles[i] = {name = def_opened.tiles[i], backface_culling = true}
+               elseif def_opened.tiles[i].backface_culling == nil then
+                       def_opened.tiles[i].backface_culling = true
+               end
+       end
        def_opened.drop = "default:" .. name
        def_opened.groups.not_in_creative_inventory = 1
        def_opened.selection_box = {
                type = "fixed",
                fixed = { -1/2, -1/2, -1/2, 1/2, 3/16, 1/2 },
-               }
+       }
        def_opened.can_dig = function()
                return false
        end
index 371b43a23a8c598257862f529b03718a602970fd..b3535034e2c35d811e6c29bf7af4299773da9df5 100644 (file)
@@ -712,7 +712,7 @@ function doors.register_fencegate(name, def)
        local fence = {
                description = def.description,
                drawtype = "mesh",
-               tiles = {def.texture},
+               tiles = {},
                paramtype = "light",
                paramtype2 = "facedir",
                sunlight_propagates = true,
@@ -734,6 +734,16 @@ function doors.register_fencegate(name, def)
                },
        }
 
+
+       if type(def.texture) == "string" then
+               fence.tiles[1] = {name = def.texture, backface_culling = true}
+       elseif def.texture.backface_culling == nil then
+               fence.tiles[1] = table.copy(def.texture)
+               fence.tiles[1].backface_culling = true
+       else
+               fence.tiles[1] = def.texture
+       end
+
        if not fence.sounds then
                fence.sounds = default.node_sound_wood_defaults()
        end