From e90b28895cc28daf1a2e4fb772bd191400cf9e62 Mon Sep 17 00:00:00 2001
From: fgrosswig <falk@grosswig.de>
Date: Mon, 06 Jan 2020 21:50:15 +0100
Subject: [PATCH] battery_box.lua: Make "srcstack" local (#525)

---
 extranodes/init.lua |  364 ++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 298 insertions(+), 66 deletions(-)

diff --git a/extranodes/init.lua b/extranodes/init.lua
index b5ddc13..42c7d67 100644
--- a/extranodes/init.lua
+++ b/extranodes/init.lua
@@ -1,77 +1,309 @@
 -- Minetest 0.4.6 mod: extranodes
 -- namespace: technic
+-- Boilerplate to support localized strings if intllib mod is installed.
+local S = rawget(_G, "intllib") and intllib.Getter() or function(s) return s end
 
---register stairslike nodes 
-register_stair_slab_panel_micro("technic", "marble", "technic:marble",
-	{cracky=2, not_in_creative_inventory=1},
-	{"technic_marble.png"},
-	"Marble",
-	"marble",
-	"facedir",
-	0)
+if minetest.get_modpath("moreblocks") then
 
-register_stair_slab_panel_micro("technic", "marble_bricks", "technic:marble_bricks",
-	{cracky=2, not_in_creative_inventory=1},
-	{"technic_marble_bricks.png"},
-	"Marble Bricks",
-	"marble_bricks",
-	"facedir",
-	0)
+	-- register stairsplus/circular_saw nodes
+	-- we skip blast resistant concrete and uranium intentionally
+	-- chrome seems to be too hard of a metal to be actually sawable
 
-register_stair_slab_panel_micro("technic", "granite", "technic:granite",
-	{cracky=3, not_in_creative_inventory=1},
-	{"technic_granite.png"},
-	"Granite",
-	"granite",
-	"facedir",
-	0)
+	stairsplus:register_all("technic", "marble", "technic:marble", {
+		description=S("Marble"),
+		groups={cracky=3, not_in_creative_inventory=1},
+		tiles={"technic_marble.png"},
+	})
 
-register_stair_slab_panel_micro("technic", "concrete", "technic:concrete",
-	{cracky=3, not_in_creative_inventory=1},
-	{"technic_concrete_block.png"},
-	"Concrete",
-	"concrete",
-	"facedir",
-	0)
+	stairsplus:register_all("technic", "marble_bricks", "technic:marble_bricks", {
+		description=S("Marble Bricks"),
+		groups={cracky=3, not_in_creative_inventory=1},
+		tiles={"technic_marble_bricks.png"},
+	})
 
---register nodes in circular saw if aviable
-if circular_saw then 
-	for i,v in ipairs({"concrete",  "marble",  "marble_bricks",  "granite",  "default:obsidian"}) do
-		table.insert(circular_saw.known_stairs, "technic:" ..v);
+	stairsplus:register_all("technic", "granite", "technic:granite", {
+		description=S("Granite"),
+		groups={cracky=1, not_in_creative_inventory=1},
+		tiles={"technic_granite.png"},
+	})
+
+	stairsplus:register_all("technic", "concrete", "technic:concrete", {
+		description=S("Concrete"),
+		groups={cracky=3, not_in_creative_inventory=1},
+		tiles={"basic_materials_concrete_block.png"},
+	})
+
+	stairsplus:register_all("technic", "zinc_block", "technic:zinc_block", {
+		description=S("Zinc Block"),
+		groups={cracky=1, not_in_creative_inventory=1},
+		tiles={"technic_zinc_block.png"},
+	})
+
+	stairsplus:register_all("technic", "cast_iron_block", "technic:cast_iron_block", {
+		description=S("Cast Iron Block"),
+		groups={cracky=1, not_in_creative_inventory=1},
+		tiles={"technic_cast_iron_block.png"},
+	})
+
+	stairsplus:register_all("technic", "carbon_steel_block", "technic:carbon_steel_block", {
+		description=S("Carbon Steel Block"),
+		groups={cracky=1, not_in_creative_inventory=1},
+		tiles={"technic_carbon_steel_block.png"},
+	})
+
+	stairsplus:register_all("technic", "stainless_steel_block", "technic:stainless_steel_block", {
+		description=S("Stainless Steel Block"),
+		groups={cracky=1, not_in_creative_inventory=1},
+		tiles={"technic_stainless_steel_block.png"},
+	})
+
+	function register_technic_stairs_alias(modname, origname, newmod, newname)
+		minetest.register_alias(modname .. ":slab_" .. origname, newmod..":slab_" .. newname)
+		minetest.register_alias(modname .. ":slab_" .. origname .. "_inverted", newmod..":slab_" .. newname .. "_inverted")
+		minetest.register_alias(modname .. ":slab_" .. origname .. "_wall", newmod..":slab_" .. newname .. "_wall")
+		minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter", newmod..":slab_" .. newname .. "_quarter")
+		minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_inverted", newmod..":slab_" .. newname .. "_quarter_inverted")
+		minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_wall", newmod..":slab_" .. newname .. "_quarter_wall")
+		minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter", newmod..":slab_" .. newname .. "_three_quarter")
+		minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_inverted", newmod..":slab_" .. newname .. "_three_quarter_inverted")
+		minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_wall", newmod..":slab_" .. newname .. "_three_quarter_wall")
+		minetest.register_alias(modname .. ":stair_" .. origname, newmod..":stair_" .. newname)
+		minetest.register_alias(modname .. ":stair_" .. origname .. "_inverted", newmod..":stair_" .. newname .. "_inverted")
+		minetest.register_alias(modname .. ":stair_" .. origname .. "_wall", newmod..":stair_" .. newname .. "_wall")
+		minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half")
+		minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted")
+		minetest.register_alias(modname .. ":stair_" .. origname .. "_half", newmod..":stair_" .. newname .. "_half")
+		minetest.register_alias(modname .. ":stair_" .. origname .. "_half_inverted", newmod..":stair_" .. newname .. "_half_inverted")
+		minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half", newmod..":stair_" .. newname .. "_right_half")
+		minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half_inverted", newmod..":stair_" .. newname .. "_right_half_inverted")
+		minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half")
+		minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted")
+		minetest.register_alias(modname .. ":stair_" .. origname .. "_inner", newmod..":stair_" .. newname .. "_inner")
+		minetest.register_alias(modname .. ":stair_" .. origname .. "_inner_inverted", newmod..":stair_" .. newname .. "_inner_inverted")
+		minetest.register_alias(modname .. ":stair_" .. origname .. "_outer", newmod..":stair_" .. newname .. "_outer")
+		minetest.register_alias(modname .. ":stair_" .. origname .. "_outer_inverted", newmod..":stair_" .. newname .. "_outer_inverted")
+		minetest.register_alias(modname .. ":panel_" .. origname .. "_bottom", newmod..":panel_" .. newname .. "_bottom")
+		minetest.register_alias(modname .. ":panel_" .. origname .. "_top", newmod..":panel_" .. newname .. "_top")
+		minetest.register_alias(modname .. ":panel_" .. origname .. "_vertical", newmod..":panel_" .. newname .. "_vertical")
+		minetest.register_alias(modname .. ":micro_" .. origname .. "_bottom", newmod..":micro_" .. newname .. "_bottom")
+		minetest.register_alias(modname .. ":micro_" .. origname .. "_top", newmod..":micro_" .. newname .. "_top")
+	end
+
+	register_technic_stairs_alias("stairsplus", "concrete", "technic", "concrete")
+	register_technic_stairs_alias("stairsplus", "marble", "technic", "marble")
+	register_technic_stairs_alias("stairsplus", "granite", "technic", "granite")
+	register_technic_stairs_alias("stairsplus", "marble_bricks", "technic", "marble_bricks")
+
+end
+
+local iclip_def = {
+	description = S("Insulator/cable clip"),
+	drawtype = "mesh",
+	mesh = "technic_insulator_clip.obj",
+	tiles = {"technic_insulator_clip.png"},
+	is_ground_content = false,
+	groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1 },
+	sounds = default.node_sound_stone_defaults(),
+}
+
+local iclipfence_def = {
+	description = S("Insulator/cable clip"),
+	tiles = {"technic_insulator_clip.png"},
+	is_ground_content = false,
+	paramtype = "light",
+	drawtype = "nodebox",
+	node_box = {
+		type = "connected",
+		fixed = {
+			{ -0.25,   0.75,   -0.25,   0.25,   1.25,   0.25   }, -- the clip on top
+			{ -0.125, 0.6875, -0.125, 0.125, 0.75,   0.125 },
+			{ -0.1875,  0.625,  -0.1875,  0.1875,  0.6875, 0.1875  },
+			{ -0.125, 0.5625, -0.125, 0.125, 0.625,  0.125 },
+			{ -0.1875,  0.5,    -0.1875,  0.1875,  0.5625, 0.1875  },
+			{ -0.125, 0.4375, -0.125, 0.125, 0.5,    0.125 },
+			{ -0.1875,  0.375,  -0.1875,  0.1875,  0.4375, 0.1875  },
+			{ -0.125, -0.5,    -0.125,  0.125,  0.375,  0.125  }, -- the post, slightly short
+		},
+		-- connect_top =
+		-- connect_bottom =
+		connect_front = {{-1/16,3/16,-1/2,1/16,5/16,-1/8},
+			{-1/16,-5/16,-1/2,1/16,-3/16,-1/8}},
+		connect_left = {{-1/2,3/16,-1/16,-1/8,5/16,1/16},
+			{-1/2,-5/16,-1/16,-1/8,-3/16,1/16}},
+		connect_back = {{-1/16,3/16,1/8,1/16,5/16,1/2},
+			{-1/16,-5/16,1/8,1/16,-3/16,1/2}},
+		connect_right = {{1/8,3/16,-1/16,1/2,5/16,1/16},
+			{1/8,-5/16,-1/16,1/2,-3/16,1/16}},
+	},
+	connects_to = {"group:fence", "group:wood", "group:tree"},
+	groups = {fence=1, choppy=1, snappy=1, oddly_breakable_by_hand=1 },
+	sounds = default.node_sound_stone_defaults(),
+}
+
+local sclip_tex = {
+	"technic_insulator_clip.png",
+	{ name = "strut.png^technic_steel_strut_overlay.png", color = "white" },
+	{ name = "strut.png", color = "white" }
+}
+
+local streetsmod = minetest.get_modpath("streets") or minetest.get_modpath ("steelsupport")
+-- cheapie's fork breaks it into several individual mods, with differernt names for the same content.
+
+if streetsmod then
+	sclip_tex = {
+		"technic_insulator_clip.png",
+		{ name = "streets_support.png^technic_steel_strut_overlay.png", color = "white" },
+		{ name = "streets_support.png", color = "white" }
+	}
+end
+
+local sclip_def = {
+	description = S("Steel strut with insulator/cable clip"),
+	drawtype = "mesh",
+	mesh = "technic_steel_strut_with_insulator_clip.obj",
+	tiles = sclip_tex,
+	paramtype = "light",
+	paramtype2 = "wallmounted",
+	is_ground_content = false,
+	sounds = default.node_sound_stone_defaults(),
+	groups = { choppy=1, cracky=1 },
+	backface_culling = false
+}
+
+if minetest.get_modpath("unifieddyes") then
+	iclip_def.paramtype2 = "colorwallmounted"
+	iclip_def.palette = "unifieddyes_palette_colorwallmounted.png"
+	iclip_def.after_place_node = function(pos, placer, itemstack, pointed_thing)
+		unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
+	end
+	iclip_def.groups = {choppy=1, snappy=1, oddly_breakable_by_hand=1, ud_param2_colorable = 1}
+	iclip_def.on_dig = unifieddyes.on_dig
+
+	iclipfence_def.paramtype2 = "color"
+	iclipfence_def.palette = "unifieddyes_palette_extended.png"
+	iclipfence_def.on_construct = unifieddyes.on_construct
+	iclipfence_def.groups = {fence=1, choppy=1, snappy=1, oddly_breakable_by_hand=1, ud_param2_colorable = 1}
+	iclipfence_def.on_dig = unifieddyes.on_dig
+
+	sclip_def.paramtype2 = "colorwallmounted"
+	sclip_def.palette = "unifieddyes_palette_colorwallmounted.png"
+	sclip_def.after_place_node = function(pos, placer, itemstack, pointed_thing)
+		unifieddyes.fix_rotation(pos, placer, itemstack, pointed_thing)
+	end
+	sclip_def.on_dig = unifieddyes.on_dig
+	sclip_def.groups = {choppy=1, cracky=1, ud_param2_colorable = 1}
+end
+
+minetest.register_node(":technic:insulator_clip", iclip_def)
+minetest.register_node(":technic:insulator_clip_fencepost", iclipfence_def)
+
+minetest.register_craft({
+	output = "technic:insulator_clip",
+	recipe = {
+		{ "", "dye:white", ""},
+		{ "", "technic:raw_latex", ""},
+		{ "technic:raw_latex", "default:stone", "technic:raw_latex"},
+	}
+})
+
+minetest.register_craft({
+	output = "technic:insulator_clip_fencepost 2",
+	recipe = {
+		{ "", "dye:white", ""},
+		{ "", "technic:raw_latex", ""},
+		{ "technic:raw_latex", "default:fence_wood", "technic:raw_latex"},
+	}
+})
+
+local steelmod = minetest.get_modpath("steel")
+
+if streetsmod or steelmod then
+	minetest.register_node(":technic:steel_strut_with_insulator_clip", sclip_def)
+
+	if steelmod then
+		minetest.register_craft({
+			output = "technic:steel_strut_with_insulator_clip",
+			recipe = {
+				{"technic:insulator_clip_fencepost"},
+				{"steel:strut_mount"}
+			}
+		})
+
+		minetest.register_craft({
+			output = "technic:steel_strut_with_insulator_clip",
+			recipe = {
+				{"technic:insulator_clip_fencepost", ""                    },
+				{"steel:strut",                      "default:steel_ingot" },
+			}
+		})
+
+	elseif streetsmod then
+		minetest.register_craft({
+			output = "technic:steel_strut_with_insulator_clip",
+			recipe = {
+				{"technic:insulator_clip_fencepost", ""                   },
+				{"streets:steel_support",           "default:steel_ingot" },
+			}
+		})
 	end
 end
 
