From 6194cf7610bbdc63ec635522ed81f0b1d798785e Mon Sep 17 00:00:00 2001
From: Cristiano Magro <cristiano.magro@vola.it>
Date: Fri, 03 Sep 2021 15:27:47 +0200
Subject: [PATCH] Merge branch 'master' into xno_tree_trap

---
 technic/machines/HV/nuclear_reactor.lua |   40 ++++++++-----
 technic/textures/technic_rubber_goo.png |    0 
 /dev/null                               |   14 ----
 .luacheckrc                             |    2 
 technic/items.lua                       |    5 +
 technic/machines/other/injector.lua     |    6 ++
 technic/machines/register/recipes.lua   |   47 +++++++++++++--
 technic/crafts.lua                      |   23 +++++++
 technic/mod.conf                        |    2 
 9 files changed, 102 insertions(+), 37 deletions(-)

diff --git a/.luacheckrc b/.luacheckrc
index 96a7aac..37f4970 100644
--- a/.luacheckrc
+++ b/.luacheckrc
@@ -28,6 +28,8 @@
 
     "protector", "isprotect",
     "homedecor_expect_infinite_stacks",
+    
+    "craftguide", "i3"
 }
 
 files["concrete/init.lua"].ignore = { "steel_ingot" }
diff --git a/technic/crafts.lua b/technic/crafts.lua
index d43ab34..978bae8 100644
--- a/technic/crafts.lua
+++ b/technic/crafts.lua
@@ -174,7 +174,6 @@
 	},
 })
 
-
 minetest.register_craft({
 	output = "default:dirt 2",
 	type = "shapeless",
@@ -186,3 +185,25 @@
 		"group:sand",
 	},
 })
+
+minetest.register_craft({
+	output = "technic:rubber_goo",
+	type = "shapeless",
+	recipe = {
+		"technic:raw_latex",
+		"default:coal_lump",
+		"default:coal_lump",
+		"default:coal_lump",
+		"default:coal_lump",
+		"default:coal_lump",
+		"default:coal_lump",
+		"default:coal_lump",
+		"default:coal_lump",
+	},
+})
+
+minetest.register_craft({
+	output = "technic:rubber",
+	type = "cooking",
+	recipe = "technic:rubber_goo",
+})
diff --git a/technic/depends.txt b/technic/depends.txt
deleted file mode 100644
index 1b76ab3..0000000
--- a/technic/depends.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-default
-pipeworks
-technic_worldgen
-basic_materials
-bucket?
-screwdriver?
-mesecons?
-mesecons_mvps?
-digilines?
-digiline_remote?
-intllib?
-unified_inventory?
-vector_extras?
-dye?
diff --git a/technic/items.lua b/technic/items.lua
index cf57229..d1565d7 100644
--- a/technic/items.lua
+++ b/technic/items.lua
@@ -134,6 +134,11 @@
 	sounds = default.node_sound_stone_defaults(),
 })
 
+minetest.register_craftitem("technic:rubber_goo", {
+	description = S("Rubber Goo"),
+	inventory_image = "technic_rubber_goo.png",
+})
+
 for p = 0, 35 do
 	local nici = (p ~= 0 and p ~= 7 and p ~= 35) and 1 or nil
 	local psuffix = p == 7 and "" or p
diff --git a/technic/machines/HV/nuclear_reactor.lua b/technic/machines/HV/nuclear_reactor.lua
index c6ed4df..abaeb74 100644
--- a/technic/machines/HV/nuclear_reactor.lua
+++ b/technic/machines/HV/nuclear_reactor.lua
@@ -217,24 +217,33 @@
 
 
 local function start_reactor(pos, meta)
+	local correct_fuel_count = 6
+	local msg_fuel_missing = "Error: You need to insert " .. correct_fuel_count .. " pieces of Uranium Fuel."
+
 	if minetest.get_node(pos).name ~= "technic:hv_nuclear_reactor_core" then
-		return false
+		return msg_fuel_missing
 	end
 	local inv = meta:get_inventory()
 	if inv:is_empty("src") then
-		return false
+		return msg_fuel_missing
 	end
 	local src_list = inv:get_list("src")
-	local correct_fuel_count = 0
+	local fuel_count = 0
 	for _, src_stack in pairs(src_list) do
 		if src_stack and src_stack:get_name() == fuel_type then
-			correct_fuel_count = correct_fuel_count + 1
+			fuel_count = fuel_count + 1
 		end
 	end
-	-- Check that the reactor is complete and has the correct fuel
-	if correct_fuel_count ~= 6 or reactor_structure_badness(pos) ~= 0 then
-		return false
+	-- Check that the has the correct fuel
+	if fuel_count ~= correct_fuel_count then
+		return msg_fuel_missing
 	end
+
+	-- Check that the reactor is complete
+	if reactor_structure_badness(pos) ~= 0 then
+		return "Error: The power plant seems to be built incorrectly."
+	end
+
 	meta:set_int("burn_time", 1)
 	technic.swap_node(pos, "technic:hv_nuclear_reactor_core_active")
 	meta:set_int("HV_EU_supply", power_supply)
@@ -242,7 +251,8 @@
 		src_stack:take_item()
 		inv:set_stack("src", idx, src_stack)
 	end
-	return true
+
+	return nil
 end
 
 
@@ -281,7 +291,7 @@
 					"fuel used", 6, true)
 		end
 		if meta:get_string("autostart") == "true" then
-			if start_reactor(pos, meta) then
+			if not start_reactor(pos, meta) then
 				return
 			end
 		end
