summaryrefslogtreecommitdiff
path: root/deployer.lua
diff options
context:
space:
mode:
authorNovatux <nathanael.courant@laposte.net>2014-05-18 14:30:58 +0200
committerNovatux <nathanael.courant@laposte.net>2014-05-18 14:30:58 +0200
commit3f72bbf3d0788fbe4f0af7348a9e41f575fe81e3 (patch)
treec253285f4c8a985e619379c2dc8d3a7b1cf12e24 /deployer.lua
parentee4721614062742fea4e8ec33e85b7b3bda0f0e4 (diff)
downloadpipeworks-3f72bbf3d0788fbe4f0af7348a9e41f575fe81e3.tar
pipeworks-3f72bbf3d0788fbe4f0af7348a9e41f575fe81e3.tar.gz
pipeworks-3f72bbf3d0788fbe4f0af7348a9e41f575fe81e3.tar.bz2
pipeworks-3f72bbf3d0788fbe4f0af7348a9e41f575fe81e3.tar.xz
pipeworks-3f72bbf3d0788fbe4f0af7348a9e41f575fe81e3.zip
Much better node breaker, own contents of deployer too (but still allow IO with tubes)
Diffstat (limited to 'deployer.lua')
-rw-r--r--deployer.lua55
1 files changed, 50 insertions, 5 deletions
diff --git a/deployer.lua b/deployer.lua
index f65742e..b1b20a0 100644
--- a/deployer.lua
+++ b/deployer.lua
@@ -92,12 +92,15 @@ local function deployer_on(pos, node)
set_detach = delay(),
set_bone_position = delay(),
}
- local stack2 = minetest.item_place(stack, placer, {type="node", under=pos_under, above=pos_above})
- if minetest.setting_getbool("creative_mode") and not minetest.get_modpath("unified_inventory") then --infinite stacks ahoy!
- stack2:take_item()
+ local pointed_thing = {type="node", under=pos_under, above=pos_above}
+ local stack2
+ if minetest.registered_items[stack:get_name()] and minetest.registered_items[stack:get_name()] then
+ stack2 = minetest.registered_items[stack:get_name()].on_place(stack, placer, pointed_thing)
end
- invlist[i] = stack2
- inv:set_list("main", invlist)
+ --if minetest.setting_getbool("creative_mode") and not minetest.get_modpath("unified_inventory") then --infinite stacks ahoy!
+ -- stack2:take_item()
+ --end
+ inv:set_stack("main", i, stack2)
return
end
end
@@ -170,6 +173,27 @@ minetest.register_node("pipeworks:deployer_off", {
minetest.get_meta(pos):set_string("owner", placer:get_player_name())
end,
after_dig_node = pipeworks.scan_for_tube_objects,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ local meta = minetest.get_meta(pos)
+ if player:get_player_name() ~= meta:get_string("owner") and meta:get_string("owner") ~= "" then
+ return 0
+ end
+ return count
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if player:get_player_name() ~= meta:get_string("owner") and meta:get_string("owner") ~= "" then
+ return 0
+ end
+ return stack:get_count()
+ end,
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if player:get_player_name() ~= meta:get_string("owner") and meta:get_string("owner") ~= "" then
+ return 0
+ end
+ return stack:get_count()
+ end
})
minetest.register_node("pipeworks:deployer_on", {
@@ -234,4 +258,25 @@ minetest.register_node("pipeworks:deployer_on", {
minetest.get_meta(pos):set_string("owner", placer:get_player_name())
end,
after_dig_node = pipeworks.scan_for_tube_objects,
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ local meta = minetest.get_meta(pos)
+ if player:get_player_name() ~= meta:get_string("owner") and meta:get_string("owner") ~= "" then
+ return 0
+ end
+ return count
+ end,
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if player:get_player_name() ~= meta:get_string("owner") and meta:get_string("owner") ~= "" then
+ return 0
+ end
+ return stack:get_count()
+ end,
+ allow_metadata_inventory_take = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if player:get_player_name() ~= meta:get_string("owner") and meta:get_string("owner") ~= "" then
+ return 0
+ end
+ return stack:get_count()
+ end
})