- 
-function register_technic_stairs_alias(modname, origname, newmod, newname)
-	minetest.register_alias(modname .. ":slab_" .. origname, newmod..":slab_" .. newname)
-	minetest.register_alias(modname .. ":slab_" .. origname .. "_inverted", newmod..":slab_" .. newname .. "_inverted")
-	minetest.register_alias(modname .. ":slab_" .. origname .. "_wall", newmod..":slab_" .. newname .. "_wall")
-	minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter", newmod..":slab_" .. newname .. "_quarter")
-	minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_inverted", newmod..":slab_" .. newname .. "_quarter_inverted")
-	minetest.register_alias(modname .. ":slab_" .. origname .. "_quarter_wall", newmod..":slab_" .. newname .. "_quarter_wall")
-	minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter", newmod..":slab_" .. newname .. "_three_quarter")
-	minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_inverted", newmod..":slab_" .. newname .. "_three_quarter_inverted")
-	minetest.register_alias(modname .. ":slab_" .. origname .. "_three_quarter_wall", newmod..":slab_" .. newname .. "_three_quarter_wall")
-	minetest.register_alias(modname .. ":stair_" .. origname, newmod..":stair_" .. newname)
-	minetest.register_alias(modname .. ":stair_" .. origname .. "_inverted", newmod..":stair_" .. newname .. "_inverted")
-	minetest.register_alias(modname .. ":stair_" .. origname .. "_wall", newmod..":stair_" .. newname .. "_wall")
-	minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half")
-	minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted")
-	minetest.register_alias(modname .. ":stair_" .. origname .. "_half", newmod..":stair_" .. newname .. "_half")
-	minetest.register_alias(modname .. ":stair_" .. origname .. "_half_inverted", newmod..":stair_" .. newname .. "_half_inverted")
-	minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half", newmod..":stair_" .. newname .. "_right_half")
-	minetest.register_alias(modname .. ":stair_" .. origname .. "_right_half_inverted", newmod..":stair_" .. newname .. "_right_half_inverted")
-	minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half", newmod..":stair_" .. newname .. "_wall_half")
-	minetest.register_alias(modname .. ":stair_" .. origname .. "_wall_half_inverted", newmod..":stair_" .. newname .. "_wall_half_inverted")
-	minetest.register_alias(modname .. ":stair_" .. origname .. "_inner", newmod..":stair_" .. newname .. "_inner")
-	minetest.register_alias(modname .. ":stair_" .. origname .. "_inner_inverted", newmod..":stair_" .. newname .. "_inner_inverted")
-	minetest.register_alias(modname .. ":stair_" .. origname .. "_outer", newmod..":stair_" .. newname .. "_outer")
-	minetest.register_alias(modname .. ":stair_" .. origname .. "_outer_inverted", newmod..":stair_" .. newname .. "_outer_inverted")
-	minetest.register_alias(modname .. ":panel_" .. origname .. "_bottom", newmod..":panel_" .. newname .. "_bottom")
-	minetest.register_alias(modname .. ":panel_" .. origname .. "_top", newmod..":panel_" .. newname .. "_top")
-	minetest.register_alias(modname .. ":panel_" .. origname .. "_vertical", newmod..":panel_" .. newname .. "_vertical")
-	minetest.register_alias(modname .. ":micro_" .. origname .. "_bottom", newmod..":micro_" .. newname .. "_bottom")
-	minetest.register_alias(modname .. ":micro_" .. origname .. "_top", newmod..":micro_" .. newname .. "_top")
--end 
+if minetest.get_modpath("unifieddyes") then
 
