From 2e413b521ab472d94b92de76e33b83b168d37187 Mon Sep 17 00:00:00 2001
From: DS-Minetest <vorunbekannt75@web.de>
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
-- 
GitLab