From dc0689018d27a68ae2987194285558b3add09be2 Mon Sep 17 00:00:00 2001
From: Vanessa Dannenberg <vanessa.e.dannenberg@gmail.com>
Date: Sun, 25 Nov 2018 16:10:23 +0100
Subject: [PATCH] move CNC machine into its own mod

---
 technic/items.lua |  356 +++++++++++++++++++++++++++-------------------------------
 1 files changed, 166 insertions(+), 190 deletions(-)

diff --git a/technic/items.lua b/technic/items.lua
index 0f23648..d89ed46 100644
--- a/technic/items.lua
+++ b/technic/items.lua
@@ -1,227 +1,203 @@
-minetest.register_craftitem( "technic:silicon_wafer", {
-	description = "Silicon Wafer",
+
+local S = technic.getter
+
+minetest.register_craftitem("technic:silicon_wafer", {
+	description = S("Silicon Wafer"),
 	inventory_image = "technic_silicon_wafer.png",
-	on_place_on_ground = minetest.craftitem_place_item,
 })
 
 minetest.register_craftitem( "technic:doped_silicon_wafer", {
-	description = "Doped Silicon Wafer",
+	description = S("Doped Silicon Wafer"),
 	inventory_image = "technic_doped_silicon_wafer.png",
-	on_place_on_ground = minetest.craftitem_place_item,
 })
 
-minetest.register_craftitem( "technic:enriched_uranium", {
-	description = "Enriched Uranium",
-	inventory_image = "technic_enriched_uranium.png",
-	on_place_on_ground = minetest.craftitem_place_item,
-})
-
--- tubes crafting recipes
-
-minetest.register_craft({
-	output = 'pipeworks:tube_000000 9',
-	recipe = {
-		{'technic:stainless_steel_ingot', 'default:glass', 'technic:stainless_steel_ingot'},
-		{'technic:stainless_steel_ingot', 'default:glass', 'technic:stainless_steel_ingot'},
-		{'technic:stainless_steel_ingot', 'default:glass', 'technic:stainless_steel_ingot'},
-	}
-})
-minetest.register_craft({
-	output = 'pipeworks:mese_tube_000000',
-	recipe = {
-		{'default:mese_crystal_fragment', 'pipeworks:tube_000000', 'default:mese_crystal_fragment'},
-		}
-})
-
-minetest.register_craft({
-    output = 'pipeworks:accelerator_tube_000000',
-    recipe = {
-        {'technic:copper_coil', 'pipeworks:tube_000000', 'technic:copper_coil'},
-        }
-})
-
-minetest.register_craft({
-    output = 'pipeworks:detector_tube_off_000000',
-    recipe = {
-        {'mesecons:mesecon', 'pipeworks:tube_000000', 'mesecons:mesecon'},
-        }
-})
-
-minetest.register_craft({
-    output = 'pipeworks:sand_tube_000000',
-    recipe = {
-        {'default:sand', 'pipeworks:tube_000000', 'default:sand'},
-        }
-})
-
-minetest.register_craft({
-    output = 'pipeworks:teleport_tube_000000',
-    recipe = {
-        {'default:mese_crystal', 'technic:copper_coil', 'default:mese_crystal'},
-        {'pipeworks:tube_000000', 'technic:control_logic_unit', 'pipeworks:tube_000000'},
-        {'default:mese_crystal', 'technic:copper_coil', 'default:mese_crystal'},
-        }
+minetest.register_craftitem("technic:uranium_fuel", {
+	description = S("Uranium Fuel"),
+	inventory_image = "technic_uranium_fuel.png",
 })
 
 minetest.register_craftitem( "technic:diamond_drill_head", {
-	description = "Diamond Drill Head",
+	description = S("Diamond Drill Head"),
 	inventory_image = "technic_diamond_drill_head.png",
-	on_place_on_ground = minetest.craftitem_place_item,
 })
 
-minetest.register_craft({
-	output = 'technic:diamond_drill_head',
-	recipe = {
-		{'technic:stainless_steel_ingot', 'default:diamond', 'technic:stainless_steel_ingot'},
-		{'default:diamond', '', 'default:diamond'},
-		{'technic:stainless_steel_ingot', 'default:diamond', 'technic:stainless_steel_ingot'},
+minetest.register_tool("technic:blue_energy_crystal", {
+	description = S("Blue Energy Crystal"),
+	inventory_image = minetest.inventorycube(
+		"technic_diamond_block_blue.png",
+		"technic_diamond_block_blue.png",
+		"technic_diamond_block_blue.png"),
+	wear_represents = "technic_RE_charge",
+	on_refill = technic.refill_RE_charge,
+	tool_capabilities = {
+		max_drop_level = 0,
+		groupcaps = {
+			fleshy = {times={}, uses=10000, maxlevel=0}
+		}
 	}
-})
+}) 
 
-minetest.register_craft({
-	output = 'technic:green_energy_crystal',
-	recipe = {
-		{'moreores:gold_ingot', 'technic:battery', 'dye:green'},
-		{'technic:battery', 'technic:red_energy_crystal', 'technic:battery'},
-		{'dye:green', 'technic:battery', 'moreores:gold_ingot'},
+minetest.register_tool("technic:green_energy_crystal", {
+	description = S("Green Energy Crystal"),
+	inventory_image = minetest.inventorycube(
+		"technic_diamond_block_green.png",
+		"technic_diamond_block_green.png",
+		"technic_diamond_block_green.png"),
+	wear_represents = "technic_RE_charge",
+	on_refill = technic.refill_RE_charge,
+	tool_capabilities = {
+		max_drop_level = 0,
+		groupcaps = {
+			fleshy = {times={}, uses=10000, maxlevel=0}
+		}
 	}
-})
+}) 
 
-minetest.register_craft({
-	output = 'technic:blue_energy_crystal',
-	recipe = {
-		{'moreores:gold_ingot', 'technic:battery', 'dye:blue'},
-		{'technic:battery', 'technic:green_energy_crystal', 'technic:battery'},
-		{'dye:blue', 'technic:battery', 'moreores:gold_ingot'},
+minetest.register_tool("technic:red_energy_crystal", {
+	description = S("Red Energy Crystal"),
+	inventory_image = minetest.inventorycube(
+		"technic_diamond_block_red.png",
+		"technic_diamond_block_red.png",
+		"technic_diamond_block_red.png"),
+	wear_represents = "technic_RE_charge",
+	on_refill = technic.refill_RE_charge,
+	tool_capabilities = {
+		max_drop_level = 0,
+		groupcaps = {
+			fleshy = {times={}, uses=10000, maxlevel=0}
+		}
 	}
-})
+}) 
 
-minetest.register_craft({
-	output = 'technic:red_energy_crystal',
-	recipe = {
-		{'moreores:gold_ingot', 'technic:battery', 'dye:red'},
-		{'technic:battery', 'default:diamondblock', 'technic:battery'},
-		{'dye:red', 'technic:battery', 'moreores:gold_ingot'},
-	}
-})
-
-minetest.register_tool("technic:blue_energy_crystal",
-{description = "Blue Energy Crystal",
-inventory_image = minetest.inventorycube("technic_diamond_block_blue.png", "technic_diamond_block_blue.png", "technic_diamond_block_blue.png"),
-tool_capabilities = {load=0,max_drop_level=0, groupcaps={fleshy={times={}, uses=10000, maxlevel=0}}}}) 
-
-minetest.register_tool("technic:green_energy_crystal",
-{description = "Green Energy Crystal",
-inventory_image = minetest.inventorycube("technic_diamond_block_green.png", "technic_diamond_block_green.png", "technic_diamond_block_green.png"),
-tool_capabilities = {load=0,max_drop_level=0, groupcaps={fleshy={times={}, uses=10000, maxlevel=0}}}}) 
-
-minetest.register_tool("technic:red_energy_crystal",
-{description = "Red Energy Crystal",
-inventory_image = minetest.inventorycube("technic_diamond_block_red.png", "technic_diamond_block_red.png", "technic_diamond_block_red.png"),
-tool_capabilities = {load=0,max_drop_level=0, groupcaps={fleshy={times={}, uses=10000, maxlevel=0}}}}) 
-
-
-minetest.register_craftitem( "technic:fine_copper_wire", {
-	description = "Fine Copper Wire",
-	inventory_image = "technic_fine_copper_wire.png",
-	on_place_on_ground = minetest.craftitem_place_item,
-})
-
-minetest.register_craft({
-	output = 'technic:fine_copper_wire 2',
-	recipe = {
-		{'', 'moreores:copper_ingot', ''},
-		{'', 'moreores:copper_ingot', ''},
-		{'', 'moreores:copper_ingot', ''},
-	}
-})
-
-minetest.register_craftitem( "technic:copper_coil", {
-	description = "Copper Coil",
+minetest.register_craftitem("technic:copper_coil", {
+	description = S("Copper Coil"),
 	inventory_image = "technic_copper_coil.png",
-	on_place_on_ground = minetest.craftitem_place_item,
 })
 
-minetest.register_craft({
-	output = 'technic:copper_coil 1',
-	recipe = {
-		{'technic:fine_copper_wire', 'default:steel_ingot', 'technic:fine_copper_wire'},
-		{'default:steel_ingot', '', 'default:steel_ingot'},
-		{'technic:fine_copper_wire', 'default:steel_ingot', 'technic:fine_copper_wire'},
-	}
-})
-
-minetest.register_craftitem( "technic:motor", {
-	description = "Electric Motor",
-	inventory_image = "technic_motor.png",
-	on_place_on_ground = minetest.craftitem_place_item,
-})
-
-minetest.register_craft({
-	output = 'technic:motor',
-	recipe = {
-		{'default:steel_ingot', 'technic:copper_coil', 'default:steel_ingot'},
-		{'default:steel_ingot', 'technic:copper_coil', 'default:steel_ingot'},
-		{'default:steel_ingot', 'moreores:copper_ingot', 'default:steel_ingot'},
-	}
-})
-
-minetest.register_craftitem( "technic:lv_transformer", {
-	description = "Low Voltage Transformer",
+minetest.register_craftitem("technic:lv_transformer", {
+	description = S("Low Voltage Transformer"),
 	inventory_image = "technic_lv_transformer.png",
-	on_place_on_ground = minetest.craftitem_place_item,
 })
 
-minetest.register_craft({
-	output = 'technic:lv_transformer',
-	recipe = {
-		{'default:iron_lump',   'default:iron_lump', 'default:iron_lump'},
-		{'technic:copper_coil', 'default:iron_lump', 'technic:copper_coil'},
-		{'default:iron_lump',   'default:iron_lump', 'default:iron_lump'},
-	}
-})
-
-minetest.register_craftitem( "technic:mv_transformer", {
-	description = "Medium Voltage Transformer",
+minetest.register_craftitem("technic:mv_transformer", {
+	description = S("Medium Voltage Transformer"),
 	inventory_image = "technic_mv_transformer.png",
-	on_place_on_ground = minetest.craftitem_place_item,
-})
-
-minetest.register_craft({
-	output = 'technic:mv_transformer',
-	recipe = {
-		{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
-		{'technic:copper_coil', 'default:steel_ingot', 'technic:copper_coil'},
-		{'default:steel_ingot', 'default:steel_ingot', 'default:steel_ingot'},
-	}
 })
 
 minetest.register_craftitem( "technic:hv_transformer", {
-	description = "High Voltage Transformer",
+	description = S("High Voltage Transformer"),
 	inventory_image = "technic_hv_transformer.png",
-	on_place_on_ground = minetest.craftitem_place_item,
-})
-
-minetest.register_craft({
-	output = 'technic:hv_transformer',
-	recipe = {
-		{'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot'},
-		{'technic:copper_coil',           'technic:stainless_steel_ingot', 'technic:copper_coil'},
-		{'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot'},
-	}
 })
 
 minetest.register_craftitem( "technic:control_logic_unit", {
-	description = "Control Logic Unit",
+	description = S("Control Logic Unit"),
 	inventory_image = "technic_control_logic_unit.png",
-	on_place_on_ground = minetest.craftitem_place_item,
 })
 
-minetest.register_craft({
-	output = 'technic:control_logic_unit',
-	recipe = {
-		{'', 'moreores:gold_ingot', ''},
-		{'moreores:copper_ingot', 'technic:silicon_wafer', 'moreores:copper_ingot'},
-		{'', 'moreores:copper_ingot', ''},
-	}
+minetest.register_craftitem("technic:mixed_metal_ingot", {
+	description = S("Mixed Metal Ingot"),
+	inventory_image = "technic_mixed_metal_ingot.png",
 })
+
+minetest.register_craftitem("technic:composite_plate", {
+	description = S("Composite Plate"),
+	inventory_image = "technic_composite_plate.png",
+})
+
+minetest.register_craftitem("technic:copper_plate", {
+	description = S("Copper Plate"),
+	inventory_image = "technic_copper_plate.png",
+})
+
+minetest.register_craftitem("technic:carbon_plate", {
+	description = S("Carbon Plate"),
+	inventory_image = "technic_carbon_plate.png",
+})
+
+minetest.register_craftitem("technic:graphite", {
+	description = S("Graphite"),
+	inventory_image = "technic_graphite.png",
+})
+
+minetest.register_craftitem("technic:carbon_cloth", {
+	description = S("Carbon Cloth"),
+	inventory_image = "technic_carbon_cloth.png",
+})
+
+minetest.register_node("technic:machine_casing", {
+	description = S("Machine Casing"),
+	groups = {cracky=2},
+	sunlight_propagates = true,
+	paramtype = "light",
+	drawtype = "allfaces",
+	tiles = {"technic_machine_casing.png"},
+	sounds = default.node_sound_stone_defaults(),
+})
+
+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
+	local ingot = "technic:uranium"..psuffix.."_ingot"
+	local block = "technic:uranium"..psuffix.."_block"
+	local ov = p == 7 and minetest.override_item or nil;
+	(ov or minetest.register_craftitem)(ingot, {
+		description = string.format(S("%.1f%%-Fissile Uranium Ingot"), p/10),
+		inventory_image = "technic_uranium_ingot.png",
+		groups = {uranium_ingot=1, not_in_creative_inventory=nici},
+	});
+	-- Note on radioactivity of blocks:
+	-- Source: <http://www.wise-uranium.org/rup.html>
+	-- The baseline radioactivity of an isotope is not especially
+	-- correlated with whether it's fissile (i.e., suitable as
+	-- reactor fuel).  Natural uranium consists mainly of fissile
+	-- U-235 and non-fissile U-238, and both U-235 and U-238 are
+	-- significantly radioactive.  U-235's massic activity is
+	-- about 80.0 MBq/kg, and U-238's is about 12.4 MBq/kg, which
+	-- superficially suggests that 3.5%-fissile uranium should have
+	-- only 1.19 times the activity of fully-depleted uranium.
+	-- But a third isotope affects the result hugely: U-234 has
+	-- massic activity of 231 GBq/kg.  Natural uranium has massic
+	-- composition of 99.2837% U-238, 0.711% U-235, and 0.0053% U-234,
+	-- so its activity comes roughly 49% each from U-234 and U-238
+	-- and only 2% from U-235.  During enrichment via centrifuge,
+	-- the U-234 fraction is concentrated along with the U-235, with
+	-- the U-234:U-235 ratio remaining close to its original value.
+	-- (Actually the U-234 gets separated from U-238 slightly more
+	-- than the U-235 is, so the U-234:U-235 ratio is slightly
+	-- higher in enriched uranium.)  A typical massic composition
+	-- for 3.5%-fissile uranium is 96.47116% U-238, 3.5% U-235, and
+	-- 0.02884% U-234.  This gives 3.5%-fissile uranium about 6.55
+	-- times the activity of fully-depleted uranium.  The values we
+	-- compute here for the "radioactive" group value are based on
+	-- linear interpolation of activity along that scale, rooted at
+	-- a natural (0.7%-fissile) uranium block having the activity of
+	-- 9 uranium ore blocks (due to 9 ingots per block).  The group
+	-- value is proportional to the square root of the activity, and
+	-- uranium ore has radioactive=1.  This yields radioactive=1.0
+	-- for a fully-depleted uranium block and radioactive=2.6 for
+	-- a 3.5%-fissile uranium block.
+	local radioactivity = math.floor(math.sqrt((1+5.55*p/35) * 18 / (1+5.55*7/35)) + 0.5);
+	(ov or minetest.register_node)(block, {
+		description = string.format(S("%.1f%%-Fissile Uranium Block"), p/10),
+		tiles = {"technic_uranium_block.png"},
+		is_ground_content = true,
+		groups = {uranium_block=1, not_in_creative_inventory=nici,
+			cracky=1, level=2, radioactive=radioactivity},
+		sounds = default.node_sound_stone_defaults(),
+	});
+	if not ov then
+		minetest.register_craft({
+			output = block,
+			recipe = {
+				{ingot, ingot, ingot},
+				{ingot, ingot, ingot},
+				{ingot, ingot, ingot},
+			},
+		})
+		minetest.register_craft({
+			output = ingot.." 9",
+			recipe = {{block}},
+		})
+	end
+end
+

--
Gitblit v1.8.0