2021-05-29 14:12:33 +00:00
local modname = minetest.get_current_modname ( )
local modpath = minetest.get_modpath ( modname )
local S = minetest.get_translator ( modname )
2019-03-07 23:46:35 +00:00
2015-06-29 17:55:56 +00:00
-- mods/default/tools.lua
--
-- Tool definition
--
2021-03-15 20:55:59 +00:00
--[[
2020-02-17 15:17:35 +00:00
dig_speed_class group :
- 1 : Painfully slow
- 2 : Very slow
- 3 : Slow
- 4 : Fast
- 5 : Very fast
- 6 : Extremely fast
- 7 : Instantaneous
] ]
2017-02-25 15:19:24 +00:00
2017-03-12 00:55:18 +00:00
-- Help texts
2019-03-07 23:46:35 +00:00
local pickaxe_longdesc = S ( " Pickaxes are mining tools to mine hard blocks, such as stone. A pickaxe can also be used as weapon, but it is rather inefficient. " )
local axe_longdesc = S ( " An axe is your tool of choice to cut down trees, wood-based blocks and other blocks. Axes deal a lot of damage as well, but they are rather slow. " )
local sword_longdesc = S ( " Swords are great in melee combat, as they are fast, deal high damage and can endure countless battles. Swords can also be used to cut down a few particular blocks, such as cobwebs. " )
local shovel_longdesc = S ( " Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak. " )
local shovel_use = S ( " To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block. " )
2019-03-15 23:07:44 +00:00
local shears_longdesc = S ( " Shears are tools to shear sheep and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from grass, leaves and similar blocks that require cutting. " )
2019-03-25 11:05:57 +00:00
local shears_use = S ( " To shear sheep or carve faceless pumpkins, use the “place” key on them. Faces can only be carved at the side of faceless pumpkins. Mining works as usual, but the drops are different for a few blocks. " )
2017-03-12 00:55:18 +00:00
2021-04-05 08:16:56 +00:00
local wield_scale = mcl_vars.tool_wield_scale
2020-04-08 02:07:16 +00:00
2015-06-29 17:55:56 +00:00
-- Picks
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:pick_wood " , {
2019-03-07 23:46:35 +00:00
description = S ( " Wooden Pickaxe " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = pickaxe_longdesc ,
2017-03-20 15:38:16 +00:00
_doc_items_hidden = false ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_woodpick.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { tool = 1 , pickaxe = 1 , dig_speed_class = 2 , enchantability = 15 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-16 23:37:15 +00:00
-- 1/1.2
full_punch_interval = 0.83333333 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 1 ,
2015-06-29 17:55:56 +00:00
damage_groups = { fleshy = 2 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 30 ,
2015-06-29 17:55:56 +00:00
} ,
2017-02-19 18:59:18 +00:00
sound = { breaks = " default_tool_breaks " } ,
2018-02-02 01:33:10 +00:00
_repair_material = " group:wood " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
pickaxey = { speed = 2 , level = 1 , uses = 60 }
2021-03-11 13:49:09 +00:00
} ,
2015-06-29 17:55:56 +00:00
} )
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:pick_stone " , {
2019-03-07 23:46:35 +00:00
description = S ( " Stone Pickaxe " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = pickaxe_longdesc ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_stonepick.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { tool = 1 , pickaxe = 1 , dig_speed_class = 3 , enchantability = 5 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-16 23:37:15 +00:00
-- 1/1.2
full_punch_interval = 0.83333333 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 3 ,
2015-06-29 17:55:56 +00:00
damage_groups = { fleshy = 3 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 66 ,
2015-06-29 17:55:56 +00:00
} ,
2017-02-19 18:59:18 +00:00
sound = { breaks = " default_tool_breaks " } ,
2022-05-04 14:08:42 +00:00
_repair_material = " group:cobble " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
pickaxey = { speed = 4 , level = 3 , uses = 132 }
2021-03-11 13:49:09 +00:00
} ,
2015-06-29 17:55:56 +00:00
} )
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:pick_iron " , {
2019-03-07 23:46:35 +00:00
description = S ( " Iron Pickaxe " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = pickaxe_longdesc ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_steelpick.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { tool = 1 , pickaxe = 1 , dig_speed_class = 4 , enchantability = 14 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-16 23:37:15 +00:00
-- 1/1.2
full_punch_interval = 0.83333333 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 4 ,
2015-06-29 17:55:56 +00:00
damage_groups = { fleshy = 4 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 126 ,
2015-06-29 17:55:56 +00:00
} ,
2017-02-19 18:59:18 +00:00
sound = { breaks = " default_tool_breaks " } ,
2018-02-02 01:33:10 +00:00
_repair_material = " mcl_core:iron_ingot " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
pickaxey = { speed = 6 , level = 4 , uses = 251 }
2021-03-11 13:49:09 +00:00
} ,
2015-06-29 17:55:56 +00:00
} )
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:pick_gold " , {
2019-03-07 23:46:35 +00:00
description = S ( " Golden Pickaxe " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = pickaxe_longdesc ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_goldpick.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { tool = 1 , pickaxe = 1 , dig_speed_class = 6 , enchantability = 22 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-16 23:37:15 +00:00
-- 1/1.2
full_punch_interval = 0.83333333 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 2 ,
2017-01-16 23:37:15 +00:00
damage_groups = { fleshy = 2 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 17 ,
2015-06-29 17:55:56 +00:00
} ,
2017-02-19 18:59:18 +00:00
sound = { breaks = " default_tool_breaks " } ,
2018-02-02 01:33:10 +00:00
_repair_material = " mcl_core:gold_ingot " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
pickaxey = { speed = 12 , level = 2 , uses = 33 }
2021-03-11 13:49:09 +00:00
} ,
2015-06-29 17:55:56 +00:00
} )
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:pick_diamond " , {
2019-03-07 23:46:35 +00:00
description = S ( " Diamond Pickaxe " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = pickaxe_longdesc ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_diamondpick.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { tool = 1 , pickaxe = 1 , dig_speed_class = 5 , enchantability = 10 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-16 23:37:15 +00:00
-- 1/1.2
full_punch_interval = 0.83333333 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 5 ,
2015-06-29 17:55:56 +00:00
damage_groups = { fleshy = 5 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 781 ,
2015-06-29 17:55:56 +00:00
} ,
2017-02-19 18:59:18 +00:00
sound = { breaks = " default_tool_breaks " } ,
2018-02-02 01:33:10 +00:00
_repair_material = " mcl_core:diamond " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
pickaxey = { speed = 8 , level = 5 , uses = 1562 }
2021-03-11 13:49:09 +00:00
} ,
2021-04-16 14:00:14 +00:00
_mcl_upgradable = true ,
_mcl_upgrade_item = " mcl_tools:pick_netherite "
2015-06-29 17:55:56 +00:00
} )
2021-04-14 13:07:25 +00:00
minetest.register_tool ( " mcl_tools:pick_netherite " , {
description = S ( " Netherite Pickaxe " ) ,
_doc_items_longdesc = pickaxe_longdesc ,
inventory_image = " default_tool_netheritepick.png " ,
wield_scale = wield_scale ,
2022-07-22 13:06:35 +00:00
groups = { tool = 1 , pickaxe = 1 , dig_speed_class = 6 , enchantability = 10 , fire_immune = 1 } ,
2021-04-14 13:07:25 +00:00
tool_capabilities = {
-- 1/1.2
full_punch_interval = 0.83333333 ,
max_drop_level = 5 ,
damage_groups = { fleshy = 6 } ,
punch_attack_uses = 1016 ,
} ,
sound = { breaks = " default_tool_breaks " } ,
_repair_material = " mcl_nether:netherite_ingot " ,
_mcl_toollike_wield = true ,
_mcl_diggroups = {
2021-04-15 16:07:19 +00:00
pickaxey = { speed = 9.5 , level = 6 , uses = 2031 }
2021-04-14 13:07:25 +00:00
} ,
} )
local make_grass_path = function ( itemstack , placer , pointed_thing )
2017-03-02 15:09:13 +00:00
-- Use pointed node's on_rightclick function first, if present
local node = minetest.get_node ( pointed_thing.under )
if placer and not placer : get_player_control ( ) . sneak then
if minetest.registered_nodes [ node.name ] and minetest.registered_nodes [ node.name ] . on_rightclick then
return minetest.registered_nodes [ node.name ] . on_rightclick ( pointed_thing.under , node , placer , itemstack ) or itemstack
end
end
2017-07-08 16:11:27 +00:00
-- Only make grass path if tool used on side or top of target node
if pointed_thing.above . y < pointed_thing.under . y then
2019-03-27 12:07:33 +00:00
return itemstack
2017-07-08 16:11:27 +00:00
end
2019-03-27 12:07:33 +00:00
2021-09-08 12:34:58 +00:00
if ( minetest.get_item_group ( node.name , " path_creation_possible " ) == 1 ) then
2017-02-06 18:25:15 +00:00
local above = table.copy ( pointed_thing.under )
above.y = above.y + 1
if minetest.get_node ( above ) . name == " air " then
2019-03-27 12:07:33 +00:00
if minetest.is_protected ( pointed_thing.under , placer : get_player_name ( ) ) then
minetest.record_protection_violation ( pointed_thing.under , placer : get_player_name ( ) )
return itemstack
end
2020-07-10 14:08:40 +00:00
if not minetest.is_creative_enabled ( placer : get_player_name ( ) ) then
2021-03-18 10:35:29 +00:00
-- Add wear (as if digging a shovely node)
2017-02-27 17:53:17 +00:00
local toolname = itemstack : get_name ( )
2021-03-18 10:35:29 +00:00
local wear = mcl_autogroup.get_wear ( toolname , " shovely " )
2017-02-06 18:25:15 +00:00
itemstack : add_wear ( wear )
end
2020-04-06 22:55:45 +00:00
minetest.sound_play ( { name = " default_grass_footstep " , gain = 1 } , { pos = above } , true )
2017-03-02 16:57:18 +00:00
minetest.swap_node ( pointed_thing.under , { name = " mcl_core:grass_path " } )
2017-02-06 18:25:15 +00:00
end
end
return itemstack
end
2017-11-22 23:20:49 +00:00
local carve_pumpkin
if minetest.get_modpath ( " mcl_farming " ) then
2021-05-29 14:12:33 +00:00
function carve_pumpkin ( itemstack , placer , pointed_thing )
2017-11-22 23:20:49 +00:00
-- Use pointed node's on_rightclick function first, if present
local node = minetest.get_node ( pointed_thing.under )
if placer and not placer : get_player_control ( ) . sneak then
if minetest.registered_nodes [ node.name ] and minetest.registered_nodes [ node.name ] . on_rightclick then
return minetest.registered_nodes [ node.name ] . on_rightclick ( pointed_thing.under , node , placer , itemstack ) or itemstack
end
end
-- Only carve pumpkin if used on side
if pointed_thing.above . y ~= pointed_thing.under . y then
return
end
if node.name == " mcl_farming:pumpkin " then
2020-07-10 14:08:40 +00:00
if not minetest.is_creative_enabled ( placer : get_player_name ( ) ) then
2017-11-22 23:20:49 +00:00
-- Add wear (as if digging a shearsy node)
local toolname = itemstack : get_name ( )
2021-03-18 10:35:29 +00:00
local wear = mcl_autogroup.get_wear ( toolname , " shearsy " )
2017-11-22 23:20:49 +00:00
itemstack : add_wear ( wear )
end
2021-04-16 11:35:03 +00:00
minetest.sound_play ( { name = " default_grass_footstep " , gain = 1 } , { pos = pointed_thing.above } , true )
2017-11-22 23:20:49 +00:00
local dir = vector.subtract ( pointed_thing.under , pointed_thing.above )
local param2 = minetest.dir_to_facedir ( dir )
2022-04-14 16:52:31 +00:00
minetest.set_node ( pointed_thing.under , { name = " mcl_farming:pumpkin_face " , param2 = param2 } )
2017-11-22 23:20:49 +00:00
minetest.add_item ( pointed_thing.above , " mcl_farming:pumpkin_seeds 4 " )
end
return itemstack
end
end
2015-06-29 17:55:56 +00:00
-- Shovels
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:shovel_wood " , {
2019-03-07 23:46:35 +00:00
description = S ( " Wooden Shovel " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = shovel_longdesc ,
_doc_items_usagehelp = shovel_use ,
2017-03-20 15:38:16 +00:00
_doc_items_hidden = false ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_woodshovel.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { tool = 1 , shovel = 1 , dig_speed_class = 2 , enchantability = 15 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-16 23:37:15 +00:00
full_punch_interval = 1 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 1 ,
2015-06-29 17:55:56 +00:00
damage_groups = { fleshy = 2 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 30 ,
2015-06-29 17:55:56 +00:00
} ,
2017-02-06 18:25:15 +00:00
on_place = make_grass_path ,
2017-02-19 18:59:18 +00:00
sound = { breaks = " default_tool_breaks " } ,
2018-02-02 01:33:10 +00:00
_repair_material = " group:wood " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2022-08-07 09:55:01 +00:00
shovely = { speed = 2 , level = 2 , uses = 60 }
2021-03-11 13:49:09 +00:00
} ,
2015-06-29 17:55:56 +00:00
} )
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:shovel_stone " , {
2019-03-07 23:46:35 +00:00
description = S ( " Stone Shovel " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = shovel_longdesc ,
_doc_items_usagehelp = shovel_use ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_stoneshovel.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { tool = 1 , shovel = 1 , dig_speed_class = 3 , enchantability = 5 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-16 23:37:15 +00:00
full_punch_interval = 1 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 3 ,
2017-01-16 23:37:15 +00:00
damage_groups = { fleshy = 3 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 66 ,
2015-06-29 17:55:56 +00:00
} ,
2017-02-06 18:25:15 +00:00
on_place = make_grass_path ,
2017-02-19 18:59:18 +00:00
sound = { breaks = " default_tool_breaks " } ,
2022-05-04 14:08:42 +00:00
_repair_material = " group:cobble " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
shovely = { speed = 4 , level = 3 , uses = 132 }
2021-03-11 13:49:09 +00:00
} ,
2015-06-29 17:55:56 +00:00
} )
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:shovel_iron " , {
2019-03-07 23:46:35 +00:00
description = S ( " Iron Shovel " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = shovel_longdesc ,
_doc_items_usagehelp = shovel_use ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_steelshovel.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { tool = 1 , shovel = 1 , dig_speed_class = 4 , enchantability = 14 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-16 23:37:15 +00:00
full_punch_interval = 1 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 4 ,
2017-01-16 23:37:15 +00:00
damage_groups = { fleshy = 4 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 126 ,
2015-06-29 17:55:56 +00:00
} ,
2017-02-06 18:25:15 +00:00
on_place = make_grass_path ,
2017-02-19 18:59:18 +00:00
sound = { breaks = " default_tool_breaks " } ,
2018-02-02 01:33:10 +00:00
_repair_material = " mcl_core:iron_ingot " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
shovely = { speed = 6 , level = 4 , uses = 251 }
2021-03-11 13:49:09 +00:00
} ,
2015-06-29 17:55:56 +00:00
} )
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:shovel_gold " , {
2019-03-07 23:46:35 +00:00
description = S ( " Golden Shovel " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = shovel_longdesc ,
_doc_items_usagehelp = shovel_use ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_goldshovel.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2021-01-02 11:11:16 +00:00
groups = { tool = 1 , shovel = 1 , dig_speed_class = 6 , enchantability = 22 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-16 23:37:15 +00:00
full_punch_interval = 1 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 2 ,
2015-06-29 17:55:56 +00:00
damage_groups = { fleshy = 2 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 17 ,
2015-06-29 17:55:56 +00:00
} ,
2017-02-06 18:25:15 +00:00
on_place = make_grass_path ,
2017-02-19 18:59:18 +00:00
sound = { breaks = " default_tool_breaks " } ,
2018-02-02 01:33:10 +00:00
_repair_material = " mcl_core:gold_ingot " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
shovely = { speed = 12 , level = 2 , uses = 33 }
2021-03-11 13:49:09 +00:00
} ,
2015-06-29 17:55:56 +00:00
} )
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:shovel_diamond " , {
2019-03-07 23:46:35 +00:00
description = S ( " Diamond Shovel " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = shovel_longdesc ,
_doc_items_usagehelp = shovel_use ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_diamondshovel.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { tool = 1 , shovel = 1 , dig_speed_class = 5 , enchantability = 10 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-16 23:37:15 +00:00
full_punch_interval = 1 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 5 ,
2017-01-16 23:37:15 +00:00
damage_groups = { fleshy = 5 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 781 ,
2015-06-29 17:55:56 +00:00
} ,
2017-02-06 18:25:15 +00:00
on_place = make_grass_path ,
2017-02-19 18:59:18 +00:00
sound = { breaks = " default_tool_breaks " } ,
2018-02-02 01:33:10 +00:00
_repair_material = " mcl_core:diamond " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
shovely = { speed = 8 , level = 5 , uses = 1562 }
2021-03-11 13:49:09 +00:00
} ,
2021-04-16 14:00:14 +00:00
_mcl_upgradable = true ,
_mcl_upgrade_item = " mcl_tools:shovel_netherite "
2015-06-29 17:55:56 +00:00
} )
2021-04-14 13:07:25 +00:00
minetest.register_tool ( " mcl_tools:shovel_netherite " , {
description = S ( " Netherite Shovel " ) ,
_doc_items_longdesc = shovel_longdesc ,
_doc_items_usagehelp = shovel_use ,
inventory_image = " default_tool_netheriteshovel.png " ,
wield_scale = wield_scale ,
2022-07-22 13:06:35 +00:00
groups = { tool = 1 , shovel = 1 , dig_speed_class = 6 , enchantability = 10 , fire_immune = 1 } ,
2021-04-14 13:07:25 +00:00
tool_capabilities = {
full_punch_interval = 1 ,
max_drop_level = 5 ,
damage_groups = { fleshy = 5 } ,
punch_attack_uses = 1016 ,
} ,
on_place = make_grass_path ,
sound = { breaks = " default_tool_breaks " } ,
_repair_material = " mcl_nether:netherite_ingot " ,
_mcl_toollike_wield = true ,
_mcl_diggroups = {
2021-04-15 16:07:19 +00:00
shovely = { speed = 9 , level = 6 , uses = 2031 }
2021-04-14 13:07:25 +00:00
} ,
} )
2015-06-29 17:55:56 +00:00
-- Axes
2021-05-29 14:12:33 +00:00
local function make_stripped_trunk ( itemstack , placer , pointed_thing )
2021-04-18 18:28:39 +00:00
if pointed_thing.type ~= " node " then return end
local node = minetest.get_node ( pointed_thing.under )
local noddef = minetest.registered_nodes [ minetest.get_node ( pointed_thing.under ) . name ]
if not placer : get_player_control ( ) . sneak and noddef.on_rightclick then
return minetest.item_place ( itemstack , placer , pointed_thing )
end
if minetest.is_protected ( pointed_thing.under , placer : get_player_name ( ) ) then
minetest.record_protection_violation ( pointed_thing.under , placer : get_player_name ( ) )
return itemstack
end
2021-06-15 17:34:45 +00:00
if noddef._mcl_stripped_variant == nil then
2021-04-19 16:53:48 +00:00
return itemstack
else
2021-06-15 17:34:45 +00:00
minetest.swap_node ( pointed_thing.under , { name = noddef._mcl_stripped_variant , param2 = node.param2 } )
2021-04-19 16:53:48 +00:00
if not minetest.is_creative_enabled ( placer : get_player_name ( ) ) then
-- Add wear (as if digging a axey node)
local toolname = itemstack : get_name ( )
local wear = mcl_autogroup.get_wear ( toolname , " axey " )
itemstack : add_wear ( wear )
end
end
2021-04-18 18:28:39 +00:00
return itemstack
2021-04-12 13:28:28 +00:00
end
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:axe_wood " , {
2019-03-07 23:46:35 +00:00
description = S ( " Wooden Axe " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = axe_longdesc ,
2017-03-20 15:38:16 +00:00
_doc_items_hidden = false ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_woodaxe.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { tool = 1 , axe = 1 , dig_speed_class = 2 , enchantability = 15 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-16 23:37:15 +00:00
full_punch_interval = 1.25 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 1 ,
2017-01-16 23:37:15 +00:00
damage_groups = { fleshy = 7 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 30 ,
2015-06-29 17:55:56 +00:00
} ,
2021-04-12 13:28:28 +00:00
on_place = make_stripped_trunk ,
2017-02-19 18:59:18 +00:00
sound = { breaks = " default_tool_breaks " } ,
2018-02-02 01:33:10 +00:00
_repair_material = " group:wood " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
axey = { speed = 2 , level = 1 , uses = 60 }
2021-03-11 13:49:09 +00:00
} ,
2015-06-29 17:55:56 +00:00
} )
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:axe_stone " , {
2019-03-07 23:46:35 +00:00
description = S ( " Stone Axe " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = axe_longdesc ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_stoneaxe.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { tool = 1 , axe = 1 , dig_speed_class = 3 , enchantability = 5 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-16 23:37:15 +00:00
full_punch_interval = 1.25 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 3 ,
2017-01-16 23:37:15 +00:00
damage_groups = { fleshy = 9 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 66 ,
2015-06-29 17:55:56 +00:00
} ,
2021-04-12 13:28:28 +00:00
on_place = make_stripped_trunk ,
2017-02-19 18:59:18 +00:00
sound = { breaks = " default_tool_breaks " } ,
2022-05-04 14:08:42 +00:00
_repair_material = " group:cobble " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
axey = { speed = 4 , level = 3 , uses = 132 }
2021-03-11 13:49:09 +00:00
} ,
2015-06-29 17:55:56 +00:00
} )
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:axe_iron " , {
2019-03-07 23:46:35 +00:00
description = S ( " Iron Axe " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = axe_longdesc ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_steelaxe.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { tool = 1 , axe = 1 , dig_speed_class = 4 , enchantability = 14 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-16 23:37:15 +00:00
-- 1/0.9
full_punch_interval = 1.11111111 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 4 ,
2017-01-16 23:37:15 +00:00
damage_groups = { fleshy = 9 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 126 ,
2015-06-29 17:55:56 +00:00
} ,
2021-04-12 13:28:28 +00:00
on_place = make_stripped_trunk ,
2017-02-19 18:59:18 +00:00
sound = { breaks = " default_tool_breaks " } ,
2018-02-02 01:33:10 +00:00
_repair_material = " mcl_core:iron_ingot " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
axey = { speed = 6 , level = 4 , uses = 251 }
2021-03-11 13:49:09 +00:00
} ,
2015-06-29 17:55:56 +00:00
} )
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:axe_gold " , {
2019-03-07 23:46:35 +00:00
description = S ( " Golden Axe " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = axe_longdesc ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_goldaxe.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { tool = 1 , axe = 1 , dig_speed_class = 6 , enchantability = 22 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-16 23:37:15 +00:00
full_punch_interval = 1.0 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 2 ,
2017-01-16 23:37:15 +00:00
damage_groups = { fleshy = 7 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 17 ,
2015-06-29 17:55:56 +00:00
} ,
2021-04-12 13:28:28 +00:00
on_place = make_stripped_trunk ,
2017-02-19 18:59:18 +00:00
sound = { breaks = " default_tool_breaks " } ,
2018-02-02 01:33:10 +00:00
_repair_material = " mcl_core:gold_ingot " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
axey = { speed = 12 , level = 2 , uses = 33 }
2021-03-11 13:49:09 +00:00
} ,
2015-06-29 17:55:56 +00:00
} )
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:axe_diamond " , {
2019-03-07 23:46:35 +00:00
description = S ( " Diamond Axe " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = axe_longdesc ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_diamondaxe.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { tool = 1 , axe = 1 , dig_speed_class = 5 , enchantability = 10 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-16 23:37:15 +00:00
full_punch_interval = 1.0 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 5 ,
2017-01-16 23:37:15 +00:00
damage_groups = { fleshy = 9 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 781 ,
2015-06-29 17:55:56 +00:00
} ,
2021-04-12 13:28:28 +00:00
on_place = make_stripped_trunk ,
2017-02-19 18:59:18 +00:00
sound = { breaks = " default_tool_breaks " } ,
2018-02-02 01:33:10 +00:00
_repair_material = " mcl_core:diamond " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
axey = { speed = 8 , level = 5 , uses = 1562 }
2021-03-11 13:49:09 +00:00
} ,
2021-04-16 14:00:14 +00:00
_mcl_upgradable = true ,
_mcl_upgrade_item = " mcl_tools:axe_netherite "
2015-06-29 17:55:56 +00:00
} )
2021-04-14 13:07:25 +00:00
minetest.register_tool ( " mcl_tools:axe_netherite " , {
description = S ( " Netherite Axe " ) ,
_doc_items_longdesc = axe_longdesc ,
inventory_image = " default_tool_netheriteaxe.png " ,
wield_scale = wield_scale ,
2022-07-22 13:06:35 +00:00
groups = { tool = 1 , axe = 1 , dig_speed_class = 6 , enchantability = 10 , fire_immune = 1 } ,
2021-04-14 13:07:25 +00:00
tool_capabilities = {
full_punch_interval = 1.0 ,
max_drop_level = 5 ,
damage_groups = { fleshy = 10 } ,
punch_attack_uses = 1016 ,
} ,
on_place = make_stripped_trunk ,
sound = { breaks = " default_tool_breaks " } ,
_repair_material = " mcl_nether:netherite_ingot " ,
_mcl_toollike_wield = true ,
_mcl_diggroups = {
2021-04-15 16:07:19 +00:00
axey = { speed = 9 , level = 6 , uses = 2031 }
2021-04-14 13:07:25 +00:00
} ,
} )
2015-06-29 17:55:56 +00:00
-- Swords
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:sword_wood " , {
2019-03-07 23:46:35 +00:00
description = S ( " Wooden Sword " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = sword_longdesc ,
2017-03-20 15:38:16 +00:00
_doc_items_hidden = false ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_woodsword.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { weapon = 1 , sword = 1 , dig_speed_class = 2 , enchantability = 15 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-04 11:03:04 +00:00
full_punch_interval = 0.625 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 1 ,
2017-01-04 11:03:04 +00:00
damage_groups = { fleshy = 4 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 60 ,
2017-02-19 18:59:18 +00:00
} ,
sound = { breaks = " default_tool_breaks " } ,
2018-02-02 01:33:10 +00:00
_repair_material = " group:wood " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
swordy = { speed = 2 , level = 1 , uses = 60 } ,
swordy_cobweb = { speed = 2 , level = 1 , uses = 60 }
2021-03-11 13:49:09 +00:00
} ,
2015-06-29 17:55:56 +00:00
} )
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:sword_stone " , {
2019-03-07 23:46:35 +00:00
description = S ( " Stone Sword " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = sword_longdesc ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_stonesword.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { weapon = 1 , sword = 1 , dig_speed_class = 3 , enchantability = 5 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-04 11:03:04 +00:00
full_punch_interval = 0.625 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 3 ,
2017-01-04 11:03:04 +00:00
damage_groups = { fleshy = 5 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 132 ,
2017-02-19 18:59:18 +00:00
} ,
sound = { breaks = " default_tool_breaks " } ,
2022-05-04 14:08:42 +00:00
_repair_material = " group:cobble " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
swordy = { speed = 4 , level = 3 , uses = 132 } ,
swordy_cobweb = { speed = 4 , level = 3 , uses = 132 }
2021-03-11 13:49:09 +00:00
} ,
2015-06-29 17:55:56 +00:00
} )
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:sword_iron " , {
2019-03-07 23:46:35 +00:00
description = S ( " Iron Sword " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = sword_longdesc ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_steelsword.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { weapon = 1 , sword = 1 , dig_speed_class = 4 , enchantability = 14 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-04 11:03:04 +00:00
full_punch_interval = 0.625 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 4 ,
2015-06-29 17:55:56 +00:00
damage_groups = { fleshy = 6 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 251 ,
2017-02-19 18:59:18 +00:00
} ,
sound = { breaks = " default_tool_breaks " } ,
2018-02-02 01:33:10 +00:00
_repair_material = " mcl_core:iron_ingot " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
swordy = { speed = 6 , level = 4 , uses = 251 } ,
swordy_cobweb = { speed = 6 , level = 4 , uses = 251 }
2021-03-11 13:49:09 +00:00
} ,
2015-06-29 17:55:56 +00:00
} )
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:sword_gold " , {
2019-03-07 23:46:35 +00:00
description = S ( " Golden Sword " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = sword_longdesc ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_goldsword.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { weapon = 1 , sword = 1 , dig_speed_class = 6 , enchantability = 22 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-04 11:03:04 +00:00
full_punch_interval = 0.625 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 2 ,
2017-01-16 23:37:15 +00:00
damage_groups = { fleshy = 4 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 33 ,
2017-02-19 18:59:18 +00:00
} ,
sound = { breaks = " default_tool_breaks " } ,
2018-02-02 01:33:10 +00:00
_repair_material = " mcl_core:gold_ingot " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
swordy = { speed = 12 , level = 2 , uses = 33 } ,
swordy_cobweb = { speed = 12 , level = 2 , uses = 33 }
2021-03-11 13:49:09 +00:00
} ,
2015-06-29 17:55:56 +00:00
} )
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:sword_diamond " , {
2019-03-07 23:46:35 +00:00
description = S ( " Diamond Sword " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = sword_longdesc ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_diamondsword.png " ,
2020-04-08 02:07:16 +00:00
wield_scale = wield_scale ,
2020-11-25 11:47:27 +00:00
groups = { weapon = 1 , sword = 1 , dig_speed_class = 5 , enchantability = 10 } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
2017-01-04 11:03:04 +00:00
full_punch_interval = 0.625 ,
2017-02-24 16:01:56 +00:00
max_drop_level = 5 ,
2017-01-04 11:03:04 +00:00
damage_groups = { fleshy = 7 } ,
2020-02-19 14:53:51 +00:00
punch_attack_uses = 1562 ,
2017-02-19 18:59:18 +00:00
} ,
sound = { breaks = " default_tool_breaks " } ,
2018-02-02 01:33:10 +00:00
_repair_material = " mcl_core:diamond " ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
swordy = { speed = 8 , level = 5 , uses = 1562 } ,
swordy_cobweb = { speed = 8 , level = 5 , uses = 1562 }
2021-03-11 13:49:09 +00:00
} ,
2021-04-16 14:00:14 +00:00
_mcl_upgradable = true ,
_mcl_upgrade_item = " mcl_tools:sword_netherite "
2015-06-29 17:55:56 +00:00
} )
2021-04-14 13:07:25 +00:00
minetest.register_tool ( " mcl_tools:sword_netherite " , {
description = S ( " Netherite Sword " ) ,
_doc_items_longdesc = sword_longdesc ,
inventory_image = " default_tool_netheritesword.png " ,
wield_scale = wield_scale ,
2022-07-22 13:06:35 +00:00
groups = { weapon = 1 , sword = 1 , dig_speed_class = 5 , enchantability = 10 , fire_immune = 1 } ,
2021-04-14 13:07:25 +00:00
tool_capabilities = {
full_punch_interval = 0.625 ,
max_drop_level = 5 ,
damage_groups = { fleshy = 9 } ,
2021-04-14 13:12:44 +00:00
punch_attack_uses = 2031 ,
2021-04-14 13:07:25 +00:00
} ,
sound = { breaks = " default_tool_breaks " } ,
_repair_material = " mcl_nether:netherite_ingot " ,
_mcl_toollike_wield = true ,
_mcl_diggroups = {
2021-04-14 13:12:44 +00:00
swordy = { speed = 8 , level = 5 , uses = 2031 } ,
swordy_cobweb = { speed = 8 , level = 5 , uses = 2031 }
2021-04-14 13:07:25 +00:00
} ,
} )
2015-06-29 17:55:56 +00:00
--Shears
2017-02-26 17:44:48 +00:00
minetest.register_tool ( " mcl_tools:shears " , {
2019-03-07 23:46:35 +00:00
description = S ( " Shears " ) ,
2017-03-12 00:55:18 +00:00
_doc_items_longdesc = shears_longdesc ,
_doc_items_usagehelp = shears_use ,
2015-06-29 17:55:56 +00:00
inventory_image = " default_tool_shears.png " ,
wield_image = " default_tool_shears.png " ,
stack_max = 1 ,
2020-12-19 15:29:55 +00:00
groups = { tool = 1 , shears = 1 , dig_speed_class = 4 , } ,
2015-06-29 17:55:56 +00:00
tool_capabilities = {
full_punch_interval = 0.5 ,
max_drop_level = 1 ,
2017-02-19 18:59:18 +00:00
} ,
2017-11-22 23:20:49 +00:00
on_place = carve_pumpkin ,
2017-02-19 18:59:18 +00:00
sound = { breaks = " default_tool_breaks " } ,
2021-02-18 08:28:12 +00:00
_mcl_toollike_wield = true ,
2021-03-16 19:36:38 +00:00
_mcl_diggroups = {
2021-03-20 18:25:47 +00:00
shearsy = { speed = 1.5 , level = 1 , uses = 238 } ,
shearsy_wool = { speed = 5 , level = 1 , uses = 238 } ,
shearsy_cobweb = { speed = 15 , level = 1 , uses = 238 }
2021-03-11 13:49:09 +00:00
} ,
2017-01-04 04:29:55 +00:00
} )
2017-01-04 10:26:35 +00:00
2017-01-16 22:11:04 +00:00
2021-05-29 14:12:33 +00:00
dofile ( modpath .. " /crafting.lua " )
dofile ( modpath .. " /aliases.lua " )