diff options
| -rw-r--r-- | chest.lua | 76 | ||||
| -rw-r--r-- | init.lua | 2 | 
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 @@ -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") | 
