mirror of
				https://github.com/minetest-mods/more_chests.git
				synced 2025-11-04 01:55:24 +01:00 
			
		
		
		
	Merge pull request #4 from HybridDog/master
fix dropbox cheat Thanx @HybridDog !
This commit is contained in:
		
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					## Generic ignorable patterns and files
 | 
				
			||||||
 | 
					*~
 | 
				
			||||||
 | 
					.*.swp
 | 
				
			||||||
 | 
					debug.txt
 | 
				
			||||||
							
								
								
									
										31
									
								
								dropbox.lua
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								dropbox.lua
									
									
									
									
									
								
							@@ -14,13 +14,13 @@ minetest.register_node("more_chests:dropbox", {
 | 
				
			|||||||
	legacy_facedir_simple = true,
 | 
						legacy_facedir_simple = true,
 | 
				
			||||||
	sounds = default.node_sound_wood_defaults(),
 | 
						sounds = default.node_sound_wood_defaults(),
 | 
				
			||||||
	after_place_node = function(pos, placer)
 | 
						after_place_node = function(pos, placer)
 | 
				
			||||||
		local meta = minetest.env:get_meta(pos)
 | 
							local meta = minetest.get_meta(pos)
 | 
				
			||||||
		meta:set_string("owner", placer:get_player_name() or "")
 | 
							meta:set_string("owner", placer:get_player_name() or "")
 | 
				
			||||||
		meta:set_string("infotext", "Dropbox (owned by "..
 | 
							meta:set_string("infotext", "Dropbox (owned by "..
 | 
				
			||||||
				meta:get_string("owner")..")")
 | 
									meta:get_string("owner")..")")
 | 
				
			||||||
	end,
 | 
						end,
 | 
				
			||||||
	on_construct = function(pos)
 | 
						on_construct = function(pos)
 | 
				
			||||||
		local meta = minetest.env:get_meta(pos)
 | 
							local meta = minetest.get_meta(pos)
 | 
				
			||||||
		meta:set_string("formspec",
 | 
							meta:set_string("formspec",
 | 
				
			||||||
				"size[8,9]"..
 | 
									"size[8,9]"..
 | 
				
			||||||
				"list[current_name;main;0,0;8,4;]"..
 | 
									"list[current_name;main;0,0;8,4;]"..
 | 
				
			||||||
@@ -30,12 +30,12 @@ minetest.register_node("more_chests:dropbox", {
 | 
				
			|||||||
		inv:set_size("main", 8*4)
 | 
							inv:set_size("main", 8*4)
 | 
				
			||||||
	end,
 | 
						end,
 | 
				
			||||||
	can_dig = function(pos,player)
 | 
						can_dig = function(pos,player)
 | 
				
			||||||
		local meta = minetest.env:get_meta(pos);
 | 
							local meta = minetest.get_meta(pos);
 | 
				
			||||||
		local inv = meta:get_inventory()
 | 
							local inv = meta:get_inventory()
 | 
				
			||||||
		return inv:is_empty("main")
 | 
							return inv:is_empty("main")
 | 
				
			||||||
	end,
 | 
						end,
 | 
				
			||||||
    allow_metadata_inventory_take = function(pos, listname, index, stack, player)
 | 
						allow_metadata_inventory_take = function(pos, listname, index, stack, player)
 | 
				
			||||||
		local meta = minetest.env:get_meta(pos)
 | 
							local meta = minetest.get_meta(pos)
 | 
				
			||||||
		if not has_locked_chest_privilege(meta, player) then
 | 
							if not has_locked_chest_privilege(meta, player) then
 | 
				
			||||||
			minetest.log("action", player:get_player_name()..
 | 
								minetest.log("action", player:get_player_name()..
 | 
				
			||||||
					" tried to access a dropbox belonging to "..
 | 
										" tried to access a dropbox belonging to "..
 | 
				
			||||||
@@ -45,15 +45,32 @@ minetest.register_node("more_chests:dropbox", {
 | 
				
			|||||||
		end
 | 
							end
 | 
				
			||||||
		return stack:get_count()
 | 
							return stack:get_count()
 | 
				
			||||||
	end,
 | 
						end,
 | 
				
			||||||
 | 
						allow_metadata_inventory_put = function(pos, listname, index, stack, player)
 | 
				
			||||||
 | 
							local meta = minetest.get_meta(pos)
 | 
				
			||||||
 | 
							if has_locked_chest_privilege(meta, player) then
 | 
				
			||||||
 | 
								return stack:get_count()
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
							local target = meta:get_inventory():get_list(listname)[index]
 | 
				
			||||||
 | 
							local target_name = target:get_name()
 | 
				
			||||||
 | 
							local stack_count = stack:get_count()
 | 
				
			||||||
 | 
							if target_name == stack:get_name()
 | 
				
			||||||
 | 
							and target:get_count() < stack_count then
 | 
				
			||||||
 | 
								return stack_count
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
							if target_name ~= "" then
 | 
				
			||||||
 | 
								return 0
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
							return stack_count
 | 
				
			||||||
 | 
						end,
 | 
				
			||||||
	on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
 | 
						on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
 | 
				
			||||||
		minetest.log("action", player:get_player_name()..
 | 
							minetest.log("action", player:get_player_name()..
 | 
				
			||||||
				" moves stuff in dropbox at "..minetest.pos_to_string(pos))
 | 
									" moves stuff in dropbox at "..minetest.pos_to_string(pos))
 | 
				
			||||||
	end,
 | 
						end,
 | 
				
			||||||
    on_metadata_inventory_put = function(pos, listname, index, stack, player)
 | 
						on_metadata_inventory_put = function(pos, listname, index, stack, player)
 | 
				
			||||||
		minetest.log("action", player:get_player_name()..
 | 
							minetest.log("action", player:get_player_name()..
 | 
				
			||||||
				" moves stuff to dropbox at "..minetest.pos_to_string(pos))
 | 
									" moves stuff to dropbox at "..minetest.pos_to_string(pos))
 | 
				
			||||||
	end,
 | 
						end,
 | 
				
			||||||
    on_metadata_inventory_take = function(pos, listname, index, stack, player)
 | 
						on_metadata_inventory_take = function(pos, listname, index, stack, player)
 | 
				
			||||||
		minetest.log("action", player:get_player_name()..
 | 
							minetest.log("action", player:get_player_name()..
 | 
				
			||||||
				" takes stuff from dropbox at "..minetest.pos_to_string(pos))
 | 
									" takes stuff from dropbox at "..minetest.pos_to_string(pos))
 | 
				
			||||||
	end,
 | 
						end,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user