From da95be53ec5703e808233d7b45fc42fb500863dd Mon Sep 17 00:00:00 2001
From: coil <51716565+coil0@users.noreply.github.com>
Date: Mon, 30 Dec 2019 21:02:01 +0100
Subject: [PATCH] Fix radiation protection when armor group is not set (#509)

---
 technic/machines/MV/wind_mill.lua |   97 +++++++++++++++++++++++++-----------------------
 1 files changed, 51 insertions(+), 46 deletions(-)

diff --git a/technic/machines/MV/wind_mill.lua b/technic/machines/MV/wind_mill.lua
index 32fa5c3..1baf54c 100644
--- a/technic/machines/MV/wind_mill.lua
+++ b/technic/machines/MV/wind_mill.lua
@@ -4,36 +4,74 @@
 minetest.register_craft({
 	output = 'technic:wind_mill_frame 5',
 	recipe = {
-		{'default:steel_ingot', '',                    'default:steel_ingot'},
-		{'',                    'default:steel_ingot', ''},
-		{'default:steel_ingot', '',                    'default:steel_ingot'},
+		{'technic:carbon_steel_ingot', '',                           'technic:carbon_steel_ingot'},
+		{'',                           'technic:carbon_steel_ingot', ''},
+		{'technic:carbon_steel_ingot', '',                           'technic:carbon_steel_ingot'},
 	}
 })
 
 minetest.register_craft({
 	output = 'technic:wind_mill',
 	recipe = {
-		{'',                    'default:steel_ingot', ''},
-		{'default:steel_ingot', 'technic:motor',       'default:steel_ingot'},
-		{'',                    'default:steelblock',  ''},
+		{'',                           'basic_materials:motor',              ''},
+		{'technic:carbon_steel_ingot', 'technic:carbon_steel_block', 'technic:carbon_steel_ingot'},
+		{'',                           'technic:mv_cable',           ''},
 	}
 })
 
 minetest.register_node("technic:wind_mill_frame", {
 	description = S("Wind Mill Frame"),
 	drawtype = "glasslike_framed",
-	tiles = {"default_steel_block.png", "default_glass.png"},
+	tiles = {"technic_carbon_steel_block.png", "default_glass.png"},
 	sunlight_propagates = true,
 	groups = {cracky=3},
 	sounds = default.node_sound_stone_defaults(),
 	paramtype = "light",
 })
 
+local function check_wind_mill(pos)
+	if pos.y < 30 then
+		return false
+	end
+	pos = {x=pos.x, y=pos.y, z=pos.z}
+	for i = 1, 20 do
+		pos.y = pos.y - 1
+		local node = minetest.get_node_or_nil(pos)
+		if not node then
+			-- we reached CONTENT_IGNORE, we can assume, that nothing changed
+			-- as the user will have to load the block to change it
+			return
+		end
+		if node.name ~= "technic:wind_mill_frame" then
+			return false
+		end
+	end
+	return true
+end
+
+local run = function(pos, node)
+	local meta = minetest.get_meta(pos)
+	local machine_name = S("Wind %s Generator"):format("MV")
+
+	local check = check_wind_mill(pos)
+	if check == false then
+		meta:set_int("MV_EU_supply", 0)
+		meta:set_string("infotext", S("%s Improperly Placed"):format(machine_name))
+	elseif check == true then
+		local power = math.min(pos.y * 100, 5000)
+		meta:set_int("MV_EU_supply", power)
+		meta:set_string("infotext", S("@1 (@2)", machine_name,
+			technic.EU_string(power)))
+	end
+	-- check == nil: assume nothing has changed
+end
+
 minetest.register_node("technic:wind_mill", {
-	description = S("Wind Mill"),
-	tiles = {"default_steel_block.png"},
+	description = S("Wind %s Generator"):format("MV"),
+	tiles = {"technic_carbon_steel_block.png"},
 	paramtype2 = "facedir",
-	groups = {cracky=1},
+	groups = {cracky=1, technic_machine=1, technic_mv=1},
+	connect_sides = {"top", "bottom", "back", "left", "right"},
 	sounds = default.node_sound_stone_defaults(),
 	drawtype = "nodebox",
 	paramtype = "light",
@@ -48,43 +86,10 @@
 	},
 	on_construct = function(pos)
 		local meta = minetest.get_meta(pos)
-		meta:set_string("infotext", S("Wind Mill"))
+		meta:set_string("infotext", S("Wind %s Generator"):format("MV"))
 		meta:set_int("MV_EU_supply", 0)
-	end,	
-})
-
-local function check_wind_mill(pos)
-	if pos.y < 30 then
-		return false
-	end
-	for i = 1, 20 do
-		local node = minetest.get_node({x=pos.x, y=pos.y-i, z=pos.z})
-		if node.name ~= "technic:wind_mill_frame" then
-			return false
-		end
-	end
-	return true
-end
-
-minetest.register_abm({
-	nodenames = {"technic:wind_mill"},
-	interval = 1,
-	chance   = 1,
-	action = function(pos, node, active_object_count, active_object_count_wider)
-		local meta = minetest.get_meta(pos)
-		local machine_name = S("Wind Mill")
-		local power = math.min(pos.y * 100, 5000)
-
-		if not check_wind_mill(pos) then
-			meta:set_int("MV_EU_supply", 0)
-			meta:set_string("infotext", S("%s Improperly Placed"):format(machine_name))
-			return
-		else
-			meta:set_int("MV_EU_supply", power)
-		end
-
-		meta:set_string("infotext", machine_name.." ("..power.."EU)")
-	end
+	end,
+	technic_run = run,
 })
 
 technic.register_machine("MV", "technic:wind_mill", technic.producer)

--
Gitblit v1.8.0