forked from luanti-org/minetest_game
		
	Fix crash if bones punched by non-player (#3146)
This commit is contained in:
		@@ -16,6 +16,27 @@ local function is_owner(pos, name)
 | 
			
		||||
	return false
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function drop(pos, itemstack)
 | 
			
		||||
	local obj = minetest.add_item(pos, itemstack:take_item(itemstack:get_count()))
 | 
			
		||||
	if obj then
 | 
			
		||||
		obj:set_velocity({
 | 
			
		||||
			x = math.random(-10, 10) / 9,
 | 
			
		||||
			y = 5,
 | 
			
		||||
			z = math.random(-10, 10) / 9,
 | 
			
		||||
		})
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function drop_contents(pos)
 | 
			
		||||
	local inv = minetest.get_meta(pos):get_inventory()
 | 
			
		||||
 | 
			
		||||
	for i = 1, inv:get_size("main") do
 | 
			
		||||
		local stk = inv:get_stack("main", i)
 | 
			
		||||
		drop(pos, stk)
 | 
			
		||||
	end
 | 
			
		||||
	minetest.remove_node(pos)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local bones_formspec =
 | 
			
		||||
	"size[8,9]" ..
 | 
			
		||||
	"list[current_name;main;0,0.3;8,4;]" ..
 | 
			
		||||
@@ -87,6 +108,11 @@ local bones_def = {
 | 
			
		||||
			return
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		if not player:is_player() then
 | 
			
		||||
			drop_contents(pos)
 | 
			
		||||
			return
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		if minetest.get_meta(pos):get_string("infotext") == "" then
 | 
			
		||||
			return
 | 
			
		||||
		end
 | 
			
		||||
@@ -171,17 +197,6 @@ local function may_replace(pos, player)
 | 
			
		||||
	return node_definition.buildable_to
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local drop = function(pos, itemstack)
 | 
			
		||||
	local obj = minetest.add_item(pos, itemstack:take_item(itemstack:get_count()))
 | 
			
		||||
	if obj then
 | 
			
		||||
		obj:set_velocity({
 | 
			
		||||
			x = math.random(-10, 10) / 9,
 | 
			
		||||
			y = 5,
 | 
			
		||||
			z = math.random(-10, 10) / 9,
 | 
			
		||||
		})
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local player_inventory_lists = { "main", "craft" }
 | 
			
		||||
bones.player_inventory_lists = player_inventory_lists
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user