-register_technic_stairs_alias("stairsplus", "concrete", "technic", "concrete")
+	unifieddyes.register_color_craft({
+		output = "technic:insulator_clip_fencepost",
+		palette = "extended",
+		type = "shapeless",
+		neutral_node = "technic:insulator_clip_fencepost",
+		recipe = {
+			"NEUTRAL_NODE",
+			"MAIN_DYE"
+		}
+	})
+
+	unifieddyes.register_color_craft({
+		output = "technic:insulator_clip",
+		palette = "wallmounted",
+		type = "shapeless",
+		neutral_node = "technic:insulator_clip",
+		recipe = {
+			"NEUTRAL_NODE",
+			"MAIN_DYE"
+		}
+	})
+
+	unifieddyes.register_color_craft({
+		output = "technic:steel_strut_with_insulator_clip",
+		palette = "wallmounted",
+		type = "shapeless",
+		neutral_node = "",
+		recipe = {
+			"technic:steel_strut_with_insulator_clip",
+			"MAIN_DYE"
+		}
+	})
+
+	if steelmod then
+		unifieddyes.register_color_craft({
+			output = "technic:steel_strut_with_insulator_clip",
+			palette = "wallmounted",
+			neutral_node = "",
+			recipe = {
+				{ "technic:insulator_clip_fencepost", "MAIN_DYE" },
+				{ "steel:strut_mount",                ""         },
+			}
+		})
+	end
+
+	if streetsmod then
+		unifieddyes.register_color_craft({
+			output = "technic:steel_strut_with_insulator_clip",
+			palette = "wallmounted",
+			neutral_node = "technic:steel_strut_with_insulator_clip",
+			recipe = {
+				{ "technic:insulator_clip_fencepost", "MAIN_DYE"            },
+				{ "streets:steel_support",            "default:steel_ingot" },
+			}
+		})
+	end
+end

--
Gitblit v1.8.0