diff --git a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua index 0cd0608c4..1fa4df137 100644 --- a/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_dispensers/init.lua @@ -260,9 +260,22 @@ local dispenserdef = { end else -- Drop item otherwise - minetest.add_item(droppos, dropitem) - stack:take_item() - inv:set_stack("main", stack_id, stack) + -- Drop item normally + local dropitemobj = minetest.add_item(droppos, dropitem) + stack:take_item() + inv:set_stack("main", stack_id, stack) + + -- Set item velocity (overrides the default random drop direction) + local shoot_force = 1.3 + + local newv = minetest.facedir_to_dir(node.param2) + newv = { + x = newv.x * shoot_force, + y = newv.y * shoot_force, + z = newv.z * shoot_force + } + + dropitemobj.set_velocity(newv) end end diff --git a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua index abb351091..852231836 100644 --- a/mods/ITEMS/REDSTONE/mcl_droppers/init.lua +++ b/mods/ITEMS/REDSTONE/mcl_droppers/init.lua @@ -134,9 +134,21 @@ local dropperdef = { -- No container? if not dropped and not dropnodedef.groups.container then -- Drop item normally - minetest.add_item(droppos, dropitem) + local dropitemobj = minetest.add_item(droppos, dropitem) stack:take_item() inv:set_stack("main", stack_id, stack) + + -- Set item velocity (overrides the default random drop direction) + local shoot_force = 1.3 + + local newv = minetest.facedir_to_dir(node.param2) + newv = { + x = newv.x * shoot_force, + y = newv.y * shoot_force, + z = newv.z * shoot_force + } + + dropitemobj.set_velocity(newv) end end end,