From 701240bc3a17a73d73f3a96cd81e559d662ac42c Mon Sep 17 00:00:00 2001
From: Thomas Rudin <thomas@rudin.li>
Date: Sun, 09 Dec 2018 16:01:10 +0100
Subject: [PATCH] Quarry: Check for valid facedir to fix server freeze #465 (#466)

---
 technic/machines/register/common.lua |   27 +++++++++++++++++++++------
 1 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/technic/machines/register/common.lua b/technic/machines/register/common.lua
index 0168c40..dfa2948 100644
--- a/technic/machines/register/common.lua
+++ b/technic/machines/register/common.lua
@@ -147,14 +147,29 @@
 				S("Machine cannot be removed because it is not empty"))
 		end
 		return false
-	else
-		if not inv:is_empty("upgrade1") then
-			minetest.item_drop(inv:get_stack("upgrade1", 1), "", pos)
+	end
+
+	return true
+end
+
+function technic.machine_after_dig_node(pos, oldnode, oldmetadata, player)
+	if oldmetadata.inventory then
+		if oldmetadata.inventory.upgrade1 and oldmetadata.inventory.upgrade1[1] then
+			local stack = ItemStack(oldmetadata.inventory.upgrade1[1])
+			if not stack:is_empty() then
+				minetest.add_item(pos, stack)
+			end
 		end
-		if not inv:is_empty("upgrade2") then
-			minetest.item_drop(inv:get_stack("upgrade2", 1), "", pos)
+		if oldmetadata.inventory.upgrade2 and oldmetadata.inventory.upgrade2[1] then
+			local stack = ItemStack(oldmetadata.inventory.upgrade2[1])
+			if not stack:is_empty() then
+				minetest.add_item(pos, stack)
+			end
 		end
-		return true
+	end
+
+	if minetest.registered_nodes[oldnode.name].tube then
+		pipeworks.after_dig(pos, oldnode, oldmetadata, player)
 	end
 end
 

--
Gitblit v1.8.0