From 8d48b3f9f554d7323981223b3453406bd95583e7 Mon Sep 17 00:00:00 2001 From: mrkubax10 Date: Mon, 28 Apr 2025 12:53:03 +0200 Subject: [PATCH] Refactor wrench --- tools/tool.lua | 23 +++++++++++++++ tools/wrench.lua | 76 ++++++++++++++++++++++-------------------------- 2 files changed, 58 insertions(+), 41 deletions(-) diff --git a/tools/tool.lua b/tools/tool.lua index 6c2c502..b6ef92f 100644 --- a/tools/tool.lua +++ b/tools/tool.lua @@ -53,6 +53,29 @@ function industrialtest.Tool.onPlace(self,itemstack,user,pointed) return false end +function industrialtest.Tool.onUse(self,itemstack,user,pointed) + if self:hitUse(itemstack,user,pointed) then + local meta=itemstack:get_meta() + if not meta:contains("industrialtest.uses") then + self:prepare(itemstack) + end + local uses=meta:get_int("industrialtest.uses")-1 + if uses==0 then + itemstack:set_count(0) + minetest.sound_play({name="default_tool_breaks"},{ + gain=1, + fade=0, + pitch=1 + },true) + return true + end + meta:set_int("industrialtest.uses",uses) + itemstack:set_wear(65535-uses/self.uses*65535) + return true + end + return false +end + function industrialtest.Tool.prepare(self,itemstack) local meta=itemstack:get_meta() meta:set_int("industrialtest.uses",self.uses) diff --git a/tools/wrench.lua b/tools/wrench.lua index 3a8a4c0..162dbfb 100644 --- a/tools/wrench.lua +++ b/tools/wrench.lua @@ -16,6 +16,9 @@ local S=minetest.get_translator("industrialtest") local function onWrenchUse(user,pointed) + if pointed.type~="node" or not user or not user:is_player() then + return false + end local node=minetest.get_node_or_nil(pointed.under) if not node then return false @@ -37,29 +40,22 @@ local function onWrenchUse(user,pointed) return true end -local definition={ +industrialtest.Wrench=table.copy(industrialtest.Tool) +industrialtest.internal.unpackTableInto(industrialtest.Wrench,{ + name="industrialtest:wrench", + define={onUse=true}, description=S("Wrench"), - inventory_image="industrialtest_wrench.png", - tool_capabilities={ - full_punch_interval=1, - uses=200 - }, - on_use=function(itemstack,user,pointed) - if pointed.type=="node" and user and user:is_player() and onWrenchUse(user,pointed) then - industrialtest.api.afterToolUse(itemstack) - return itemstack - end - return nil - end, - _industrialtest_tool=true -} -if industrialtest.mclAvailable then - definition.groups={ - tool=1 - } - definition._mcl_toollike_wield=true + inventoryImage="industrialtest_wrench.png", + uses=200, + repairMaterial=industrialtest.elementKeys.bronzeIngot +}) + +function industrialtest.Wrench.hitUse(self,itemstack,user,pointed) + return onWrenchUse(user,pointed) end -minetest.register_tool("industrialtest:wrench",definition) + +industrialtest.Wrench:register() + minetest.register_craft({ type="shaped", output="industrialtest:wrench", @@ -70,28 +66,26 @@ minetest.register_craft({ } }) -definition={ +industrialtest.ElectricWrench=table.copy(industrialtest.ElectricTool) +industrialtest.internal.unpackTableInto(industrialtest.ElectricWrench,{ + name="industrialtest:electric_wrench", + define={onUse=true}, description=S("Electric Wrench"), - inventory_image="industrialtest_electric_wrench.png", - on_use=function(itemstack,user,pointed) - local meta=itemstack:get_meta() - if meta:get_int("industrialtest.powerAmount")>=20 and user and user:is_player() and onWrenchUse(user,pointed) then - industrialtest.api.addPowerToItem(itemstack,-20) - return itemstack - end - return nil - end, - _industrialtest_powerStorage=true, - _industrialtest_powerCapacity=10000, - _industrialtest_powerFlow=industrialtest.api.lvPowerFlow -} -if industrialtest.mclAvailable then - definition.groups={ - tool=1 - } - definition._mcl_toollike_wield=true + inventoryImage="industrialtest_electric_wrench.png", + capacity=10000, + flow=industrialtest.api.lvPowerFlow +}) + +function industrialtest.ElectricWrench.getOpPower(self,itemstack) + return 50 end -minetest.register_tool("industrialtest:electric_wrench",definition) + +function industrialtest.ElectricWrench.hitUse(self,itemstack,user,pointed) + return onWrenchUse(user,pointed) +end + +industrialtest.ElectricWrench:register() + minetest.register_craft({ type="shapeless", output="industrialtest:electric_wrench",