@@ -313,11 +323,11 @@
 		meta:set_string("remote_channel", fields.remote_channel)
 	end
 	if fields.start then
-		local b = start_reactor(pos, meta)
-		if b then
+		local start_error_msg = start_reactor(pos, meta)
+		if not start_error_msg then
 			minetest.chat_send_player(player_name, "Start successful")
 		else
-			minetest.chat_send_player(player_name, "Error")
+			minetest.chat_send_player(player_name, start_error_msg)
 		end
 	end
 	if fields.autostart then
@@ -385,11 +395,11 @@
 			melt_down_reactor(pos)
 		end
 	elseif msg.command == "start" then
-		local b = start_reactor(pos, meta)
-		if b then
+		local start_error_msg = start_reactor(pos, meta)
+		if not start_error_msg then
 			digiline_remote.send_to_node(pos, channel, "Start successful", 6, true)
 		else
-			digiline_remote.send_to_node(pos, channel, "Error", 6, true)
+			digiline_remote.send_to_node(pos, channel, start_error_msg, 6, true)
 		end
 	end
 end
diff --git a/technic/machines/other/injector.lua b/technic/machines/other/injector.lua
index fc3e3cd..6bd5a83 100644
--- a/technic/machines/other/injector.lua
+++ b/technic/machines/other/injector.lua
@@ -61,6 +61,9 @@
 		(is_stack and
 			"button[0,1;2,1;mode_item;"..S("Stackwise").."]" or
 			"button[0,1;2,1;mode_stack;"..S("Itemwise").."]")..
+		(meta:get_int("public") == 1 and
+			"button[2,1;2,1;mode_private;"..S("Public").."]" or
+			"button[2,1;2,1;mode_public;"..S("Private").."]")..
 		"list[current_name;main;0,2;8,2;]"..
 		"list[current_player;main;0,5;8,4;]"..
 		"listring[]"..
@@ -123,6 +126,9 @@
 		if fields.mode_item then meta:set_string("mode", "single items") end
 		if fields.mode_stack then meta:set_string("mode", "whole stacks") end
 
+		if fields.mode_private then meta:set_int("public", 0) end
+		if fields.mode_public then meta:set_int("public", 1) end
+
 		if fields["fs_helpers_cycling:0:splitstacks"]
 		  or fields["fs_helpers_cycling:1:splitstacks"] then
 			if not pipeworks.may_configure(pos, sender) then return end
diff --git a/technic/machines/register/recipes.lua b/technic/machines/register/recipes.lua
index 921d1c8..ba4a5e1 100644
--- a/technic/machines/register/recipes.lua
+++ b/technic/machines/register/recipes.lua
@@ -1,4 +1,6 @@
 local have_ui = minetest.get_modpath("unified_inventory")
+local have_cg = minetest.get_modpath("craftguide")
+local have_i3 = minetest.get_modpath("i3")
 
 technic.recipes = { cooking = { input_size = 1, output_size = 1 } }
 function technic.register_recipe_type(typename, origdata)
@@ -6,12 +8,24 @@
 	for k, v in pairs(origdata) do data[k] = v end
 	data.input_size = data.input_size or 1
 	data.output_size = data.output_size or 1
-	if have_ui and unified_inventory.register_craft_type and data.output_size == 1 then
-		unified_inventory.register_craft_type(typename, {
-			description = data.description,
-			width = data.input_size,
-			height = 1,
-		})
+	if data.output_size == 1 then
+		if have_ui and unified_inventory.register_craft_type then
+			unified_inventory.register_craft_type(typename, {
+				description = data.description,
+				width = data.input_size,
+				height = 1,
+			})
+		end
+		if have_cg and craftguide.register_craft_type then
+			craftguide.register_craft_type(typename, {
+				description = data.description,
+			})
+		end
+		if have_i3 then
+			i3.register_craft_type(typename, {
+				description = data.description,
+			})
+		end
 	end
 	data.recipes = {}
 	technic.recipes[typename] = data
@@ -59,6 +73,27 @@
 			width = 0,
 		})
 	end
+	if (have_cg or have_i3) and technic.recipes[typename].output_size == 1 then
+		local result = data.output
+		if (type(result)=="table") then
+			result = result[1]
+		end
+		local items = table.concat(data.input, ", ")
+		if have_cg and craftguide.register_craft then
+			craftguide.register_craft({
+				type = typename,
+				result = result,
+				items = {items},
+			})
+		end
+		if have_i3 then
+			i3.register_craft({
+				type = typename,
+				result = result,
+				items = {items},
+			})
+		end
+	end
 end
 
 function technic.register_recipe(typename, data)
diff --git a/technic/mod.conf b/technic/mod.conf
index f2cefaa..7b8d08c 100644
--- a/technic/mod.conf
+++ b/technic/mod.conf
@@ -1,3 +1,3 @@
 name = technic
 depends = default, pipeworks, technic_worldgen, basic_materials
-optional_depends = bucket, screwdriver, mesecons, mesecons_mvps, digilines, digiline_remote, intllib, unified_inventory, vector_extras, dye
+optional_depends = bucket, screwdriver, mesecons, mesecons_mvps, digilines, digiline_remote, intllib, unified_inventory, vector_extras, dye, craftguide,i3
diff --git a/technic/textures/technic_rubber_goo.png b/technic/textures/technic_rubber_goo.png
new file mode 100644
index 0000000..d25cae6
--- /dev/null
+++ b/technic/textures/technic_rubber_goo.png
Binary files differ

--
Gitblit v1.8.0