1 --The item collection magnet
3 minetest.register_globalstep(function(dtime)
5 for _,player in ipairs(minetest.get_connected_players()) do
6 --don't magnetize to dead players
7 if player:get_hp() > 0 then
8 local pos = player:getpos()
9 local inv = player:get_inventory()
11 for _,object in ipairs(minetest.get_objects_inside_radius({x=pos.x,y=pos.y+0.5,z=pos.z}, 2)) do
12 if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then
13 local pos2 = object:getpos()
14 local diff = vector.subtract(pos2,pos).y
15 if diff >= 0 and inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then
16 if object:get_luaentity().collectable == true and object:get_luaentity().collected == false then
17 minetest.sound_play("pickup", {
20 pitch = math.random(60,100)/100
22 inv:add_item("main", ItemStack(object:get_luaentity().itemstring))
23 object:get_luaentity().collector = player:get_player_name()
24 object:get_luaentity().collected = true
25 -- print("Set flag at item: "..dump(object:getpos()))
26 --object:moveto({x=pos.x,y=pos.y+eye_height,z=pos.z,continuous=true})