Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/luk3yx/minetest-snippets
https://github.com/luk3yx/minetest-snippets
Last synced: 5 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/luk3yx/minetest-snippets
- Owner: luk3yx
- License: mit
- Created: 2020-10-02T03:42:41.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-03-04T21:10:44.000Z (10 months ago)
- Last Synced: 2024-11-08T11:11:55.988Z (about 2 months ago)
- Language: Lua
- Size: 31.3 KB
- Stars: 2
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Minetest snippets mod
A way for admins to run and save lua snippets.
## Chatcommands
- `/snippets`: Open the snippets console. This allows you to edit and run Lua
snippets.## Nodes
This mod registers a snippets button node that runs a snippet when pressed. The
snippet will be called with the player name as its first argument. For example,
you can do `local name = ...` inside a snippet to get the name of the player
that pressed the button.Buttons don't appear in the creative inventory, if you want them to you will
need to run `/giveme snippets:button`.If you don't want the buttons at all, you can add
`snippets.enable_buttons = false` to your minetest.conf.## API
- `snippets.register_snippet(name,
)`: Registers a snippet.
`def` can be a table containing `code` (or `func`), and optionally `owner`.
If `persistent` is specified, this snippet will remain registered across
reboots.
If `autorun` is specified, this snippet will auto run on server start. (Snippet must be persistent to support autorun)
- `snippets.unregister_snippet(name)`: The opposite of
`snippets.register_snippet`.
- `snippets.registered_snippets`: A table containing the above snippets.
- `snippets.log(level, msg)`: For use inside snippets: Logs a message. `level`
can be `none`, `debug`, `info`, `warning`, or `error`.
- `snippets.register_on_log(function(snippet, level, msg))`: Run when
snippets.log is called. `snippet` is the name of the snippet. Newest
functions are called first. If a callback returns `true`, any remaining
functions are not called (including the built-in log function). Callbacks
can check what player (if any) owns a snippet with
`snippets.registered_snippets[snippet].owner`.
- `snippets.log_levels`: A table containing functions that run
`minetest.colorize` on log levels (if applicable).
Example: `snippets.log_levels.error('Hello')` →
`minetest.colorize('red', 'Hello')`
- `snippets.exec_as_player(player_or_name, code)`: Executes `code` (a string)
inside an "anonymous snippet" owned by the player.
- `snippets.exec(code)`: Executes `code` inside a generic snippet.
- `snippets.run(name, ...)`: Executes a snippet.
- `snippets.Form(player_or_name)`: Creates a form.
- `snippets.close_form(player_or_name)`: Closes `player_or_name`'s currently
open form.### Forms
`snippets.Form`s can display and handle formspecs, and are recommended inside
snippets over `minetest.show_formspec`, as they do not create semi-permanent
global handlers. There is currently no way to set the `formname`, it is
automatically chosen/generated and is used internally.Consider using [flow](https://content.minetest.net/packages/luk3yx/flow/)
instead for new forms.Form methods:
- `form:show()` / `form:open()`: Displays the form.
- `form:hide()` / `form:close()`: Closes the form.
- `form:is_open()`: Returns `true` if the form is currently open.
- `form:set_prepend(formspec)`: Sets text to prepend to the formspec. This has
nothing to do with global formspec prepends.
- `form:set_formspec(formspec)`: Sets the formspec text. This does not modify
prepended text or appended text. Any change to this (or the prepend/append
values) is displayed immediately to the client.
- `form:set_append(formspec)`: Sets text to append to the formspec before
displaying it.
- `form:get_prepend`, `form:get_formspec`, `form:get_append`
- `form:add_callback(function(form, fields))`: This creates a callback which
is called whenever form data is received from the client.
- `form:add_callback(name, function(form, fields))`: Similar to the above,
however is only called if `fields` contains `name` (a string).
- `form.context`: Private data stored with this `form` object. Not sent to
clients.
- `form.pname`: The player name associated with this form. *Changing this will
not change the player the form is associated with.**When a form is deleted (`form=nil`) and it is not open by the client, garbage
collection will allow the internal `formname` to be reused.*## Example snippets
`get_connected_names`:
```lua
local res = {}
for _, player in ipairs(minetest.get_connected_players()) do
table.insert(res, player:get_player_name())
end
return res
````greeting_test`:
```lua
for _, name in ipairs(snippets.run 'get_connected_names') do
minetest.chat_send_player(name, 'Hello ' .. name .. '!')
end
```