Refactor wrench

This commit is contained in:
mrkubax10 2025-04-28 12:53:03 +02:00
parent 089550cc28
commit 8d48b3f9f5
2 changed files with 58 additions and 41 deletions

View File

@ -53,6 +53,29 @@ function industrialtest.Tool.onPlace(self,itemstack,user,pointed)
return false return false
end 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) function industrialtest.Tool.prepare(self,itemstack)
local meta=itemstack:get_meta() local meta=itemstack:get_meta()
meta:set_int("industrialtest.uses",self.uses) meta:set_int("industrialtest.uses",self.uses)

View File

@ -16,6 +16,9 @@
local S=minetest.get_translator("industrialtest") local S=minetest.get_translator("industrialtest")
local function onWrenchUse(user,pointed) 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) local node=minetest.get_node_or_nil(pointed.under)
if not node then if not node then
return false return false
@ -37,29 +40,22 @@ local function onWrenchUse(user,pointed)
return true return true
end end
local definition={ industrialtest.Wrench=table.copy(industrialtest.Tool)
industrialtest.internal.unpackTableInto(industrialtest.Wrench,{
name="industrialtest:wrench",
define={onUse=true},
description=S("Wrench"), description=S("Wrench"),
inventory_image="industrialtest_wrench.png", inventoryImage="industrialtest_wrench.png",
tool_capabilities={ uses=200,
full_punch_interval=1, repairMaterial=industrialtest.elementKeys.bronzeIngot
uses=200 })
},
on_use=function(itemstack,user,pointed) function industrialtest.Wrench.hitUse(self,itemstack,user,pointed)
if pointed.type=="node" and user and user:is_player() and onWrenchUse(user,pointed) then return onWrenchUse(user,pointed)
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
end end
minetest.register_tool("industrialtest:wrench",definition)
industrialtest.Wrench:register()
minetest.register_craft({ minetest.register_craft({
type="shaped", type="shaped",
output="industrialtest:wrench", 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"), description=S("Electric Wrench"),
inventory_image="industrialtest_electric_wrench.png", inventoryImage="industrialtest_electric_wrench.png",
on_use=function(itemstack,user,pointed) capacity=10000,
local meta=itemstack:get_meta() flow=industrialtest.api.lvPowerFlow
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 function industrialtest.ElectricWrench.getOpPower(self,itemstack)
end return 50
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
end 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({ minetest.register_craft({
type="shapeless", type="shapeless",
output="industrialtest:electric_wrench", output="industrialtest:electric_wrench",