From f5041784212a5045538983f41e1fc73bf79277a8 Mon Sep 17 00:00:00 2001
From: Zefram <zefram@fysh.org>
Date: Sun, 27 Apr 2014 20:43:00 +0200
Subject: [PATCH] Fix drops for active machines

---
 technic/machines/register/battery_box.lua |   54 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 37 insertions(+), 17 deletions(-)

diff --git a/technic/machines/register/battery_box.lua b/technic/machines/register/battery_box.lua
index 8e3d8e7..f7bbf1e 100644
--- a/technic/machines/register/battery_box.lua
+++ b/technic/machines/register/battery_box.lua
@@ -1,6 +1,33 @@
 
 local S = technic.getter
 
+technic.register_power_tool("technic:battery", 10000)
+technic.register_power_tool("technic:red_energy_crystal", 50000)
+technic.register_power_tool("technic:green_energy_crystal", 150000)
+technic.register_power_tool("technic:blue_energy_crystal", 450000)
+
+minetest.register_craft({
+	output = 'technic:battery',
+	recipe = {
+		{'group:wood', 'default:copper_ingot', 'group:wood'},
+		{'group:wood', 'moreores:tin_ingot',   'group:wood'},
+		{'group:wood', 'default:copper_ingot', 'group:wood'},
+	}
+})
+
+minetest.register_tool("technic:battery", {
+	description = S("RE Battery"),
+	inventory_image = "technic_battery.png",
+	tool_capabilities = {
+		charge = 0,
+		max_drop_level = 0,
+		groupcaps = {
+			fleshy = {times={}, uses=10000, maxlevel=0}
+		}
+	}
+})
+
+
 function technic.register_battery_box(data)
 	local tier = data.tier
 	local ltier = string.lower(tier)
@@ -47,17 +74,10 @@
 				inv:set_size("src", 1)
 				inv:set_size("dst", 1)
 			end,
-			can_dig = function(pos, player)
-				local meta = minetest.get_meta(pos);
-				local inv = meta:get_inventory()
-				if not inv:is_empty("src") or not inv:is_empty("dst") then
-					minetest.chat_send_player(player:get_player_name(),
-						S("Machine cannot be removed because it is not empty"))
-					return false
-				else
-					return true
-				end
-			end,
+			can_dig = technic.machine_can_dig,
+			allow_metadata_inventory_put = technic.machine_inventory_put,
+			allow_metadata_inventory_take = technic.machine_inventory_take,
+			allow_metadata_inventory_move = technic.machine_inventory_move,
 		})
 	end
 
@@ -106,7 +126,7 @@
 			charge_count = math.max(charge_count, 0)
 			local last_count = meta:get_float("last_side_shown")
 			if charge_count ~= last_count then
-				hacky_swap_node(pos,"technic:"..ltier.."_battery_box"..charge_count)
+				technic.swap_node(pos,"technic:"..ltier.."_battery_box"..charge_count)
 				meta:set_float("last_side_shown", charge_count)
 			end
 
@@ -141,14 +161,14 @@
 		return batt_charge
 	end
 	local srcstack = inv:get_stack("src", 1)
-	local src_meta = get_item_meta(srcstack:get_metadata())
+	local src_meta = minetest.deserialize(srcstack:get_metadata())
 
 	local toolname = srcstack:get_name()
 	if not technic.power_tools[toolname] then
 		return batt_charge
 	end
 	-- Set meta data for the tool if it didn't do it itself
-	src_meta = get_item_meta(srcstack:get_metadata())
+	src_meta = minetest.deserialize(srcstack:get_metadata())
 	src_meta = src_meta or {}
 	if not src_meta.charge then
 		src_meta.charge = 0
@@ -165,7 +185,7 @@
 	batt_charge = batt_charge - charge_step
 	technic.set_RE_wear(srcstack, tool_charge, item_max_charge)
 	src_meta.charge = tool_charge
-	srcstack:set_metadata(set_item_meta(src_meta))
+	srcstack:set_metadata(minetest.serialize(src_meta))
 	inv:set_stack("src", 1, srcstack)
 	return batt_charge
 end
@@ -182,7 +202,7 @@
 		return batt_charge
 	end
 	-- Set meta data for the tool if it didn't do it itself :-(
-	local src_meta = get_item_meta(srcstack:get_metadata())
+	local src_meta = minetest.deserialize(srcstack:get_metadata())
 	src_meta = src_meta or {}
 	if not src_meta.charge then
 		src_meta.charge = 0
@@ -200,7 +220,7 @@
 	batt_charge = batt_charge + charge_step
 	technic.set_RE_wear(srcstack, tool_charge, item_max_charge)
 	src_meta.charge = tool_charge
-	srcstack:set_metadata(set_item_meta(src_meta))
+	srcstack:set_metadata(minetest.serialize(src_meta))
 	inv:set_stack("dst", 1, srcstack)
 	return batt_charge
 end

--
Gitblit v1.8.0