From 6731db14e580ddccace186f5a8ac03dad0661e0c Mon Sep 17 00:00:00 2001
From: Gábriel <38207624+gabriel1379@users.noreply.github.com>
Date: Sun, 07 Jul 2024 18:53:15 +0200
Subject: [PATCH] Add compressor recipes for nether racks (#644)

---
 technic/legacy.lua |   46 +++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 43 insertions(+), 3 deletions(-)

diff --git a/technic/legacy.lua b/technic/legacy.lua
index 8360a71..14453eb 100644
--- a/technic/legacy.lua
+++ b/technic/legacy.lua
@@ -22,9 +22,6 @@
 	["technic:compressor"]        = "technic:lv_compressor",
 	["technic:compressor_active"] = "technic:lv_compressor_active",
 	["technic:hv_battery_box"] = "technic:hv_battery_box0",
-	["technic:hv_cable"] = "technic:hv_cable0",
-	["technic:lv_cable"] = "technic:lv_cable0",
-	["technic:mv_cable"] = "technic:mv_cable0",
 	["technic:mv_battery_box"] = "technic:mv_battery_box0",
 	["technic:generator"]        = "technic:lv_generator",
 	["technic:generator_active"] = "technic:lv_generator_active",
@@ -36,3 +33,46 @@
 	minetest.register_alias(old, new)
 end
 
+for i = 0, 64 do
+	minetest.register_alias("technic:hv_cable"..i, "technic:hv_cable")
+	minetest.register_alias("technic:mv_cable"..i, "technic:mv_cable")
+	minetest.register_alias("technic:lv_cable"..i, "technic:lv_cable")
+end
+
+-- Item meta
+
+-- Meta keys that have changed
+technic.legacy_meta_keys = {
+	["charge"] = "technic:charge",
+}
+
+-- Converts legacy itemstack metadata string to itemstack meta and returns the ItemStackMetaRef
+function technic.get_stack_meta(itemstack)
+	local meta = itemstack:get_meta()
+	local legacy_string = meta:get("") -- Get deprecated metadata
+	if legacy_string then
+		local legacy_table = minetest.deserialize(legacy_string)
+		if legacy_table then
+			local table = meta:to_table()
+			for k, v in pairs(legacy_table) do
+				table.fields[technic.legacy_meta_keys[k] or k] = v
+			end
+			meta:from_table(table)
+		end
+		meta:set_string("", "") -- Remove deprecated metadata
+	end
+	return meta
+end
+
+-- Same as technic.get_stack_meta for cans.
+-- (Cans didn't store a serialized table in the legacy metadata string, but just a number.)
+function technic.get_stack_meta_cans(itemstack)
+	local meta = itemstack:get_meta()
+	local legacy_string = meta:get("") -- Get deprecated metadata
+	if legacy_string then
+		meta:set_string("can_level", legacy_string)
+		meta:set_string("", "") -- Remove deprecated metadata
+		return meta
+	end
+	return meta
+end

--
Gitblit v1.8.0