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+collection.collection_height,z=pos.z}, collection.magnet_radius)) do
12 local pos2 = object:getpos()
13 if (collection.allow_lower == false and vector.subtract(pos2,pos).y >= 0) or collection.allow_lower == true then
15 if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then
17 if inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then
19 if object:get_luaentity().collectable == true and object:get_luaentity().collected == false then
20 minetest.sound_play("pickup", {
23 pitch = math.random(60,100)/100
25 inv:add_item("main", ItemStack(object:get_luaentity().itemstring))
26 object:get_luaentity().collector = player:get_player_name()
27 object:get_luaentity().collected = true
28 -- print("Set flag at item: "..dump(object:getpos()))
29 --object:moveto({x=pos.x,y=pos.y+eye_height,z=pos.z,continuous=true})