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/tools/chainsaw.lua |   17 ++++++++---------
 1 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/technic/tools/chainsaw.lua b/technic/tools/chainsaw.lua
index 2e12614..ee8fed7 100644
--- a/technic/tools/chainsaw.lua
+++ b/technic/tools/chainsaw.lua
@@ -116,6 +116,7 @@
 	-- See function cut_tree()
 }
 
+local safe_cut = minetest.settings:get_bool("technic_safe_chainsaw") ~= false
 local c_air = minetest.get_content_id("air")
 local function dig_recursive(x, y, z)
 	local i = cutter.area:index(x, y, z)
@@ -124,7 +125,7 @@
 	end
 	cutter.seen[i] = 1 -- Mark as visited
 
-	if cutter.param2[i] ~= 0 then
+	if safe_cut and cutter.param2[i] ~= 0 then
 		-- Do not dig manually placed nodes
 		-- Problem: moretrees' generated jungle trees use param2 = 2
 		return
@@ -312,10 +313,8 @@
 			return itemstack
 		end
 
-		local meta = minetest.deserialize(itemstack:get_metadata())
-		if not meta or not meta.charge then
-			return
-		end
+		local meta = technic.get_stack_meta(itemstack)
+		local charge = meta:get_int("technic:charge")
 
 		local name = user:get_player_name()
 		if minetest.is_protected(pointed_thing.under, name) then
@@ -325,14 +324,14 @@
 
 		-- Send current charge to digging function so that the
 		-- chainsaw will stop after digging a number of nodes
-		chainsaw_dig(user, pointed_thing.under, meta.charge)
-		meta.charge = cutter.charge
+		chainsaw_dig(user, pointed_thing.under, charge)
+		charge = cutter.charge
 
 		cutter = {} -- Free RAM
 
 		if not technic.creative_mode then
-			technic.set_RE_wear(itemstack, meta.charge, chainsaw_max_charge)
-			itemstack:set_metadata(minetest.serialize(meta))
+			meta:set_int("technic:charge", charge)
+			technic.set_RE_wear(itemstack, charge, chainsaw_max_charge)
 		end
 		return itemstack
 	end,

--
Gitblit v1.8.0