c3d0aed881
Makes mining with stone tools less crappy with sound turned off.
44 lines
1.2 KiB
Lua
44 lines
1.2 KiB
Lua
-- LUALOCALS < ---------------------------------------------------------
|
|
local ItemStack, nodecore, vector
|
|
= ItemStack, nodecore, vector
|
|
-- LUALOCALS > ---------------------------------------------------------
|
|
|
|
local function breakfx(who, def)
|
|
if def.sound and def.sound.breaks then
|
|
nodecore.sound_play(def.sound.breaks,
|
|
{object = who, gain = 0.5})
|
|
end
|
|
local pos = who:get_pos()
|
|
if pos then
|
|
pos.y = pos.y + who:get_properties().eye_height - 0.1
|
|
local look = vector.multiply(who:get_look_dir(), 2)
|
|
for _ = 1, 5 do
|
|
nodecore.digparticles(def, {
|
|
time = 0.05,
|
|
amount = 10,
|
|
minpos = pos,
|
|
maxpos = pos,
|
|
minvel = vector.add(look, {x = -2, y = -2, z = -2}),
|
|
maxvel = vector.add(look, {x = 2, y = 2, z = 2}),
|
|
minacc = {x = 0, y = -8, z = 0},
|
|
maxacc = {x = 0, y = -8, z = 0},
|
|
minexptime = 0.25,
|
|
maxexptime = 1
|
|
})
|
|
end
|
|
end
|
|
end
|
|
|
|
nodecore.register_on_register_item(function(_, def)
|
|
if def.tool_wears_to or def.type == "tool" then
|
|
def.after_use = def.after_use or function(what, who, _, dp)
|
|
what:add_wear(dp.wear)
|
|
if what:get_count() == 0 then
|
|
breakfx(who, def)
|
|
return ItemStack(def.tool_wears_to or "")
|
|
end
|
|
return what
|
|
end
|
|
end
|
|
end)
|