mirror of
				https://github.com/minetest-mods/areas.git
				synced 2025-11-04 06:35:28 +01:00 
			
		
		
		
	add protector blocks to hud
This commit is contained in:
		
							
								
								
									
										31
									
								
								api.lua
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								api.lua
									
									
									
									
									
								
							@@ -1,7 +1,31 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					local get_protector_area = function(pos)
 | 
				
			||||||
 | 
						-- Add protector to the hud
 | 
				
			||||||
 | 
						local res = {}
 | 
				
			||||||
 | 
						local radius = (tonumber(minetest.setting_get("protector_radius")) or 5)
 | 
				
			||||||
 | 
						local protectors = minetest.find_nodes_in_area(
 | 
				
			||||||
 | 
							{x=pos.x -radius , y=pos.y -radius , z=pos.z -radius},
 | 
				
			||||||
 | 
							{x=pos.x +radius , y=pos.y +radius , z=pos.z +radius},
 | 
				
			||||||
 | 
							{"protector:protect","protector:protect2"}
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
						for _,npos in pairs(protectors) do
 | 
				
			||||||
 | 
							local node = minetest.get_node(npos)
 | 
				
			||||||
 | 
							local meta = minetest.get_meta(npos)
 | 
				
			||||||
 | 
							local nodeowner = meta:get_string("owner")
 | 
				
			||||||
 | 
							if minetest.is_protected(pos,nodeowner) then
 | 
				
			||||||
 | 
								res["protector"] = {name="("..node.name..")",owner=nodeowner}
 | 
				
			||||||
 | 
								break
 | 
				
			||||||
 | 
							end
 | 
				
			||||||
 | 
						end
 | 
				
			||||||
 | 
						return res
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					-- //
 | 
				
			||||||
 | 
					
 | 
				
			||||||
--- Returns a list of areas that include the provided position.
 | 
					--- Returns a list of areas that include the provided position.
 | 
				
			||||||
function areas:getAreasAtPos(pos)
 | 
					function areas:getAreasAtPos(pos)
 | 
				
			||||||
	local res = {}
 | 
						local res = {}
 | 
				
			||||||
 | 
						--res = get_protector_area(pos)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if self.store then
 | 
						if self.store then
 | 
				
			||||||
		local a = self.store:get_areas_for_pos(pos, false, true)
 | 
							local a = self.store:get_areas_for_pos(pos, false, true)
 | 
				
			||||||
		for store_id, store_area in pairs(a) do
 | 
							for store_id, store_area in pairs(a) do
 | 
				
			||||||
@@ -13,9 +37,10 @@ function areas:getAreasAtPos(pos)
 | 
				
			|||||||
		for id, area in pairs(self.areas) do
 | 
							for id, area in pairs(self.areas) do
 | 
				
			||||||
			local ap1, ap2 = area.pos1, area.pos2
 | 
								local ap1, ap2 = area.pos1, area.pos2
 | 
				
			||||||
			if
 | 
								if
 | 
				
			||||||
					(px >= ap1.x and px <= ap2.x) and
 | 
								  (px >= ap1.x and px <= ap2.x) and
 | 
				
			||||||
					(py >= ap1.y and py <= ap2.y) and
 | 
								  (py >= ap1.y and py <= ap2.y) and
 | 
				
			||||||
					(pz >= ap1.z and pz <= ap2.z) then
 | 
								  (pz >= ap1.z and pz <= ap2.z)
 | 
				
			||||||
 | 
								  then
 | 
				
			||||||
				res[id] = area
 | 
									res[id] = area
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user