MineClone2/mods/ITEMS/mcl_tools/init.lua

706 lines
23 KiB
Lua
Raw Normal View History

local modname = minetest.get_current_modname()
local modpath = minetest.get_modpath(modname)
local S = minetest.get_translator(modname)
2015-06-29 19:55:56 +02:00
-- mods/default/tools.lua
--
-- Tool definition
--
--[[
2020-02-17 16:17:35 +01:00
dig_speed_class group:
- 1: Painfully slow
- 2: Very slow
- 3: Slow
- 4: Fast
- 5: Very fast
- 6: Extremely fast
- 7: Instantaneous
]]
2017-03-12 01:55:18 +01:00
-- Help texts
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.")
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.")
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 01:55:18 +01:00
2021-04-05 10:16:56 +02:00
local wield_scale = mcl_vars.tool_wield_scale
2020-04-08 04:07:16 +02:00
2015-06-29 19:55:56 +02:00
-- Picks
minetest.register_tool("mcl_tools:pick_wood", {
description = S("Wooden Pickaxe"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = pickaxe_longdesc,
_doc_items_hidden = false,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_woodpick.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { tool=1, pickaxe=1, dig_speed_class=2, enchantability=15 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-17 00:37:15 +01:00
-- 1/1.2
full_punch_interval = 0.83333333,
2017-02-24 17:01:56 +01:00
max_drop_level=1,
2015-06-29 19:55:56 +02:00
damage_groups = {fleshy=2},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 30,
2015-06-29 19:55:56 +02:00
},
2017-02-19 19:59:18 +01:00
sound = { breaks = "default_tool_breaks" },
_repair_material = "group:wood",
_mcl_toollike_wield = true,
_mcl_diggroups = {
pickaxey = { speed = 2, level = 1, uses = 60 }
},
2015-06-29 19:55:56 +02:00
})
minetest.register_tool("mcl_tools:pick_stone", {
description = S("Stone Pickaxe"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = pickaxe_longdesc,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_stonepick.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { tool=1, pickaxe=1, dig_speed_class=3, enchantability=5 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-17 00:37:15 +01:00
-- 1/1.2
full_punch_interval = 0.83333333,
2017-02-24 17:01:56 +01:00
max_drop_level=3,
2015-06-29 19:55:56 +02:00
damage_groups = {fleshy=3},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 66,
2015-06-29 19:55:56 +02:00
},
2017-02-19 19:59:18 +01:00
sound = { breaks = "default_tool_breaks" },
_repair_material = "group:cobble",
_mcl_toollike_wield = true,
_mcl_diggroups = {
pickaxey = { speed = 4, level = 3, uses = 132 }
},
2015-06-29 19:55:56 +02:00
})
minetest.register_tool("mcl_tools:pick_iron", {
description = S("Iron Pickaxe"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = pickaxe_longdesc,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_steelpick.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { tool=1, pickaxe=1, dig_speed_class=4, enchantability=14 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-17 00:37:15 +01:00
-- 1/1.2
full_punch_interval = 0.83333333,
2017-02-24 17:01:56 +01:00
max_drop_level=4,
2015-06-29 19:55:56 +02:00
damage_groups = {fleshy=4},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 126,
2015-06-29 19:55:56 +02:00
},
2017-02-19 19:59:18 +01:00
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:iron_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
pickaxey = { speed = 6, level = 4, uses = 251 }
},
2015-06-29 19:55:56 +02:00
})
minetest.register_tool("mcl_tools:pick_gold", {
description = S("Golden Pickaxe"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = pickaxe_longdesc,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_goldpick.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { tool=1, pickaxe=1, dig_speed_class=6, enchantability=22 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-17 00:37:15 +01:00
-- 1/1.2
full_punch_interval = 0.83333333,
2017-02-24 17:01:56 +01:00
max_drop_level=2,
2017-01-17 00:37:15 +01:00
damage_groups = {fleshy=2},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 17,
2015-06-29 19:55:56 +02:00
},
2017-02-19 19:59:18 +01:00
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:gold_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
pickaxey = { speed = 12, level = 2, uses = 33 }
},
2015-06-29 19:55:56 +02:00
})
minetest.register_tool("mcl_tools:pick_diamond", {
description = S("Diamond Pickaxe"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = pickaxe_longdesc,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_diamondpick.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { tool=1, pickaxe=1, dig_speed_class=5, enchantability=10 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-17 00:37:15 +01:00
-- 1/1.2
full_punch_interval = 0.83333333,
2017-02-24 17:01:56 +01:00
max_drop_level=5,
2015-06-29 19:55:56 +02:00
damage_groups = {fleshy=5},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 781,
2015-06-29 19:55:56 +02:00
},
2017-02-19 19:59:18 +01:00
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:diamond",
_mcl_toollike_wield = true,
_mcl_diggroups = {
pickaxey = { speed = 8, level = 5, uses = 1562 }
},
_mcl_upgradable = true,
_mcl_upgrade_item = "mcl_tools:pick_netherite"
2015-06-29 19:55:56 +02:00
})
2021-04-14 15:07:25 +02: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,
groups = { tool=1, pickaxe=1, dig_speed_class=6, enchantability=10, fire_immune=1 },
2021-04-14 15:07:25 +02: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 = {
pickaxey = { speed = 9.5, level = 6, uses = 2031 }
2021-04-14 15:07:25 +02:00
},
})
local make_grass_path = function(itemstack, placer, pointed_thing)
-- 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 make or remove grass path if tool used on side or top of target node
if pointed_thing.above.y < pointed_thing.under.y then
return itemstack
end
-- Remove grass paths
if (minetest.get_item_group(node.name, "path_remove_possible") == 1) and placer:get_player_control().sneak == true then
local above = table.copy(pointed_thing.under)
above.y = above.y + 1
if minetest.get_node(above).name == "air" then
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
if not minetest.is_creative_enabled(placer:get_player_name()) then
-- Add wear (as if digging a shovely node)
local toolname = itemstack:get_name()
local wear = mcl_autogroup.get_wear(toolname, "shovely")
if wear then
itemstack:add_wear(wear)
end
end
minetest.sound_play({name="default_grass_footstep", gain=1}, {pos = above, max_hear_distance = 16}, true)
minetest.swap_node(pointed_thing.under, {name="mcl_core:dirt"})
end
end
-- Make grass paths
if (minetest.get_item_group(node.name, "path_creation_possible") == 1) then
2017-02-06 19:25:15 +01:00
local above = table.copy(pointed_thing.under)
above.y = above.y + 1
if minetest.get_node(above).name == "air" then
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 16:08:40 +02:00
if not minetest.is_creative_enabled(placer:get_player_name()) then
-- Add wear (as if digging a shovely node)
local toolname = itemstack:get_name()
local wear = mcl_autogroup.get_wear(toolname, "shovely")
if wear then
itemstack:add_wear(wear)
end
2017-02-06 19:25:15 +01:00
end
minetest.sound_play({name="default_grass_footstep", gain=1}, {pos = above, max_hear_distance = 16}, true)
minetest.swap_node(pointed_thing.under, {name="mcl_core:grass_path"})
2017-02-06 19:25:15 +01:00
end
end
return itemstack
end
2017-11-23 00:20:49 +01:00
local carve_pumpkin
if minetest.get_modpath("mcl_farming") then
function carve_pumpkin(itemstack, placer, pointed_thing)
2017-11-23 00:20:49 +01: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 16:08:40 +02:00
if not minetest.is_creative_enabled(placer:get_player_name()) then
2017-11-23 00:20:49 +01:00
-- Add wear (as if digging a shearsy node)
local toolname = itemstack:get_name()
local wear = mcl_autogroup.get_wear(toolname, "shearsy")
if wear then
itemstack:add_wear(wear)
end
2017-11-23 00:20:49 +01:00
end
2021-04-16 13:35:03 +02:00
minetest.sound_play({name="default_grass_footstep", gain=1}, {pos = pointed_thing.above}, true)
2017-11-23 00:20:49 +01:00
local dir = vector.subtract(pointed_thing.under, pointed_thing.above)
local param2 = minetest.dir_to_facedir(dir)
minetest.set_node(pointed_thing.under, {name="mcl_farming:pumpkin_face", param2 = param2})
2017-11-23 00:20:49 +01:00
minetest.add_item(pointed_thing.above, "mcl_farming:pumpkin_seeds 4")
end
return itemstack
end
end
2015-06-29 19:55:56 +02:00
-- Shovels
minetest.register_tool("mcl_tools:shovel_wood", {
description = S("Wooden Shovel"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = shovel_longdesc,
_doc_items_usagehelp = shovel_use,
_doc_items_hidden = false,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_woodshovel.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { tool=1, shovel=1, dig_speed_class=2, enchantability=15 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-17 00:37:15 +01:00
full_punch_interval = 1,
2017-02-24 17:01:56 +01:00
max_drop_level=1,
2015-06-29 19:55:56 +02:00
damage_groups = {fleshy=2},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 30,
2015-06-29 19:55:56 +02:00
},
2017-02-06 19:25:15 +01:00
on_place = make_grass_path,
2017-02-19 19:59:18 +01:00
sound = { breaks = "default_tool_breaks" },
_repair_material = "group:wood",
_mcl_toollike_wield = true,
_mcl_diggroups = {
shovely = { speed = 2, level = 2, uses = 60 }
},
2015-06-29 19:55:56 +02:00
})
minetest.register_tool("mcl_tools:shovel_stone", {
description = S("Stone Shovel"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = shovel_longdesc,
_doc_items_usagehelp = shovel_use,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_stoneshovel.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { tool=1, shovel=1, dig_speed_class=3, enchantability=5 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-17 00:37:15 +01:00
full_punch_interval = 1,
2017-02-24 17:01:56 +01:00
max_drop_level=3,
2017-01-17 00:37:15 +01:00
damage_groups = {fleshy=3},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 66,
2015-06-29 19:55:56 +02:00
},
2017-02-06 19:25:15 +01:00
on_place = make_grass_path,
2017-02-19 19:59:18 +01:00
sound = { breaks = "default_tool_breaks" },
_repair_material = "group:cobble",
_mcl_toollike_wield = true,
_mcl_diggroups = {
shovely = { speed = 4, level = 3, uses = 132 }
},
2015-06-29 19:55:56 +02:00
})
minetest.register_tool("mcl_tools:shovel_iron", {
description = S("Iron Shovel"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = shovel_longdesc,
_doc_items_usagehelp = shovel_use,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_steelshovel.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { tool=1, shovel=1, dig_speed_class=4, enchantability=14 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-17 00:37:15 +01:00
full_punch_interval = 1,
2017-02-24 17:01:56 +01:00
max_drop_level=4,
2017-01-17 00:37:15 +01:00
damage_groups = {fleshy=4},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 126,
2015-06-29 19:55:56 +02:00
},
2017-02-06 19:25:15 +01:00
on_place = make_grass_path,
2017-02-19 19:59:18 +01:00
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:iron_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
shovely = { speed = 6, level = 4, uses = 251 }
},
2015-06-29 19:55:56 +02:00
})
minetest.register_tool("mcl_tools:shovel_gold", {
description = S("Golden Shovel"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = shovel_longdesc,
_doc_items_usagehelp = shovel_use,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_goldshovel.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
groups = { tool=1, shovel=1, dig_speed_class=6, enchantability=22 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-17 00:37:15 +01:00
full_punch_interval = 1,
2017-02-24 17:01:56 +01:00
max_drop_level=2,
2015-06-29 19:55:56 +02:00
damage_groups = {fleshy=2},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 17,
2015-06-29 19:55:56 +02:00
},
2017-02-06 19:25:15 +01:00
on_place = make_grass_path,
2017-02-19 19:59:18 +01:00
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:gold_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
shovely = { speed = 12, level = 2, uses = 33 }
},
2015-06-29 19:55:56 +02:00
})
minetest.register_tool("mcl_tools:shovel_diamond", {
description = S("Diamond Shovel"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = shovel_longdesc,
_doc_items_usagehelp = shovel_use,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_diamondshovel.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { tool=1, shovel=1, dig_speed_class=5, enchantability=10 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-17 00:37:15 +01:00
full_punch_interval = 1,
2017-02-24 17:01:56 +01:00
max_drop_level=5,
2017-01-17 00:37:15 +01:00
damage_groups = {fleshy=5},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 781,
2015-06-29 19:55:56 +02:00
},
2017-02-06 19:25:15 +01:00
on_place = make_grass_path,
2017-02-19 19:59:18 +01:00
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:diamond",
_mcl_toollike_wield = true,
_mcl_diggroups = {
shovely = { speed = 8, level = 5, uses = 1562 }
},
_mcl_upgradable = true,
_mcl_upgrade_item = "mcl_tools:shovel_netherite"
2015-06-29 19:55:56 +02:00
})
2021-04-14 15:07:25 +02: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,
groups = { tool=1, shovel=1, dig_speed_class=6, enchantability=10, fire_immune=1 },
2021-04-14 15:07:25 +02: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 = {
shovely = { speed = 9, level = 6, uses = 2031 }
2021-04-14 15:07:25 +02:00
},
})
2015-06-29 19:55:56 +02:00
-- Axes
local function make_stripped_trunk(itemstack, placer, pointed_thing)
2021-04-18 20:28:39 +02:00
if pointed_thing.type ~= "node" then return end
local node = minetest.get_node(pointed_thing.under)
2023-03-24 23:51:44 +01:00
local node_name = minetest.get_node(pointed_thing.under).name
local noddef = minetest.registered_nodes[node_name]
if not noddef then
minetest.log("warning", "Trying to right click with an axe the unregistered node: " .. tostring(node_name))
return
end
2021-04-18 20:28:39 +02:00
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 19:34:45 +02:00
if noddef._mcl_stripped_variant == nil then
2021-04-19 18:53:48 +02:00
return itemstack
else
2021-06-15 19:34:45 +02:00
minetest.swap_node(pointed_thing.under, {name=noddef._mcl_stripped_variant, param2=node.param2})
if minetest.get_item_group(node_name, "waxed") ~= 0 then
awards.unlock(placer:get_player_name(), "mcl:wax_off")
end
2021-04-19 18:53:48 +02: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")
if wear then
itemstack:add_wear(wear)
end
2021-04-19 18:53:48 +02:00
end
end
2021-04-18 20:28:39 +02:00
return itemstack
end
minetest.register_tool("mcl_tools:axe_wood", {
description = S("Wooden Axe"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = axe_longdesc,
_doc_items_hidden = false,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_woodaxe.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { tool=1, axe=1, dig_speed_class=2, enchantability=15 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-17 00:37:15 +01:00
full_punch_interval = 1.25,
2017-02-24 17:01:56 +01:00
max_drop_level=1,
2017-01-17 00:37:15 +01:00
damage_groups = {fleshy=7},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 30,
2015-06-29 19:55:56 +02:00
},
on_place = make_stripped_trunk,
2017-02-19 19:59:18 +01:00
sound = { breaks = "default_tool_breaks" },
_repair_material = "group:wood",
_mcl_toollike_wield = true,
_mcl_diggroups = {
axey = { speed = 2, level = 1, uses = 60 }
},
2015-06-29 19:55:56 +02:00
})
minetest.register_tool("mcl_tools:axe_stone", {
description = S("Stone Axe"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = axe_longdesc,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_stoneaxe.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { tool=1, axe=1, dig_speed_class=3, enchantability=5 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-17 00:37:15 +01:00
full_punch_interval = 1.25,
2017-02-24 17:01:56 +01:00
max_drop_level=3,
2017-01-17 00:37:15 +01:00
damage_groups = {fleshy=9},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 66,
2015-06-29 19:55:56 +02:00
},
on_place = make_stripped_trunk,
2017-02-19 19:59:18 +01:00
sound = { breaks = "default_tool_breaks" },
_repair_material = "group:cobble",
_mcl_toollike_wield = true,
_mcl_diggroups = {
axey = { speed = 4, level = 3, uses = 132 }
},
2015-06-29 19:55:56 +02:00
})
minetest.register_tool("mcl_tools:axe_iron", {
description = S("Iron Axe"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = axe_longdesc,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_steelaxe.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { tool=1, axe=1, dig_speed_class=4, enchantability=14 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-17 00:37:15 +01:00
-- 1/0.9
full_punch_interval = 1.11111111,
2017-02-24 17:01:56 +01:00
max_drop_level=4,
2017-01-17 00:37:15 +01:00
damage_groups = {fleshy=9},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 126,
2015-06-29 19:55:56 +02:00
},
on_place = make_stripped_trunk,
2017-02-19 19:59:18 +01:00
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:iron_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
axey = { speed = 6, level = 4, uses = 251 }
},
2015-06-29 19:55:56 +02:00
})
minetest.register_tool("mcl_tools:axe_gold", {
description = S("Golden Axe"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = axe_longdesc,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_goldaxe.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { tool=1, axe=1, dig_speed_class=6, enchantability=22 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-17 00:37:15 +01:00
full_punch_interval = 1.0,
2017-02-24 17:01:56 +01:00
max_drop_level=2,
2017-01-17 00:37:15 +01:00
damage_groups = {fleshy=7},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 17,
2015-06-29 19:55:56 +02:00
},
on_place = make_stripped_trunk,
2017-02-19 19:59:18 +01:00
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:gold_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
axey = { speed = 12, level = 2, uses = 33 }
},
2015-06-29 19:55:56 +02:00
})
minetest.register_tool("mcl_tools:axe_diamond", {
description = S("Diamond Axe"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = axe_longdesc,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_diamondaxe.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { tool=1, axe=1, dig_speed_class=5, enchantability=10 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-17 00:37:15 +01:00
full_punch_interval = 1.0,
2017-02-24 17:01:56 +01:00
max_drop_level=5,
2017-01-17 00:37:15 +01:00
damage_groups = {fleshy=9},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 781,
2015-06-29 19:55:56 +02:00
},
on_place = make_stripped_trunk,
2017-02-19 19:59:18 +01:00
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:diamond",
_mcl_toollike_wield = true,
_mcl_diggroups = {
axey = { speed = 8, level = 5, uses = 1562 }
},
_mcl_upgradable = true,
_mcl_upgrade_item = "mcl_tools:axe_netherite"
2015-06-29 19:55:56 +02:00
})
2021-04-14 15:07:25 +02: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,
groups = { tool=1, axe=1, dig_speed_class=6, enchantability=10, fire_immune=1 },
2021-04-14 15:07:25 +02: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 = {
axey = { speed = 9, level = 6, uses = 2031 }
2021-04-14 15:07:25 +02:00
},
})
2015-06-29 19:55:56 +02:00
-- Swords
minetest.register_tool("mcl_tools:sword_wood", {
description = S("Wooden Sword"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = sword_longdesc,
_doc_items_hidden = false,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_woodsword.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { weapon=1, sword=1, dig_speed_class=2, enchantability=15 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-04 12:03:04 +01:00
full_punch_interval = 0.625,
2017-02-24 17:01:56 +01:00
max_drop_level=1,
2017-01-04 12:03:04 +01:00
damage_groups = {fleshy=4},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 60,
2017-02-19 19:59:18 +01:00
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "group:wood",
_mcl_toollike_wield = true,
_mcl_diggroups = {
swordy = { speed = 2, level = 1, uses = 60 },
swordy_cobweb = { speed = 2, level = 1, uses = 60 }
},
2015-06-29 19:55:56 +02:00
})
minetest.register_tool("mcl_tools:sword_stone", {
description = S("Stone Sword"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = sword_longdesc,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_stonesword.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { weapon=1, sword=1, dig_speed_class=3, enchantability=5 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-04 12:03:04 +01:00
full_punch_interval = 0.625,
2017-02-24 17:01:56 +01:00
max_drop_level=3,
2017-01-04 12:03:04 +01:00
damage_groups = {fleshy=5},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 132,
2017-02-19 19:59:18 +01:00
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "group:cobble",
_mcl_toollike_wield = true,
_mcl_diggroups = {
swordy = { speed = 4, level = 3, uses = 132 },
swordy_cobweb = { speed = 4, level = 3, uses = 132 }
},
2015-06-29 19:55:56 +02:00
})
minetest.register_tool("mcl_tools:sword_iron", {
description = S("Iron Sword"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = sword_longdesc,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_steelsword.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { weapon=1, sword=1, dig_speed_class=4, enchantability=14 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-04 12:03:04 +01:00
full_punch_interval = 0.625,
2017-02-24 17:01:56 +01:00
max_drop_level=4,
2015-06-29 19:55:56 +02:00
damage_groups = {fleshy=6},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 251,
2017-02-19 19:59:18 +01:00
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:iron_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
swordy = { speed = 6, level = 4, uses = 251 },
swordy_cobweb = { speed = 6, level = 4, uses = 251 }
},
2015-06-29 19:55:56 +02:00
})
minetest.register_tool("mcl_tools:sword_gold", {
description = S("Golden Sword"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = sword_longdesc,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_goldsword.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { weapon=1, sword=1, dig_speed_class=6, enchantability=22 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-04 12:03:04 +01:00
full_punch_interval = 0.625,
2017-02-24 17:01:56 +01:00
max_drop_level=2,
2017-01-17 00:37:15 +01:00
damage_groups = {fleshy=4},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 33,
2017-02-19 19:59:18 +01:00
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:gold_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
swordy = { speed = 12, level = 2, uses = 33 },
swordy_cobweb = { speed = 12, level = 2, uses = 33 }
},
2015-06-29 19:55:56 +02:00
})
minetest.register_tool("mcl_tools:sword_diamond", {
description = S("Diamond Sword"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = sword_longdesc,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_diamondsword.png",
2020-04-08 04:07:16 +02:00
wield_scale = wield_scale,
2020-11-25 12:47:27 +01:00
groups = { weapon=1, sword=1, dig_speed_class=5, enchantability=10 },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
2017-01-04 12:03:04 +01:00
full_punch_interval = 0.625,
2017-02-24 17:01:56 +01:00
max_drop_level=5,
2017-01-04 12:03:04 +01:00
damage_groups = {fleshy=7},
2020-02-19 15:53:51 +01:00
punch_attack_uses = 1562,
2017-02-19 19:59:18 +01:00
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:diamond",
_mcl_toollike_wield = true,
_mcl_diggroups = {
swordy = { speed = 8, level = 5, uses = 1562 },
swordy_cobweb = { speed = 8, level = 5, uses = 1562 }
},
_mcl_upgradable = true,
_mcl_upgrade_item = "mcl_tools:sword_netherite"
2015-06-29 19:55:56 +02:00
})
2021-04-14 15:07:25 +02: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,
groups = { weapon=1, sword=1, dig_speed_class=5, enchantability=10, fire_immune=1 },
2021-04-14 15:07:25 +02:00
tool_capabilities = {
full_punch_interval = 0.625,
max_drop_level=5,
damage_groups = {fleshy=9},
punch_attack_uses = 2031,
2021-04-14 15:07:25 +02:00
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_nether:netherite_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
swordy = { speed = 8, level = 5, uses = 2031 },
swordy_cobweb = { speed = 8, level = 5, uses = 2031 }
2021-04-14 15:07:25 +02:00
},
})
2015-06-29 19:55:56 +02:00
--Shears
minetest.register_tool("mcl_tools:shears", {
description = S("Shears"),
2017-03-12 01:55:18 +01:00
_doc_items_longdesc = shears_longdesc,
_doc_items_usagehelp = shears_use,
2015-06-29 19:55:56 +02:00
inventory_image = "default_tool_shears.png",
wield_image = "default_tool_shears.png",
stack_max = 1,
groups = { tool=1, shears=1, dig_speed_class=4, enchantability=-1, },
2015-06-29 19:55:56 +02:00
tool_capabilities = {
full_punch_interval = 0.5,
max_drop_level=1,
2017-02-19 19:59:18 +01:00
},
2017-11-23 00:20:49 +01:00
on_place = carve_pumpkin,
2017-02-19 19:59:18 +01:00
sound = { breaks = "default_tool_breaks" },
_mcl_toollike_wield = true,
_mcl_diggroups = {
shearsy = { speed = 1.5, level = 1, uses = 238 },
shearsy_wool = { speed = 5, level = 1, uses = 238 },
shearsy_cobweb = { speed = 15, level = 1, uses = 238 }
},
2017-01-04 05:29:55 +01:00
})
2017-01-04 11:26:35 +01:00
2017-01-16 23:11:04 +01:00
dofile(modpath.."/crafting.lua")
dofile(modpath.."/aliases.lua")