mirror of
https://github.com/minetest-mods/technic.git
synced 2024-12-25 18:30:29 +01:00
Fix chainsaw placing drops and playing sounds at tops of trees
This commit is contained in:
parent
78646b2d89
commit
16302cffce
@ -150,8 +150,10 @@ end
|
|||||||
--- Iterator over positions to try to saw around a sawed node.
|
--- Iterator over positions to try to saw around a sawed node.
|
||||||
-- This returns nodes in a 3x2x3 area. It does not return lower (y) positions
|
-- This returns nodes in a 3x2x3 area. It does not return lower (y) positions
|
||||||
-- to prevent the chainsaw from cutting down nodes below the cutting position.
|
-- to prevent the chainsaw from cutting down nodes below the cutting position.
|
||||||
-- @param pos Reference to sawing position. Note that this is overridden.
|
-- @param pos Sawing position.
|
||||||
local function iterSawTries(pos)
|
local function iterSawTries(pos)
|
||||||
|
-- Copy position to prevent mangling it
|
||||||
|
local pos = vector.new(pos)
|
||||||
-- Shift the position down on the x and z axes
|
-- Shift the position down on the x and z axes
|
||||||
pos.x, pos.z = pos.x - 1, pos.z - 1
|
pos.x, pos.z = pos.x - 1, pos.z - 1
|
||||||
-- Save our starting position for reseting it later
|
-- Save our starting position for reseting it later
|
||||||
@ -199,12 +201,12 @@ local function recursive_dig(pos, remaining_charge)
|
|||||||
remaining_charge = remaining_charge - chainsaw_charge_per_node
|
remaining_charge = remaining_charge - chainsaw_charge_per_node
|
||||||
|
|
||||||
-- Check surroundings and run recursively if any charge left
|
-- Check surroundings and run recursively if any charge left
|
||||||
for pos in iterSawTries(pos) do
|
for npos in iterSawTries(pos) do
|
||||||
if remaining_charge < chainsaw_charge_per_node then
|
if remaining_charge < chainsaw_charge_per_node then
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
if timber_nodenames[minetest.get_node(pos).name] then
|
if timber_nodenames[minetest.get_node(npos).name] then
|
||||||
remaining_charge = recursive_dig(pos, remaining_charge)
|
remaining_charge = recursive_dig(npos, remaining_charge)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return remaining_charge
|
return remaining_charge
|
||||||
|
Loading…
Reference in New Issue
Block a user