mirror of
				https://github.com/mt-mods/homedecor_modpack.git
				synced 2025-11-04 12:55:35 +01:00 
			
		
		
		
	fix missing protection on sofas and coffee tables
add some informative messages
This commit is contained in:
		@@ -24,27 +24,36 @@ minetest.register_node("lrfurn:coffeetable_back", {
 | 
				
			|||||||
				}
 | 
									}
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	on_construct = function(pos)
 | 
						after_place_node = function(pos, placer, itemstack, pointed_thing)
 | 
				
			||||||
 | 
							if minetest.is_protected(pos, placer:get_player_name()) then return true end
 | 
				
			||||||
		local node = minetest.get_node(pos)
 | 
							local node = minetest.get_node(pos)
 | 
				
			||||||
		local param2 = node.param2
 | 
							local param2 = node.param2
 | 
				
			||||||
		node.name = "lrfurn:coffeetable_front"
 | 
					
 | 
				
			||||||
		if param2 == 0 then
 | 
							if lrfurn.check_forward(pos, fdir, false, placer) then
 | 
				
			||||||
			pos.z = pos.z+1
 | 
					
 | 
				
			||||||
		elseif param2 == 1 then
 | 
								node.name = "lrfurn:coffeetable_front"
 | 
				
			||||||
			pos.x = pos.x+1
 | 
								if param2 == 0 then
 | 
				
			||||||
		elseif param2 == 2 then
 | 
									pos.z = pos.z+1
 | 
				
			||||||
			pos.z = pos.z-1
 | 
								elseif param2 == 1 then
 | 
				
			||||||
		elseif param2 == 3 then
 | 
									pos.x = pos.x+1
 | 
				
			||||||
			pos.x = pos.x-1
 | 
								elseif param2 == 2 then
 | 
				
			||||||
		end
 | 
									pos.z = pos.z-1
 | 
				
			||||||
		if( minetest.get_node({x=pos.x, y=pos.y, z=pos.z}).name == "air" ) then
 | 
								elseif param2 == 3 then
 | 
				
			||||||
 | 
									pos.x = pos.x-1
 | 
				
			||||||
 | 
								end
 | 
				
			||||||
			minetest.set_node(pos, node)
 | 
								minetest.set_node(pos, node)
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								minetest.chat_send_player(placer:get_player_name(), "No room to place the coffee table!")
 | 
				
			||||||
 | 
								minetest.set_node(pos, {name = "air"})
 | 
				
			||||||
 | 
								return true
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	end,
 | 
						end,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	on_destruct = function(pos)
 | 
						after_dig_node = function(pos, oldnode, oldmetadata, digger)
 | 
				
			||||||
		local node = minetest.get_node(pos)
 | 
							if minetest.is_protected(pos, digger:get_player_name()) then return true end
 | 
				
			||||||
		local param2 = node.param2
 | 
					
 | 
				
			||||||
 | 
							local param2 = oldnode.param2
 | 
				
			||||||
		if param2 == 0 then
 | 
							if param2 == 0 then
 | 
				
			||||||
			pos.z = pos.z+1
 | 
								pos.z = pos.z+1
 | 
				
			||||||
		elseif param2 == 1 then
 | 
							elseif param2 == 1 then
 | 
				
			||||||
