Merge ShadowNinja's version
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)