From 486509876aa205b2fcd2c4006489c0fb6c83d807 Mon Sep 17 00:00:00 2001
From: BlockMen <nmuelll@web.de>
Date: Mon, 3 Jun 2013 21:56:17 +0200
Subject: [PATCH] Separate formspecs of active furnace and chests

Makes its possible to override formspecs by mods
---
 mods/default/nodes.lua | 51 ++++++++++++++++++++++++++++--------------
 1 file changed, 34 insertions(+), 17 deletions(-)

diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua
index 81ed52a1..148836dd 100644
--- a/mods/default/nodes.lua
+++ b/mods/default/nodes.lua
@@ -598,6 +598,21 @@ minetest.register_node("default:sign_wall", {
 	end,
 })
 
+default.chest_formspec = 
+	"size[8,9]"..
+	"list[current_name;main;0,0;8,4;]"..
+	"list[current_player;main;0,5;8,4;]"
+
+function default.get_locked_chest_formspec(pos)
+	local spos = pos.x .. "," .. pos.y .. "," ..pos.z
+	local formspec =
+		"size[8,9]"..
+		"list[nodemeta:".. spos .. ";main;0,0;8,4;]"..
+		"list[current_player;main;0,5;8,4;]"
+	return formspec
+end
+
+
 minetest.register_node("default:chest", {
 	description = "Chest",
 	tiles = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png",
@@ -608,10 +623,7 @@ minetest.register_node("default:chest", {
 	sounds = default.node_sound_wood_defaults(),
 	on_construct = function(pos)
 		local meta = minetest.get_meta(pos)
-		meta:set_string("formspec",
-				"size[8,9]"..
-				"list[current_name;main;0,0;8,4;]"..
-				"list[current_player;main;0,5;8,4;]")
+		meta:set_string("formspec",default.chest_formspec)
 		meta:set_string("infotext", "Chest")
 		local inv = meta:get_inventory()
 		inv:set_size("main", 8*4)
@@ -716,15 +728,27 @@ minetest.register_node("default:chest_locked", {
 	on_rightclick = function(pos, node, clicker)
 		local meta = minetest.get_meta(pos)
 		if has_locked_chest_privilege(meta, clicker) then
-			local pos = pos.x .. "," .. pos.y .. "," ..pos.z
-			minetest.show_formspec(clicker:get_player_name(), "default:chest_locked",
-				"size[8,9]"..
-				"list[nodemeta:".. pos .. ";main;0,0;8,4;]"..
-				"list[current_player;main;0,5;8,4;]")
+			minetest.show_formspec(
+				clicker:get_player_name(),
+				"default:chest_locked",
+				default.get_locked_chest_formspec(pos)
+			)
 		end
 	end,
 })
 
+function default.get_furnace_active_formspec(pos, percent)
+	local formspec =
+		"size[8,9]"..
+		"image[2,2;1,1;default_furnace_fire_bg.png^[lowpart:"..
+		(100-percent)..":default_furnace_fire_fg.png]"..
+		"list[current_name;fuel;2,3;1,1;]"..
+		"list[current_name;src;2,1;1,1;]"..
+		"list[current_name;dst;5,1;2,2;]"..
+		"list[current_player;main;0,5;8,4;]"
+	return formspec
+end
+
 default.furnace_inactive_formspec =
 	"size[8,9]"..
 	"image[2,2;1,1;default_furnace_fire_bg.png]"..
@@ -937,14 +961,7 @@ minetest.register_abm({
 					meta:get_float("fuel_totaltime") * 100)
 			meta:set_string("infotext","Furnace active: "..percent.."%")
 			hacky_swap_node(pos,"default:furnace_active")
-			meta:set_string("formspec",
-				"size[8,9]"..
-				"image[2,2;1,1;default_furnace_fire_bg.png^[lowpart:"..
-						(100-percent)..":default_furnace_fire_fg.png]"..
-				"list[current_name;fuel;2,3;1,1;]"..
-				"list[current_name;src;2,1;1,1;]"..
-				"list[current_name;dst;5,1;2,2;]"..
-				"list[current_player;main;0,5;8,4;]")
+			meta:set_string("formspec",default.get_furnace_active_formspec(pos, percent))
 			return
 		end
 
-- 
GitLab