@@ -54,10 +63,12 @@ minetest.register_node("lrfurn:coffeetable_back", {
 | 
				
			|||||||
		elseif param2 == 3 then
 | 
							elseif param2 == 3 then
 | 
				
			||||||
			pos.x = pos.x-1
 | 
								pos.x = pos.x-1
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
		if( minetest.get_node({x=pos.x, y=pos.y, z=pos.z}).name == "lrfurn:coffeetable_front" ) then
 | 
					
 | 
				
			||||||
			if( minetest.get_node({x=pos.x, y=pos.y, z=pos.z}).param2 == param2 ) then
 | 
							if minetest.is_protected(pos, digger:get_player_name()) then return true end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (minetest.get_node({x=pos.x, y=pos.y, z=pos.z}).name == "lrfurn:coffeetable_front") 
 | 
				
			||||||
 | 
							  and (minetest.get_node({x=pos.x, y=pos.y, z=pos.z}).param2 == param2) then
 | 
				
			||||||
				minetest.remove_node(pos)
 | 
									minetest.remove_node(pos)
 | 
				
			||||||
			end
 | 
					 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
	end,
 | 
						end,
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,19 +8,32 @@ lrfurn.fdir_to_fwd = {
 | 
				
			|||||||
	{ -1,  0 },
 | 
						{ -1,  0 },
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function lrfurn.check_forward(pos, fdir, long)
 | 
					function lrfurn.check_forward(pos, fdir, long, placer)
 | 
				
			||||||
 | 
					 | 
				
			||||||
	if not fdir or fdir > 3 then fdir = 0 end
 | 
						if not fdir or fdir > 3 then fdir = 0 end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	local pos2 = { x = pos.x + lrfurn.fdir_to_fwd[fdir+1][1],     y=pos.y, z = pos.z + lrfurn.fdir_to_fwd[fdir+1][2]     }
 | 
						local pos2 = { x = pos.x + lrfurn.fdir_to_fwd[fdir+1][1],     y=pos.y, z = pos.z + lrfurn.fdir_to_fwd[fdir+1][2]     }
 | 
				
			||||||
	local pos3 = { x = pos.x + lrfurn.fdir_to_fwd[fdir+1][1] * 2, y=pos.y, z = pos.z + lrfurn.fdir_to_fwd[fdir+1][2] * 2 }
 | 
						local pos3 = { x = pos.x + lrfurn.fdir_to_fwd[fdir+1][1] * 2, y=pos.y, z = pos.z + lrfurn.fdir_to_fwd[fdir+1][2] * 2 }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	local node2 = minetest.get_node(pos2)
 | 
						local node2 = minetest.get_node(pos2)
 | 
				
			||||||
	if node2 and node2.name ~= "air" then return false end
 | 
						if node2 and node2.name ~= "air" then
 | 
				
			||||||
 | 
							return false
 | 
				
			||||||
 | 
						elseif minetest.is_protected(pos2, placer:get_player_name()) then
 | 
				
			||||||
 | 
							if not long then
 | 
				
			||||||
 | 
								minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where other end goes!")
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where the middle or far end goes!")
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
							return false
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if long then
 | 
						if long then
 | 
				
			||||||
		local node3 = minetest.get_node(pos3)
 | 
							local node3 = minetest.get_node(pos3)
 | 
				
			||||||
		if node3 and node3.name ~= "air" then return false end
 | 
							if node3 and node3.name ~= "air" then
 | 
				
			||||||
 | 
								return false
 | 
				
			||||||
 | 
							elseif minetest.is_protected(pos3, placer:get_player_name()) then
 | 
				
			||||||
 | 
								minetest.chat_send_player(placer:get_player_name(), "Someone else owns the spot where the other end goes!")
 | 
				
			||||||
 | 
								return false
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return true
 | 
						return true
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,15 +42,18 @@ for i in ipairs(longsofas_list) do
 | 
				
			|||||||
		selection_box = longsofa_sbox,
 | 
							selection_box = longsofa_sbox,
 | 
				
			||||||
		node_box = longsofa_cbox,
 | 
							node_box = longsofa_cbox,
 | 
				
			||||||
		on_rotate = screwdriver.disallow,
 | 
							on_rotate = screwdriver.disallow,
 | 
				
			||||||
        on_place = function(itemstack, placer, pointed_thing)
 | 
					
 | 
				
			||||||
			local pos = pointed_thing.above
 | 
							after_place_node = function(pos, placer, itemstack, pointed_thing)
 | 
				
			||||||
 | 
								if minetest.is_protected(pos, placer:get_player_name()) then return true end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			local fdir = minetest.dir_to_facedir(placer:get_look_dir(), false)
 | 
								local fdir = minetest.dir_to_facedir(placer:get_look_dir(), false)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if lrfurn.check_forward(pos, fdir, true) then
 | 
								if lrfurn.check_forward(pos, fdir, true, placer) then
 | 
				
			||||||
				minetest.set_node(pos, {name = "lrfurn:longsofa_"..colour, param2 = fdir})
 | 
									minetest.set_node(pos, {name = "lrfurn:longsofa_"..colour, param2 = fdir})
 | 
				
			||||||
				itemstack:take_item()
 | 
									itemstack:take_item()
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
				minetest.chat_send_player(placer:get_player_name(), "No room to place the sofa!")
 | 
									minetest.chat_send_player(placer:get_player_name(), "No room to place the sofa!")
 | 
				
			||||||
 | 
									minetest.set_node(pos, { name = "air" })
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
			return itemstack
 | 
								return itemstack
 | 
				
			||||||
		end,
 | 
							end,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,15 +42,19 @@ for i in ipairs(sofas_list) do
 | 
				
			|||||||
		selection_box = sofa_sbox,
 | 
							selection_box = sofa_sbox,
 | 
				
			||||||
		node_box = sofa_cbox,
 | 
							node_box = sofa_cbox,
 | 
				
			||||||
		on_rotate = screwdriver.disallow,
 | 
							on_rotate = screwdriver.disallow,
 | 
				
			||||||
        on_place = function(itemstack, placer, pointed_thing)
 | 
					
 | 
				
			||||||
			local pos = pointed_thing.above
 | 
							after_place_node = function(pos, placer, itemstack, pointed_thing)
 | 
				
			||||||
 | 
								if minetest.is_protected(pos, placer:get_player_name()) then return true end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			local fdir = minetest.dir_to_facedir(placer:get_look_dir(), false)
 | 
								local fdir = minetest.dir_to_facedir(placer:get_look_dir(), false)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if lrfurn.check_forward(pos, fdir, true) then
 | 
								if lrfurn.check_forward(pos, fdir, false, placer) then
 | 
				
			||||||
				minetest.set_node(pos, {name = "lrfurn:sofa_"..colour, param2 = fdir})
 | 
									minetest.set_node(pos, {name = "lrfurn:sofa_"..colour, param2 = fdir})
 | 
				
			||||||
				itemstack:take_item()
 | 
									itemstack:take_item()
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
				minetest.chat_send_player(placer:get_player_name(), "No room to place the sofa!")
 | 
									minetest.chat_send_player(placer:get_player_name(), "No room to place the sofa!")
 | 
				
			||||||
 | 
									minetest.set_node(pos, { name = "air" })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
			return itemstack
 | 
								return itemstack
 | 
				
			||||||
		end,
 | 
							end,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user