summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim <idn.inbox@yahoo.com>2013-10-07 17:04:31 +0200
committerTim <idn.inbox@yahoo.com>2013-10-07 17:05:54 +0200
commit7ad4c806fed4e1068d9966ecd4ea956f406f804e (patch)
tree4308cc73cd7ee7136af908deb5dbfe0af7d2e906
parent535928dee838cf5e79703bef3721cd1021258e7b (diff)
add a shared chest, that instead of being locked to a certain user, can be accessed by the current owner of a property as well as the users being shared access with it
-rw-r--r--chest.lua76
-rw-r--r--init.lua2
2 files changed, 78 insertions, 0 deletions
diff --git a/chest.lua b/chest.lua
new file mode 100644
index 0000000..00cd616
--- /dev/null
+++ b/chest.lua
@@ -0,0 +1,76 @@
+-- add a special chest that is shared among the land-possesors
+
+minetest.register_node("landrush:shared_chest", {
+ description = "Land Rush Shared Chest",
+ tiles = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png", "default_chest_side.png", "default_chest_side.png", "default_chest_lock.png"},
+ groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2},
+ legacy_facedir_simple = true,
+ sounds = default.node_sound_wood_defaults(),
+
+ can_dig = function(pos,player)
+ local meta = minetest.get_meta(pos);
+ local inv = meta:get_inventory()
+ return inv:is_empty("main")
+ end,
+
+ on_construct = function(pos)
+ local meta = minetest.get_meta(pos)
+ meta:set_string("formspec",default.chest_formspec)
+ meta:set_string("infotext", "Shared Chest")
+ local inv = meta:get_inventory()
+ inv:set_size("main", 8*4)
+ end,
+
+ allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ local meta = minetest.get_meta(pos)
+ if not landrush.can_interact(player:get_player_name(),pos) then
+ minetest.log("action", player:get_player_name() .. " tried to access a shared chest at ".. minetest.pos_to_string(pos))
+ return 0
+ end
+ return count
+ end,
+
+ allow_metadata_inventory_put = function(pos, listname, index, stack, player)
+ local meta = minetest.get_meta(pos)
+ if not landrush.can_interact(player:get_player_name(),pos) then
+ minetest.log("action", player:get_player_name() .. " tried to access a shared chest at ".. minetest.pos_to_string(pos))
+ 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 not landrush.can_interact(player:get_player_name(),pos) then
+ minetest.log("action", player:get_player_name()..
+ " tried to access a shared chest at "..
+ minetest.pos_to_string(pos))
+ return 0
+ end
+ return stack:get_count()
+ end,
+
+ on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
+ minetest.log("action", player:get_player_name()..
+ " moves stuff in shared chest at "..minetest.pos_to_string(pos))
+ end,
+
+ on_metadata_inventory_put = function(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " puts stuff into shared chest at "..minetest.pos_to_string(pos))
+ end,
+
+ on_metadata_inventory_take = function(pos, listname, index, stack, player)
+ minetest.log("action", player:get_player_name()..
+ " takes stuff from shared chest at "..minetest.pos_to_string(pos))
+ end
+})
+
+minetest.register_craft({
+ output = 'landrush:shared_chest',
+ recipe = {
+ {'default:wood','default:wood','default:wood'},
+ {'default:wood','landrush:landclaim','default:wood'},
+ {'default:wood','default:wood','default:wood'}
+ }
+}) \ No newline at end of file
diff --git a/init.lua b/init.lua
index 75edaa7..2aed384 100644
--- a/init.lua
+++ b/init.lua
@@ -524,6 +524,8 @@ if ( minetest.get_modpath("money2") ) then
dofile(path.."/landsale.lua")
end
+dofile(path.."/chest.lua")
+
minetest.after(0, function ()
dofile(path.."/default.lua")