From 2e413b521ab472d94b92de76e33b83b168d37187 Mon Sep 17 00:00:00 2001 From: DS-Minetest Date: Mon, 19 Jun 2017 18:51:21 +0200 Subject: [PATCH] Add backface_culling to open chests and fencegates --- game_api.txt | 3 ++- mods/default/nodes.lua | 9 ++++++++- mods/doors/init.lua | 12 +++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/game_api.txt b/game_api.txt index 887f394e..1864cba4 100644 --- a/game_api.txt +++ b/game_api.txt @@ -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 diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua index 28604057..693bc704 100644 --- a/mods/default/nodes.lua +++ b/mods/default/nodes.lua @@ -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 diff --git a/mods/doors/init.lua b/mods/doors/init.lua index 2c079aa9..3fffc84f 100644 --- a/mods/doors/init.lua +++ b/mods/doors/init.lua @@ -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