cloaking/README.md

63 lines
2.5 KiB
Markdown

# Minetest cloaking mod
Allows players to cloak and uncloak.
## What is cloaking?
In this instance, cloaking is a way to go invisible and become undetectable by
most mods (unless they explicitly want to detect cloaked players, so they can
still send chat messages to them).
## Why is cloaking so hacky, and where does it send the 'left the game' messages?
Cloaking sends no left the game messages, it leaves that up to the built-in left
the game functions. The aim of cloaking is to trick other mods into thinking the
player is not in-game, and for this it must be hacky.
## Help, it crashes
If it crashes, it is either caused by a mod not liking non-existent players
running around, or by a bug in cloaking itself.
## How do I use cloaking?
Cloaking adds a modding API and two chatcommands. Both of these require the
`cloaking` privilege to execute, however you can uncloak yourself without any
privileges.
- `/cloak [victim]`: Cloaks yourself, alternatively an unsuspecting `victim`.
- `/uncloak [victim]`: Uncloaks yourself, or a `victim`.
## How do I download cloaking?
You can either run
`git clone https://github.com/luk3yx/minetest-cloaking cloaking`, or download
a [zip](https://github.com/luk3yx/minetest-cloaking/archive/master.zip) or
[tar.gz](https://github.com/luk3yx/minetest-cloaking/archive/master.tar.gz)
file. You will need to rename the folder from `minetest-cloaking-master` to
`cloaking` for it to work properly.
## How do I use the API?
Cloaking adds the following functions:
- `cloaking.cloak_player(player)`: Cloaks a player.
- `cloaking.uncloak_player(player)`: Uncloaks a player.
- `cloaking.get_cloaked_players()`: Gets a list of cloaked player names.
- `cloaking.is_cloaked(player)`: Checks if a player is cloaked.
- `cloaking.on_chat_message(player, message)`: Returns `true` and warns `player`
if they are cloaked and trying to send a chat message, otherwise returns
`nil`.
It also adds the following functions that ignore cloaked players and can
interact with them:
`cloaking.get_connected_players`, `cloaking.get_objects_inside_radius` and
`cloaking.get_player_by_name`.
If you have made chatcommand work with players that aren't in-game, you can add
`_allow_while_cloaked = true` to the chatcommand definition. If you explicitly
don't want your chatcommand working with cloaked players, you can add
`_disallow_while_cloaked = true` to the definition.
These modifications do not require that you add `cloaking` to `depends.txt`, as
when cloaking is not loaded this parameter is simply ignored.