local hudHandlers = {} function eregions:registerHudHandler (handler) table.insert (hudHandlers, handler) end function eregions:getExternalHudEntries (pos) local eregions = {} for _, func in pairs(hudHandlers) do func (pos, eregions) end return eregions end function eregions:getERegionsAtPos (pos) local res = {} if self.store then local a = self.store:get_areas_for_pos (pos, false, true) for store_id, store_eregion in pairs (a) do local id = tonumber (store_eregion.data) res [id] = self.eregions [id] end else local px, py, pz = pos.x, pos.y, pos.z for id, eregion in pairs (self.eregions) do local ap1, ap2 = eregion.pos1, eregion.pos2 if (px >= ap1.x and px <= ap2.x) and (py >= ap1.y and py <= ap2.y) and (pz >= ap1.z and pz <= ap2.z) then res [id] = eregion end end end return res end function eregions:has_feature (pos, name) for _, eregion in pairs (self:getERegionsAtPos (pos)) do if eregion.efeature == name then return true end end return false end function eregions:getNodeEFeatures (pos) local efeatures = {} for _, eregion in pairs(self:getERegionsAtPos (pos)) do table.insert(efeatures, eregion.efeature) end return efeatures end