2.3 KiB
API Extension
Adding your protections to the HUD
If you are providing an extra protection mod to work in conjunction with the
HUD feature of areas
, you can register a callback to add your mod's code to
display your protection's existence.
Registering a handler:
areas.registerHudHandler(handler) --> nil
Handler specification:
handler(pos,area_list) --> new_area_list
pos
- the position at which to check for protection coverage by your modarea_list
- the current list of protected areasnew_area_list
- the list of protected areas, updated with your entries
Area list items:
The area list item is a map table identified with an ID, and properties
The ID should be in the format modname:
and appended with an identifier for the protection.
Each area list item should be a table with the following properties
owner
- (required) the name of the protection ownername
- (optional) the name of the area
Example
local myhandler = function(pos,area_list)
local areaowner = find_my_protections(pos)
if areaowner then
arealist["mymodname:first"] = {
name = "Protection name",
owner = areaowner,
}
end
end
areas.register_hud_handler(myhandler)
======= Areas mod API
API list
areas.registerHudHandler(handler)
- Registers a handler to add items to the Areas HUD. See HUD.
HUD
If you are making a protection mod or a similar mod that adds invisible regions to the world, and you would like then to show up in the areas HUD element, you can register a callback to show your areas.
HUD handler specification:
handler(pos, list)
pos
- The position to check.list
- The list of area HUD elements, this should be modified in-place.
The area list item is a table containing a list of tables with the following fields:
id
- An identifier for the area. This should be a unique string in the formatmod:id
.name
- The name of the area.owner
- The player name of the region owner, if any.
All of the fields are optional but at least one of them must be set.
Example
local function areas_hud_handler(pos, areas)
local val = find_my_protection(pos)
if val then
table.insert(areas, {
id = "mod:"..val.id,
name = val.name,
owner = val.owner,
})
end
end
areas:registerHudHandler(areas_hud_handler)