Update API documentation
This commit is contained in:
parent
eb1d45e915
commit
56fbc5b9aa
108
API.md
108
API.md
@ -1,9 +1,10 @@
|
|||||||
# API documentation for version 0.4.0
|
# API documentation for version 0.4.0
|
||||||
## Core principles
|
## Core concepts
|
||||||
As a modder, you are free to write basically about everything and are also
|
As a modder, you are free to write basically about everything and are also
|
||||||
relatively free in the presentation of information. The Documentation
|
relatively free in the presentation of information. The Documentation
|
||||||
System has no restrictions on content whatsoever.
|
System has no restrictions on content whatsoever.
|
||||||
|
|
||||||
|
### Categories and entries
|
||||||
In the documentation system, everything is built on categories and entries.
|
In the documentation system, everything is built on categories and entries.
|
||||||
An entry is a single piece of documentation and is the basis of all actual
|
An entry is a single piece of documentation and is the basis of all actual
|
||||||
documentation. Categories group multiple entries of the same topic together.
|
documentation. Categories group multiple entries of the same topic together.
|
||||||
@ -13,6 +14,18 @@ result in the Entry tab looks like. Entries themselves have a data field
|
|||||||
attached to them, this is a table containing arbitrary metadata which is
|
attached to them, this is a table containing arbitrary metadata which is
|
||||||
used to construct the final formspec which is used on the Entry tab.
|
used to construct the final formspec which is used on the Entry tab.
|
||||||
|
|
||||||
|
## Advanced concepts
|
||||||
|
### Viewed and hidden entries
|
||||||
|
The mod keeps track of which entries have been viewed by any player.
|
||||||
|
Any entry which has been accessed by a player is instantly marked as “viewed”.
|
||||||
|
|
||||||
|
It also allows entries to be hidden. Hidden entries are not visible or
|
||||||
|
normally accessible to players until they become revealed by function calls.
|
||||||
|
|
||||||
|
Marking an entry as viewed or revealed is not reversible with this API.
|
||||||
|
The viewed and hidden states are stored in the file `doc.mt` inside the
|
||||||
|
world directory.
|
||||||
|
|
||||||
## Possible use cases
|
## Possible use cases
|
||||||
I present to you some possible use cases to give you a rough idea what
|
I present to you some possible use cases to give you a rough idea what
|
||||||
this mod is capable and how certain use casescould be implemented.
|
this mod is capable and how certain use casescould be implemented.
|
||||||
@ -40,6 +53,31 @@ this block as possible.
|
|||||||
## Functions
|
## Functions
|
||||||
This is a list of all publicly available functions.
|
This is a list of all publicly available functions.
|
||||||
|
|
||||||
|
### Overview
|
||||||
|
The most important functions are `doc.new_category` and `doc.new_entry`. All other functions
|
||||||
|
are mostly used for utility and examination purposes.
|
||||||
|
|
||||||
|
These functions are available:
|
||||||
|
|
||||||
|
* `doc.new_category`: Adds a new category
|
||||||
|
* `doc.new_entry`: Adds a new entry
|
||||||
|
* `doc.show_entry`: Shows a particular entry to a player
|
||||||
|
* `doc.show_category`: Shows the entry list of a category to a player
|
||||||
|
* `doc.show_doc`: Opens the main Documentation System form for a player
|
||||||
|
* `doc.get_category_definition`: Returns the definition table of a category
|
||||||
|
* `doc.get_entry_definition`: Returns the definition table of an entry
|
||||||
|
* `doc.entry_exists`: Checks whether an entry exists
|
||||||
|
* `doc.entry_viewed`: Checks whether an entry has been viewed/read by a player
|
||||||
|
* `doc.entry_revealed`: Checks whether an entry is visible and normally accessible to a player
|
||||||
|
* `doc.mark_entry_as_viewed`: Manually marks an entry as viewed/read by a player
|
||||||
|
* `doc.mark_entry_as_revealed`: Make a hidden entry visible and accessible to a player
|
||||||
|
* `doc.add_entry_alias`: Add an alternative name which can be used to access an entry
|
||||||
|
* `doc.add_entry_aliases`: Add multiple alternative names which can be used to access an entry
|
||||||
|
* `doc.get_category_count`: Returns the total number categories
|
||||||
|
* `doc.get_entry_count`: Returns the total number of entries in a category
|
||||||
|
* `doc.get_viewed_count`: Returns the number of entries a player has viewed in a category
|
||||||
|
* `doc.get_revealed_count`: Returns the number of entries a player has access to in a category
|
||||||
|
|
||||||
### `doc.new_category(id, def)`
|
### `doc.new_category(id, def)`
|
||||||
Adds a new category. You have to define an unique identifier, a name
|
Adds a new category. You have to define an unique identifier, a name
|
||||||
and a template function to build the entry formspec from the entry
|
and a template function to build the entry formspec from the entry
|
||||||
@ -111,7 +149,7 @@ the category definition.
|
|||||||
* `def`: Definition table, it has the following fields:
|
* `def`: Definition table, it has the following fields:
|
||||||
* `name`: Entry name to be shown in the interface
|
* `name`: Entry name to be shown in the interface
|
||||||
* `hidden`: (optional) If `true`, entry will not be displayed in entry list
|
* `hidden`: (optional) If `true`, entry will not be displayed in entry list
|
||||||
initially (default: `false`)
|
initially (default: `false`); it can be revealed later
|
||||||
* `data`: Arbitrary data attached to the entry. Any data type is allowed;
|
* `data`: Arbitrary data attached to the entry. Any data type is allowed;
|
||||||
The data in this field will be used to create the actual formspec
|
The data in this field will be used to create the actual formspec
|
||||||
with `build_formspec` from the category definition
|
with `build_formspec` from the category definition
|
||||||
@ -189,6 +227,59 @@ Returns `true` if and only if:
|
|||||||
|
|
||||||
Otherwise, returns `false`.
|
Otherwise, returns `false`.
|
||||||
|
|
||||||
|
### `doc.entry_viewed(playername, category_id, entry_id)`
|
||||||
|
Tells whether the specified entry is marked as “viewed” (or read) by
|
||||||
|
the player.
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
* `playername`: Name of the player to check
|
||||||
|
* `category_id`: Category identifier of the category to check
|
||||||
|
* `entry_id`: Entry identifier of the entry to check
|
||||||
|
|
||||||
|
#### Return value
|
||||||
|
`true`, if entry is viewed, `false` otherwise.
|
||||||
|
|
||||||
|
### `doc.entry_revealed(playername, category_id, entry_id)`
|
||||||
|
Tells whether the specified entry is marked as “revealed” to the player
|
||||||
|
and thus visible and generally accessible.
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
* `playername`: Name of the player to check
|
||||||
|
* `category_id`: Category identifier of the category to check
|
||||||
|
* `entry_id`: Entry identifier of the entry to check
|
||||||
|
|
||||||
|
#### Return value
|
||||||
|
`true`, if entry is revealed, `false` otherwise.
|
||||||
|
|
||||||
|
### `doc.mark_entry_as_viewed(playername, category_id, entry_id)`
|
||||||
|
Marks a particular entry as “viewed” (or read) by a player. This will
|
||||||
|
also automatically reveal the entry to the player permanently.
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
* `playername`: Name of the player for whom to mark an entry as “viewed”
|
||||||
|
* `category_id`: Category identifier of the category of the entry to mark
|
||||||
|
* `entry_id`: Entry identifier of the entry to mark
|
||||||
|
|
||||||
|
#### Returns
|
||||||
|
Always `nil`.
|
||||||
|
|
||||||
|
### `doc.mark_entry_as_revealed(playername, category_id, entry_id)`
|
||||||
|
Marks a particular entry as “revealed” to a player. If the entry is
|
||||||
|
declared as hidden, it will become visible in the list of entries for
|
||||||
|
this player and will always be accessible with `doc.show_entry`. This
|
||||||
|
change is permanently.
|
||||||
|
|
||||||
|
For entries which are not normally hidden, this function has no direct
|
||||||
|
effect.
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
* `playername`: Name of the player for whom to reveal the entry
|
||||||
|
* `category_id`: Category identifier of the category of the entry to reveal
|
||||||
|
* `entry_id`: Entry identifier of the entry to reveal
|
||||||
|
|
||||||
|
#### Returns
|
||||||
|
Always `nil`.
|
||||||
|
|
||||||
### `doc.add_entry_alias(category_id, entry_id, alias)`
|
### `doc.add_entry_alias(category_id, entry_id, alias)`
|
||||||
Adds a single alias for an entry. When an entry has an alias, attempting to open
|
Adds a single alias for an entry. When an entry has an alias, attempting to open
|
||||||
an entry by an alias name results in opening the entry of the original name.
|
an entry by an alias name results in opening the entry of the original name.
|
||||||
@ -238,6 +329,19 @@ Returns how many entries have been viewed by a player.
|
|||||||
Amount of entries the player has viewed in the specified category. If the
|
Amount of entries the player has viewed in the specified category. If the
|
||||||
player does not exist, this function returns `nil`.
|
player does not exist, this function returns `nil`.
|
||||||
|
|
||||||
|
### `function doc.get_revealed_count(playername, category_id)`
|
||||||
|
Returns how many entries the player has access to (non-hidden entries)
|
||||||
|
in this category.
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
* `playername`: Name of the player to count the revealed entries for
|
||||||
|
* `category_id`: Category identifier of the category in which to count the
|
||||||
|
revealed entries
|
||||||
|
|
||||||
|
#### Return value
|
||||||
|
Amount of entries the player has access to in the specified category. If the
|
||||||
|
player does not exist, this function returns `nil`.
|
||||||
|
|
||||||
|
|
||||||
## Extending this mod (naming conventions)
|
## Extending this mod (naming conventions)
|
||||||
If you want to extend this mod with your own functionality, it is recommended
|
If you want to extend this mod with your own functionality, it is recommended
|
||||||
|
Loading…
x
Reference in New Issue
Block a user