hammermod/init.lua
2020-12-31 08:39:03 -08:00

156 lines
4.8 KiB
Lua

minetest.register_tool("hammermod:steel_hammer", {
description = "Steel Hammer",
short_description = "Steel Hammer",
groups={hard=1, metal=1, tool=1, pickaxe=1, dig_speed_class=4, enchantability=14 },
inventory_image="steel_hammer.png",
range=8,
liquids_pointable = false,
light_source = 3,
tool_capabilities = {
full_punch_interval = 0.83333333,
max_drop_level = 4,
groupcaps = {
choppy = {times = {[1] = 1.00, [2] = 1.40, [3] = 1.00},uses = 111, maxlevel = 2},
cracky={times = {[1] = 1.00, [2] = 1.40, [3] = 1.00},uses = 111, maxlevel = 2},
crumbly = {times = {[1] = 1.00, [2] = 1.40, [3] = 1.00},uses = 111, maxlevel = 2},
snappy = {times = {[1] = 1.00, [2] = 1.40, [3] = 1.00},uses = 111, maxlevel = 2},
oddly_breakable_by_hand = {times = {[1] = 1.00, [2] = 1.40, [3] = 1.00},uses = 111, maxlevel = 2},
pickaxey = {times = {[1] = 1.00, [2] = 1.40, [3] = 1.00},uses = 111, maxlevel = 2},
axey={times = {[1] = 1.00, [2] = 1.40, [3] = 1.00},uses = 111, maxlevel = 2},
shovely={times = {[1] = 1.00, [2] = 1.40, [3] = 1.00},uses = 111, maxlevel = 2},
pickaxey_dig_iron = {times={[1] = 1.00, [2] = 1.40, [3] = 1.00},uses = 111, maxlevel=2}
},
damage_groups = {fleshy=1},
},
})
local ingredients
if minetest.get_modpath("mcl_core") then
ingredients = {
stick = "mcl_core:stick",
ironBlock = "mcl_core:ironblock",
ironIngot = "mcl_core:iron_ingot",
}
elseif minetest.get_modpath("default") then
ingredients = {
stick = "default:stick",
ironBlock = "default:steelblock",
ironIngot = "default:steel_ingot",
}
end
if ingredients then
minetest.register_craft({
output = "hammermod:steel_hammer",
recipe = {
{ingredients.ironIngot, ingredients.ironBlock, ingredients.ironIngot},
{"", ingredients.stick, ""},
{"", ingredients.stick, ""},
},
})
end
local steelHammerDigs = {}
minetest.register_on_dignode(
function(pos, oldnode, digger)
if digger == nil or digger:get_wielded_item():get_name() ~= "hammermod:steel_hammer" then
return
end
local playerName = digger:get_player_name()
if(playerName == "" or steelHammerDigs[playerName]) then
return
end
steelHammerDigs[playerName] = true
local posDiff = pos.y - digger:get_pos().y
if(posDiff < 2 and posDiff > 1) then
if
digger:get_look_horizontal() > math.pi / 4 and digger:get_look_horizontal() < 3 * math.pi / 4 or
digger:get_look_horizontal() > 5 * math.pi / 4 and digger:get_look_horizontal() < 7 * math.pi / 4
then
pos.y = pos.y -1
pos.z = pos.z -1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.y = pos.y +1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.y = pos.y +1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.z = pos.z +1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.z = pos.z +1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.y = pos.y -1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.y = pos.y -1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.z = pos.z -1
minetest.node_dig(pos, minetest.get_node(pos), digger)
else
pos.y = pos.y -1
pos.x = pos.x -1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.y = pos.y +1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.y = pos.y +1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.x = pos.x +1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.x = pos.x +1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.y = pos.y -1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.y = pos.y -1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.x = pos.x -1
minetest.node_dig(pos, minetest.get_node(pos), digger)
end
else
pos.x = pos.x -1
pos.z = pos.z -1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.x = pos.x +1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.x = pos.x +1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.z = pos.z +1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.z = pos.z +1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.x = pos.x -1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.x = pos.x -1
minetest.node_dig(pos, minetest.get_node(pos), digger)
pos.z = pos.z -1
minetest.node_dig(pos, minetest.get_node(pos), digger)
end
steelHammerDigs[playerName] = nil
end
)