From 83067e502702d1d869a3be448fc2772efbcfc0cf Mon Sep 17 00:00:00 2001
From: rubenwardy
Date: Sat, 18 Jun 2022 21:36:02 +0100
Subject: [PATCH] Chat: Restructure layout
---
_en/players/chat.md | 57 ++++++++++++++++++++++++++-------------------
1 file changed, 33 insertions(+), 24 deletions(-)
diff --git a/_en/players/chat.md b/_en/players/chat.md
index 7d88f94..21f8175 100644
--- a/_en/players/chat.md
+++ b/_en/players/chat.md
@@ -8,19 +8,21 @@ redirect_from: /en/chapters/chat.html
cmd_online:
level: warning
title: Offline players can run commands
- message: A player name is passed instead of a player object because mods
- can run commands on behalf of offline players. For example, the IRC
- bridge allows players to run commands without joining the game.
+ message: |
+ A player name is passed instead of a player object because mods
+ can run commands on behalf of offline players. For example, the IRC
+ bridge allows players to run commands without joining the game.
- So make sure that you don't assume that the player is online.
- You can check by seeing if
minetest.get_player_by_name
returns a player.
+ So make sure that you don't assume that the player is online.
+ You can check by seeing if `minetest.get_player_by_name` returns a player.
cb_cmdsprivs:
level: warning
title: Privileges and Chat Commands
- message: The shout privilege isn't needed for a player to trigger this callback.
- This is because chat commands are implemented in Lua, and are just
- chat messages that begin with a /.
+ message: |
+ The shout privilege isn't needed for a player to trigger this callback.
+ This is because chat commands are implemented in Lua, and are just
+ chat messages that begin with a /.
---
@@ -29,17 +31,20 @@ cb_cmdsprivs:
Mods can interact with player chat, including
sending messages, intercepting messages, and registering chat commands.
-- [Sending Messages to All Players](#sending-messages-to-all-players)
-- [Sending Messages to Specific Players](#sending-messages-to-specific-players)
+- [Sending Messages](#sending-messages)
+ - [To All Players](#to-all-players)
+ - [To Specific Players](#to-specific-players)
- [Chat Commands](#chat-commands)
-- [Complex Subcommands](#complex-subcommands)
- - [Using string.split](#using-stringsplit)
- - [Using Lua patterns](#using-lua-patterns)
+ - [Accepting Multiple Arguments](#accepting-multiple-arguments)
+ - [Using string.split](#using-stringsplit)
+ - [Using Lua patterns](#using-lua-patterns)
- [Intercepting Messages](#intercepting-messages)
-## Sending Messages to All Players
+## Sending Messages
-To send a message to every player in the game, call the chat_send_all function.
+### To All Players
+
+To send a message to every player in the game, call the `chat_send_all` function.
```lua
minetest.chat_send_all("This is a chat message to all players")
@@ -53,9 +58,9 @@ Here is an example of how this appears in-game:
The message appears on a separate line to distinguish it from in-game player chat.
-## Sending Messages to Specific Players
+### To Specific Players
-To send a message to a specific player, call the chat_send_player function:
+To send a message to a specific player, call the `chat_send_player` function:
```lua
minetest.chat_send_player("player1", "This is a chat message for player1")
@@ -82,20 +87,25 @@ minetest.register_chatcommand("foo", {
In the above snippet, `interact` is listed as a required
[privilege](privileges.html) meaning that only players with the `interact` privilege can run the command.
+`param` is a string containing everything a player writes after the chatcommand
+name. For example, if a user types `/grantme one,two,three` then `param` will be
+`one,two,three`.
+
Chat commands can return up to two values,
the first being a Boolean indicating success, and the second being a
message to send to the user.
{% include notice.html notice=page.cmd_online %}
-## Complex Subcommands
+### Accepting Multiple Arguments
-It's common for chat commands to require multiple arguments, for example,
-`/team join `. There are two ways
-of doing this, either using Minetest's string split or Lua patterns.
+
+`param` gives you all the arguments to a chat command in a single string. It's
+common for chat commands to need to extract multiple arguments. There are two
+ways of doing this, either using Minetest's string split or Lua patterns.
-### Using string.split
+#### Using string.split
A string can be split up into words using `string.split(" ")`:
@@ -120,8 +130,7 @@ else
end
```
-
-### Using Lua patterns
+#### Using Lua patterns
[Lua patterns](https://www.lua.org/pil/20.2.html) are a way of extracting stuff
from text using rules. They're best suited for when there are arguments that can