]> git.lizzy.rs Git - Crafter.git/blob - mods/itemhandling/magnet.lua
Improve item magnet
[Crafter.git] / mods / itemhandling / magnet.lua
1 --The item collection magnet
2 --Item collection
3 minetest.register_globalstep(function(dtime)
4       --collection
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()
10                   --radial detection
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
14                   
15                               if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then
16                         
17                                     if inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then
18                         
19                                           if object:get_luaentity().collectable == true and object:get_luaentity().collected == false then
20                                                 minetest.sound_play("pickup", {
21                                                       to_player = player,
22                                                       gain = 0.4,
23                                                       pitch = math.random(60,100)/100
24                                                 })
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})
30                                                 
31                                           end
32                                     end
33                               end
34                         end
35                   end
36             end
37       end
38 end)