# Introduction

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FJ300gdMCXeBSMmQD8pV5%2Fzess-info.png?alt=media&amp;token=f9aac1ea-f4c9-4639-8ca0-1ed56794a22e" alt=""><figcaption></figcaption></figure>

Github: <https://github.com/Maxlego08/zEssentials/>


# Installing zEssentials

## Purchase zEssentials

{% hint style="info" %}
The plugin is sold for **20€**, but the price may vary between sites for various reasons.
{% endhint %}

* **Spigot**: [https://www.spigotmc.org/resources/118014/](https://www.spigotmc.org/resources/zessentials-best-essentials-cmi-sunlight-alternative.118014/)
* **GroupeZ**: [https://groupez.dev/resources/](https://groupez.dev/resources/zessentials-best-essentialscmisunlight-alternative.325)[325](https://groupez.dev/resources/zessentials-best-essentialscmisunlight-alternative.325)
* **BuiltsBuyBits**: [https://builtbybit.com/resources/46047/](https://builtbybit.com/resources/zessentials.46047/)

## Requirements

* **Java version**: 17 or newer
* **Server version**: <mark style="color:red;">1.20.4</mark> / <mark style="color:red;">**1.20.6**</mark> / <mark style="color:red;">**1.21**</mark> / <mark style="color:red;">**1.21.1**</mark>
* **Server SoftWare**: [<mark style="color:orange;">Spigot</mark>](#user-content-fn-1)[^1], <mark style="color:green;">Paper</mark>, <mark style="color:green;">Folia</mark>, <mark style="color:green;">Pufferfish</mark>, <mark style="color:green;">Purpur</mark>, <mark style="color:green;">UniversSpigot</mark> *(all forks based on paper will work)*
* [**zMenu**](https://www.spigotmc.org/resources/zmenu-ultra-complete-menu-plugin.110402/) <mark style="color:red;">**REQUIRED**</mark>
* [**PlaceholderAPI**](https://www.spigotmc.org/resources/placeholderapi.6245/) <mark style="color:red;">**REQUIRED**</mark> (Folia version [here](https://github.com/Anon8281/PlaceholderAPI/releases/tag/1.1))
* [**Vault**](https://www.spigotmc.org/resources/vault.34315/) <mark style="color:yellow;">**RECOMMANDED**</mark> (Folia version [here](https://github.com/Geolykt/Vault/releases))

{% hint style="warning" %}
**Attention:** Modded server software is not supported!
{% endhint %}

## Installation

1. Download zEssentials and its requirements.
2. Add **jars files** in `/plugins/` folder.
3. Start your servers
4. Configured the plugin, changed the storage from **JSON** to **MYSQL**.
5. Rebooted your servers, and <mark style="color:red;">voila</mark> the plugin is ready to be used!

{% hint style="danger" %}
It is important not to leave the storage in **JSON**, as this format does not support all the functionality of the plugin.
{% endhint %}

[^1]: It is not recommended to use spigot, you will not be able to enjoy all the features of the plugin.


# Convert

You can convert the other plugins to zEssentials.

## CMI

You need to put the `cmi.sqlite.db` file in the `plugins/zEssentials` folder. You must then run the following command:&#x20;

```bash
/ess convert CMI
```

The conversion will take a few seconds, please wait. Once the conversion is complete, you will need to restart your server.

{% hint style="info" %}
Only the data of the players will be converted. For warps, kits, etc you must redo them !
{% endhint %}

## EssentialsX

You must have the `plugins/Essentials` folder on your server. You must then run the following command:&#x20;

```bash
/ess convert EssentialsX
```

The conversion will take a few seconds, please wait. Once the conversion is complete, you will need to restart your server.

{% hint style="info" %}
Only the data of the players will be converted. For warps, kits, etc you must redo them !
{% endhint %}

{% embed url="<https://youtu.be/KyfrtqTEpsE>" %}

## SunLight

You need to put the `data.db` file in the `plugins/zEssentials` folder. You must then run the following command:&#x20;

```bash
/ess convert Sunlight
```

The conversion will take a few seconds, please wait. Once the conversion is complete, you will need to restart your server.

{% hint style="info" %}
Only the data of the players will be converted. For warps, kits, etc you must redo them !
{% endhint %}

## PlayerVaultX

You must have the PlayerVaultX plugin installed on your server. You must then run the following command:&#x20;

```bash
/ess convert PlayerVaultX
```

The conversion will take a few seconds, please wait. Once the conversion is complete, you will need to restart your server.

{% hint style="info" %}
Data from all vaults will be transferred. Please note that PlayerVaultX and zEssentials operate differently. With zEssentials, there is no limit on the quantity of each item. All items from players will be consolidated into a single vault.
{% endhint %}

## CoinsEngine

You must have the CoinsEngine folder created on your server. You must then run the following command:&#x20;

```bash
/ess convert CoinsEngine
```

The conversion will take a few seconds, please wait. Once the conversion is complete, you will need to restart your server.

{% hint style="info" %}
You must first create your savings in the zEssentials <mark style="color:green;">**modules/economy/config.yml**</mark> file. By default the configuration will be the same as CoinsEngine, with economy money and coins.
{% endhint %}

## HuskHomes

You need to put the `HuskHomesData.db` file in the `plugins/zEssentials` folder. You must then run the following command:&#x20;

```bash
/ess convert HushHomes
```

The conversion will take a few seconds, please wait. Once the conversion is complete, you will need to restart your server.

{% hint style="info" %}
Only the data of the players will be converted. For warps, kits, etc you must redo them !
{% endhint %}

## AxVaults

You must have the AxVaults plugin installed on your server. You must then run the following command:&#x20;

```bash
/ess convert AxVaults
```

The conversion will take a few seconds, please wait. Once the conversion is complete, you will need to restart your server.

{% hint style="info" %}
Data from all vaults will be transferred. Please note that PlayerVaultX and zEssentials operate differently. With zEssentials, there is no limit on the quantity of each item. All items from players will be consolidated into a single vault.
{% endhint %}


# Commands

## Configurations

You can configure each element of a command in the `commands.yml` file. The description of the command is found in the `messages.yml` file.

```yaml
command-anvil:
  enable: true
  commands:
  - anvil
  permission: essentials.anvil
```

A command will be composed of three elements:

1. **`enable`**: Allows you to activate or deactivate the command.
2. **`commands`**: Defines the command and its aliases. The first command in the list will be the primary command.
3. **`permission`**: Sets the permission required to run the command.

{% hint style="danger" %}
You must restart your server after editing the <mark style="color:red;">**`commands.yml`**</mark> file.
{% endhint %}

## Cooldown

You can create cooldowns for commands. To configure the cooldowns, you need to edit the `config.yml` file.

{% code fullWidth="true" %}

```yaml
# Create command cooldowns (can run a command after X amount of seconds)
command-cooldowns:
  - command: heal
    # In this example you can see that the "/heal" command has a 60 seconds cooldown
    cooldown: 60
    permissions:
      - permission: "essentials.cooldown.heal.vip"
        # In this example whoever has "essentials.cooldown.heal.vip" permission can run "/heal" after 40 seconds
        cooldown: 40
      - permission: "essentials.cooldown.heal.staff"
        # In this example whoever has "essentials.cooldown.heal.staff" permission can run "/heal" after 20 seconds
        cooldown: 20
```

{% endcode %}

You must define the command name and the default cooldown. Additionally, you can specify cooldowns based on permissions, as shown in the example above.

## Commands

<table data-full-width="true"><thead><tr><th>Command</th><th>Aliases</th><th>Permission</th><th>Description</th></tr></thead><tbody><tr><td><code>/anvil</code></td><td></td><td>essentials.anvil</td><td>Open an anvil</td></tr><tr><td><code>/back</code></td><td></td><td>essentials.back</td><td>Teleport to your previous location</td></tr><tr><td><code>/balancetop [&#x3C;page>]</code></td><td>/baltop</td><td>essentials.balance.top</td><td>Show baltop</td></tr><tr><td><code>/balancetop refresh &#x3C;economy></code></td><td></td><td>essentials.balance.top.refresh</td><td>Refresh baltop</td></tr><tr><td><code>/ban &#x3C;player> &#x3C;duration> [&#x3C;reason>]</code></td><td></td><td>essentials.ban</td><td>Ban a player</td></tr><tr><td><code>/bottom</code></td><td></td><td>essentials.bottom</td><td>Teleporting to bottom</td></tr><tr><td><code>/broadcast &#x3C;message></code></td><td>/bc</td><td>essentials.chat.broadcast</td><td>Broadcast a message</td></tr><tr><td><code>/cartographytable</code></td><td></td><td>essentials.cartographytable</td><td>Open a cartography table</td></tr><tr><td><code>/chatclear</code></td><td>/cl</td><td>essentials.chat.clear</td><td>Clear chat</td></tr><tr><td><code>/chatdisable</code></td><td>/cd</td><td>essentials.chat.disable</td><td>Disable chat</td></tr><tr><td><code>/chatenable</code></td><td>/ce</td><td>essentials.chat.enable</td><td>Enable chat</td></tr><tr><td><code>/chathistory &#x3C;player> [&#x3C;page>]</code></td><td>/ct</td><td>essentials.chat.history</td><td>Show player's chat messages</td></tr><tr><td><code>/clearinventory [&#x3C;player>]</code></td><td>/clear, /ci</td><td>essentials.clearinventory</td><td>Clear player's inventory</td></tr><tr><td><code>/compact &#x3C;type></code></td><td>/blocks, /condense</td><td>essentials.compact</td><td>Compact material</td></tr><tr><td><code>/compactall</code></td><td>/blocksall, /condenseall</td><td>essentials.compact.all</td><td>Compact items in your inventories</td></tr><tr><td><code>/cooldown &#x3C;player></code></td><td></td><td>essentials.cooldown</td><td>Display a player’s cooldowns</td></tr><tr><td><code>/cooldown create &#x3C;player> &#x3C;key> &#x3C;duration></code></td><td></td><td>essentials.cooldown.create</td><td>Create a cooldown</td></tr><tr><td><code>/cooldown delete &#x3C;player> &#x3C;cooldown></code></td><td></td><td>essentials.cooldown.delete</td><td>Delete a cooldown</td></tr><tr><td><code>/craft</code></td><td></td><td>essentials.craft</td><td>Open workbench</td></tr><tr><td><code>/day [&#x3C;world>]</code></td><td></td><td>essentials.day</td><td>Set the day in your world</td></tr><tr><td><code>/delhome &#x3C;name></code></td><td>/hdelete, /hd</td><td>essentials.del.home</td><td>Delete a home</td></tr><tr><td><code>/delhomeconfirm &#x3C;name></code></td><td></td><td>essentials.del.home.confirm</td><td>Confirm the deletion of a home</td></tr><tr><td><code>/delwarp &#x3C;name></code></td><td>/wdelete</td><td>essentials.warp.del</td><td>Delete a warp</td></tr><tr><td><code>/economy</code></td><td>/eco</td><td>essentials.eco.use</td><td>Manages the server economies</td></tr><tr><td><code>/economy give &#x3C;economy> &#x3C;player> &#x3C;amount> [&#x3C;silent>] [&#x3C;reason>]</code></td><td></td><td>essentials.eco.give</td><td>Gives the specified player the specified amount of money</td></tr><tr><td><code>/economy give-random &#x3C;economy> &#x3C;player> &#x3C;min-amount> &#x3C;max-amount> [&#x3C;silent>] [&#x3C;reason>]</code></td><td>/gr</td><td>essentials.eco.give.random</td><td>Gives the specified player a random amount of money</td></tr><tr><td><code>/economy giveall &#x3C;economy> &#x3C;amount> [&#x3C;silent>] [&#x3C;reason>]</code></td><td></td><td>essentials.eco.give.all</td><td>Gives for all players the specified amount of money</td></tr><tr><td><code>/economy reset &#x3C;economy> &#x3C;player> [&#x3C;silent>] [&#x3C;reason>]</code></td><td></td><td>essentials.eco.reset</td><td>Resets the specified player's balance to the server's starting balance</td></tr><tr><td><code>/economy set &#x3C;economy> &#x3C;player> &#x3C;amount> [&#x3C;silent>] [&#x3C;reason>]</code></td><td></td><td>essentials.eco.set</td><td>Sets the specified player's balance to the specified amount of money</td></tr><tr><td><code>/economy show &#x3C;player></code></td><td>/s</td><td>essentials.eco.show</td><td>Show player money</td></tr><tr><td><code>/economy take &#x3C;economy> &#x3C;player> &#x3C;amount> [&#x3C;silent>] [&#x3C;reason>]</code></td><td></td><td>essentials.eco.take</td><td>Takes the specified amount of money from the specified player</td></tr><tr><td><code>/enchant &#x3C;enchantment> &#x3C;level> [&#x3C;player>]</code></td><td>/enchantment</td><td>essentials.enchant</td><td>Add enchant to an item</td></tr><tr><td><code>/enchanting</code></td><td></td><td>essentials.enchanting</td><td>Open enchantment table</td></tr><tr><td><code>/enderchest</code></td><td>/ec</td><td>essentials.enderchest</td><td>Set the day in your world</td></tr><tr><td><code>/endersee &#x3C;player></code></td><td>/ecsee</td><td>essentials.endersee</td><td>Open a player enderchest</td></tr><tr><td><code>/essversion</code></td><td>/ev</td><td></td><td>Open a trash can</td></tr><tr><td><code>/experience</code></td><td>/xp, /exp, /level, /levels</td><td>essentials.experience</td><td>Manage player experience</td></tr><tr><td><code>/experience grant &#x3C;player> &#x3C;amount> &#x3C;type></code></td><td></td><td>essentials.experience.grant</td><td>Grant experience to player</td></tr><tr><td><code>/experience grant-random &#x3C;player> &#x3C;amount> &#x3C;type></code></td><td></td><td>essentials.experience.grant</td><td>Grant experience to player</td></tr><tr><td><code>/experience query &#x3C;player> &#x3C;type></code></td><td></td><td>essentials.experience.query</td><td>Query player experience</td></tr><tr><td><code>/experience set &#x3C;player> &#x3C;amount> &#x3C;type></code></td><td></td><td>essentials.experience.set</td><td>Set player experience</td></tr><tr><td><code>/ext</code></td><td></td><td>essentials.ext</td><td>Stop burning</td></tr><tr><td><code>/feed [&#x3C;player>]</code></td><td>/eat</td><td>essentials.feed</td><td>Feed a player</td></tr><tr><td><code>/firstspawn [&#x3C;player>]</code></td><td></td><td>essentials.spawn.first</td><td>Teleport to first spawn</td></tr><tr><td><code>/fly [&#x3C;player>]</code></td><td></td><td>essentials.fly</td><td>Toggle flight</td></tr><tr><td><code>/fly add &#x3C;player> &#x3C;seconds></code></td><td></td><td>essentials.fly.add</td><td>Add the fly time</td></tr><tr><td><code>/fly get &#x3C;player></code></td><td></td><td>essentials.fly.get</td><td>Display player's fly info</td></tr><tr><td><code>/fly info</code></td><td></td><td>essentials.fly.info</td><td>Display your temporary fly info</td></tr><tr><td><code>/fly remove &#x3C;player> &#x3C;seconds></code></td><td></td><td>essentials.fly.remove</td><td>Remove the fly time</td></tr><tr><td><code>/fly set &#x3C;player> &#x3C;seconds></code></td><td></td><td>essentials.fly.set</td><td>Set the fly time</td></tr><tr><td><code>/freeze &#x3C;player></code></td><td></td><td>essentials.freeze</td><td>Freeze a player</td></tr><tr><td><code>/furnace</code></td><td>/burn</td><td>essentials.furnace</td><td>Smelt all the items in your hand</td></tr><tr><td><code>/gamemode &#x3C;gamemode> [&#x3C;player>]</code></td><td>/gm</td><td>essentials.gamemode</td><td>Change player gamemode</td></tr><tr><td><code>/give &#x3C;player> &#x3C;item> [&#x3C;amount>]</code></td><td></td><td>essentials.give</td><td>Give items</td></tr><tr><td><code>/giveall &#x3C;item> [&#x3C;amount>]</code></td><td></td><td>essentials.give.all</td><td>Give items to online players</td></tr><tr><td><code>/gma [&#x3C;player>]</code></td><td>/advent</td><td>essentials.gamemode.adventure</td><td>Change player gamemode to adventure</td></tr><tr><td><code>/gmc [&#x3C;player>]</code></td><td>/creat</td><td>essentials.gamemode.creative</td><td>Change player gamemode to creative</td></tr><tr><td><code>/gms [&#x3C;player>]</code></td><td>/survi</td><td>essentials.gamemode.survival</td><td>Change player gamemode to survival</td></tr><tr><td><code>/gmsp [&#x3C;player>]</code></td><td>/spec</td><td>essentials.gamemode.spectator</td><td>Change player gamemode to spectator</td></tr><tr><td><code>/god [&#x3C;player>]</code></td><td></td><td>essentials.god</td><td>Toggle god mode</td></tr><tr><td><code>/grindstone</code></td><td></td><td>essentials.grindstone</td><td>Open a grind stone</td></tr><tr><td><code>/hat</code></td><td></td><td>essentials.hat</td><td>Create yourself a pretty hat</td></tr><tr><td><code>/heal [&#x3C;player>]</code></td><td></td><td>essentials.heal</td><td>Heal a player</td></tr><tr><td><code>/hologram</code></td><td>/holo, /ho</td><td>essentials.hologram</td><td>Show hologram commands</td></tr><tr><td><code>/hologram addline &#x3C;name> &#x3C;text></code></td><td></td><td>essentials.hologram.add.line</td><td>Add a line to a hologram</td></tr><tr><td><code>/hologram background &#x3C;name> &#x3C;background></code></td><td></td><td>essentials.hologram.text.background</td><td>Change hologram text background</td></tr><tr><td><code>/hologram billboard &#x3C;name> &#x3C;billdboard></code></td><td></td><td>essentials.hologram.billboard</td><td>Change hologram billboard</td></tr><tr><td><code>/hologram block &#x3C;name> &#x3C;material></code></td><td></td><td>essentials.hologram.add.line</td><td>Add a line to a hologram</td></tr><tr><td><code>/hologram create &#x3C;type> &#x3C;name></code></td><td></td><td>essentials.hologram.create</td><td>Create a hologram</td></tr><tr><td><code>/hologram delete &#x3C;name></code></td><td></td><td>essentials.hologram.delete</td><td>Delete a hologram</td></tr><tr><td><code>/hologram insertafter &#x3C;name> &#x3C;line> &#x3C;text></code></td><td></td><td>essentials.hologram.insert.after.line</td><td>Insert a line after another</td></tr><tr><td><code>/hologram insertbefore &#x3C;name> &#x3C;line> &#x3C;text></code></td><td></td><td>essentials.hologram.insert.before.line</td><td>Insert a line before another</td></tr><tr><td><code>/hologram item &#x3C;name></code></td><td></td><td>essentials.hologram.add.line</td><td>Add a line to a hologram</td></tr><tr><td><code>/hologram list</code></td><td>/l, /?</td><td>essentials.hologram.list</td><td>Display hologram list</td></tr><tr><td><code>/hologram movehere &#x3C;name></code></td><td></td><td>essentials.hologram.move.here</td><td>Move a hologram to your position</td></tr><tr><td><code>/hologram moveto &#x3C;name> &#x3C;x> &#x3C;y> &#x3C;z></code></td><td></td><td>essentials.hologram.move.to</td><td>Move a hologram to a location</td></tr><tr><td><code>/hologram pitch &#x3C;name> &#x3C;pitch></code></td><td></td><td>essentials.hologram.yaw</td><td>Change hologram yaw</td></tr><tr><td><code>/hologram removeline &#x3C;name> &#x3C;line></code></td><td></td><td>essentials.hologram.remove.line</td><td>Remove a line from a hologram</td></tr><tr><td><code>/hologram scale &#x3C;name> &#x3C;x> [&#x3C;y>] [&#x3C;z>]</code></td><td></td><td>essentials.hologram.scale</td><td>Change hologram scale</td></tr><tr><td><code>/hologram seethrough &#x3C;name> &#x3C;boolean></code></td><td></td><td>essentials.hologram.see.through</td><td>Change hologram see through</td></tr><tr><td><code>/hologram setline &#x3C;name> &#x3C;line> &#x3C;text></code></td><td></td><td>essentials.hologram.set.line</td><td>Define a line of a hologram</td></tr><tr><td><code>/hologram shadowradius &#x3C;name> &#x3C;radius></code></td><td></td><td>essentials.hologram.shadow.radius</td><td>Change hologram shadow radius</td></tr><tr><td><code>/hologram shadowstrength &#x3C;name> &#x3C;strength></code></td><td></td><td>essentials.hologram.shadow.strength</td><td>Change hologram shadow strength</td></tr><tr><td><code>/hologram teleport &#x3C;name></code></td><td>/tp</td><td>essentials.hologram.teleport</td><td>Teleport to a hologram</td></tr><tr><td><code>/hologram textalignment &#x3C;name> &#x3C;text alignment></code></td><td></td><td>essentials.hologram.text.alignment</td><td>Change hologram text alignment</td></tr><tr><td><code>/hologram textshadow &#x3C;name> &#x3C;boolean></code></td><td></td><td>essentials.hologram.text.shadow</td><td>Change hologram text shadow</td></tr><tr><td><code>/hologram translation &#x3C;name> &#x3C;x> [&#x3C;y>] [&#x3C;z>]</code></td><td></td><td>essentials.hologram.translation</td><td>Change hologram translation</td></tr><tr><td><code>/hologram viewdistance &#x3C;name> &#x3C;distance></code></td><td></td><td>essentials.hologram.shadow.strength</td><td>Change hologram shadow strength</td></tr><tr><td><code>/hologram yaw &#x3C;name> &#x3C;yaw></code></td><td></td><td>essentials.hologram.yaw</td><td>Change hologram yaw</td></tr><tr><td><code>/home [&#x3C;name>]</code></td><td>/h, /homes</td><td>essentials.home</td><td>Teleport to a home</td></tr><tr><td><code>/home-list &#x3C;player> [&#x3C;name>]</code></td><td>/hlist</td><td>essentials.home.list</td><td>Teleport to a home</td></tr><tr><td><code>/invsee &#x3C;player></code></td><td></td><td>essentials.invsee</td><td>Open player's inventory</td></tr><tr><td><code>/itemlore</code></td><td>/ilore, /itemlore, /lore</td><td>essentials.item.lore</td><td>Shows its own subcommands</td></tr><tr><td><code>/itemlore add &#x3C;line></code></td><td></td><td>essentials.item.lore.add</td><td>Add a line to lore</td></tr><tr><td><code>/itemlore clear</code></td><td></td><td>essentials.item.lore.clear</td><td>Clear item lore</td></tr><tr><td><code>/itemlore set &#x3C;index> &#x3C;line></code></td><td></td><td>essentials.item.lore.set</td><td>Define a line of a lore</td></tr><tr><td><code>/itemname [&#x3C;name>]</code></td><td>/iname, /itemrename, /irename</td><td>essentials.item.name</td><td>Change the item name</td></tr><tr><td><code>/kick &#x3C;player> [&#x3C;reason>]</code></td><td></td><td>essentials.kick</td><td>Kick a player</td></tr><tr><td><code>/kickall [&#x3C;reason>]</code></td><td></td><td>essentials.kick.all</td><td>Kick all players</td></tr><tr><td><code>/killall &#x3C;type> [&#x3C;world>] [&#x3C;radius>]</code></td><td></td><td>essentials.kill.all</td><td>Kill entities</td></tr><tr><td><code>/kit [&#x3C;kit>]</code></td><td>/kits</td><td>essentials.kit</td><td>Get a kit</td></tr><tr><td><code>/kitcreate &#x3C;name> &#x3C;cooldown></code></td><td>/kcreate</td><td>essentials.kit.create</td><td>Create a new kit</td></tr><tr><td><code>/kitdelete [&#x3C;kit>]</code></td><td>/delete</td><td>essentials.kit.delete</td><td>Delete a kit</td></tr><tr><td><code>/kiteditor [&#x3C;kit>]</code></td><td>/keditor</td><td>essentials.kit.editor</td><td>Edit a kit</td></tr><tr><td><code>/kittycannon</code></td><td></td><td>essentials.kitty.cannon</td><td>Launch kitty, wtf you want to do that ? monster</td></tr><tr><td><code>/link &#x3C;code></code></td><td>/lier</td><td>essentials.discord.link</td><td>Link your discord account</td></tr><tr><td><code>/loom</code></td><td></td><td>essentials.loom</td><td>Open a loom</td></tr><tr><td><code>/mail</code></td><td>/mailbox, /mb</td><td>essentials.mail</td><td>Open mailbox</td></tr><tr><td><code>/mail clear &#x3C;player></code></td><td></td><td>essentials.mail.clear</td><td>Removes items from the player’s mailbox</td></tr><tr><td><code>/mail give &#x3C;player> &#x3C;item> [&#x3C;amount>]</code></td><td></td><td>essentials.mail.give</td><td>Give an item to player's mailbox</td></tr><tr><td><code>/mail giveall &#x3C;item> [&#x3C;amount>]</code></td><td></td><td>essentials.mail.giveall</td><td>Give items to players' mailboxes</td></tr><tr><td><code>/mail open &#x3C;player></code></td><td></td><td>essentials.mail.open</td><td>Open player's mailbox</td></tr><tr><td><code>/message &#x3C;player> &#x3C;message></code></td><td>/msg, /tell, /whisper, /m, /w</td><td>essentials.message</td><td>Send a private message to a player</td></tr><tr><td><code>/messagetoggle [&#x3C;player>]</code></td><td>/msgtoggle, /mtg</td><td>essentials.message.toggle</td><td>Toggle private message</td></tr><tr><td><code>/money [&#x3C;player>]</code></td><td>/balance</td><td>essentials.money</td><td>Show your money</td></tr><tr><td><code>/more</code></td><td></td><td>essentials.more</td><td>Get more items</td></tr><tr><td><code>/mute &#x3C;player> &#x3C;duration> [&#x3C;reason>]</code></td><td></td><td>essentials.mute</td><td>Mute a player</td></tr><tr><td><code>/near</code></td><td></td><td>essentials.near</td><td>Show players close to you</td></tr><tr><td><code>/night [&#x3C;world>]</code></td><td></td><td>essentials.night</td><td>Set the night in your world</td></tr><tr><td><code>/nightvision [&#x3C;player>]</code></td><td>/nv</td><td>essentials.nightvision</td><td>Enable or disable night vision</td></tr><tr><td><code>/pay &#x3C;player> &#x3C;amount> [&#x3C;economy>]</code></td><td></td><td>essentials.pay</td><td>Pays another player from your balance</td></tr><tr><td><code>/paytoggle [&#x3C;player>]</code></td><td></td><td>essentials.pay.toggle</td><td>Toggles payments towards the player</td></tr><tr><td><code>/player-time [&#x3C;time>]</code></td><td>/ptime</td><td>essentials.player.time</td><td>Change your time</td></tr><tr><td><code>/player-weather [&#x3C;weather>]</code></td><td>/pweather</td><td>essentials.player.weather</td><td>Change your weather</td></tr><tr><td><code>/player-worldedit</code></td><td>/pwe, /ess-worldedit, /eworldedit, /ew</td><td>essentials.worldedit.use</td><td></td></tr><tr><td><code>/player-worldedit option bossbar</code></td><td></td><td>essentials.worldedit.option.bossbar</td><td>Enable or disable the worldedit progress bar</td></tr><tr><td><code>/player-worldedit cancel</code></td><td></td><td>essentials.worldedit.cancel</td><td>Cancel current selection</td></tr><tr><td><code>/player-worldedit confirm</code></td><td></td><td>essentials.worldedit.confirm</td><td>Confirm worldedit action</td></tr><tr><td><code>/player-worldedit cut</code></td><td></td><td>essentials.worldedit.cut</td><td>Cut all blocks of your selection</td></tr><tr><td><code>/player-worldedit cyl &#x3C;material> &#x3C;radius> &#x3C;height> [&#x3C;filled>]</code></td><td></td><td>essentials.worldedit.cyl</td><td>Fill all blocks of your selection with a cylinder</td></tr><tr><td><code>/player-worldedit fill &#x3C;material></code></td><td></td><td>essentials.worldedit.fill</td><td>Fill all blocks of your selection</td></tr><tr><td><code>/player-worldedit give &#x3C;player> &#x3C;item></code></td><td></td><td>essentials.worldedit.give</td><td>Give a worldedit item to a player</td></tr><tr><td><code>/player-worldedit option inventory</code></td><td>/inv</td><td>essentials.worldedit.option.inventory</td><td>Use your inventory to take or add items</td></tr><tr><td><code>/player-worldedit option</code></td><td>/o</td><td>essentials.worldedit.option</td><td>Configure your use of worldedit</td></tr><tr><td><code>/player-worldedit pos1</code></td><td></td><td>essentials.worldedit.pos1</td><td>Set first position of the selection</td></tr><tr><td><code>/player-worldedit pos2</code></td><td></td><td>essentials.worldedit.pos2</td><td>Set second position of the selection</td></tr><tr><td><code>/player-worldedit set &#x3C;material></code></td><td></td><td>essentials.worldedit.set</td><td>Set all blocks of your selection</td></tr><tr><td><code>/player-worldedit sphere &#x3C;material> &#x3C;radius> [&#x3C;filled>]</code></td><td></td><td>essentials.worldedit.sphere</td><td>Set all blocks of your selection with a sphere</td></tr><tr><td><code>/player-worldedit stop</code></td><td></td><td>essentials.worldedit.stop</td><td>Stops the current session</td></tr><tr><td><code>/player-worldedit walls &#x3C;material></code></td><td></td><td>essentials.worldedit.walls</td><td>Set all blocks of your selection with walls</td></tr><tr><td><code>/playtime</code></td><td></td><td>essentials.play.time</td><td>Show player's playtime</td></tr><tr><td><code>/powertools [&#x3C;command>]</code></td><td>/pt</td><td>essentials.power.tools</td><td>Add command to your items</td></tr><tr><td><code>/powertools-toggle [&#x3C;player>]</code></td><td>/pt-toggle</td><td>essentials.power.tools.toggle</td><td>Toggle power tools</td></tr><tr><td><code>/pub &#x3C;message></code></td><td></td><td>essentials.pub</td><td>Send a message highlighted in the chat</td></tr><tr><td><code>/repair</code></td><td>/fix</td><td>essentials.repair</td><td>Fix the item in your hand</td></tr><tr><td><code>/repairall [&#x3C;player>]</code></td><td>/fixall</td><td>essentials.repair.all</td><td>Repair all items in your inventory</td></tr><tr><td><code>/reply &#x3C;message></code></td><td>/r</td><td>essentials.reply</td><td>Reply to a private message</td></tr><tr><td><code>/rules</code></td><td>/?, /help, /aide</td><td>essentials.rules</td><td>Read server rules</td></tr><tr><td><code>/sanction &#x3C;player></code></td><td>/sc</td><td>essentials.sanction</td><td>Open sanction inventory</td></tr><tr><td><code>/sb</code></td><td></td><td>essentials.scoreboard</td><td>Enable/Disable scoreboard</td></tr><tr><td><code>/seen &#x3C;player></code></td><td>/whois</td><td>essentials.seen</td><td>Show player informations</td></tr><tr><td><code>/seenip &#x3C;ip></code></td><td>/whoisip</td><td>essentials.seen.ip</td><td>Show players who have the same IP</td></tr><tr><td><code>/setfirstspawn</code></td><td></td><td>essentials.set.first.spawn</td><td>Set server first spawn</td></tr><tr><td><code>/sethome &#x3C;name></code></td><td>/hcreate, /hc</td><td>essentials.set.home</td><td>Create a home</td></tr><tr><td><code>/sethomeconfirm &#x3C;name></code></td><td></td><td>essentials.set.home.confirm</td><td>Confirm the creation of a home</td></tr><tr><td><code>/setspawn</code></td><td></td><td>essentials.set.spawn</td><td>Set server spawn</td></tr><tr><td><code>/setwarp &#x3C;name> [&#x3C;overwrite>]</code></td><td>/wcreate</td><td>essentials.warp.set</td><td>Create a warp</td></tr><tr><td><code>/showitem &#x3C;code></code></td><td></td><td>essentials.show.item</td><td>Show player's item</td></tr><tr><td><code>/showkit &#x3C;kit></code></td><td></td><td>essentials.kit.show</td><td>Show a kit</td></tr><tr><td><code>/skull &#x3C;player></code></td><td></td><td>essentials.skull</td><td>Gets the head of a player</td></tr><tr><td><code>/smithingtable</code></td><td></td><td>essentials.smithingtable</td><td>Open a smithing table</td></tr><tr><td><code>/socialspy [&#x3C;player>]</code></td><td></td><td>essentials.socialspy</td><td>Display private messages of players</td></tr><tr><td><code>/spawn [&#x3C;player>]</code></td><td></td><td>essentials.spawn</td><td>Teleport to spawn</td></tr><tr><td><code>/speed &#x3C;speed> [&#x3C;player>]</code></td><td></td><td>essentials.speed</td><td>Change player speed</td></tr><tr><td><code>/step &#x3C;player> &#x3C;step></code></td><td></td><td>essentials.step</td><td>Save a step</td></tr><tr><td><code>/stonecutter</code></td><td></td><td>essentials.stonecutter</td><td>Open a stone cutter</td></tr><tr><td><code>/sudo &#x3C;player> &#x3C;cmg/msg> &#x3C;content></code></td><td>/su</td><td>essentials.sudo</td><td>Force a player to execute a command</td></tr><tr><td><code>/suicide</code></td><td></td><td>essentials.suicide</td><td>Kill yourself</td></tr><tr><td><code>/sun [&#x3C;world>]</code></td><td></td><td>essentials.sun</td><td>Set the sun in your world</td></tr><tr><td><code>/top</code></td><td></td><td>essentials.top</td><td>Teleporting to top</td></tr><tr><td><code>/tp &#x3C;player> [&#x3C;x>] [&#x3C;y>] [&#x3C;z>] [&#x3C;yaw>] [&#x3C;pitch>]</code></td><td></td><td>essentials.tp</td><td>Teleport to a player</td></tr><tr><td><code>/tpa &#x3C;player></code></td><td></td><td>essentials.tpa</td><td>Teleport to a player</td></tr><tr><td><code>/tpacancel &#x3C;player></code></td><td></td><td>essentials.tpa.cancel</td><td>Cancel a teleportation request</td></tr><tr><td><code>/tpaccept</code></td><td>/tpyes</td><td>essentials.tpa.accept</td><td>Accept a teleportation request</td></tr><tr><td><code>/tpahere &#x3C;player></code></td><td></td><td>essentials.tpa.here</td><td>Teleport a player to you</td></tr><tr><td><code>/tpall</code></td><td></td><td>essentials.tp.all</td><td>Teleport all players to your position</td></tr><tr><td><code>/tpdeny</code></td><td>/tpno</td><td>essentials.tpa.deny</td><td>Denied a teleportation request</td></tr><tr><td><code>/tphere &#x3C;player></code></td><td>/s</td><td>essentials.tp.here</td><td>Teleport a player to your location</td></tr><tr><td><code>/tpr</code></td><td>/rtp</td><td>essentials.tp.random</td><td>Random Teleport in the world</td></tr><tr><td><code>/trash</code></td><td>/poubelle</td><td>essentials.trash</td><td>Open a trash can</td></tr><tr><td><code>/unban &#x3C;player> [&#x3C;reason>]</code></td><td></td><td>essentials.un.ban</td><td>Unmute a player</td></tr><tr><td><code>/unlink</code></td><td>/delier</td><td>essentials.discord.unlink</td><td>Unlink your discord account</td></tr><tr><td><code>/unmute &#x3C;player> [&#x3C;reason>]</code></td><td></td><td>essentials.un.mute</td><td>Unmute a player</td></tr><tr><td><code>/vault [&#x3C;vault id>]</code></td><td>/sac, /bag, /b, /coffre, /chest</td><td>essentials.vault.use</td><td></td></tr><tr><td><code>/vault add &#x3C;player> &#x3C;slot></code></td><td></td><td>essentials.vault.add.slot</td><td>Add slot to player's vault</td></tr><tr><td><code>/vault give &#x3C;player> &#x3C;item> [&#x3C;amount>]</code></td><td></td><td>essentials.vault.give</td><td>Give items to player's vault</td></tr><tr><td><code>/vault set &#x3C;player> &#x3C;slot></code></td><td></td><td>essentials.vault.set.slot</td><td>Set slot to player's vault</td></tr><tr><td><code>/vote</code></td><td></td><td>essentials.vote.use</td><td>Show information on how to vote</td></tr><tr><td><code>/vote add &#x3C;player> &#x3C;site> [&#x3C;silent>]</code></td><td></td><td>essentials.vote.add</td><td>Add votes to a player</td></tr><tr><td><code>/voteparty</code></td><td>/vp</td><td>essentials.voteparty.use</td><td>Show the vote party</td></tr><tr><td><code>/voteparty add &#x3C;amount></code></td><td></td><td>essentials.voteparty.add</td><td>Add votes in the vote party</td></tr><tr><td><code>/voteparty remove &#x3C;amount></code></td><td></td><td>essentials.voteparty.remove</td><td>Remove votes in the vote party</td></tr><tr><td><code>/voteparty set &#x3C;amount></code></td><td></td><td>essentials.voteparty.set</td><td>Set the number of votes in the vote party</td></tr><tr><td><code>/warp [&#x3C;name>]</code></td><td>/w</td><td>essentials.warp</td><td>Teleport to a warp</td></tr><tr><td><code>/warps</code></td><td>/wlist</td><td>essentials.warps</td><td>Show warp list</td></tr><tr><td><code>/worldtp &#x3C;world> [&#x3C;player>]</code></td><td>/wtp</td><td>essentials.tp.world</td><td>Teleport to another world</td></tr><tr><td><code>/zessentials</code></td><td>/ess</td><td>essentials.use</td><td></td></tr><tr><td><code>/zessentials clear-random-word</code></td><td></td><td>essentials.clear.random.word</td><td>Reload configuration files</td></tr><tr><td><code>/zessentials convert [&#x3C;plugin>]</code></td><td>/conv, /c</td><td>essentials.convert</td><td></td></tr><tr><td><code>/zessentials delete-world [&#x3C;world>]</code></td><td></td><td>essentials.delete.world</td><td>Removes data being linked to a world</td></tr><tr><td><code>/zessentials reload [&#x3C;module>]</code></td><td>/rl</td><td>essentials.reload</td><td>Reload configuration files</td></tr><tr><td><code>/zessentials test &#x3C;width> &#x3C;height> &#x3C;depth> &#x3C;alpha> &#x3C;r> &#x3C;g> &#x3C;b></code></td><td></td><td>essentials.reload</td><td>Reload configuration files</td></tr></tbody></table>


# Placeholders

## Placeholders

<table data-full-width="true"><thead><tr><th>Placeholder</th><th>Description</th></tr></thead><tbody><tr><td><code>%zessentials_armor_name_&#x3C;armor slot>%</code></td><td>Returns the name of the player’s armor, without the color</td></tr><tr><td><code>%zessentials_can_repair_all%</code></td><td>Returns true if the player can repair all of their items</td></tr><tr><td><code>%zessentials_center_&#x3C;first text>_&#x3C;second text>_&#x3C;text length>%</code></td><td>Transforms two placeholders to add space between them. This allows to create texts that will have the same space between the name of the player and his score for example.</td></tr><tr><td><code>%zessentials_count_repair_all%</code></td><td>Returns the number of items that the player can repair</td></tr><tr><td><code>%zessentials_economy_baltop_amount_&#x3C;economy name>_&#x3C;position>%</code></td><td>Returns the player's economy amount for the given economy and position</td></tr><tr><td><code>%zessentials_economy_baltop_formatted_amount_&#x3C;economy name>_&#x3C;position>%</code></td><td>Returns the player's economy formatted amount for the given economy and position</td></tr><tr><td><code>%zessentials_economy_baltop_name_&#x3C;economy name>_&#x3C;position>%</code></td><td>Returns the player's name for the given economy and position</td></tr><tr><td><code>%zessentials_economy_baltop_uuid_&#x3C;economy name>_&#x3C;position>%</code></td><td>Returns the player's uuid for the given economy and position</td></tr><tr><td><code>%zessentials_home_count%</code></td><td>Returns the number of homes</td></tr><tr><td><code>%zessentials_home_delete%</code></td><td>Returns the name of the home that the player wants to delete</td></tr><tr><td><code>%zessentials_home_exist_&#x3C;home name>%</code></td><td>Returns true if home exists, otherwise false</td></tr><tr><td><code>%zessentials_home_max%</code></td><td>Returns the number of max homes</td></tr><tr><td><code>%zessentials_iteminhand_amount%</code></td><td>Returns the amount of items in the main hand</td></tr><tr><td><code>%zessentials_iteminhand_custommodeldata%</code></td><td>Returns the custom model data of the item in hand</td></tr><tr><td><code>%zessentials_iteminhand_displayname%</code></td><td>Returns the display name of the item in hand</td></tr><tr><td><code>%zessentials_iteminhand_durability%</code></td><td>Returns the amount of durability left of the item in hand</td></tr><tr><td><code>%zessentials_iteminhand_enchantmentlevel_&#x3C;enchantment>%</code></td><td>Returns the level of a specific enchantment on the item in hand</td></tr><tr><td><code>%zessentials_iteminhand_enchantments%</code></td><td>Returns the enchantments of the item in hand with their level</td></tr><tr><td><code>%zessentials_iteminhand_fire_resistant%</code></td><td>Returns true if the item in hand is fire resistant</td></tr><tr><td><code>%zessentials_iteminhand_glint%</code></td><td>Returns true if the item in hand has the glint enchantment</td></tr><tr><td><code>%zessentials_iteminhand_hasenchantment_&#x3C;enchantment>%</code></td><td>Returns true if the item in hand has at least one enchantment</td></tr><tr><td><code>%zessentials_iteminhand_hasitemflag_&#x3C;item flag>%</code></td><td>Returns true if the item in hand has a specific itemflag</td></tr><tr><td><code>%zessentials_iteminhand_hide_tooltip%</code></td><td>Returns true if the item in hand has its tooltip hidden</td></tr><tr><td><code>%zessentials_iteminhand_hide_unbreakable%</code></td><td>Returns true if the tooltip unbreakable of the item in hand is hidden</td></tr><tr><td><code>%zessentials_iteminhand_itemflags%</code></td><td>Returns the itemflags of the item in hand</td></tr><tr><td><code>%zessentials_iteminhand_lore%</code></td><td>Returns the lore of the item in hand</td></tr><tr><td><code>%zessentials_iteminhand_maxdurability%</code></td><td>Returns the maximum durability of the item in hand</td></tr><tr><td><code>%zessentials_iteminhand_maxstacksize%</code></td><td>Returns the max stack size of the item in hand</td></tr><tr><td><code>%zessentials_iteminhand_rarity%</code></td><td>Returns the rarity of the item in hand</td></tr><tr><td><code>%zessentials_iteminhand_realname%</code></td><td>Returns the formatted material name of the item in hand</td></tr><tr><td><code>%zessentials_iteminhand_repaircost%</code></td><td>Returns the repair cost of the item in hand</td></tr><tr><td><code>%zessentials_iteminhand_type%</code></td><td>Returns the material name of the item in hand</td></tr><tr><td><code>%zessentials_iteminhand_unbreakable%</code></td><td>Returns true if the item in hand is unbreakable</td></tr><tr><td><code>%zessentials_last_random_number_&#x3C;player name>%</code></td><td>Returns the last random number generated for the player within the last hour</td></tr><tr><td><code>%zessentials_last_random_player%</code></td><td>Returns the last random player name online</td></tr><tr><td><code>%zessentials_progressbar_&#x3C;current>_&#x3C;max>_&#x3C;size>_&#x3C;symbol>_&#x3C;completedColor>_&#x3C;notCompletedColor>%</code></td><td>Allows to transform two numbers into a progressbar, you can use placeholders</td></tr><tr><td><code>%zessentials_random_number_&#x3C;from>_&#x3C;to>%</code></td><td>Returns a random number between the two given arguments</td></tr><tr><td><code>%zessentials_random_player%</code></td><td>Returns a random player name online</td></tr><tr><td><code>%zessentials_random_word%</code></td><td>Generate a random word for the player, a word can only be generated once, you must delete the list of words generated with the command/ess clear-random-word</td></tr><tr><td><code>%zessentials_replace_&#x3C;placeholder>%</code></td><td>Replace the value of one placeholder with another</td></tr><tr><td><code>%zessentials_server_name%</code></td><td>Returns the server name</td></tr><tr><td><code>%zessentials_server_uptime%</code></td><td>Returns the server update in format day, hour, minutes and seconds</td></tr><tr><td><code>%zessentials_server_uptime_in_second%</code></td><td>Returns the server update in second</td></tr><tr><td><code>%zessentials_user_balance_&#x3C;economy>%</code></td><td>Returns the number for a given economy</td></tr><tr><td><code>%zessentials_user_biome%</code></td><td>Returns the biome of the player</td></tr><tr><td><code>%zessentials_user_block_x%</code></td><td>Returns the block x coordinate of the player</td></tr><tr><td><code>%zessentials_user_block_y%</code></td><td>Returns the block y coordinate of the player</td></tr><tr><td><code>%zessentials_user_block_z%</code></td><td>Returns the block z coordinate of the player</td></tr><tr><td><code>%zessentials_user_cooldown_formatted_&#x3C;cooldown key>%</code></td><td>Returns the remaining formatted time for the cooldown</td></tr><tr><td><code>%zessentials_user_cooldown_second_&#x3C;cooldown key>%</code></td><td>Returns the remaining time in seconds for the cooldown</td></tr><tr><td><code>%zessentials_user_current_session_playtime%</code></td><td>Returns the player’s playing time of the current session</td></tr><tr><td><code>%zessentials_user_current_session_playtime_formatted%</code></td><td>Returns the player’s playing time of the current session formatted</td></tr><tr><td><code>%zessentials_user_fly_seconds%</code></td><td>Returns the number of seconds for temporary fly</td></tr><tr><td><code>%zessentials_user_formatted_balance_&#x3C;economy>%</code></td><td>Returns the formatted number for a given economy</td></tr><tr><td><code>%zessentials_user_has_discord_linked%</code></td><td>Returns true if the player has a discord linked</td></tr><tr><td><code>%zessentials_user_has_kit_&#x3C;kit name>%</code></td><td>Returns true or false if the player has the kit</td></tr><tr><td><code>%zessentials_user_is_cooldown_&#x3C;cooldown key>%</code></td><td>Returns true if the key is a cooldown</td></tr><tr><td><code>%zessentials_user_is_god%</code></td><td>Returns the true if user is in god mode</td></tr><tr><td><code>%zessentials_user_is_mute%</code></td><td>Returns true if the player's is mute</td></tr><tr><td><code>%zessentials_user_kit_is_available_&#x3C;kit name>%</code></td><td>Returns true if the player can get the kit</td></tr><tr><td><code>%zessentials_user_kit_time_until_available_&#x3C;kit name>%</code></td><td>Returns the time before the player can use the kit again</td></tr><tr><td><code>%zessentials_user_mailbox_items%</code></td><td>Returns the number of items in the mailbox</td></tr><tr><td><code>%zessentials_user_mute_formatted%</code></td><td>Returns the remaining formatted time for the mute</td></tr><tr><td><code>%zessentials_user_mute_seconds%</code></td><td>Returns the remaining time in seconds for the mute</td></tr><tr><td><code>%zessentials_user_option_&#x3C;option name>%</code></td><td>Returns the value for an option</td></tr><tr><td><code>%zessentials_user_playtime%</code></td><td>Returns the player’s playing time</td></tr><tr><td><code>%zessentials_user_playtime_formatted%</code></td><td>Returns the player’s playing time formatted</td></tr><tr><td><code>%zessentials_user_position_&#x3C;economy name>%</code></td><td>Returns the player's position in baltop for a given economy</td></tr><tr><td><code>%zessentials_user_target_is_ban%</code></td><td>Returns true if the target player is banned, otherwise false</td></tr><tr><td><code>%zessentials_user_target_is_mute%</code></td><td>Returns true if the target player is muted, otherwise false</td></tr><tr><td><code>%zessentials_user_target_pay_amount%</code></td><td>Returns the number formatted for the /pay command</td></tr><tr><td><code>%zessentials_user_target_player_name%</code></td><td>Returns the name of the target player</td></tr><tr><td><code>%zessentials_user_world%</code></td><td>Returns the name of the world the player is currently in</td></tr><tr><td><code>%zessentials_user_worldedit_option_bossbar%</code></td><td>Returns true or false is the bossbar option is active</td></tr><tr><td><code>%zessentials_user_worldedit_option_inventory%</code></td><td>Returns true or false is the inventory option is active</td></tr><tr><td><code>%zessentials_user_x%</code></td><td>Returns the x coordinate of the player</td></tr><tr><td><code>%zessentials_user_y%</code></td><td>Returns the y coordinate of the player</td></tr><tr><td><code>%zessentials_user_z%</code></td><td>Returns the z coordinate of the player</td></tr><tr><td><code>%zessentials_vote_amount%</code></td><td>Returns the player vote amount</td></tr><tr><td><code>%zessentials_vote_site_cooldown_&#x3C;site>%</code></td><td>Returns the time remaining before voting</td></tr><tr><td><code>%zessentials_voteparty_amount%</code></td><td>Returns the progress of the vote party</td></tr><tr><td><code>%zessentials_voteparty_objective%</code></td><td>Returns the objective of the vote party</td></tr></tbody></table>

## Special Placeholders

### Center

This placeholder allows you to add space between two texts to align them. The result will look like this:

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2F8ARnPrDcpJDrMbOpmByG%2Fholo2.png?alt=media&amp;token=f01137de-9bd8-42a4-a466-35b997d5ebc5" alt="" width="295"><figcaption></figcaption></figure>

The placeholder will generate dots (`.`) between the player’s nickname and their argument.

{% hint style="danger" %}
**Attention:** The syntax of this placeholder is different from the others. Please follow the explanations carefully!
{% endhint %}

To understand how the placeholder works, let’s use the hologram example:

`%zessentials_center_{zessentials_economy_baltop_name_money_1}&7_{zessentials_economy_baltop_formatted_amount_money_1}_120%`

This placeholder consists of three elements: the <mark style="color:red;">initial text</mark>, the <mark style="color:red;">ending text</mark>, and the <mark style="color:red;">total text size</mark>. The placeholder will fill the remaining space to achieve the desired size.

Each element must be separated by an underscore (`_`).

You can use other placeholders within this structure. They must be enclosed in `{` and `}`. For example, `{zessentials_economy_baltop_name_money_1}` will become `%zessentials_economy_baltop_name_money_1%`.


# Permissions

<table data-full-width="true"><thead><tr><th>Permission</th><th>Description</th></tr></thead><tbody><tr><td><code>essentials.afk.bypass</code></td><td>Allows to not be affected by the anti-AFK</td></tr><tr><td><code>essentials.anvil</code></td><td>Open an anvil</td></tr><tr><td><code>essentials.back</code></td><td>Teleport to your previous location</td></tr><tr><td><code>essentials.back.death</code></td><td>Grant this permission to allow players to use the /back command to return to their death location.</td></tr><tr><td><code>essentials.balance.top</code></td><td>Show baltop</td></tr><tr><td><code>essentials.balance.top.refresh</code></td><td>Refresh baltop</td></tr><tr><td><code>essentials.ban</code></td><td>Ban a player</td></tr><tr><td><code>essentials.ban.notify</code></td><td>Allows you to receive notifications when a player is banned</td></tr><tr><td><code>essentials.bottom</code></td><td>Teleporting to bottom</td></tr><tr><td><code>essentials.bypass.cooldown</code></td><td>Allows not to have a cooldown on all commands</td></tr><tr><td><code>essentials.cartographytable</code></td><td>Open a cartography table</td></tr><tr><td><code>essentials.chat.broadcast</code></td><td>Broadcast a message</td></tr><tr><td><code>essentials.chat.bypass.alphanumeric</code></td><td>Allows not to be affected by the limitation of characters</td></tr><tr><td><code>essentials.chat.bypass.caps</code></td><td>Allows you to send a message even if it contains uppercase letters</td></tr><tr><td><code>essentials.chat.bypass.disable</code></td><td>Allows to send a message in the chat even if it is disabled</td></tr><tr><td><code>essentials.chat.bypass.dynamic.cooldown</code></td><td>Allows not to be affected by dynamic cooldown</td></tr><tr><td><code>essentials.chat.bypass.flood</code></td><td>Allows to send a message even if it is floods</td></tr><tr><td><code>essentials.chat.bypass.link</code></td><td>Allows to send a message with a link</td></tr><tr><td><code>essentials.chat.bypass.same.message</code></td><td>Allows to send a message even if it is the same as the previous one</td></tr><tr><td><code>essentials.chat.clear</code></td><td>Clear chat</td></tr><tr><td><code>essentials.chat.click</code></td><td>Allows you to use the mini message format</td></tr><tr><td><code>essentials.chat.color</code></td><td>Allows you to use the color (minecraft color and hex color) mini message format</td></tr><tr><td><code>essentials.chat.decoration</code></td><td>Allows you to use the decoration (, , , and ) mini message format</td></tr><tr><td><code>essentials.chat.disable</code></td><td>Disable chat</td></tr><tr><td><code>essentials.chat.enable</code></td><td>Enable chat</td></tr><tr><td><code>essentials.chat.font</code></td><td>Allows you to use the mini message format</td></tr><tr><td><code>essentials.chat.gradient</code></td><td>Allows you to use the &#x3C;gradient mini message format</td></tr><tr><td><code>essentials.chat.history</code></td><td>Show player's chat messages</td></tr><tr><td><code>essentials.chat.hover</code></td><td>Allows you to use the mini message format</td></tr><tr><td><code>essentials.chat.keybind</code></td><td>Allows you to use the mini message format</td></tr><tr><td><code>essentials.chat.link</code></td><td>Allows to transform the links in the chat into clickable link</td></tr><tr><td><code>essentials.chat.moderator</code></td><td>Allows you to receive messages from players with the vision of a moderator</td></tr><tr><td><code>essentials.chat.newline</code></td><td>Allows you to use the mini message format</td></tr><tr><td><code>essentials.chat.rainbow</code></td><td>Allows you to use the mini message format</td></tr><tr><td><code>essentials.chat.reset</code></td><td>Allows you to use the mini message format</td></tr><tr><td><code>essentials.clear.random.word</code></td><td>Reload configuration files</td></tr><tr><td><code>essentials.clearinventory</code></td><td>Clear player's inventory</td></tr><tr><td><code>essentials.clearinventory.other</code></td><td>Allows to clear the inventory of another player</td></tr><tr><td><code>essentials.compact</code></td><td>Compact material</td></tr><tr><td><code>essentials.compact.all</code></td><td>Compact items in your inventories</td></tr><tr><td><code>essentials.convert</code></td><td></td></tr><tr><td><code>essentials.cooldown</code></td><td>Display a player’s cooldowns</td></tr><tr><td><code>essentials.cooldown.command.bypass</code></td><td></td></tr><tr><td><code>essentials.cooldown.create</code></td><td>Create a cooldown</td></tr><tr><td><code>essentials.cooldown.delete</code></td><td>Delete a cooldown</td></tr><tr><td><code>essentials.craft</code></td><td>Open workbench</td></tr><tr><td><code>essentials.day</code></td><td>Set the day in your world</td></tr><tr><td><code>essentials.del.home</code></td><td>Delete a home</td></tr><tr><td><code>essentials.del.home.confirm</code></td><td>Confirm the deletion of a home</td></tr><tr><td><code>essentials.delete.world</code></td><td>Removes data being linked to a world</td></tr><tr><td><code>essentials.discord.link</code></td><td>Link your discord account</td></tr><tr><td><code>essentials.discord.unlink</code></td><td>Unlink your discord account</td></tr><tr><td><code>essentials.eco.give</code></td><td>Gives the specified player the specified amount of money</td></tr><tr><td><code>essentials.eco.give.all</code></td><td>Gives for all players the specified amount of money</td></tr><tr><td><code>essentials.eco.give.random</code></td><td>Gives the specified player a random amount of money</td></tr><tr><td><code>essentials.eco.reset</code></td><td>Resets the specified player's balance to the server's starting balance</td></tr><tr><td><code>essentials.eco.set</code></td><td>Sets the specified player's balance to the specified amount of money</td></tr><tr><td><code>essentials.eco.show</code></td><td>Show player money</td></tr><tr><td><code>essentials.eco.take</code></td><td>Takes the specified amount of money from the specified player</td></tr><tr><td><code>essentials.eco.use</code></td><td>Manages the server economies</td></tr><tr><td><code>essentials.enchant</code></td><td>Add enchant to an item</td></tr><tr><td><code>essentials.enchanting</code></td><td>Open enchantment table</td></tr><tr><td><code>essentials.enderchest</code></td><td>Set the day in your world</td></tr><tr><td><code>essentials.endersee</code></td><td>Open a player enderchest</td></tr><tr><td><code>essentials.endersee.offline</code></td><td>Allows you to see the enderchest of an offline player</td></tr><tr><td><code>essentials.experience</code></td><td>Manage player experience</td></tr><tr><td><code>essentials.experience.grant</code></td><td>Grant experience to player</td></tr><tr><td><code>essentials.experience.query</code></td><td>Query player experience</td></tr><tr><td><code>essentials.experience.set</code></td><td>Set player experience</td></tr><tr><td><code>essentials.ext</code></td><td>Stop burning</td></tr><tr><td><code>essentials.feed</code></td><td>Feed a player</td></tr><tr><td><code>essentials.feed.other</code></td><td>Allows to feed another player</td></tr><tr><td><code>essentials.fly</code></td><td>Toggle flight</td></tr><tr><td><code>essentials.fly.add</code></td><td>Add the fly time</td></tr><tr><td><code>essentials.fly.bypass.world</code></td><td>Allows to activate fly even in the world where the fly is disabled</td></tr><tr><td><code>essentials.fly.get</code></td><td>Display player's fly info</td></tr><tr><td><code>essentials.fly.info</code></td><td>Display your temporary fly info</td></tr><tr><td><code>essentials.fly.other</code></td><td>Allows to activate the fly for another player</td></tr><tr><td><code>essentials.fly.remove</code></td><td>Remove the fly time</td></tr><tr><td><code>essentials.fly.safelogin</code></td><td>Players with this permission will automatically enter fly mode upon logging in if they are suspended in the air.</td></tr><tr><td><code>essentials.fly.set</code></td><td>Set the fly time</td></tr><tr><td><code>essentials.fly.unlimited</code></td><td>Allows to have the fly unlimited</td></tr><tr><td><code>essentials.freeze</code></td><td>Freeze a player</td></tr><tr><td><code>essentials.furnace</code></td><td>Smelt all the items in your hand</td></tr><tr><td><code>essentials.gamemode</code></td><td>Change player gamemode</td></tr><tr><td><code>essentials.gamemode.adventure</code></td><td>Change player gamemode to adventure</td></tr><tr><td><code>essentials.gamemode.creative</code></td><td>Change player gamemode to creative</td></tr><tr><td><code>essentials.gamemode.other</code></td><td></td></tr><tr><td><code>essentials.gamemode.spectator</code></td><td>Change player gamemode to spectator</td></tr><tr><td><code>essentials.gamemode.survival</code></td><td>Change player gamemode to survival</td></tr><tr><td><code>essentials.give</code></td><td>Give items</td></tr><tr><td><code>essentials.give.all</code></td><td>Give items to online players</td></tr><tr><td><code>essentials.god</code></td><td>Toggle god mode</td></tr><tr><td><code>essentials.grindstone</code></td><td>Open a grind stone</td></tr><tr><td><code>essentials.hat</code></td><td>Create yourself a pretty hat</td></tr><tr><td><code>essentials.heal</code></td><td>Heal a player</td></tr><tr><td><code>essentials.heal.other</code></td><td>Allows to heal another player</td></tr><tr><td><code>essentials.hologram</code></td><td>Show hologram commands</td></tr><tr><td><code>essentials.hologram.add.line</code></td><td>Add a line to a hologram</td></tr><tr><td><code>essentials.hologram.billboard</code></td><td>Change hologram billboard</td></tr><tr><td><code>essentials.hologram.create</code></td><td>Create a hologram</td></tr><tr><td><code>essentials.hologram.delete</code></td><td>Delete a hologram</td></tr><tr><td><code>essentials.hologram.insert.after.line</code></td><td>Insert a line after another</td></tr><tr><td><code>essentials.hologram.insert.before.line</code></td><td>Insert a line before another</td></tr><tr><td><code>essentials.hologram.list</code></td><td>Display hologram list</td></tr><tr><td><code>essentials.hologram.move.here</code></td><td>Move a hologram to your position</td></tr><tr><td><code>essentials.hologram.move.to</code></td><td>Move a hologram to a location</td></tr><tr><td><code>essentials.hologram.remove.line</code></td><td>Remove a line from a hologram</td></tr><tr><td><code>essentials.hologram.scale</code></td><td>Change hologram scale</td></tr><tr><td><code>essentials.hologram.see.through</code></td><td>Change hologram see through</td></tr><tr><td><code>essentials.hologram.set.line</code></td><td>Define a line of a hologram</td></tr><tr><td><code>essentials.hologram.shadow.radius</code></td><td>Change hologram shadow radius</td></tr><tr><td><code>essentials.hologram.shadow.strength</code></td><td>Change hologram shadow strength</td></tr><tr><td><code>essentials.hologram.teleport</code></td><td>Teleport to a hologram</td></tr><tr><td><code>essentials.hologram.text.alignment</code></td><td>Change hologram text alignment</td></tr><tr><td><code>essentials.hologram.text.background</code></td><td>Change hologram text background</td></tr><tr><td><code>essentials.hologram.text.shadow</code></td><td>Change hologram text shadow</td></tr><tr><td><code>essentials.hologram.translation</code></td><td>Change hologram translation</td></tr><tr><td><code>essentials.hologram.yaw</code></td><td>Change hologram yaw</td></tr><tr><td><code>essentials.home</code></td><td>Teleport to a home</td></tr><tr><td><code>essentials.home.list</code></td><td>Teleport to a home</td></tr><tr><td><code>essentials.home.other</code></td><td>Allows to teleport to another player’s home</td></tr><tr><td><code>essentials.invsee</code></td><td>Open player's inventory</td></tr><tr><td><code>essentials.invsee.interact</code></td><td>Allows to interact with a player’s inventory</td></tr><tr><td><code>essentials.invsee.offline</code></td><td>Allows to listen to the inventory of an offline player</td></tr><tr><td><code>essentials.item.lore</code></td><td>Shows its own subcommands</td></tr><tr><td><code>essentials.item.lore.add</code></td><td>Add a line to lore</td></tr><tr><td><code>essentials.item.lore.clear</code></td><td>Clear item lore</td></tr><tr><td><code>essentials.item.lore.set</code></td><td>Define a line of a lore</td></tr><tr><td><code>essentials.item.name</code></td><td>Change the item name</td></tr><tr><td><code>essentials.kick</code></td><td>Kick a player</td></tr><tr><td><code>essentials.kick.all</code></td><td>Kick all players</td></tr><tr><td><code>essentials.kick.bypass.all</code></td><td>Allows not to be kicked during the kickall</td></tr><tr><td><code>essentials.kick.notify</code></td><td></td></tr><tr><td><code>essentials.kill.all</code></td><td>Kill entities</td></tr><tr><td><code>essentials.kit</code></td><td>Get a kit</td></tr><tr><td><code>essentials.kit.&#x3C;kit name></code></td><td>Give a kit to a player</td></tr><tr><td><code>essentials.kit.bypass.cooldown</code></td><td>Bypass the cooldown of the kits</td></tr><tr><td><code>essentials.kit.create</code></td><td>Create a new kit</td></tr><tr><td><code>essentials.kit.delete</code></td><td>Delete a kit</td></tr><tr><td><code>essentials.kit.editor</code></td><td>Edit a kit</td></tr><tr><td><code>essentials.kit.show</code></td><td>Show a kit</td></tr><tr><td><code>essentials.kitty.cannon</code></td><td>Launch kitty, wtf you want to do that ? monster</td></tr><tr><td><code>essentials.loom</code></td><td>Open a loom</td></tr><tr><td><code>essentials.mail</code></td><td>Open mailbox</td></tr><tr><td><code>essentials.mail.clear</code></td><td>Removes items from the player’s mailbox</td></tr><tr><td><code>essentials.mail.give</code></td><td>Give an item to player's mailbox</td></tr><tr><td><code>essentials.mail.giveall</code></td><td>Give items to players' mailboxes</td></tr><tr><td><code>essentials.mail.open</code></td><td>Open player's mailbox</td></tr><tr><td><code>essentials.message</code></td><td>Send a private message to a player</td></tr><tr><td><code>essentials.message.toggle</code></td><td>Toggle private message</td></tr><tr><td><code>essentials.message.toggle.other</code></td><td></td></tr><tr><td><code>essentials.money</code></td><td>Show your money</td></tr><tr><td><code>essentials.money.other</code></td><td></td></tr><tr><td><code>essentials.more</code></td><td>Get more items</td></tr><tr><td><code>essentials.mute</code></td><td>Mute a player</td></tr><tr><td><code>essentials.mute.notify</code></td><td>Allows you to receive notifications when a player is muted</td></tr><tr><td><code>essentials.near</code></td><td>Show players close to you</td></tr><tr><td><code>essentials.night</code></td><td>Set the night in your world</td></tr><tr><td><code>essentials.nightvision</code></td><td>Enable or disable night vision</td></tr><tr><td><code>essentials.pay</code></td><td>Pays another player from your balance</td></tr><tr><td><code>essentials.pay.toggle</code></td><td>Toggles payments towards the player</td></tr><tr><td><code>essentials.pay.toggle.other</code></td><td></td></tr><tr><td><code>essentials.play.time</code></td><td>Show player's playtime</td></tr><tr><td><code>essentials.player.time</code></td><td>Change your time</td></tr><tr><td><code>essentials.player.weather</code></td><td>Change your weather</td></tr><tr><td><code>essentials.power.tools</code></td><td>Add command to your items</td></tr><tr><td><code>essentials.power.tools.toggle</code></td><td>Toggle power tools</td></tr><tr><td><code>essentials.power.tools.toggle.other</code></td><td></td></tr><tr><td><code>essentials.pub</code></td><td>Send a message highlighted in the chat</td></tr><tr><td><code>essentials.reload</code></td><td>Reload configuration files</td></tr><tr><td><code>essentials.repair</code></td><td>Fix the item in your hand</td></tr><tr><td><code>essentials.repair.all</code></td><td>Repair all items in your inventory</td></tr><tr><td><code>essentials.repair.all.other</code></td><td>Repair all items of a player</td></tr><tr><td><code>essentials.reply</code></td><td>Reply to a private message</td></tr><tr><td><code>essentials.rules</code></td><td>Read server rules</td></tr><tr><td><code>essentials.sanction</code></td><td>Open sanction inventory</td></tr><tr><td><code>essentials.scoreboard</code></td><td>Enable/Disable scoreboard</td></tr><tr><td><code>essentials.seen</code></td><td>Show player informations</td></tr><tr><td><code>essentials.seen.ip</code></td><td>Show players who have the same IP</td></tr><tr><td><code>essentials.set.first.spawn</code></td><td>Set server first spawn</td></tr><tr><td><code>essentials.set.home</code></td><td>Create a home</td></tr><tr><td><code>essentials.set.home.confirm</code></td><td>Confirm the creation of a home</td></tr><tr><td><code>essentials.set.home.other</code></td><td>Allows to set another player’s home</td></tr><tr><td><code>essentials.set.spawn</code></td><td>Set server spawn</td></tr><tr><td><code>essentials.show.item</code></td><td>Show player's item</td></tr><tr><td><code>essentials.silent.join</code></td><td>Allows you to join the server silently</td></tr><tr><td><code>essentials.silent.quit</code></td><td>Allows you to leave the server silently</td></tr><tr><td><code>essentials.skull</code></td><td>Gets the head of a player</td></tr><tr><td><code>essentials.smithingtable</code></td><td>Open a smithing table</td></tr><tr><td><code>essentials.socialspy</code></td><td>Display private messages of players</td></tr><tr><td><code>essentials.spawn</code></td><td>Teleport to spawn</td></tr><tr><td><code>essentials.spawn.first</code></td><td>Teleport to first spawn</td></tr><tr><td><code>essentials.spawn.other</code></td><td></td></tr><tr><td><code>essentials.speed</code></td><td>Change player speed</td></tr><tr><td><code>essentials.step</code></td><td>Save a step</td></tr><tr><td><code>essentials.stonecutter</code></td><td>Open a stone cutter</td></tr><tr><td><code>essentials.sudo</code></td><td>Force a player to execute a command</td></tr><tr><td><code>essentials.sudo.bypass</code></td><td></td></tr><tr><td><code>essentials.suicide</code></td><td>Kill yourself</td></tr><tr><td><code>essentials.sun</code></td><td>Set the sun in your world</td></tr><tr><td><code>essentials.teleport.bypass</code></td><td>Allows to bypass the waiting time for teleportation</td></tr><tr><td><code>essentials.top</code></td><td>Teleporting to top</td></tr><tr><td><code>essentials.tp</code></td><td>Teleport to a player</td></tr><tr><td><code>essentials.tp.all</code></td><td>Teleport all players to your position</td></tr><tr><td><code>essentials.tp.here</code></td><td>Teleport a player to your location</td></tr><tr><td><code>essentials.tp.random</code></td><td>Random Teleport in the world</td></tr><tr><td><code>essentials.tp.world</code></td><td>Teleport to another world</td></tr><tr><td><code>essentials.tp.world.other</code></td><td>Allows to teleport another player into a world</td></tr><tr><td><code>essentials.tpa</code></td><td>Teleport to a player</td></tr><tr><td><code>essentials.tpa.accept</code></td><td>Accept a teleportation request</td></tr><tr><td><code>essentials.tpa.cancel</code></td><td>Cancel a teleportation request</td></tr><tr><td><code>essentials.tpa.deny</code></td><td>Denied a teleportation request</td></tr><tr><td><code>essentials.tpa.here</code></td><td>Teleport a player to you</td></tr><tr><td><code>essentials.trash</code></td><td>Open a trash can</td></tr><tr><td><code>essentials.un.ban</code></td><td>Unmute a player</td></tr><tr><td><code>essentials.un.mute</code></td><td>Unmute a player</td></tr><tr><td><code>essentials.unban</code></td><td></td></tr><tr><td><code>essentials.unban.notify</code></td><td>Allows you to receive notifications when a player is unbanned</td></tr><tr><td><code>essentials.unmute</code></td><td></td></tr><tr><td><code>essentials.unmute.notify</code></td><td>Allows you to receive notifications when a player is unmuted</td></tr><tr><td><code>essentials.use</code></td><td></td></tr><tr><td><code>essentials.vault.add.slot</code></td><td>Add slot to player's vault</td></tr><tr><td><code>essentials.vault.give</code></td><td>Give items to player's vault</td></tr><tr><td><code>essentials.vault.set.slot</code></td><td>Set slot to player's vault</td></tr><tr><td><code>essentials.vault.use</code></td><td></td></tr><tr><td><code>essentials.vote.add</code></td><td>Add votes to a player</td></tr><tr><td><code>essentials.vote.remove</code></td><td></td></tr><tr><td><code>essentials.vote.set</code></td><td></td></tr><tr><td><code>essentials.vote.use</code></td><td>Show information on how to vote</td></tr><tr><td><code>essentials.voteparty.add</code></td><td>Add votes in the vote party</td></tr><tr><td><code>essentials.voteparty.remove</code></td><td>Remove votes in the vote party</td></tr><tr><td><code>essentials.voteparty.set</code></td><td>Set the number of votes in the vote party</td></tr><tr><td><code>essentials.voteparty.use</code></td><td>Show the vote party</td></tr><tr><td><code>essentials.warn</code></td><td></td></tr><tr><td><code>essentials.warp</code></td><td>Teleport to a warp</td></tr><tr><td><code>essentials.warp.&#x3C;warp name></code></td><td>Allows to teleport to a specific warp</td></tr><tr><td><code>essentials.warp.del</code></td><td>Delete a warp</td></tr><tr><td><code>essentials.warp.set</code></td><td>Create a warp</td></tr><tr><td><code>essentials.warps</code></td><td>Show warp list</td></tr><tr><td><code>essentials.worldedit.cancel</code></td><td>Cancel current selection</td></tr><tr><td><code>essentials.worldedit.confirm</code></td><td>Confirm worldedit action</td></tr><tr><td><code>essentials.worldedit.cut</code></td><td>Cut all blocks of your selection</td></tr><tr><td><code>essentials.worldedit.cyl</code></td><td>Fill all blocks of your selection with a cylinder</td></tr><tr><td><code>essentials.worldedit.fill</code></td><td>Fill all blocks of your selection</td></tr><tr><td><code>essentials.worldedit.give</code></td><td>Give a worldedit item to a player</td></tr><tr><td><code>essentials.worldedit.option</code></td><td>Configure your use of worldedit</td></tr><tr><td><code>essentials.worldedit.option.bossbar</code></td><td>Enable or disable the worldedit progress bar</td></tr><tr><td><code>essentials.worldedit.option.inventory</code></td><td>Use your inventory to take or add items</td></tr><tr><td><code>essentials.worldedit.pos1</code></td><td>Set first position of the selection</td></tr><tr><td><code>essentials.worldedit.pos2</code></td><td>Set second position of the selection</td></tr><tr><td><code>essentials.worldedit.set</code></td><td>Set all blocks of your selection</td></tr><tr><td><code>essentials.worldedit.sphere</code></td><td>Set all blocks of your selection with a sphere</td></tr><tr><td><code>essentials.worldedit.stop</code></td><td>Stops the current session</td></tr><tr><td><code>essentials.worldedit.use</code></td><td></td></tr><tr><td><code>essentials.worldedit.walls</code></td><td>Set all blocks of your selection with walls</td></tr></tbody></table>


# Color

zEssentials supports MiniMessage colors. You can find the MiniMessage documentation [here](https://docs.advntr.dev/minimessage/format.html).

With MiniMessage, you can add actions to your text, such as clicks and hovers.

Here is a site that allows you to preview your messages: <https://webui.advntr.dev/>

| Minecraft Color | Mini Message Format | Description        |
| --------------- | ------------------- | ------------------ |
| `&0`            | `<black>`           | Black color        |
| `&1`            | `<dark_blue>`       | Dark Blue color    |
| `&2`            | `<dark_green>`      | Dark Green color   |
| `&3`            | `<dark_aqua>`       | Dark Aqua color    |
| `&4`            | `<dark_red>`        | Dark Red color     |
| `&5`            | `<dark_purple>`     | Dark Purple color  |
| `&6`            | `<gold>`            | Gold color         |
| `&7`            | `<gray>`            | Gray color         |
| `&8`            | `<dark_gray>`       | Dark Gray color    |
| `&9`            | `<blue>`            | Blue color         |
| `&a`            | `<green>`           | Green color        |
| `&b`            | `<aqua>`            | Aqua color         |
| `&c`            | `<red>`             | Red color          |
| `&d`            | `<light_purple>`    | Light Purple color |
| `&e`            | `<yellow>`          | Yellow color       |
| `&f`            | `<white>`           | White color        |
| `&k`            | `<obfuscated>`      | Obfuscated text    |
| `&l`            | `<bold>`            | Bold text          |
| `&m`            | `<strikethrough>`   | Strikethrough text |
| `&n`            | `<underline>`       | Underlined text    |
| `&o`            | `<italic>`          | Italic text        |
| `&r`            | `<reset>`           | Reset formatting   |
| `#hex color`    | `<#hex color>`      | Hex color          |

#### You can define keys for your messages.

```yaml
# Transforms keys by color, used in messages
message-colors:
  - key: "<primary>"
    color: "#24d65d"
  - key: "<secondary>"
    color: "#656665"
  - key: "<error>"
    color: "#ff0000"
  - key: "<success>"
    color: "#00ff00"
```


# Messages

{% hint style="danger" %}
To fully understand this documentation, you need to be familiar with how a YAML configuration file works. Without this knowledge, the following explanations may be difficult to follow.
{% endhint %}

You can use the [MiniMessage format](https://docs.advntr.dev/minimessage/index.html) for your messages, which allows you to add extensive customization options and functionality.

Here is a site that allows you to preview your messages: <https://webui.advntr.dev/>

You can also set global variables for all messages in the `config.yml` file, such as `<success>` and `<error>`.

## Configurations

There are various ways to configure the messages, with the most common being a simple message, like this:

```yaml
module-disable: "<error>The &f%name% <error>module is disabled. You cannot use this command."
```

However, there are other types of messages, as well as the ability to send multiple messages simultaneously.

### TCHAT

The `tchat` type is the most common message type, allowing you to send messages directly to the player's chat. With this type, each message will include a prefix. If you want to send a message without a prefix, you must use the [WITHOUT\_PREFIX](#without_prefix) type. Note that when you send a list of messages, only the first message will have a prefix; in the example below, `module-disable` will have a prefix, but `rules` will not.

You have the option to send either a single message or multiple messages, like this:

```yaml
module-disable: "<error>The &f%name% <error>module is disabled. You cannot use this command."
rules:
  - "#ffd353ℹ sᴇʀᴠᴇʀ ʀᴜʟᴇs#3f3f3f:"
  - "#3f3f3f• &7Respect all players and staff."
  - "#3f3f3f• &7No grieging or stealing."
  - "#3f3f3f• &7No cheating or hacking."
  - "#3f3f3f• &7Keep chat clean and respectful."
  - "#3f3f3f• &7No spamming or advertising."
```

You don’t need to specify the type for `tchat`; it will be used by default.

### ACTION

The `action` type allows you to send a message to the player's action bar. You need to specify the type like this:

```yaml
teleport-message:
  type: ACTION
  message: "&7Teleporting in #0EEA93%seconds% &7seconds, you must not move."
```

### WITHOUT\_PREFIX

The `without_prefix` type is used to send a message without a prefix. By default, all messages will include a prefix. To remove the prefix, you need to specify the type like this:

```yaml
command-baltop:
  type: WITHOUT_PREFIX
  message: "#00f986#%position% &f%name%&8: %amount%"
```

### NONE

This type does not send the message.

### CENTER

To send a message that will be centered in your chat, you need to specify the type like this:

```yaml
rules:
  type: CENTER
  messages:
    - "#ffd353ℹ sᴇʀᴠᴇʀ ʀᴜʟᴇs#3f3f3f:"
    - "#3f3f3f• &7Respect all players and staff."
    - "#3f3f3f• &7No grieging or stealing."
    - "#3f3f3f• &7No cheating or hacking."
    - "#3f3f3f• &7Keep chat clean and respectful."
    - "#3f3f3f• &7No spamming or advertising."
```

### BOSSBAR

To create a bossbar, you need to do it like this:

```yaml
example:
  type: BOSSBAR
  text: "BossBar Example"
  color: WHITE
  overlay: PROGRESS
  flags:
    - DARKEN_SCREEN
    - PLAY_BOSS_MUSIC
    - CREATE_WORLD_FOG
  duration: 100 # 100 ticks, 5s
  static: false
```

The bossbar uses the MiniMessage API. To find the values for [color](https://jd.advntr.dev/api/4.17.0/net/kyori/adventure/bossbar/BossBar.Color.html), [overlay](https://jd.advntr.dev/api/4.17.0/net/kyori/adventure/bossbar/BossBar.Overlay.html) or [flags](https://jd.advntr.dev/api/4.17.0/net/kyori/adventure/bossbar/BossBar.Flag.html) please refer to the MiniMessage documentation.

### TITLE

To send a title to the player, you must specify the title like this:

```yaml
example:
  type: TITLE
  title: "Title example"
  subtitle: "Subtitle example"
  start: 100 # 100ms, 0.1s
  time: 2800 # 2800ms, 2.8s
  end: 100 # 100ms, 0.1s
```

### Multi messages

You can send multiple messages at the same time, regardless of the type of message. Simply follow the documentation and apply the same example format to all message types. Here’s how to send multiple messages simultaneously:

```yaml
teleport-message-spawn:
  - message: "&7Teleporting in #0EEA93%seconds% &7seconds, you must not move."
  - type: ACTION
    message: "&7Teleporting in #0EEA93%seconds% &7seconds, you must not move."
  - type: TITLE
    title: "&fTeleportation !"
    subtitle: "&7Teleporting in #0EEA93%seconds% &7seconds, you must not move."
    start: 100 # 100ms, 0.1s
    time: 2800 # 2800ms, 2.8s
    end: 100 # 100ms, 0.1s
```

You must send a list with the type and corresponding configuration. The `TCHAT` type will always be the default; for other types, you are required to specify them explicitly.

***

## Files

### English

<https://github.com/Maxlego08/zEssentials/blob/master/Essentials/src/main/resources/messages/messages.yml>

### Français

<https://github.com/Maxlego08/zEssentials/blob/master/Essentials/src/main/resources/messages/messages_fr.yml>

### Italiano

[https://github.com/Maxlego08/zEssentials/blob/master/Essentials/src/main/resources/messages/messages\_it.yml](https://github.com/Maxlego08/zEssentials/blob/master/Essentials/src/main/resources/messages/messages_de.yml)

### German

<https://github.com/Maxlego08/zEssentials/blob/master/Essentials/src/main/resources/messages/messages_de.yml>


# Inventories / Buttons

Inventories are managed through the zMenu API, for inventory configuration items please see [zMenu documentation](https://docs.zmenu.dev/).

## Buttons

List of buttons that zEssentials adds to zMenu.

`zessentials_kit_cooldown`

`zessentials_kit_get`

`zessentials_kit_preview`

`zessentials_warp`

`zessentials_sanctions`

`zessentials_sanction`

`zessentials_sanction_information`

`zessentials_teleportation_confirm`

`zessentials_pay_confirm`

`zessentials_homes`

`zessentials_mailbox`


# Configuration

**Plugin Configuration:** You can change the plugin storage. We recommend using MySQL storage, as it is the only option that is fully supported and utilized in all features.

{% hint style="danger" %}
**REDIS Support:** REDIS support is still under development and testing. If you encounter any bugs, it's best to contact me via [discord](https://discord.groupez.dev/) or on [github](https://github.com/Maxlego08/zEssentials/).
{% endhint %}

## Configuration

{% code fullWidth="true" %}

```yaml
########################################################################################################################
#
#  ███████╗███████╗░██████╗░██████╗███████╗███╗░░██╗████████╗██╗░█████╗░██╗░░░░░░██████╗
#  ╚════██║██╔════╝██╔════╝██╔════╝██╔════╝████╗░██║╚══██╔══╝██║██╔══██╗██║░░░░░██╔════╝
#  ░░███╔═╝█████╗░░╚█████╗░╚█████╗░█████╗░░██╔██╗██║░░░██║░░░██║███████║██║░░░░░╚█████╗░
#  ██╔══╝░░██╔══╝░░░╚═══██╗░╚═══██╗██╔══╝░░██║╚████║░░░██║░░░██║██╔══██║██║░░░░░░╚═══██╗
#  ███████╗███████╗██████╔╝██████╔╝███████╗██║░╚███║░░░██║░░░██║██║░░██║███████╗██████╔╝
#  ╚══════╝╚══════╝╚═════╝░╚═════╝░╚══════╝╚═╝░░╚══╝░░░╚═╝░░░╚═╝╚═╝░░╚═╝╚══════╝╚═════╝░
#
# Documentation: https://zessentials.groupez.dev/
#
########################################################################################################################

# Displays debug items in the console, if you request support please enable debug and send logs with debugs
enable-debug: true

# Storage:
# JSON
# MYSQL
#
# We advise you to use MYSQL, the JSON storage is only there to install the plugin and do some testing.
storage-type: MYSQL

# PAPER
# REDIS
server-type: PAPER

# Configuration of your database, it is recommended to use the database to store your data, JSON does not support everything
database-configuration:
  # For Pterodactyl panel: when you create a database it creates a <prefix>_<database name you chose>. Set "prefix"'s value to the prefix of the database
  tablePrefix: "zessentials_"
  # IP Address of the machine the database is hosted on
  host: 192.168.10.10
  # Port of the database, by default MYSQL's port is 3306
  port: 3306
  user: homestead
  password: 'secret'
  # For Pterodactyl panel: when you create a database it creates a <prefix>_<database name you chose>. Set "database"'s value to the name of the database
  database: zessentials
  debug: true
  # ToDo - Créer un système qui permet de load toutes les données en cache (pour SQL et JSON) et ajouter un moyen de pouvoir filter par rapport à l'activer du joueur
  # ToDo - Par exemple pouvoir load les joueurs actifs durant les 7 derniers jours, ainsi on évite de load tout les joueurs mais seulement les joueurs actifs
  # ToDo - Se système va permettre de load les données des joueurs plus rapidement, en cas de crash serveurs si des centaines de joueurs veulent revenir en même temps cela peut être problématique.
  # ToDo - Cette solution sera très bien pour se genre de cas.

# Configuration for your redis server
redis-configuration:
  host: "192.168.10.10"
  port: 6379
  password: "123456a"

# If you have enabled this option, players with the essentials.bypass.cooldown permission you can execute commands in command-cooldowns without being assigned
enable-cooldown-bypass: false

# Create command cooldowns (can run a command after X amount of seconds)
command-cooldowns:
  - command: heal
    # In this example you can see that the "/heal" command has a 60 seconds cooldown
    cooldown: 60
    permissions:
      - permission: "essentials.cooldown.heal.vip"
        # In this example whoever has "essentials.cooldown.heal.vip" permission can run "/heal" after 40 seconds
        cooldown: 40
      - permission: "essentials.cooldown.heal.staff"
        # In this example whoever has "essentials.cooldown.heal.staff" permission can run "/heal" after 20 seconds
        cooldown: 20

# Trash can GUI size. Must be 9, 18, 27, 36, 45, 54.
trash-size: 27

# Compact materials with the /compact command
compact-materials:
  - from: COAL
    to: COAL_BLOCK
  - from: REDSTONE
    to: REDSTONE_BLOCK
  - from: LAPIS_LAZULI
    to: LAPIS_BLOCK
  - from: IRON_INGOT
    to: IRON_BLOCK
  - from: GOLD_INGOT
    to: GOLD_BLOCK
  - from: IRON_NUGGET
    to: IRON_INGOT
  - from: GOLD_NUGGET
    to: GOLD_INGOT
  - from: DIAMOND
    to: DIAMOND_BLOCK
  - from: EMERALD
    to: EMERALD_BLOCK
  - from: COPPER_INGOT
    to: COPPER_BLOCK
  - from: NETHERITE_INGOT
    to: NETHERITE_BLOCK

# Transforms keys by color, used in messages
message-colors:
  - key: "<primary>"
    color: "#24d65d"
  - key: "<secondary>"
    color: "#656665"
  - key: "<error>"
    color: "#ff0000"
  - key: "<success>"
    color: "#00ff00"

# Allows you to add a cooldown on commands, we will prevent players spam commands for nothing.
# If you want to disable the cooldown on the commands, do this: cooldowns: []
cooldowns:
  - messages: 2
    cooldown: 1500 # max 1.5s
  - messages: 4
    cooldown: 5000 # max 5s
  - messages: 8
    cooldown: 10000 # max 10s

# Stores commands in database, works only with MYSQL storage
enable-command-log: true

# Materials that can be put into furnace, use the /furnace command
smeltable-materials:
  - from: RAW_IRON
    to: IRON_INGOT
  - from: RAW_COPPER
    to: COPPER_INGOT
  - from: RAW_GOLD
    to: GOLD_INGOT
  - from: SAND
    to: GLASS
  - from: CLAY_BALL
    to: BRICK
  - from: ANCIENT_DEBRIS
    to: NETHERITE_SCRAP
  - from: WET_SPONGE
    to: SPONGE
  - from: CACTUS
    to: GREEN_DYE
  - from: KELP
    to: DRIED_KELP

# Default distance for /near
near-distance: 50.0

# Set a distance by permission for /near
near-permissions:
  - permission: "essentials.near.vip"
    distance: 100.0
  - permission: "essentials.near.staff"
    distance: 200.0

# Date format that will be used if no other format is available
global-date-format: "yyyy-MM-dd HH:mm:ss"

# Replace the result of one placeholder with another, very useful for adding colors for example
# Then simply use the placeholder: %zessentials_replace_<placeholder>% to use this configuration
replace-placeholders:
  # Placeholder %player_ping% (https://api.extendedclip.com/expansions/player/) will be replaced to add color to indicate the player’s ping status.
  # For this example, the placeholder to used will be: %zessentials_replace_player_ping%
  # In this example the player’s ping color will change depending on his ping
  - placeholder: 'player_ping' # Placeholder to be replaced, do not add %
    default: '&c%result%' # Default if no condition found
    replaces: # List of conditions to replace placeholder
      - type: STRING # The type of the condition, here STRING allows to check if the result of the placeholder is equal to the given value
        equalsTo: 0 # The value to be verified
        value: '&aWHOA YOU DONT HAVE PING WTF YOU ARE IN A DATACENTER ?' # The value that will be used, you can add %result% to return the value of the placeholder
      - type: NUMBER # The type of the condition, here NUMBER allows to check if a number is lower or equal to a given number
        max: 50 # The maximum possible number
        value: '&a%result%' # The value that will be used, you can add %result% to return the value of the placeholder
      - type: NUMBER # The type of the condition, here NUMBER allows to check if a number is lower or equal to a given number
        max: 99 # The maximum possible number
        value: '&2%result%' # The value that will be used, you can add %result% to return the value of the placeholder
      - type: NUMBER # The type of the condition, here NUMBER allows to check if a number is lower or equal to a given number
        max: 199 # The maximum possible number
        value: '&e%result%' # The value that will be used, you can add %result% to return the value of the placeholder
      - type: NUMBER # The type of the condition, here NUMBER allows to check if a number is lower or equal to a given number
        max: 299 # The maximum possible number
        value: '&c%result%' # The value that will be used, you can add %result% to return the value of the placeholder
```

{% endcode %}

## Replace Placeholders

Need to display different values depending on the result of a placeholder? With zEssentials, this is possible!

In the example above, if you have the placeholder `%player_ping%`, it will be replaced based on various conditions. If none of the conditions are met, you can return a default value.

### Conditions:

#### STRING

Check if the result of the placeholder is equal to another string.

#### NUMBER

Check if the result is a number and if the result is less than a number defined in the configuration.


# Afk

This module manages AFK players and can kick them.

## Configuration

### `config.yml`

{% code fullWidth="true" %}

```yaml
########################################################################################################################
#
# ░█████╗░███████╗██╗░░██╗
# ██╔══██╗██╔════╝██║░██╔╝
# ███████║█████╗░░█████═╝░
# ██╔══██║██╔══╝░░██╔═██╗░
# ██║░░██║██║░░░░░██║░╚██╗
# ╚═╝░░╚═╝╚═╝░░░░░╚═╝░░╚═╝
#
# Documentation: https://zessentials.groupez.dev/modules/afk
#
########################################################################################################################

enable: true

check-interval: 20 # in ticks

# Allows kicking the player with the spigot method, this avoids using a kick command and that your sanction plugin log the kick
soft-kick: true

soft-kick-message: "<red>You have been kicked for being AFK"

kick-actions:
  - type: message
    messages:
      - "&cYou have been kicked for being AFK"
  # - type: console command
  #  commands:
  #    - "kick %player% AFK"

permissions:
  - priority: 0
    permission: "zessentials.afk.player"
    start-afk-time: 20
    max-afk-time: 60 # in seconds
    kick: true
    message-on-start-afk: "&cYou are now AFK, we have only &f40&c seconds left before being expelled from the server."
    message-on-end-afk: "&aYou are no longer AFK. You have been afk for &f%duration%&a."
  - priority: 1
    permission: "zessentials.afk.vip"
    start-afk-time: 30
    max-afk-time: 120 # in seconds
    message-on-start-afk: "&cYou are now AFK, we have only &f90&c seconds left before being expelled from the server."
    message-on-end-afk: "&aYou are no longer AFK. You have been afk for &f%duration%&a."
    kick: true
  - priority: 2
    permission: "zessentials.afk.admin"
    start-afk-time: 60
    max-afk-time: 300 # in seconds
    # message-on-start-afk: "&cYou are now AFK, we have only &f240&c seconds left before being expelled from the server."
    # message-on-end-afk: "&aYou are no longer AFK. You have been afk for &f%duration%&a."
    kick: true

```

{% endcode %}


# Chat

Manage messages in the chat.

This module allows you to manage your chat, manage the displayed messages, anti spawn, anti insult

{% hint style="danger" %}
Attention, some plugin will not be compatible as:

* `ChatControleRed`, doesn't support properly new version with adventure.
  {% endhint %}

### Configuration

{% code fullWidth="true" %}

```yaml
########################################################################################################################
#
# ░█████╗░██╗░░██╗░█████╗░████████╗
# ██╔══██╗██║░░██║██╔══██╗╚══██╔══╝
# ██║░░╚═╝███████║███████║░░░██║░░░
# ██║░░██╗██╔══██║██╔══██║░░░██║░░░
# ╚█████╔╝██║░░██║██║░░██║░░░██║░░░
# ░╚════╝░╚═╝░░╚═╝╚═╝░░╚═╝░░░╚═╝░░░
#
# Permissions
# essentials.chat.bypass.alphanumeric - Allows bypass check alphanumeric
# essentials.chat.bypass.dynamic.cooldown - Allows bypass dynamic cooldown
# essentials.chat.bypass.link - Allows bypass link
# essentials.chat.bypass.same.message - Allows bypass same message
# essentials.chat.bypass.disable - Allows bypass disable
# essentials.chat.moderator - Allows to display the moderator-action
# essentials.chat.color - Allows color format https://docs.advntr.dev/minimessage/format.html#color
# essentials.chat.decoration - Allows decoration format https://docs.advntr.dev/minimessage/format.html#decoration
# essentials.chat.rainbow - Allows rainbow format https://docs.advntr.dev/minimessage/format.html#rainbow
# essentials.chat.gradient - Allows gradient format https://docs.advntr.dev/minimessage/format.html#gradient
# essentials.chat.click - Allows click format https://docs.advntr.dev/minimessage/format.html#click
# essentials.chat.hover - Allows hover format https://docs.advntr.dev/minimessage/format.html#hover
# essentials.chat.newline - Allows newline format https://docs.advntr.dev/minimessage/format.html#newline
# essentials.chat.reset - Allows reset format https://docs.advntr.dev/minimessage/format.html#reset
# essentials.chat.font - Allows font format https://docs.advntr.dev/minimessage/format.html#font
# essentials.chat.keybind - Allows keybind format https://docs.advntr.dev/minimessage/format.html#keybind
# essentials.chat.link - Turns your links into clickable links automatically
#
########################################################################################################################

enable: true

# Enables verification of authorized characters in chat
enable-alphanumeric-regex: true

# Check whether the message contains links
enable-link-regex: true

# Remove images that players are trying to put in the chat, for example: the message 'hey:auction:' will become: 'hey auction'
enable-itemadders-font-regex: true

# Allows to apply a dynamic cooldown between each message of a player, the more the player will spam the more he will have a great cooldown
enable-chat-dynamic-cooldown: true

# Check player tries to put the same message multiple times
enable-same-message-cancel: true

# Apply a format to the chat, disabled on if you want another plugin to handle this
enable-chat-format: true

# Turns links into clickable links if the player has the essentials.chat.link permission, the player must also have permission: essentials.chat.click
# check out link-transform
enable-link-transform: true

# Stores all player messages in the database. Works only with MYSQL storage
# Also provides access to all player messages with /sc command
enable-chat-messages: true

# Regex to check allowed characters
# You can test the regex here before changing the default one: https://regex101.com/
alphanumeric-regex: '^[a-zA-Z0-9_.?!^¨%ù*&é"#''{(\[-|èêë`\\çà)\]=}ûî+<>:²€$/\\-\\,-â@;ô ]+$'

# Regex to check links
# You can test the regex here before changing the default one: https://regex101.com/
link-regex: '[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&/=]*)'

# Regex to check itemAdders font
itemadders-font-regex: '(?<=:)(.*?)(?=\s*\:)'

# Set the number of messages and cooldown between each message in milliseconds
# The faster the player will send message the faster the cooldown between each message will be
chat-cooldowns:
  - messages: 2
    cooldown: 1500 # max 1.5s
  - messages: 4
    cooldown: 12000 # max 12s
  - messages: 10
    cooldown: 60000 # max 60s

# Number of messages that will be in memory to be analyzed during the cooldown
chat-cooldown-max: 50

# Chat format with permissions
#
# Use https://webui.advntr.dev/ to create your format quickly
#
# Available placeholder (you can use PlaceholderAPI here):
# %player% - Player's name
# %displayName% - Player's display name
# <message> - Player's message, Attention for message it's not %message% !
# %moderator_action% - Moderation action, see moderator-action
chat-formats:
  - priority: 1
    permission: "essentials.chat.format.vip"
    format: "<hover:show_text:'&cReport this message'><click:run_command:'/report %player% chat'><#ff0000>⚠</click></hover> %moderator_action%<#ffffff><hover:show_text:'#ffd353ℹ Informations#3f3f3f:<newline>#3f3f3f• &7Money#3f3f3f: #4cd5ff%zessentials_user_formatted_balance_money%<newline>#3f3f3f• &7Coins#3f3f3f: #4cd5ff%zessentials_user_formatted_balance_coins%<newline><newline>&f➥ &7Click for more information'>%player%</hover> <#333333>» <#ffff6b><click:suggest_command:'/msg %player% '><hover:show_text:'&fSend a private message'><message></hover></click>"
  - priority: 2
    permission: "essentials.chat.format.admin"
    format: "<#ffffff><hover:show_text:'#ffd353ℹ Informations#3f3f3f:<newline>#3f3f3f• &7Money#3f3f3f: #4cd5ff%zessentials_user_formatted_balance_money%<newline>#3f3f3f• &7Coins#3f3f3f: #4cd5ff%zessentials_user_formatted_balance_coins%<newline><newline>&f➥ &7Click for more information'>%player%</hover> <#333333>» <#ff4444><click:suggest_command:'/msg %player% '><hover:show_text:'&fSend a private message'><message></hover></click>"

# Default chat format
default-chat-format: "<hover:show_text:'&cReport this message'><click:run_command:'/report %player% chat'><#ff0000>⚠</click></hover> %moderator_action%<#ffffff><hover:show_text:'#ffd353ℹ Informations#3f3f3f:<newline>#3f3f3f• &7Money#3f3f3f: #4cd5ff%zessentials_user_formatted_balance_money%<newline>#3f3f3f• &7Coins#3f3f3f: #4cd5ff%zessentials_user_formatted_balance_coins%<newline><newline>&f➥ &7Click for more information'>%player%</hover> <#333333>» <gray><click:suggest_command:'/msg %player% '><hover:show_text:'&fSend a private message'><message></hover></click>"

# Allows players who have the essentials.chat.moderator permission to have a different view from other players.
# By default, moderators will have a button to punish the player
#
# Available placeholder (you can use PlaceholderAPI here):
# %player% - Player's name
moderator-action: "<hover:show_text:'<#ff8888>Punish the player'><click:run_command:'/sc %player%'><#ff8888>✗</click></hover> "

# Turns a link into a clickable link by players
link-transform: "<hover:show_text:'&fOpen the link'><click:open_url:'%url%'>%url%</click></hover>"

# Date format for /chathistory
date-format: "yyyy-MM-dd HH:mm:ss"

# Chat ping

# To ping a player you must use the prefix @<nickname>
enable-ping: true

# Allows to activate the sound during a player ping, the player can disable the sound with the command /pingsound
enable-player-ping-sound: true

# Sound played when player is pinged
player-ping-sound: BLOCK_NOTE_BLOCK_PLING

# Ping sound volume
player-ping-sound-volume: 0.8

# Ping sound pitch
player-ping-sound-pitch: 1

# Color of ping displayed to the player
player-ping-color: "<red>%name%</red><red>"

# Color of ping displayed for other players
player-ping-color-other: "<white>%name%</white>"

# Placeholders

chat-placeholders:
  - name: "ping" # Placeholder name, the name must consist only of lowercase letters, numbers 0 to 9 and characters _ and -
    regex: "(?i)\\[ping\\]" # [ping] placeholder
    result: "%player_ping% ms" # PlaceholderAPI extension Player: https://api.extendedclip.com/expansions/player/
    permission: "zessentials.chat.placeholder.ping" # You must define a permission
  - name: "block" # Placeholder name, the name must consist only of lowercase letters, numbers 0 to 9 and characters _ and -
    regex: "(?i)\\[blocks\\]" # [blocks] placeholder
    result: "&a%statistic_mine_block% &fblocks" # PlaceholderAPI extension Statistic: https://api.extendedclip.com/expansions/statistic/
    permission: "zessentials.chat.placeholder.block" # You must define a permission
  - name: "money" # Placeholder name, the name must consist only of lowercase letters, numbers 0 to 9 and characters _ and -
    regex: "(?i)\\[money\\]" # [money] placeholder
    result: "%zessentials_user_formatted_balance_money%"
    permission: "zessentials.chat.placeholder.money" # You must define a permission
  - name: "coins" # Placeholder name, the name must consist only of lowercase letters, numbers 0 to 9 and characters _ and -
    regex: "(?i)\\[coins\\]" # [coins] placeholder
    result: "%zessentials_user_formatted_balance_coins%"
    permission: "zessentials.chat.placeholder.coins" # You must define a permission
  - name: "playtime" # Placeholder name, the name must consist only of lowercase letters, numbers 0 to 9 and characters _ and -
    regex: "(?i)\\[playtime\\]" # [playtime] placeholder
    result: "&fI've played &7%zessentials_user_playtime_formatted%"
    permission: "zessentials.chat.placeholder.playtime" # You must define a permission
  - name: "pos" # Placeholder name, the name must consist only of lowercase letters, numbers 0 to 9 and characters _ and -
    regex: "(?i)\\[pos\\]" # [pos] placeholder
    result: "&bWorld: &f%player_world% &eX: &f%player_x% &eY: &f%player_y% &eZ: &f%player_z%"
    permission: "zessentials.chat.placeholder.pos" # You must define a permission

# Displays the item in your hand
item-placeholder:
  enable: true
  regex: "(?i)\\[item\\]|\\[i\\]" # [item] or [i] placeholder
  result: "&bx<amount> &f<item>"
  permission: "zessentials.chat.placeholder.item" # You must define a permission

command-placeholder: # ./<command> placeholder
  enable: true
  result: "<hover:show_text:'<yellow>Try this command'><click:suggest_command:'/%command%'><yellow>/%command%</yellow></click></hover>"
  permission: "zessentials.chat.placeholder.command" # You must define a permission
```

{% endcode %}


# Discord

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FIYHfrUVLrpttcVWRiLQv%2Fdiscord-webhook.png?alt=media&amp;token=7217afb0-ef03-4902-bf32-d6d450985a29" alt=""><figcaption></figcaption></figure>

<div><figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FF0gvimf86XtGCx91AwSt%2Flink-discord.gif?alt=media&amp;token=03d66720-9f63-4625-bf37-743a0a2c3673" alt=""><figcaption></figcaption></figure> <figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FPUk5ujIUet2yWEqadHSG%2Flink-minecraft.gif?alt=media&amp;token=fad595d8-17ad-4695-b855-6bc763cbbf7d" alt=""><figcaption></figcaption></figure></div>

{% code fullWidth="true" %}

```yaml
########################################################################################################################
#
# ██████╗░██╗░██████╗░█████╗░░█████╗░██████╗░██████╗░
# ██╔══██╗██║██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗
# ██║░░██║██║╚█████╗░██║░░╚═╝██║░░██║██████╔╝██║░░██║
# ██║░░██║██║░╚═══██╗██║░░██╗██║░░██║██╔══██╗██║░░██║
# ██████╔╝██║██████╔╝╚█████╔╝╚█████╔╝██║░░██║██████╔╝
# ╚═════╝░╚═╝╚═════╝░░╚════╝░░╚════╝░╚═╝░░╚═╝╚═════╝░
#
# This module allows you to display information about your discord through a webhook, more information here:
# https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks
#
# You must define the URL of the webhook and the type of logo display
#
########################################################################################################################

enable: true

# Send the player’s message on your discord
chat-message:
  enable: false # Enable or not the webhook
  webhook: "https://discord.com/api/webhooks/"
  avatar: "https://mc-heads.net/avatar/%uuid%"
  message: "%message%"
  username: "%player%"

# Send a message when a player logs in
join-message:
  enable: false # Enable or not the webhook
  webhook: "https://discord.com/api/webhooks/"
  embeds:
    - author:
        name: "%player% just logged in"
        icon-url: "https://mc-heads.net/head/%uuid%"
      color: "#00ff00" # Sets the color of the embed

# Send a message when a player logs out
left-message:
  enable: false # Enable or not the webhook
  webhook: "https://discord.com/api/webhooks/"
  embeds:
    - author:
        name: "%player% just logged out"
        icon-url: "https://mc-heads.net/head/%uuid%"
      color: "#ff0000" # Sets the color of the embed

# Sends a message when the player first logs in
first-join-message:
  enable: false # Enable or not the webhook
  webhook: "https://discord.com/api/webhooks/"
  embeds:
    - author:
        name: "%player% just logged in for the first time"
        icon-url: "https://mc-heads.net/head/%uuid%"
      color: "#44ff44" # Sets the color of the embed
      
enable-link-account: false

log-link-error-message:
  enable: false # Enable or not the webhook
  webhook: "https://discord.com/api/webhooks/"
  message: "%player% vient d'essayer de lier son compte avec le code `%code%`"

log-link-success-message:
  enable: false # Enable or not the webhook
  webhook: "https://discord.com/api/webhooks/"
  message: "%player% vient de lier son compte avec le code `%code%` (%discord-name%:%discord-id%)"

log-unlink-message:
  enable: false # Enable or not the webhook
  webhook: "https://discord.com/api/webhooks/"
  message: "%player% vient de délier son compte (%discord-name%:%discord-id%)"      
```

{% endcode %}

## Discord Bot

The bot allows you to link a minecraft account to a discord account

To set the link message you must make the command `/setlinkmessage`

{% code fullWidth="true" %}

```yaml
# Se bot discord is not a minecraft plugin!

# The token of your Discord Bot
bot-token: "DISCORD-TOKEN"

# The guild ID of your Discord Server
guild-id: 511516467615760405

database-configuration:
  # The prefix that will be applied to all tables, if you have several plugins with the same database you must have one.
  # It is advisable not to change this value
  tablePrefix: "zessentials_"
  # IP Address of the machine the database is hosted on
  host: 192.168.10.10
  # Port of the database, by default, MYSQL's port is 3306
  port: 3306
  # Database username
  user: homestead
  # Database password
  password: 'secret'
  # Database
  database: zessentials
  # Enable of not the SQL debug mode
  debug: false

link:

  enable: true

  # Allows logs of actions performed by a user
  log:
    channel: 1324025378142163025
    create: "**%name%** (%id%) has just created the code `%code%`."
    ask: "**%name%** (%id%) has just requested the code `%code%`."

  # Message sent when user interacts with the message
  messages:
    code: "Use the command `/link %code%` to link your account."
    already: "Your account is already linked."

  # Button that the player will have to interact to link his account
  button:
    name: "Click to link your account"
    style: SUCCESS
    emoji: "U+2795" # The emoji that will be displayed on the button

  embed:
    title:
      title: "Link my account"
      # url: "https://zessentials.net" # The URL of the title
    description: "To link your account, follow these steps:\n1. Click the button above.\n2. Run the command in-game to complete the linking of your account."
    color:
      r: 10
      g: 150
      b: 10
      alpha: 255 # The alpha value of the color (optional)
    footer:
      text: "zEssentials - 2025"
      # iconUrl: "https://groupez.dev/storage/images/users/0/0/0/1.png" # Optional
    # thumbnail:
      # url: "https://groupez.dev/storage/images/users/0/0/0/1.png"
    # image:
      # url: "https://example.com/image.png"
    # author:
      # name: "Author Name"
      # url: "https://authorwebsite.net" # Optional
      # iconUrl: "https://groupez.dev/storage/images/users/0/0/0/1.png"
```

{% endcode %}


# Economy

Manage the server economy

This module allows you to create multiple virtual economies. You can use Vault to link one of the economies to Vault.

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2Fa6oSbFDb9SE6ZLJiDQs7%2Fholo.png?alt=media&amp;token=7d2a7313-0e56-44af-8753-51f41f879728" alt="" width="375"><figcaption><p>Baltop hologram</p></figcaption></figure>

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FYRBuCC9cKoxvJo1QF2DH%2Fbaltop-command.png?alt=media&amp;token=38ecb0c8-b0b9-4bc0-b49d-545274b2f747" alt=""><figcaption></figcaption></figure>

## Configuration

### Config.yml

{% code fullWidth="true" %}

```yaml
########################################################################################################################
#
# ███████╗░█████╗░░█████╗░███╗░░██╗░█████╗░███╗░░░███╗██╗░░░██╗
# ██╔════╝██╔══██╗██╔══██╗████╗░██║██╔══██╗████╗░████║╚██╗░██╔╝
# █████╗░░██║░░╚═╝██║░░██║██╔██╗██║██║░░██║██╔████╔██║░╚████╔╝░
# ██╔══╝░░██║░░██╗██║░░██║██║╚████║██║░░██║██║╚██╔╝██║░░╚██╔╝░░
# ███████╗╚█████╔╝╚█████╔╝██║░╚███║╚█████╔╝██║░╚═╝░██║░░░██║░░░
# ╚══════╝░╚════╝░░╚════╝░╚═╝░░╚══╝░╚════╝░╚═╝░░░░░╚═╝░░░╚═╝░░░
#
# Documentation: https://zessentials.groupez.dev/modules/economy
#
########################################################################################################################

enable: true

# The economy that will be used by default.
default-economy: "money"

# List of available economies
economies:
  # Economy name
  - name: money
    # Economy display name. This name will be used to be displayed in player messages whenever possible.
    display-name: Money
    # Economy symbol
    symbol: "$"
    # Economy format
    format: "%price%$"
    # Should the economy be used for vault. Only one economy can work with vault.
    vault: true
    # The minimum number possible with this economy.
    min: -99999999999999999999999999999999999999999999999999999999999999
    # The maximum number possible with this economy.
    max: 99999999999999999999999999999999999999999999999999999999999999
    # The minimum number for /pay command
    min-pay: 0.1
    # The maximum number for /pay command
    max-pay: 999999999999999
    # Enable the ability to use /pay command with this economy
    enable-pay: true
    # Activate confirmation menu for /pay command. This menu will confirm that you really want to send money to the player
    enable-confirm-inventory: true
    # The minimum number to display the confirmation inventory, below the command will run directly
    min-confirm-inventory: 10000000
    # The format type of for numbers
    price-format: PRICE_WITH_REDUCTION

    # Economy name
  - name: coins
    # Economy display name. This name will be used to be displayed in player messages whenever possible.
    display-name: Coins
    # Economy symbol
    symbol: "⛁"
    # Economy format
    format: "%price%⛁"
    # Should the economy be used for vault. Only one economy can work with vault.
    vault: false
    # The minimum number possible with this economy.
    min: 0
    # The maximum number possible with this economy.
    max: 9999999999999999999999999
    # The minimum number for /pay command
    min-pay: 0.1
    # The maximum number for /pay command
    max-pay: 1000
    # Enable the ability to use /pay command with this economy
    enable-pay: true
    # Activate a confirmation menu for /pay command. This menu will confirm that you really want to send money to the player
    enable-confirm-inventory: true
    # The minimum number to display the confirmation inventory, below the command will run directly
    min-confirm-inventory: 0
    # The format type of for numbers
    price-format: PRICE_RAW

# Set a number to use a format. For example, /pay Maxlego08 10k will become/pay Maxlego08 10000
# Allows to multiply a number very simply
number-format-sell-multiplication:
  - format: k
    multiplication: 1000
  - format: m
    multiplication: 1000000
  - format: b
    multiplication: 1000000000
  - format: t
    multiplication: 1000000000000
  - format: q
    multiplication: 1000000000000000
  - format: qq
    multiplication: 1000000000000000000
  - format: s
    multiplication: 1000000000000000000000
  - format: ss
    multiplication: 1000000000000000000000000
  - format: o
    multiplication: 1000000000000000000000000000
  - format: n
    multiplication: 1000000000000000000000000000000
  - format: d
    multiplication: 1000000000000000000000000000000000
  - format: uu
    multiplication: 1000000000000000000000000000000000000
  - format: dd
    multiplication: 1000000000000000000000000000000000000000
  - format: tr
    multiplication: 1000000000000000000000000000000000000000000

# Price format available
# - PRICE_RAW - Display the number without any changes
# - PRICE_WITH_DECIMAL_FORMAT - Display the number with the price-decimal-format configuration
# - PRICE_WITH_REDUCTION - Display the number with the price-reduction configuration
price-format: PRICE_WITH_REDUCTION

price-decimal-format: '#,###.#'

# Documentation for String format: https://www.geeksforgeeks.org/java-string-format-method-with-examples/
price-reductions:
  - format: "#.#" # Blank format to display text directly
    maxAmount: 1000
    # Add colors to text display, works with MiniMessage
    display: "#2bd66f%amount%"
  - format: "%.1fK"
    maxAmount: 1000000
    display: "#a3d14d%amount%"
  - format: "%.1fM"
    maxAmount: 1000000000
    display: "#ebbc23%amount%"
  - format: "%.1fB"
    maxAmount: 1000000000000
    display: "#eb4b23%amount%"
  - format: "%.2fT"
    maxAmount: 1000000000000000
    display: "#ff9999%amount%"
  - format: "%.2fQ"
    maxAmount: 100000000000000000
    display: "#ff3535%amount%"

# Baltop

# Enable or disable baltop
enable-baltop: true

# Time in seconds for baltop to update
baltop-refresh-seconds: 900

# Default value if a player does not exist for a position
baltop-placeholder-user-empty: "?"

# How to display baltop with/baltop command
# MESSAGE - Send a message
# INVENTORY - Open an inventory
baltop-display: MESSAGE

# Economy used to be displayed in baltop
baltop-message-economy: money

# Number of players to display in the message
baltop-message-amount: 10

# Allows players to cache their money offline.
# If you want to have a baltop system with all your players you must activate this option
store-offline-player-money: false
```

{% endcode %}

### Confirm Pay Inventory

{% code fullWidth="true" %}

```yaml
name: '#3f3f3fᴄᴏɴꜰɪʀᴍ'
size: 27
items:
  cancel:
    slot: 10
    closeInventory: true
    item:
      material: RED_STAINED_GLASS_PANE
      name: '#ff0000ᴄᴀɴᴄᴇʟ'
      lore:
        - '&7Click to cancel the payment'

  head:
    slot: 13
    item:
      playerHead: '%zessentials_user_target_player_name%'
      name: '#99E0FF%zessentials_user_target_player_name%'
      lore:
        - '&7Amount&8: #99E0FF%zessentials_user_target_pay_amount%'

  confirm:
    type: ZESSENTIALS_PAY_CONFIRM
    slot: 16
    closeInventory: true
    item:
      material: GREEN_STAINED_GLASS_PANE
      name: '#00ff00ᴄᴏɴғɪʀᴍ'
      lore:
        - '&7Click to send &n%zessentials_user_target_player_name%&r &7payment of #99E0FF%zessentials_user_target_pay_amount%'
```

{% endcode %}

### Baltop Inventory

{% code fullWidth="true" %}

```yaml
name: "#00f986ᴍᴏsᴛ ᴍᴏɴᴇʏ"
size: 36
items:
  first:
    slot: 13
    item:
      playerHead: "%zessentials_economy_baltop_name_money_1%"
      name: "#00f986#1 &f%zessentials_economy_baltop_name_money_1%: %zessentials_economy_baltop_formatted_amount_money_1%"
  second:
    slot: 21
    item:
      playerHead: "%zessentials_economy_baltop_name_money_2%"
      name: "#00f986#2 &f%zessentials_economy_baltop_name_money_2%: %zessentials_economy_baltop_formatted_amount_money_2%"
  third:
    slot: 23
    item:
      playerHead: "%zessentials_economy_baltop_name_money_3%"
      name: "#00f986#3 &f%zessentials_economy_baltop_name_money_3%: %zessentials_economy_baltop_formatted_amount_money_3%"
```

{% endcode %}


# Hologram

The hologram module allows you to create holograms using Display entities. Everything works through packets, so you do not need to install additional plugins to make this module work.

With Display entities, you can create holograms for text, items, and blocks. For more information on Display Entities, visit: [Minecraft Display Entities](https://minecraft.wiki/w/Display).

Since packets are used, each placeholder is unique to each player. You can use PlaceholderAPI to display data that only the player can see, such as their current balance.

To configure the holograms, you have all the in-game commands at your disposal, simplifying the process—no need to use configuration files!

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FoHbh8WkRQCLOjagmMuQw%2Fholo-create.gif?alt=media&amp;token=ce0b48de-e0fc-46cb-bb5a-9ed47a98851e" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FPkH5DUD85NcesS4UZbUP%2Fholo-addline.gif?alt=media&amp;token=04b11a3a-6de2-4e7e-9a6f-de6d83b79ea6" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FsN974mkj0nnHSzfNtLXQ%2Fholo-scale.gif?alt=media&amp;token=5ea9bf06-b3d4-48c0-8c52-c37ff7066fb2" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FnAE4rXtDIVFp5yUgB7m5%2Fholo-insert.gif?alt=media&amp;token=35ea4558-a02a-4327-8a1a-a3f1f4647ed6" alt=""><figcaption></figcaption></figure>

## Configuration

### Config.yml

{% code fullWidth="true" %}

```yaml
########################################################################################################################
#
# ██╗░░██╗░█████╗░██╗░░░░░░█████╗░░██████╗░██████╗░░█████╗░███╗░░░███╗
# ██║░░██║██╔══██╗██║░░░░░██╔══██╗██╔════╝░██╔══██╗██╔══██╗████╗░████║
# ███████║██║░░██║██║░░░░░██║░░██║██║░░██╗░██████╔╝███████║██╔████╔██║
# ██╔══██║██║░░██║██║░░░░░██║░░██║██║░░╚██╗██╔══██╗██╔══██║██║╚██╔╝██║
# ██║░░██║╚█████╔╝███████╗╚█████╔╝╚██████╔╝██║░░██║██║░░██║██║░╚═╝░██║
# ╚═╝░░╚═╝░╚════╝░╚══════╝░╚════╝░░╚═════╝░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░░░░╚═╝
#
# Documentation: https://zessentials.groupez.dev/modules/hologram
#
########################################################################################################################

enable: true

# Displays a hologram that indicates the number of credits an entity will receive
damage-indicator:
  # Do you want this feature enabled ?
  enabled: false
  # Do you want to display damage for players ?
  players: true
  # Do you want to display damage for mobs ?
  mobs: true
  # Do you want to display damage for animals ?
  animals: true
  # Do you want to display damage for water mobs ?
  waterMobs: true
  # How long will the hologram stay in ticks
  duration: 40
  # Damage placeholder: %damage%
  appearance: '<#ed2626>%damage%'
  # Appearance of the damage, if the damage is critical
  criticalAppearance: '<#ed2626><bold>ᴄʀɪᴛ<#bf0b0b> %damage%'
  # Height offset
  height: 1.0
  # Set an offset to X
  offsetX: 0.5
  # Set an offset to Y
  offsetY: 0.5
  # Set an offset to Z
  offsetZ: 0.5
  # To set the format to display the number of damage inflicted with a number after the comma
  decimalFormat: "#.#"
  # Disable damage indicator on certain entities
  disabledEntities:
    - WITHER
```

{% endcode %}

### Baltop.yml

This configuration is an example of what can be done. Holograms can be configured directly in-game with commands. You can use the file from to configure your holograms.

{% code fullWidth="true" %}

```yaml
type: TEXT
name: baltop
location: world,-25.5,95.0,-2.99,0.0,0.0
bill-board: FIXED
shadow-radius: 0.0
shadow-strength: 1.0
visibility-distance: -1
brightness:
  block: 15
  sky: 15
scale:
  x: 1.0
  y: 1.0
  z: 1.0
translation:
  x: 0.0
  y: 0.0
  z: 0.0
text-alignment: CENTER
text-shadow: false
text-background: default
see-through: false
lines:
- line: 1
  text: '#00f986ᴍᴏsᴛ ᴍᴏɴᴇʏ'
- line: 2
  text: ' #00f986#1 &f%zessentials_center_{zessentials_economy_baltop_name_money_1}&7_{zessentials_economy_baltop_formatted_amount_money_1}_120%'
  event: fr.maxlego08.essentials.api.event.events.economy.EconomyBaltopUpdateEvent
- line: 3
  text: ' #00f986#2 &f%zessentials_center_{zessentials_economy_baltop_name_money_2}&7_{zessentials_economy_baltop_formatted_amount_money_2}_120%'
  event: fr.maxlego08.essentials.api.event.events.economy.EconomyBaltopUpdateEvent
- line: 4
  text: ' #00f986#3 &f%zessentials_center_{zessentials_economy_baltop_name_money_3}&7_{zessentials_economy_baltop_formatted_amount_money_3}_120%'
  event: fr.maxlego08.essentials.api.event.events.economy.EconomyBaltopUpdateEvent
- line: 5
  text: ' #00f986#4 &f%zessentials_center_{zessentials_economy_baltop_name_money_4}&7_{zessentials_economy_baltop_formatted_amount_money_4}_120%'
  event: fr.maxlego08.essentials.api.event.events.economy.EconomyBaltopUpdateEvent
- line: 6
  text: ' #00f986#5 &f%zessentials_center_{zessentials_economy_baltop_name_money_5}&7_{zessentials_economy_baltop_formatted_amount_money_5}_120%'
  event: fr.maxlego08.essentials.api.event.events.economy.EconomyBaltopUpdateEvent
- line: 7
  text: ' #00f986#6 &f%zessentials_center_{zessentials_economy_baltop_name_money_6}&7_{zessentials_economy_baltop_formatted_amount_money_6}_120%'
  event: fr.maxlego08.essentials.api.event.events.economy.EconomyBaltopUpdateEvent
- line: 8
  text: ' #00f986#7 &f%zessentials_center_{zessentials_economy_baltop_name_money_7}&7_{zessentials_economy_baltop_formatted_amount_money_7}_120%'
  event: fr.maxlego08.essentials.api.event.events.economy.EconomyBaltopUpdateEvent
- line: 9
  text: ' #00f986#8 &f%zessentials_center_{zessentials_economy_baltop_name_money_8}&7_{zessentials_economy_baltop_formatted_amount_money_8}_120%'
  event: fr.maxlego08.essentials.api.event.events.economy.EconomyBaltopUpdateEvent
- line: 10
  text: ' #00f986#9 &f%zessentials_center_{zessentials_economy_baltop_name_money_9}&7_{zessentials_economy_baltop_formatted_amount_money_9}_120%'
  event: fr.maxlego08.essentials.api.event.events.economy.EconomyBaltopUpdateEvent
- line: 11
  text: '#00f986#10 &f%zessentials_center_{zessentials_economy_baltop_name_money_10}&7_{zessentials_economy_baltop_formatted_amount_money_10}_120%'
  event: fr.maxlego08.essentials.api.event.events.economy.EconomyBaltopUpdateEvent
- line: 12
  text: ''
- line: 13
  text: '#00f986#%zessentials_user_position_money% &f%player_name%: %zessentials_user_formatted_balance_money%'
  event: fr.maxlego08.essentials.api.event.events.user.UserEconomyPostUpdateEvent
```

{% endcode %}

## Events

To update your holograms, you can use the event system. This system allows you to avoid using tasks for updating placeholders. Traditional plugins often use tasks unnecessarily, which updates data continuously for all players. **zEssentials** aims to be as optimized as possible, making the event system the most efficient option. When a player performs an action on your server, an event is triggered (whether by Spigot, Paper, Folia, or even zEssentials). The configuration listens for the event you specified for the line and updates only that line.

For example, in the case of the baltop, two events are used. The first is the `EconomyBaltopUpdateEvent`, which is called when the baltop is updated. The second is the `UserEconomyPostUpdateEvent`, which is called when a player's economy is modified. Thus, the holograms will update for all players when the baltop is updated and for a specific player when their money is updated. Your event must be a player event ([with some exceptions](/developpers/events)). You can find the list of events here: <https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/package-summary.html>


# Home

This module allows you to manage players' homes

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FtifyYYtwnLMAdnFJ3ca3%2Fsethome.png?alt=media&amp;token=3903a351-87b8-4105-88fa-98da12221e8f" alt=""><figcaption><p>Set home</p></figcaption></figure>

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FJofRzg7l7symFhzoWkjf%2Fhomes.png?alt=media&amp;token=e599e2b7-0f57-4ef8-af1b-0b9855321129" alt=""><figcaption><p>Home multi line</p></figcaption></figure>

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FvzaByHqwRCu1VjQWg2Ui%2Fhome_simple.png?alt=media&amp;token=8642801b-219a-44d8-865e-5cbcceb5e590" alt=""><figcaption><p>Home message</p></figcaption></figure>

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FFWOlbVhznhkvf6CC1oHf%2Fhome_inventory.png?alt=media&amp;token=558e1df4-efbd-4460-8a92-8fae08d99e62" alt=""><figcaption><p>Home inventory</p></figcaption></figure>

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2F5BZlDdUxqXgy6MAhoB7P%2Fhome_donut.png?alt=media&amp;token=77a2765d-2c4e-4573-9e76-0adde9af25a6" alt=""><figcaption></figcaption></figure>

## Configuration

### Config.yml

{% code fullWidth="true" %}

```yaml
########################################################################################################################
#
# ██╗░░██╗░█████╗░███╗░░░███╗███████╗
# ██║░░██║██╔══██╗████╗░████║██╔════╝
# ███████║██║░░██║██╔████╔██║█████╗░░
# ██╔══██║██║░░██║██║╚██╔╝██║██╔══╝░░
# ██║░░██║╚█████╔╝██║░╚═╝░██║███████╗
# ╚═╝░░╚═╝░╚════╝░╚═╝░░░░░╚═╝╚══════╝
#
# Documentation: https://zessentials.groupez.dev/modules/home
#
########################################################################################################################

enable: true

# Allow players to have multiple homes.
# You must set the permission the player must have and the home number for that permission.
# If the player has multiple permissions then the maximum number of home will be used.
permissions:
  - permission: "essentials.home.default"
    amount: 3
  - permission: "essentials.home.vip"
    amount: 5
  - permission: "essentials.home.staff"
    amount: 10

# Change the display for/home
#
# IN_LINE: Displays a message with a header and footer (optional) and a message with the list of homes on the same line
# INVENTORY: Displays the player’s homes in an inventory
# INVENTORY_DONUT: Displays the player’s homes in an inventory that works exactly the same as donutsmpt
# MULTI_LINE: Displays a message with a header and footer (optional) and a message per home (You can display buttons to teleport or delete the home quickly)
home-display: MULTI_LINE

# Sets a rule for the names of homes
home-regex: "[a-zA-Z0-9]+"

# Maximum char number for the home name
home-name-max: 16

# Minimum char number for the home name
home-name-min: 1
```

{% endcode %}

### Homes.yml

{% code fullWidth="true" %}

```yaml
name: '#3f3f3fʜᴏᴍᴇs'
size: 54
items:
  decorations:
    item:
      material: GRAY_STAINED_GLASS_PANE
      name: '&e'
    slots:
      - 9-17
  homes:
    type: ZESSENTIALS_HOMES
    slots:
      - 18-53
    item:
      material: '%material%'
      name: '&f%name%'
      lore:
        - '#ffd353ℹ Informations#3f3f3f:'
        - '#3f3f3f• &7World#3f3f3f: #4cd5ff%world%'
        - '#3f3f3f• &7Environment#3f3f3f: #4cd5ff%environment%'
        - ''
        - '&f➥ &nLeft Click&r&7 to teleport'
        - '&f➨ &nDrop key&r&7 to edit material'
        - '&f➦ &nRight Click&r&7 to delete'
    else:
      slots:
        - 31
      item:
        material: RED_STAINED_GLASS_PANE
        name: "#ff0000✗ ʏᴏᴜ ᴅᴏɴ'ᴛ ʜᴀᴠᴇ ʜᴏᴍᴇs"
        lore:
          - '&7To create a home use the command:'
          - ''
          - '#3f3f3f• #4cd5ff/sethome &7<home name>'
  informations:
    slot: 4
    item:
      playerHead: "%player%"
      name: '&fʜᴏᴍᴇs'
      lore:
        - '#ffd353ℹ Informations#3f3f3f:'
        - '#3f3f3f• &7Homes#3f3f3f: #4cd5ff%zessentials_home_count%'
        - '#3f3f3f• &7Max homes#3f3f3f: #4cd5ff%zessentials_home_max%'
        - ''
        - '#3f3f3f• &7Command#3f3f3f: #4cd5ff/sethome &7<home name>'
```

{% endcode %}

### Home\_donut.yml

{% code fullWidth="true" %}

```yaml

name: '#3f3f3fʜᴏᴍᴇs'
size: 36
items:

  # Slot 1 bed
  home1-up:
    pattern:
      fileName: 'home_up' # Pattern file name
      pluginName: 'zEssentials'
      slot: 10
      home: 1

  # Slot 1 dye
  home1-down:
    pattern:
      fileName: 'home_down' # Pattern file name
      pluginName: 'zEssentials'
      slot: 19
      home: 1

  # Slot 2 bed
  home2-up:
    pattern:
      fileName: 'home_up' # Pattern file name
      pluginName: 'zEssentials'
      slot: 11
      home: 2

  # Slot 2 dye
  home2-down:
    pattern:
      fileName: 'home_down' # Pattern file name
      pluginName: 'zEssentials'
      slot: 20
      home: 2

  # Slot 3 bed
  home3-up:
    pattern:
      fileName: 'home_up' # Pattern file name
      pluginName: 'zEssentials'
      slot: 12
      home: 3

  # Slot 3 dye
  home3-down:
    pattern:
      fileName: 'home_down' # Pattern file name
      pluginName: 'zEssentials'
      slot: 21
      home: 3

  # Slot 4 bed
  home4-up:
    pattern:
      fileName: 'home_up' # Pattern file name
      pluginName: 'zEssentials'
      slot: 13
      home: 4

  # Slot 4 dye
  home4-down:
    pattern:
      fileName: 'home_down' # Pattern file name
      pluginName: 'zEssentials'
      slot: 22
      home: 4

  # Slot 5 bed
  home5-up:
    pattern:
      fileName: 'home_up' # Pattern file name
      pluginName: 'zEssentials'
      slot: 14
      home: 5

  # Slot 5 dye
  home5-down:
    pattern:
      fileName: 'home_down' # Pattern file name
      pluginName: 'zEssentials'
      slot: 23
      home: 5

  # Slot 6 bed
  home6-up:
    pattern:
      fileName: 'home_up' # Pattern file name
      pluginName: 'zEssentials'
      slot: 15
      home: 6

  # Slot 6 dye
  home6-down:
    pattern:
      fileName: 'home_down' # Pattern file name
      pluginName: 'zEssentials'
      slot: 24
      home: 6

  # Slot 7 bed
  home7-up:
    pattern:
      fileName: 'home_up' # Pattern file name
      pluginName: 'zEssentials'
      slot: 16
      home: 7

  # Slot 7 dye
  home7-down:
    pattern:
      fileName: 'home_down' # Pattern file name
      pluginName: 'zEssentials'
      slot: 25
      home: 7
```

{% endcode %}

### Home\_delete.yml

{% code fullWidth="true" %}

```yaml
name: '#3f3f3fᴄᴏɴғɪʀᴍ ᴅᴇʟᴇᴛᴇ'
size: 27
items:

  information:
    slot: 13
    item:
      material: BLUE_DYE
      name: '#00a4fcʜᴏᴍᴇ %zmenu_player_value_home_to_delete%'

  cancel:
    type: inventory
    inventory: 'home'
    plugin: 'zMenu'
    slot: 11
    item:
      material: RED_STAINED_GLASS_PANE
      name: '#ff0000ᴄᴀɴᴄᴇʟ'
      lore:
        - '#fcfcfcClick to cancel'

  confirm:
    slot: 15
    commands:
      - 'delhome %zmenu_player_value_home_to_delete%'
    closeInventory: true
    item:
      material: GREEN_STAINED_GLASS_PANE
      name: '#00fc00ᴄᴏɴғɪʀᴍ'
      lore:
        - '#fcfcfcClick to delete'
```

{% endcode %}


# Items

This module allows you to create custom items that can be given using the **/give** and **/giveall** commands. You must use the [zMenu documentation](https://docs.zmenu.dev/configurations/items) for configuring these items.

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2F7aAkEZF2r00A22NFWbJE%2Fmaster_sword_give.png?alt=media&amp;token=f2402e2d-2eca-4543-ad93-2aa5c5c51f91" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2F0dioGD1bAyNet5hLjh1X%2Fmaster_sword.png?alt=media&amp;token=eaf4c344-35c0-4e92-9168-4a01bbf1740f" alt=""><figcaption></figcaption></figure>

## Configuraiton

{% code fullWidth="true" %}

```yaml
########################################################################################################################
#
# ██╗████████╗███████╗███╗░░░███╗░██████╗
# ██║╚══██╔══╝██╔════╝████╗░████║██╔════╝
# ██║░░░██║░░░█████╗░░██╔████╔██║╚█████╗░
# ██║░░░██║░░░██╔══╝░░██║╚██╔╝██║░╚═══██╗
# ██║░░░██║░░░███████╗██║░╚═╝░██║██████╔╝
# ╚═╝░░░╚═╝░░░╚══════╝╚═╝░░░░░╚═╝╚═════╝░
#
# Documentation: https://zessentials.groupez.dev/modules/items
# zMenu Items documentation: https://docs.zmenu.dev/configurations/items
#
########################################################################################################################

custom-items:
  master_sword:
    name: "<gradient:#e88d1e:#e8511e>ᴍᴀsᴛᴇʀ sᴡᴏʀᴅ</gradient>"
    material: DIAMOND_SWORD
    enchants:
      - SHARPNESS,10
      - UNBREAKING,10
      - LOOTING,10
      - MENDING,1
```

{% endcode %}


# Join / Quit

This module enables you to perform actions when players connect and disconnect.

## Configuration

```yaml
########################################################################################################################
#
# ░░░░░██╗░█████╗░██╗███╗░░██╗░░░░██████╗░██╗░░░██╗██╗████████╗
# ░░░░░██║██╔══██╗██║████╗░██║░░░██╔═══██╗██║░░░██║██║╚══██╔══╝
# ░░░░░██║██║░░██║██║██╔██╗██║░░░██║██╗██║██║░░░██║██║░░░██║░░░
# ██╗░░██║██║░░██║██║██║╚████║░░░╚██████╔╝██║░░░██║██║░░░██║░░░
# ╚█████╔╝╚█████╔╝██║██║░╚███║░░░░╚═██╔═╝░╚██████╔╝██║░░░██║░░░
# ░╚════╝░░╚════╝░╚═╝╚═╝░░╚══╝░░░░░░╚═╝░░░░╚═════╝░╚═╝░░░╚═╝░░░
#
# Documentation: https://zessentials.groupez.dev/modules/home
#
########################################################################################################################

enable: true

# Should players with permissions be able to join and part silently?
# You can control this with essentials.silentjoin and essentials.silentquit permissions if it is enabled.
allow-silent-join-quit: false


# Available placeholders:
# %player% - The player's name.
# %displayName% - The player's display name.
#
# Available type:
# DISABLE
# DEFAULT
# CUSTOM
custom-join-message: CUSTOM
custom-quit-message: CUSTOM

# Should a message be sent when the player first logs in
#
# Available placeholders:
# %player% - The player's name
# %totalUser% - The total number of unique players
# %totalUserFormat% - The total formatted number of unique players
allow-first-join-broadcast: true

# Send a welcome message to the player on first login
#
# Available placeholders:
# %player% - The player's name.
# %displayName% - The player's display name.
allow-first-join-motd: true

# The number of ticks before sending the message
first-join-motd-ticks: 20 # 1 second = 20 ticks
```


# Kits

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2F2Wygh8V46WBhknBCtg4x%2Fkits.gif?alt=media&amp;token=59991515-b2fb-4f5e-ac31-55464b290277" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2Fzw4GJ3YSfC9yBLJpYhbD%2Fcooldown-delete.gif?alt=media&amp;token=fbd0467d-1e6f-4b09-a4e0-98e7248e9cb2" alt=""><figcaption></figcaption></figure>

## Configuration

### `name`

Sets the name of the kit.

```yaml
name: fight
```

### `display-name`

Allows you to define the name of the kit that will be displayed in messages.

```yaml
display-name: "Fight"
```

### `cooldown`

Set the default cooldown of the kit, in seconds.

```yaml
cooldown: 86400
```

### `permission-cooldowns`

Allows to set the list of permissions and cooldowns, the smallest cooldown will be used.

```yaml
permission-cooldowns:
  - permission: 'essentials.kits.fight.vip'
    cooldown: 82800
  - permission: 'essentials.kits.fight.admin'
    cooldown: 3600
```

### `permission`

Allows you to define the permission of the kit, by default the permission will be: `essentials.kit.<kit name>`

```yaml
permission: essentials.kit.builder
```

### `items`

Allows you to define the list of items used by the kit. You must use [zMenu](https://docs.zmenu.dev/configurations/items) documentation for item items.

```yaml
items:
  item-1:
    material: GRASS_BLOCK
    amount: 64
    name: builder
```

{% hint style="info" %}
If you want to define items coming from another plugin, you must use a `console command` **action** to give the item to your player. You can also convert the item to **base64** with the command `/zm save`
{% endhint %}

### `actions`

Allows you to define a list of actions that will be performed when the player receives the kit. You must go to the [zmenu](https://docs.zmenu.dev/configurations/actions) docs for actions.

```yaml
actions:
  - type: console command
    commands:
      - 'effect give %player% minecraft:speed 60'
```

### `helmet`

Allows to define the item that will have on the player’s helmet, if the player already has an equipped item he will receive the item.

```yaml
helmet:
  material: DIAMOND_HELMET
  enchants:
    - protection,1
```

### `chestplate`

Allows to define the item that will have on the player’s chestplate, if the player already has an equipped item he will receive the item.

```yaml
chestplate:
  material: IRON_CHESTPLATE
  enchants:
    - protection,3
```

### `leggings`

Allows to define the item that will have on the player’s leggings, if the player already has an equipped item he will receive the item.

```yaml
leggings:
  material: IRON_LEGGINGS
  enchants:
    - protection,3
```

### `boots`

Allows to define the item that will have on the player’s boots, if the player already has an equipped item he will receive the item.

```yaml
boots:
  material: DIAMOND_BOOTS
  enchants:
    - protection,1
```

## Files

### Config.yml

```yaml
########################################################################################################################
#
# ██╗░░██╗██╗████████╗░██████╗
# ██║░██╔╝██║╚══██╔══╝██╔════╝
# █████═╝░██║░░░██║░░░╚█████╗░
# ██╔═██╗░██║░░░██║░░░░╚═══██╗
# ██║░╚██╗██║░░░██║░░░██████╔╝
# ╚═╝░░╚═╝╚═╝░░░╚═╝░░░╚═════╝░
#
# Documentation: https://zessentials.groupez.dev/modules/kits
#
########################################################################################################################

enable: true

# Change the display of the kits
#
# IN_LINE: Displays a message with the list of kits on the same line
# INVENTORY: Displays the kits in an inventory
# MULTI_LINE: Displays a message with a header and footer (optional) and a message per kits
display: IN_LINE

# Gives kits when the player joins the server for the first time
kits-on-first-join:
  - "tools"
```

### Kits.yml

```yaml
name: "#3f3f3fᴋɪᴛs"
size: 27
items:
  tools:
    slot: 11
    type: ZESSENTIALS_KIT_COOLDOWN
    kit: "tools"
    update: true
    refreshOnClick: true
    item:
      material: IRON_PICKAXE
      name: '&fᴋɪᴛ&8: #c1c1c3ɪʀᴏɴ ᴛᴏᴏʟs'
      lore:
        - ''
        - '#ffd353ℹ Informations#3f3f3f:'
        - '#3f3f3f• &7Cooldown#3f3f3f: #4cd5ff%cooldown%'
        - ''
        - '&f➥ <st>&nLeft Click&r&7 to get the kit'
        - '&f➦ &nRight Click&r&7 to view the contents'
    else:
      type: ZESSENTIALS_KIT_GET
      kit: "tools"
      closeInventory: true
      item:
        material: IRON_PICKAXE
        name: '&fᴋɪᴛ&8: #c1c1c3ɪʀᴏɴ ᴛᴏᴏʟs'
        lore:
          - ''
          - '#ffd353ℹ Informations#3f3f3f:'
          - '#3f3f3f• &7Cooldown#3f3f3f: #43ff15Available !'
          - ''
          - '&f➥ &nLeft Click&r&7 to get the kit'
          - '&f➦ &nRight Click&r&7 to view the contents'
      else:
        item:
          material: IRON_PICKAXE
          name: '&fᴋɪᴛ&8: #c1c1c3ɪʀᴏɴ ᴛᴏᴏʟs'
          lore:
            - ''
            - '#ffd353ℹ Informations#3f3f3f:'
            - "#3f3f3f• #ff0000You don't have permission"
            - ''
            - '&f➥ <st>&nLeft Click&r&7 to get the kit'
            - '&f➦ &nRight Click&r&7 to view the contents'

  food:
    slot: 13
    type: ZESSENTIALS_KIT_COOLDOWN
    kit: "food"
    update: true
    refreshOnClick: true
    item:
      material: COOKED_BEEF
      name: '&fᴋɪᴛ&8: #c1c1c3ғᴏᴏᴅ'
      lore:
        - ''
        - '#ffd353ℹ Informations#3f3f3f:'
        - '#3f3f3f• &7Cooldown#3f3f3f: #4cd5ff%cooldown%'
        - ''
        - '&f➥ <st>&nLeft Click&r&7 to get the kit'
        - '&f➦ &nRight Click&r&7 to view the contents'
    else:
      type: ZESSENTIALS_KIT_GET
      kit: "food"
      closeInventory: true
      item:
        material: COOKED_BEEF
        name: '&fᴋɪᴛ&8: #c1c1c3ғᴏᴏᴅ'
        lore:
          - ''
          - '#ffd353ℹ Informations#3f3f3f:'
          - '#3f3f3f• &7Cooldown#3f3f3f: #43ff15Available !'
          - ''
          - '&f➥ &nLeft Click&r&7 to get the kit'
          - '&f➦ &nRight Click&r&7 to view the contents'
      else:
        item:
          material: COOKED_BEEF
          name: '&fᴋɪᴛ&8: #c1c1c3ғᴏᴏᴅ'
          lore:
            - ''
            - '#ffd353ℹ Informations#3f3f3f:'
            - "#3f3f3f• #ff0000You don't have permission"
            - ''
            - '&f➥ <st>&nLeft Click&r&7 to get the kit'
            - '&f➦ &nRight Click&r&7 to view the contents'

  fight:
    slot: 15
    type: ZESSENTIALS_KIT_COOLDOWN
    kit: "fight"
    update: true
    refreshOnClick: true
    item:
      material: DIAMOND_SWORD
      name: '&fᴋɪᴛ&8: #c1c1c3ғɪɢʜᴛ'
      lore:
        - ''
        - '#ffd353ℹ Informations#3f3f3f:'
        - '#3f3f3f• &7Cooldown#3f3f3f: #4cd5ff%cooldown%'
        - ''
        - '&f➥ &nLeft Click&r&7 to get the kit'
        - '&f➦ &nRight Click&r&7 to view the contents'
    else:
      type: ZESSENTIALS_KIT_GET
      kit: "fight"
      closeInventory: true
      item:
        material: DIAMOND_SWORD
        name: '&fᴋɪᴛ&8: #c1c1c3ғɪɢʜᴛ'
        lore:
          - ''
          - '#ffd353ℹ Informations#3f3f3f:'
          - '#3f3f3f• &7Cooldown#3f3f3f: #43ff15Available !'
          - ''
          - '&f➥ &nLeft Click&r&7 to get the kit'
          - '&f➦ &nRight Click&r&7 to view the contents'
      else:
        item:
          material: DIAMOND_SWORD
          name: '&fᴋɪᴛ&8: #c1c1c3ғɪɢʜᴛ'
          lore:
            - ''
            - '#ffd353ℹ Informations#3f3f3f:'
            - "#3f3f3f• #ff0000You don't have permission"
            - ''
            - '&f➥ <st>&nLeft Click&r&7 to get the kit'
            - '&f➦ &nRight Click&r&7 to view the contents'
```

### Kit Preview\.yml

```yaml
name: "#3f3f3fᴋɪᴛs"
size: 54
items:
  items:
    type: ZESSENTIALS_KIT_PREVIEW
    slots:
      - 0-44
  back:
    type: INVENTORY
    plugin: zEssentials
    inventory: "kit_preview"
    item:
      material: BARRIER
      name: '&f➥ &nClick&r&7 to go back'
```

### figth.yml

```yaml
name: fight
display-name: "Fight"

cooldown: 86400

permission-cooldowns:
  - permission: 'essentials.kits.fight.vip'
    cooldown: 82800
  - permission: 'essentials.kits.fight.admin'
    cooldown: 3600

items:
  sword:
    material: DIAMOND_SWORD
    enchants:
      - sharpness,2
  apple:
    material: GOLDEN_APPLE
    amount: 4
  carrot:
    material: GOLDEN_CARROT
    amount: 16

helmet:
  material: DIAMOND_HELMET
  enchants:
    - protection,1
chestplate:
  material: IRON_CHESTPLATE
  enchants:
    - protection,3
leggings:
  material: IRON_LEGGINGS
  enchants:
    - protection,3
boots:
  material: DIAMOND_BOOTS
  enchants:
    - protection,1

actions:
  - type: console command
    commands:
      - 'effect give %player% minecraft:speed 60'
```

### food.yml

```yaml
name: food
cooldown: 3600
items:
  beef:
    material: COOKED_BEEF
    amount: 16
```

### tools.yml

```yaml
name: tools
cooldown: 7200
items:
  iron_sword:
    material: IRON_SWORD
  iron_pickaxe:
    material: IRON_PICKAXE
  iron_axe:
    material: IRON_AXE
  iron_shovel:
    material: IRON_SHOVEL
  iron_hoe:
    material: IRON_HOE
```


# Mailbox

This module allows you to create a mailbox for your players' items. When the plugin gives an item to a player, it checks if there is space in their inventory. If not, the item is sent to their mailbox. The item will expire after a configurable number of days.

The plugin's API allows other plugins to add items to the mailbox. For example, an AuctionHouse plugin (such as [zAuctionHouse](https://www.spigotmc.org/resources/1-8-1-20-zauctionhouse-2000-servers.63010/)) can integrate with zEssentials to deliver items directly to the mailbox instead of using the plugin's pending inventory system.

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FzVAiwA6vRsWI6dPqOIss%2Fmailbox.gif?alt=media&amp;token=abd32f67-3095-4f39-b795-93fe547d98ed" alt=""><figcaption></figcaption></figure>

## Configuration

### Config.yml

```yaml
########################################################################################################################
#
# ███╗░░░███╗░█████╗░██╗██╗░░░░░██████╗░░█████╗░██╗░░██╗
# ████╗░████║██╔══██╗██║██║░░░░░██╔══██╗██╔══██╗╚██╗██╔╝
# ██╔████╔██║███████║██║██║░░░░░██████╦╝██║░░██║░╚███╔╝░
# ██║╚██╔╝██║██╔══██║██║██║░░░░░██╔══██╗██║░░██║░██╔██╗░
# ██║░╚═╝░██║██║░░██║██║███████╗██████╦╝╚█████╔╝██╔╝╚██╗
# ╚═╝░░░░░╚═╝╚═╝░░╚═╝╚═╝╚══════╝╚═════╝░░╚════╝░╚═╝░░╚═╝
#
# Documentation: https://zessentials.groupez.dev/modules/mailbox
#
########################################################################################################################

enable: true

# The expiration time of items when added to the mailbox
# If the player does not recover his items with expiration they will be deleted permanently.
expiration: 86400
```

### Mailbox Inventory

Inventory of the mailbox, the items will be displayed thanks to the button `ZESSENTIALS_MAILBOX`

```yaml
name: "#3f3f3fᴍᴀɪʟʙᴏx"
size: 54
items:
  items:
    isPermanent: true
    type: ZESSENTIALS_MAILBOX
    item:
      lore:
        - ''
        - '#ffd353ℹ Informations#3f3f3f:'
        - '#3f3f3f• &7Expires in#3f3f3f: #4cd5ff%expiration%'
        - ''
        - '&f➥ &nLeft Click&r&7 to get the kit'
    slots:
      - 0-44
    else:
      slots:
        - 22
      item:
        material: BARRIER
        name: '&c&nNo Items Found'
  info:
    isPermanent: true
    slot: 49
    item:
      material: BELL
      name: '&fᴍᴀɪʟʙᴏx'
      lore:
        - ''
        - '#ffd353ℹ Informations#3f3f3f:'
        - '#3f3f3f• &7The mailbox allows you to store items'
        - '#3f3f3f• &7 so that you can recover them later'
        - ''

  previous:
    isPermanent: true
    type: PREVIOUS
    slot: 45
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjllYTFkODYyNDdmNGFmMzUxZWQxODY2YmNhNmEzMDQwYTA2YzY4MTc3Yzc4ZTQyMzE2YTEwOThlNjBmYjdkMyJ9fX0="
      name: "#92bed8ᴘʀᴇᴠɪᴏᴜs ᴘᴀɢᴇ"

  next:
    isPermanent: true
    type: NEXT
    slot: 53
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODI3MWE0NzEwNDQ5NWUzNTdjM2U4ZTgwZjUxMWE5ZjEwMmIwNzAwY2E5Yjg4ZTg4Yjc5NWQzM2ZmMjAxMDVlYiJ9fX0="
      name: "#92bed8ɴᴇxᴛ ᴘᴀɢᴇ"

```


# Messages

This module manages sending private messages from players

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FDpHhSVCBnmYarbKhKrj4%2Fprivate_message.png?alt=media&amp;token=5b4fab6b-04e3-453c-be33-7731e39c83a2" alt=""><figcaption></figcaption></figure>

## Configuration

```yaml
########################################################################################################################
#
# ███╗░░░███╗███████╗░██████╗░██████╗░█████╗░░██████╗░███████╗░██████╗
# ████╗░████║██╔════╝██╔════╝██╔════╝██╔══██╗██╔════╝░██╔════╝██╔════╝
# ██╔████╔██║█████╗░░╚█████╗░╚█████╗░███████║██║░░██╗░█████╗░░╚█████╗░
# ██║╚██╔╝██║██╔══╝░░░╚═══██╗░╚═══██╗██╔══██║██║░░╚██╗██╔══╝░░░╚═══██╗
# ██║░╚═╝░██║███████╗██████╔╝██████╔╝██║░░██║╚██████╔╝███████╗██████╔╝
# ╚═╝░░░░░╚═╝╚══════╝╚═════╝░╚═════╝░╚═╝░░╚═╝░╚═════╝░╚══════╝╚═════╝░
#
# Documentation: https://zessentials.groupez.dev/modules/messages
#
########################################################################################################################

enable: true

```


# Rules

This module allows to display the rules of the server either in the chat or in an inventory

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FxNeda5C2VV6bdx6zjQyZ%2Frules_messages.png?alt=media&amp;token=6c7efa5b-2bb6-4268-9730-621164179d48" alt=""><figcaption><p>Rules message</p></figcaption></figure>

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FclLLj3mFJYvj1hGJEjGb%2Frules_inventory.png?alt=media&amp;token=065e8c1a-7656-4a44-936f-9b152fd17743" alt=""><figcaption><p>Rule Inventory</p></figcaption></figure>

## Configuration

### Config.yml

```yaml
########################################################################################################################
#
# ██████╗░██╗░░░██╗██╗░░░░░███████╗░██████╗
# ██╔══██╗██║░░░██║██║░░░░░██╔════╝██╔════╝
# ██████╔╝██║░░░██║██║░░░░░█████╗░░╚█████╗░
# ██╔══██╗██║░░░██║██║░░░░░██╔══╝░░░╚═══██╗
# ██║░░██║╚██████╔╝███████╗███████╗██████╔╝
# ╚═╝░░╚═╝░╚═════╝░╚══════╝╚══════╝╚═════╝░
#
# Documentation: https://zessentials.groupez.dev/modules/rules
#
########################################################################################################################

enable: true

# Defines how to display server rules
# INVENTORY
# MESSAGE
rule-type: INVENTORY
```

### Rules Inventory

```yaml
name: "#3f3f3fʀᴜʟᴇs"
size: 27
items:
  info:
    slot: 12
    item:
      material: RED_BANNER
      name: "#ff0000ʀᴜʟᴇs ɪɴғᴏʀᴍᴀᴛɪᴏɴs"
      lore:
        - ''
        - '#ffd353ℹ Informations#3f3f3f:'
        - '#3f3f3f• &7Following the rules ensures'
        - '#3f3f3f• &7a fair and &aenjoyable &7experience'
        - '#3f3f3f• &7for everyone, fostering a &apositive'
        - '#3f3f3f• &7community atmophere !'
        - ''
  r1:
    slot: 14
    item:
      material: RED_DYE
      name: "#ff0000sᴇʀᴠᴇʀ ʀᴜʟᴇs #1"
      lore:
        - ''
        - '#ffd353ℹ Informations#3f3f3f:'
        - '#3f3f3f• &7Respect all players and staff.'
        - '#3f3f3f• &7No grieging or stealing.'
        - '#3f3f3f• &7No cheating or hacking.'
        - '#3f3f3f• &7Keep chat clean and respectful.'
        - '#3f3f3f• &7No spamming or advertising.'
        - ''
```


# Sanction

This module allows to ban, kick and mute players.

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FpsNbXndqXAAiBH0aKtN9%2Fsanction.gif?alt=media&amp;token=473ba319-f862-4202-b63e-e4d3546600e8" alt=""><figcaption><p>Sanction inventories</p></figcaption></figure>

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FdLI48iPD4Pho4UCzHX2q%2Fsanction.png?alt=media&amp;token=26e2df5d-9875-46d1-b0e4-ad286c5daa84" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FrwgF69Wt3602ktzBMkzS%2Fsc_inventory.png?alt=media&amp;token=7197fa79-97dc-4b37-b21f-63c3214e5fa1" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FqAdV6jkFywFcsqZBXfdm%2Fban.png?alt=media&amp;token=144b6dab-e847-4f55-99cf-cbd1de659aeb" alt=""><figcaption></figcaption></figure>

## Configuration

### Config.yml

```yaml
########################################################################################################################
#
# ░██████╗░█████╗░███╗░░██╗░█████╗░████████╗██╗░█████╗░███╗░░██╗
# ██╔════╝██╔══██╗████╗░██║██╔══██╗╚══██╔══╝██║██╔══██╗████╗░██║
# ╚█████╗░███████║██╔██╗██║██║░░╚═╝░░░██║░░░██║██║░░██║██╔██╗██║
# ░╚═══██╗██╔══██║██║╚████║██║░░██╗░░░██║░░░██║██║░░██║██║╚████║
# ██████╔╝██║░░██║██║░╚███║╚█████╔╝░░░██║░░░██║╚█████╔╝██║░╚███║
# ╚═════╝░╚═╝░░╚═╝╚═╝░░╚══╝░╚════╝░░░░╚═╝░░░╚═╝░╚════╝░╚═╝░░╚══╝
#
# You must have MYSQL storage to use the sanction module
#
# Documentation: https://zessentials.groupez.dev/modules/sanction
#
########################################################################################################################

enable: true

# List of nicknames that cannot be sanctioned, even if they do not have permission.
protections:
  - "Maxlego08"
  - "Notch"

# Default reason for /kick
kick-default-reason: "You have been kicked"

# Default reason for /mute
ban-default-reason: "The ban hammer has spoken"

# Default reason for /ban
mute-default-reason: "You have to turn your tongue 7 times before speaking"

# Default reason for /unmute
unmute-default-reason: "You have the right to talk to us"

# Default reason for /unban
unban-default-reason: "The ban hammer gives you the right to return"

# Date format used for sanctions
date-format: "yyyy-MM-dd HH:mm:ss"

# Materials are used for sanction_history inventory

# Material used for kicks
kick-material: IRON_INGOT

# Material used for ban
ban-material: DIAMOND

# Material used for mute
mute-material: EMERALD

# Material used for unban
unban-material: IRON_INGOT

# Material used for unmute
unmute-material: COPPER_INGOT

# Material used for warn
warn-material: COAL

# Material used for mute if it is active
current-mute-material: EMERALD_BLOCK

# Material used for ban if it is active
current-ban-material: DIAMOND_BLOCK

```

### Sanction.yml

```yaml
name: '#3f3f3fSanction %zessentials_user_target_player_name%'
size: 27
items:
  player:
    type: ZESSENTIALS_SANCTION_INFORMATION
    slot: 13
    item:
      material: PLAYER_HEAD
      name: '&f%target%'
      lore:
        - ''
        - '#ffd353ℹ Informations#3f3f3f:'
        - '#3f3f3f• &7Is Banned#3f3f3f: #4cd5ff%is_ban%'
        - '#3f3f3f• &7Is Muted#3f3f3f: #4cd5ff%is_mute%'
        - ''
        - '&f➥ &nLeft Click&r&7 to sanction the player'
        - '&f➦ &nRight Click&r&7 to see the history of sanctions'
  ban:
    type: ZESSENTIALS_SANCTION
    slot: 15
    placeHolder: '%zessentials_user_target_is_ban%'
    value: true
    action: BOOLEAN
    sanction: UNBAN
    item:
      material: RED_DYE
      name: '&cThe player is banned'
      lore:
        - ''
        - '&f➥ &nClick&r&7 to unban the player'
  mute:
    type: ZESSENTIALS_SANCTION
    slot: 11
    placeHolder: '%zessentials_user_target_is_mute%'
    value: true
    action: BOOLEAN
    sanction: UNMUTE
    item:
      material: RED_DYE
      name: '&cThe player is muted'
      lore:
        - ''
        - '&f➥ &nClick&r&7 to unmute the player'
```

### Sanction\_history.yml

```yaml
name: '#3f3f3fSanctions History %zessentials_user_target_player_name%'
size: 54
items:
  back:
    isPermanent: true
    type: BACK
    slot: 49
    item:
      material: BARRIER
      name: "&cGo Back"

  next:
    type: NEXT
    isPermanent: true
    slot: 50
    item:
      material: ARROW
      name: "&fNext"

  previous:
    type: PREVIOUS
    isPermanent: true
    slot: 48
    item:
      material: ARROW
      name: "&fPrevious"

  sanctions:
    type: ZESSENTIALS_SANCTIONS
    isPermanent: true
    slots:
      - 0-44
    item:
      material: '%material%'
      name: '&fType&8: &b%type%'
      lore:
        - ''
        - '#ffd353ℹ Informations#3f3f3f:'
        - '#3f3f3f• &7Reason#3f3f3f: #4cd5ff%reason%'
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff%duration%'
        - '#3f3f3f• &7Remaining#3f3f3f: #4cd5ff%remaining%'
        - '#3f3f3f• &7Created At#3f3f3f: #4cd5ff%created_at%'
        - '#3f3f3f• &7Expired At#3f3f3f: #4cd5ff%expired_at%'
        - '#3f3f3f• &7By#3f3f3f: #4cd5ff%sender%'
        - ''
```

### Sanctions.yml

```yaml
name: '#3f3f3fSanctions of %zessentials_user_target_player_name%'
size: 54
items:
  back:
    type: BACK
    slot: 49
    item:
      material: BARRIER
      name: "&cGo Back"

  btn-0:
    slot: 0
    item:
      material: FISHING_ROD
      name: '&fProvocations'

  btn-1:
    slot: 1
    item:
      material: WOODEN_SWORD
      name: '&fSpam/Flood'

  btn-2:
    slot: 2
    item:
      material: STONE_SWORD
      name: '&fHarassment'

  btn-3:
    slot: 3
    item:
      material: GOLDEN_SWORD
      name: '&f'

  btn-4:
    slot: 4
    item:
      material: IRON_SWORD
      name: '&f'

  btn-5:
    slot: 5
    item:
      material: DIAMOND_SWORD
      name: '&f'

  btn-6:
    slot: 6
    item:
      material: NETHERITE_SWORD
      name: '&f'

  btn-7:
    slot: 7
    item:
      material: TRIDENT
      name: '&f'

  btn-8:
    slot: 8
    item:
      material: SHIELD
      name: '&f'

  btn-9:
    slot: 9
    type: ZESSENTIALS_SANCTION
    sanction: MUTE
    duration: 1h
    reason: "Provocation"
    item:
      material: GREEN_STAINED_GLASS_PANE
      name: '&fProvocations'
      lore:
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff1 hour'
        - ''
        - '&f➥ &nClick&r&7 to mute the player'
  btn-18:
    slot: 18
    type: ZESSENTIALS_SANCTION
    sanction: MUTE
    duration: 2h
    reason: "Provocation"
    item:
      material: YELLOW_STAINED_GLASS_PANE
      name: '&fProvocations'
      lore:
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff2 hours'
        - ''
        - '&f➥ &nClick&r&7 to mute the player'
  btn-27:
    slot: 27
    type: ZESSENTIALS_SANCTION
    sanction: MUTE
    duration: 4h
    reason: "Provocation"
    item:
      material: ORANGE_STAINED_GLASS_PANE
      name: '&fProvocations'
      lore:
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff4 hours'
        - ''
        - '&f➥ &nClick&r&7 to mute the player'
  btn-36:
    slot: 36
    type: ZESSENTIALS_SANCTION
    sanction: MUTE
    duration: 24h
    reason: "Provocation"
    item:
      material: RED_STAINED_GLASS_PANE
      name: '&fProvocations'
      lore:
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff24 hours'
        - ''
        - '&f➥ &nClick&r&7 to mute the player'

  btn-10:
    slot: 10
    type: ZESSENTIALS_SANCTION
    sanction: MUTE
    duration: 1h
    reason: "Spam/Flood"
    item:
      material: GREEN_STAINED_GLASS_PANE
      name: '&fMute 1h'
      lore:
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff1 hour'
        - ''
        - '&f➥ &nClick&r&7 to mute the player'

  btn-19:
    slot: 19
    type: ZESSENTIALS_SANCTION
    sanction: MUTE
    duration: 2h
    reason: "Spam/Flood"
    item:
      material: YELLOW_STAINED_GLASS_PANE
      name: '&fMute 2h'
      lore:
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff2 hours'
        - ''
        - '&f➥ &nClick&r&7 to mute the player'

  btn-28:
    slot: 28
    type: ZESSENTIALS_SANCTION
    sanction: MUTE
    duration: 4h
    reason: "Spam/Flood"
    item:
      material: ORANGE_STAINED_GLASS_PANE
      name: '&fMute 4h'
      lore:
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff4 hours'
        - ''
        - '&f➥ &nClick&r&7 to mute the player'

  btn-37:
    slot: 37
    type: ZESSENTIALS_SANCTION
    sanction: MUTE
    duration: 24h
    reason: "Spam/Flood"
    item:
      material: RED_STAINED_GLASS_PANE
      name: '&fMute 24h'
      lore:
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff24 hours'
        - ''
        - '&f➥ &nClick&r&7 to mute the player'

  btn-11:
    slot: 11
    type: ZESSENTIALS_SANCTION
    sanction: MUTE
    duration: 24h
    reason: "Harassment"
    item:
      material: GREEN_STAINED_GLASS_PANE
      name: '&fMute 24h'
      lore:
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff24 hours'
        - ''
        - '&f➥ &nClick&r&7 to mute the player'

  btn-20:
    slot: 20
    type: ZESSENTIALS_SANCTION
    sanction: BAN
    duration: 7d
    reason: "Harassment"
    item:
      material: YELLOW_STAINED_GLASS_PANE
      name: '&fBan 7d'
      lore:
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff7 days'
        - ''
        - '&f➥ &nClick&r&7 to ban the player'

  btn-29:
    slot: 29
    type: ZESSENTIALS_SANCTION
    sanction: BAN
    duration: 15d
    reason: "Harassment"
    item:
      material: ORANGE_STAINED_GLASS_PANE
      name: '&fBan 15d'
      lore:
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff15 days'
        - ''
        - '&f➥ &nClick&r&7 to ban the player'

  btn-38:
    slot: 38
    type: ZESSENTIALS_SANCTION
    sanction: BAN
    duration: 30d
    reason: "Harassment"
    item:
      material: RED_STAINED_GLASS_PANE
      name: '&fBan 30d'
      lore:
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff30 days'
        - ''
        - '&f➥ &nClick&r&7 to ban the player'

  btn-12:
    slot: 12
    type: ZESSENTIALS_SANCTION
    sanction: MUTE
    duration: 1h
    reason: "Advertising"
    item:
      material: GREEN_STAINED_GLASS_PANE
      name: '&fMute 1h'
      lore:
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff1 hour'
        - ''
        - '&f➥ &nClick&r&7 to mute the player'

  btn-21:
    slot: 21
    type: ZESSENTIALS_SANCTION
    sanction: MUTE
    duration: 2h
    reason: "Advertising"
    item:
      material: YELLOW_STAINED_GLASS_PANE
      name: '&fMute 2h'
      lore:
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff2 hour'
        - ''
        - '&f➥ &nClick&r&7 to mute the player'

  btn-30:
    slot: 30
    type: ZESSENTIALS_SANCTION
    sanction: MUTE
    duration: 4h
    reason: "Advertising"
    item:
      material: ORANGE_STAINED_GLASS_PANE
      name: '&fMute 4h'
      lore:
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff4 hour'
        - ''
        - '&f➥ &nClick&r&7 to mute the player'

  btn-39:
    slot: 39
    type: ZESSENTIALS_SANCTION
    sanction: MUTE
    duration: 24h
    reason: "Advertising"
    item:
      material: RED_STAINED_GLASS_PANE
      name: '&fMute 24h'
      lore:
        - '#3f3f3f• &7Duration#3f3f3f: #4cd5ff24 hour'
        - ''
        - '&f➥ &nClick&r&7 to mute the player'
```


# Scoreboard

You can manage multiple scoreboards with this plugin. zEssentials uses the [FastBoard ](https://github.com/MrMicky-FR/FastBoard)library to create scoreboards with packets. You don't need to install any other plugins for this module to work.

## Configuration

```yaml
########################################################################################################################
#
# ░██████╗░█████╗░░█████╗░██████╗░███████╗██████╗░░█████╗░░█████╗░██████╗░██████╗░
# ██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗██╔══██╗
# ╚█████╗░██║░░╚═╝██║░░██║██████╔╝█████╗░░██████╦╝██║░░██║███████║██████╔╝██║░░██║
# ░╚═══██╗██║░░██╗██║░░██║██╔══██╗██╔══╝░░██╔══██╗██║░░██║██╔══██║██╔══██╗██║░░██║
# ██████╔╝╚█████╔╝╚█████╔╝██║░░██║███████╗██████╦╝╚█████╔╝██║░░██║██║░░██║██████╔╝
# ╚═════╝░░╚════╝░░╚════╝░╚═╝░░╚═╝╚══════╝╚═════╝░░╚════╝░╚═╝░░╚═╝╚═╝░░╚═╝╚═════╝░
#
# Documentation: https://zessentials.groupez.dev/modules/scoreboard
# FastBoard: https://github.com/MrMicky-FR/FastBoard
#
########################################################################################################################

enable: true

# The conditions when connecting the player to choose the scoreboard
# When connecting the scoreboard displayed will be the one with the highest priority and or the player to all requirements
join-conditions:
  - priority: 0
    scoreboard: default
  - priority: 1
    scoreboard: admin
    # For requirements please use zMenu: https://docs.zmenu.dev/configurations/buttons/requirements
    requirements:
      - type: permission
        permission: "zessentials.scoreboard.admin"

# Enables task for conditions
enable-task-conditions: false

# The second interval for conditions
task-conditions-interval: 2

# Conditions that will be checked all x seconds to change scoreboard
task-conditions:
  - scoreboard: event
    # For requirements please use zMenu: https://docs.zmenu.dev/configurations/buttons/requirements
    requirements:
      - type: placeholder
        placeholder: "%player_world%"
        value: "event"
        action: EQUALS_STRING

scoreboards:
  default:
    default: true
    title: "#53edd6zEssentials"
    lines:
      - line: 1
        text: ""
      - line: 2
        text: "&7Balance: &a%zessentials_user_formatted_balance_money%"
        event: "fr.maxlego08.essentials.api.event.events.user.UserEconomyPostUpdateEvent"
      - line: 3
        text: "&7Coins: &a%zessentials_user_formatted_balance_coins%"
        event: "fr.maxlego08.essentials.api.event.events.user.UserEconomyPostUpdateEvent"
      - line: 4
        text: ""
      - line: 5
        text: "play.essentials.fr"
        animation: COLOR_WAVE
        fromColor: "#5599ff"
        toColor: "#ffffff"
        length: 5 # animation length
        delayBetween: 5000 # in milliseconds
        animationSpeed: 30 # in milliseconds
  admin:
    title: "#53edd6zEssentials"
    lines:
      - line: 1
        text: ""
      - line: 2
        text: "&7Balance: &a%zessentials_user_formatted_balance_money%"
        event: "fr.maxlego08.essentials.api.event.events.user.UserEconomyPostUpdateEvent"
      - line: 3
        text: "&7Coins: &a%zessentials_user_formatted_balance_coins%"
        event: "fr.maxlego08.essentials.api.event.events.user.UserEconomyPostUpdateEvent"
      - line: 4
        text: "&7Rank: &cAdmin"
      - line: 5
        text: ""
      - line: 6
        text: "play.essentials.fr"
        animation: COLOR_WAVE
        fromColor: "#5599ff"
        toColor: "#ffffff"
        length: 5 # animation length
        delayBetween: 5000 # in milliseconds
        animationSpeed: 30 # in milliseconds
```

#### How to create a scoreboard ?

To create a scoreboard he must give it a title and a list of lines.  To add a line, you can also specify an animation and an event. Please look at the default condifuration to understand how to properly create a scoreboard.

## Events

To update your scoreboard, you can use the event system. This system allows you to avoid using tasks for updating placeholders. Traditional plugins often use tasks unnecessarily, which updates data continuously for all players. **zEssentials** aims to be as optimized as possible, making the event system the most efficient option. When a player performs an action on your server, an event is triggered (whether by Spigot, Paper, Folia, or even zEssentials). The configuration listens for the event you specified for the line and updates only that line.

In the default configuration we have the use of the event `UserEconomyPostUpdateEvent` to update line `2` and `3`. When the player’s money is going to be changed, his scoreboard will be updated automatically.

Your event must be a player event ([with some exceptions](#events)). You can find the list of events here: <https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/package-summary.html>

## Animations

You can also create animations for your scoreboard to make it even more beautiful.

### NONE

Allows to update the line all x milliseconds

```yaml
- line: 3
  text: "&7Coins: &a%zessentials_user_formatted_balance_coins%"
  update: 1000 # 1000MS = 1S
```

You do not need to specify the type of animation, you only need to set the time in milliseconds for the `update`.

### COLOR\_WAVE

```yaml
text: "play.essentials.fr"
animation: COLOR_WAVE
fromColor: "#5599ff"
toColor: "#ffffff"
length: 5 # animation length
delayBetween: 5000 # in milliseconds
animationSpeed: 30 # in milliseconds
```

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FMbH8QUQErRGTUM8YdpE0%2Fscoreboard-animation.gif?alt=media&amp;token=8b83dd39-69c4-4d92-9015-e0e496df436e" alt=""><figcaption></figcaption></figure>

This animation will allow to create a wave of color from a start to an end color. The plugin will automatically calculate the colors between your two colors, in the example if above we will start from a blue color to a white. You can also configure the animation size, the delay between each animation and the animation refresh speed.


# Spawn

This module allows you to manage the spawn command and the return to spawn during death

## Configuration

```yaml
########################################################################################################################
#
# ░██████╗██████╗░░█████╗░░██╗░░░░░░░██╗███╗░░██╗
# ██╔════╝██╔══██╗██╔══██╗░██║░░██╗░░██║████╗░██║
# ╚█████╗░██████╔╝███████║░╚██╗████╗██╔╝██╔██╗██║
# ░╚═══██╗██╔═══╝░██╔══██║░░████╔═████║░██║╚████║
# ██████╔╝██║░░░░░██║░░██║░░╚██╔╝░╚██╔╝░██║░╚███║
# ╚═════╝░╚═╝░░░░░╚═╝░░╚═╝░░░╚═╝░░░╚═╝░░╚═╝░░╚══╝
#
# Documentation: https://zessentials.groupez.dev/modules/spawn
#
########################################################################################################################

enable: true

# What priority should we use for handling respawns?
# Set this to none, if you want vanilla respawning behaviour.
# Set this to lowest, if you want Multiverse to handle the respawning.
# Set this to high, if you want EssentialsSpawn to handle the respawning.
# Set this to highest, if you want to force EssentialsSpawn to handle the respawning.
# Note: Changes will not apply until after the server is restarted.
respawn-listener-priority: highest

# What priority should we use for handling spawning on joining the server?
# See respawn-listener-priority for possible values.
# Note: Changing this may impact or break spawn-on-join functionality.
# Note: Changes will not apply until after the server is restarted.
spawn-join-listener-priority: highest

# When the player dies, does he have to respawn to the respawn anchor
respawn-at-anchor: false

# When users die, should they respawn at their first home, instead of the spawnpoint?
respawn-at-home: false

# When users die, should they respawn at their bed instead of the spawnpoint?
respawn-at-bed: true
```


# Step

This module aims to record player statistics when they reach significant milestones on your server. The goal is to analyze player progression and understand the actions they take to achieve these milestones.

When a step (**milestone**) is reached, all player statistics are saved, including blocks mined, items used, and entities killed. You can also add your own data using the API.

Currently, zEssentials does not provide tools for data analysis. Therefore, you must create your own analysis tools or directly examine the database.

To save a player's step, execute the command `/step <player> <milestone name>`. All steps must be registered in the module's `config.yml` file.

Data is stored in JSON format, allowing for easy manipulation by other plugins or websites.

## Configuration

### `config.yml`

```yaml
########################################################################################################################
#
# ░██████╗████████╗███████╗██████╗░░██████╗
# ██╔════╝╚══██╔══╝██╔════╝██╔══██╗██╔════╝
# ╚█████╗░░░░██║░░░█████╗░░██████╔╝╚█████╗░
# ░╚═══██╗░░░██║░░░██╔══╝░░██╔═══╝░░╚═══██╗
# ██████╔╝░░░██║░░░███████╗██║░░░░░██████╔╝
# ╚═════╝░░░░╚═╝░░░╚══════╝╚═╝░░░░░╚═════╝░
#
# Documentation: https://zessentials.groupez.dev/modules/steps
#
########################################################################################################################

enable: true

steps:
  - name: "step-1"
  - name: "step-2"
  - name: "step-3"
  - name: "step-4"
```

## API

### Create a CustomStep

To create a custom step, you must use the `CustomStep` interface. You need to return a `Map` containing all your information.

{% code fullWidth="true" %}

```java
package fr.maxlego08.example.steps;

import fr.maxlego08.example.api.dto.ShopLogDTO;
import fr.maxlego08.essentials.api.steps.CustomStep;
import fr.maxlego08.example.CorePlugin;
import org.bukkit.entity.Player;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ShopStep implements CustomStep {

    private final CorePlugin plugin;

    public ShopStep(CorePlugin plugin) {
        this.plugin = plugin;
    }

    @Override
    public String getServiceName() {
        return "shop";
    }

    @Override
    public Map<String, Object> register(Player player, Date date) {

        var shops = this.plugin.getStorageManager().getShops(player.getUniqueId(), date);
        if (shops.isEmpty()) return Map.of();

        Map<String, Object> results = new HashMap<>();
        for (ShopLogDTO shop : shops) {

            List<Map<String, Object>> elements = (List<Map<String, Object>>) results.computeIfAbsent(shop.material(), k -> new ArrayList<>());
            elements.add(Map.of(
                    "material", shop.material(),
                    "amount", shop.amount(),
                    "price", shop.price(),
                    "action", shop.action(),
                    "date", shop.created_at().getTime()
            ));
        }

        return results;
    }
}

```

{% endcode %}

This example retrieves logs from a shop plugin based on a date and a player. We will then save the information about each item sold or purchased into a map.


# Teleportation

This module allows you to configure everything that is linked to the teleport commands.

## Configurations

### Config.yml

```yaml
########################################################################################################################
#
# ████████╗███████╗██╗░░░░░███████╗██████╗░░█████╗░██████╗░████████╗░█████╗░████████╗██╗░█████╗░███╗░░██╗
# ╚══██╔══╝██╔════╝██║░░░░░██╔════╝██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝██╔══██╗╚══██╔══╝██║██╔══██╗████╗░██║
# ░░░██║░░░█████╗░░██║░░░░░█████╗░░██████╔╝██║░░██║██████╔╝░░░██║░░░███████║░░░██║░░░██║██║░░██║██╔██╗██║
# ░░░██║░░░██╔══╝░░██║░░░░░██╔══╝░░██╔═══╝░██║░░██║██╔══██╗░░░██║░░░██╔══██║░░░██║░░░██║██║░░██║██║╚████║
# ░░░██║░░░███████╗███████╗███████╗██║░░░░░╚█████╔╝██║░░██║░░░██║░░░██║░░██║░░░██║░░░██║╚█████╔╝██║░╚███║
# ░░░╚═╝░░░╚══════╝╚══════╝╚══════╝╚═╝░░░░░░╚════╝░╚═╝░░╚═╝░░░╚═╝░░░╚═╝░░╚═╝░░░╚═╝░░░╚═╝░╚════╝░╚═╝░░╚══╝
#
# Documentation: https://zessentials.groupez.dev/modules/teleportation
#
########################################################################################################################

enable: true

# If the teleport destination is unsafe, should players be teleported to the nearest safe location?
# If this is set to true, zEssentials will attempt to teleport players close to the intended destination. The destination will be on the same x and z, only the y will change.
# If this is set to false, attempted teleports to unsafe locations will be cancelled with a warning.
teleport-safety: true

# Whether to make all teleportations go to the center of the block; where the x and z coordinates decimal become .5
teleport-to-center: true

# The delay, in seconds, before a user actually teleports. If the user moves or gets attacked in this timeframe, the teleport is cancelled.
teleport-delay: 5

# The delay, in seconds, before a user actually teleports. If the user has one or more permissions, the minimum delay will be taken.
teleport-delay-permissions:
  - permission: "essentials.teleport.delay.vip"
    delay: 4
  - permission: "essentials.teleport.delay.staff"
    delay: 2

# Enable bypass of teleport delay on player to essentials.teleport.bypass permission
teleport-delay-bypass: false

# The delay, in seconds, for the teleport request to expire.
teleport-tpa-expire: 60

# Opens a confirmation inventory for the /tpa command.
open-confirm-inventory-for-tpa: false

rtp-center-x: 0
rtp-center-z: 0

rtp-radius-x: 5000
rtp-radius-z: 5000

rtp-world: "world"

max-rtp-attempts: 10

blacklist-biomes:
  - cold_ocean
  - deep_cold_ocean
  - deep_frozen_ocean
  - deep_lukewarm_ocean
  - deep_ocean
  - deep_warm_ocean
  - frozen_ocean
  - frozen_river
  - lukewarm_ocean
  - ocean
  - river
  - warm_ocean
```

### Confirm\_Request\_Inventory.yml

```yaml
name: '#3f3f3fᴄᴏɴꜰɪʀᴍ ʀᴇǫᴜᴇѕᴛ'
size: 27
items:
  cancel:
    slot: 10
    closeInventory: true
    item:
      material: RED_STAINED_GLASS_PANE
      name: '#ff0000ᴄᴀɴᴄᴇʟ'
      lore:
        - '&7Click to cancel the teleport request'

  head:
    slot: 13
    item:
      playerHead: '%zessentials_user_target_player_name%'
      name: '#99E0FF%zessentials_user_target_player_name%'

  confirm:
    type: ZESSENTIALS_TELEPORTATION_CONFIRM
    slot: 16
    closeInventory: true
    item:
      material: GREEN_STAINED_GLASS_PANE
      name: '#00ff00ᴄᴏɴғɪʀᴍ'
      lore:
        - '&7Click to send &n%zessentials_user_target_player_name%&r &7a tpa request'
```


# Vault

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FaXbFJaolKt4sxbMqDCce%2Fplayer-vault.gif?alt=media&amp;token=c4480664-d4b9-4284-8e96-d655bb697e34" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3650476264-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfAyz09ASs8veyxsflZ9y%2Fuploads%2FF86Mns73XEVDAowPW3hi%2Fplayer-vault-admin.gif?alt=media&amp;token=f20466dc-93d5-47e3-b119-7d5541d912a3" alt=""><figcaption></figcaption></figure>

```yaml
########################################################################################################################
#
# ██╗░░░██╗░█████╗░██╗░░░██╗██╗░░░░░████████╗
# ██║░░░██║██╔══██╗██║░░░██║██║░░░░░╚══██╔══╝
# ╚██╗░██╔╝███████║██║░░░██║██║░░░░░░░░██║░░░
# ░╚████╔╝░██╔══██║██║░░░██║██║░░░░░░░░██║░░░
# ░░╚██╔╝░░██║░░██║╚██████╔╝███████╗░░░██║░░░
# ░░░╚═╝░░░╚═╝░░╚═╝░╚═════╝░╚══════╝░░░╚═╝░░░
#
# Documentation: https://zessentials.groupez.dev/modules/vault
#
########################################################################################################################

enable: true

max-vaults: 7

icon-open: "MINECART"

icon-close: "CHEST_MINECART"

vault-name-regex: "^[a-zA-Z0-9_-]{3,16}$"
```

```yaml
name: "&f%vault-name%"
size: 54
items:
  disableSlots:
    isPermanent: true
    type: ZESSENTIALS_VAULT_SLOTS_DISABLE
    slots:
      - 0-44
    item:
      material: STRUCTURE_VOID
      name: "<red>ʏᴏᴜ ᴅᴏɴ’ᴛ ʜᴀᴠᴇ ᴛʜɪs sʟᴏᴛ"
  slots:
    isPermanent: true
    type: ZESSENTIALS_VAULT_SLOTS_ITEMS
    slots:
      - 0-44

  # Navigation
  vault1:
    type: ZESSENTIALS_VAULT_OPEN
    vault: 1
    slot: 46
    item:
      material: "%vault-icon%"
      name: "%vault-name%"
      amount: "%vault-id%"
      lore:
        - "&8Click to open the vault %vault-id%"
    else:
      type: ZESSENTIALS_VAULT_NO_PERMISSION
      vault: 1
      item:
        material: BARRIER
        name: "%vault-name%"
        lore:
          - ""
          - "<red>✘ You do not have access to se vault"
          - ""
          - "&7Get slots on the shop!"
  vault2:
    type: ZESSENTIALS_VAULT_OPEN
    vault: 2
    slot: 47
    item:
      material: "%vault-icon%"
      name: "%vault-name%"
      amount: 5
      lore:
        - "&8Click to open the vault %vault-id%"
    else:
      type: ZESSENTIALS_VAULT_NO_PERMISSION
      vault: 2
      item:
        material: BARRIER
        name: "%vault-name%"
        lore:
          - ""
          - "<red>✘ You do not have access to se vault"
          - ""
          - "&7Get slots on the shop!"
  vault3:
    type: ZESSENTIALS_VAULT_OPEN
    vault: 3
    slot: 48
    item:
      material: "%vault-icon%"
      name: "%vault-name%"
      amount: "%vault-id%"
      lore:
        - "&8Click to open the vault %vault-id%"
    else:
      type: ZESSENTIALS_VAULT_NO_PERMISSION
      vault: 3
      item:
        material: BARRIER
        name: "%vault-name%"
        lore:
          - ""
          - "<red>✘ You do not have access to se vault"
          - ""
          - "&7Get slots on the shop!"
  vault4:
    type: ZESSENTIALS_VAULT_OPEN
    vault: 4
    slot: 49
    item:
      material: "%vault-icon%"
      name: "%vault-name%"
      amount: "%vault-id%"
      lore:
        - "&8Click to open the vault %vault-id%"
    else:
      type: ZESSENTIALS_VAULT_NO_PERMISSION
      vault: 4
      item:
        material: BARRIER
        name: "%vault-name%"
        lore:
          - ""
          - "<red>✘ You do not have access to se vault"
          - ""
          - "&7Get slots on the shop!"
  vault5:
    type: ZESSENTIALS_VAULT_OPEN
    vault: 5
    slot: 50
    item:
      material: "%vault-icon%"
      name: "%vault-name%"
      amount: "%vault-id%"
      lore:
        - "&8Click to open the vault %vault-id%"
    else:
      type: ZESSENTIALS_VAULT_NO_PERMISSION
      vault: 5
      item:
        material: BARRIER
        name: "%vault-name%"
        lore:
          - ""
          - "<red>✘ You do not have access to se vault"
          - ""
          - "&7Get slots on the shop!"
  vault6:
    type: ZESSENTIALS_VAULT_OPEN
    vault: 6
    slot: 51
    item:
      material: "%vault-icon%"
      name: "%vault-name%"
      amount: "%vault-id%"
      lore:
        - "&8Click to open the vault %vault-id%"
    else:
      type: ZESSENTIALS_VAULT_NO_PERMISSION
      vault: 6
      item:
        material: BARRIER
        name: "%vault-name%"
        lore:
          - ""
          - "<red>✘ You do not have access to se vault"
          - ""
          - "&7Get slots on the shop!"
  vault7:
    type: ZESSENTIALS_VAULT_OPEN
    vault: 7
    slot: 52
    item:
      material: "%vault-icon%"
      name: "%vault-name%"
      amount: "%vault-id%"
      lore:
        - "&8Click to open the vault %vault-id%"
    else:
      type: ZESSENTIALS_VAULT_NO_PERMISSION
      vault: 7
      item:
        material: BARRIER
        name: "%vault-name%"
        lore:
          - ""
          - "<red>✘ You do not have access to se vault"
          - ""
          - "&7Get slots on the shop!"

```

```yaml
name: '&8ᴄᴏɴғɪɢᴜʀᴀᴛɪᴏɴ'
size: 36
items:
  rename:
    type: ZESSENTIALS_VAULT_CHANGE_NAME
    slot: 11
    item:
      material: PAPER
      name: '&eʀᴇɴᴀᴍᴇ'
      lore:
        - '#fc99f8Left Click &7to change the name'
        - '#fc99f8Right Click &7to remove the name'
  icon:
    type: ZESSENTIALS_VAULT_CHANGE_ICON
    slot: 15
    item:
      material: '%vault-icon%'
      name: '&eᴄʜᴀɴɢᴇ ɪᴄᴏɴ'
      lore:
        - '#fc99f8Left Click &7to change the icon'
        - '#fc99f8Right Click &7to remove the icon'
  back:
    type: BACK
    slot: 31
    item:
      material: BARRIER
      name: '&cʙᴀᴄᴋ'

```


# Vote

```yaml
########################################################################################################################
#
# ██╗░░░██╗░█████╗░████████╗███████╗
# ██║░░░██║██╔══██╗╚══██╔══╝██╔════╝
# ╚██╗░██╔╝██║░░██║░░░██║░░░█████╗░░
# ░╚████╔╝░██║░░██║░░░██║░░░██╔══╝░░
# ░░╚██╔╝░░╚█████╔╝░░░██║░░░███████╗
# ░░░╚═╝░░░░╚════╝░░░░╚═╝░░░╚══════╝
#
# Documentation: https://zessentials.groupez.dev/modules/vote
#
########################################################################################################################

enable: true

# Allows to activate the party vote
# The vote party is a system that allows to reward online players by reaching a certain number of votes
enable-vote-party: true

# Allows to open the votes inventory with the party vote command, if you disable this option a message will be sent to the player
enable-vote-party-open-vote-inventory: true

# The objective of the party vote
vote-party-objective: 200

# Rewards for the vote party
vote-party-rewards:

  # Commands executed for all players
  commands:
    - "eco give money %player% 5000"

  # If the player has this permission he will receive more rewards
  permissions: "zessentials.vote.double"
  commandsPermission:
    - "eco give money %player% 5000"

# Rewards on each vote
reward-on-vote:
  - "cr give %player% vote"

sites:
  - name: "ServeurMinecraftVote"
    seconds: 5400
  - name: "ServeurPrive"
    seconds: 5400
  - name: "ServeursMinecraft"
    seconds: 86400
  - name: "TopServeurs"
    seconds: 7200

# Send a message to the player when voting while offline
enable-offline-vote-message: true

# Value for the placeholder: %zessentials_vote_site_cooldown_<site>%
placeholder-available: "<green>Available ✔"
placeholder-cooldown: "<red>%cooldown% ✘"

# Date to reset the votes of the players, the default setting reset the votes on the first day of the month at 0h0
reset-configuration:
  day: 1 # between 1 and 31
  hour: 0 # between 0 and 23
  minute: 0 # between 0 and 59
  second: 0 # between 0 and 59
```

```yaml
name: "#3f3f3fᴠᴏᴛᴇ"
size: 54
items:
  voteparty:
    slot: 13
    item:
      material: BELL
      name: "#fc07f3&lᴄᴏᴍᴍᴜɴɪᴛʏ ᴀᴅᴠᴀɴᴄᴇᴍᴇɴᴛ"
      lore:
        - "&8VoteParty"
        - ""
        - "&7By voting you will make progress"
        - "&7VoteParty. To unlock a reward"
        - "&7it is necessary to vote &f%zessentials_voteparty_objective% times"
        - ""
        - ""
        - "&f&lᴘʀᴏɢʀᴇss"
        - "&8[#fc99f8%zessentials_voteparty_amount% %zessentials_progressbar_{zessentials_voteparty_amount}_{zessentials_voteparty_objective}_20_|_#fc99f8_&7% #fc99f8%zessentials_voteparty_objective%&8]"
        - ""
        - "&f&lʀᴇᴡᴀʀᴅs"
        - " #f8b175• #e5c2625.000$ &8(Double if VIP #fcd955✭&8)"
  information:
    update: true
    slot: 31
    item:
      material: BOOK
      name: "#e4cc00ᴠᴏᴛᴇ ɴᴏᴡ"
      lore:
        - ""
        - " #f8b175• &7Site 1 %zessentials_vote_site_cooldown_ServeurMinecraftVote%"
        - " #f8b175• &7Site 2 %zessentials_vote_site_cooldown_ServeurPrive%"
        - " #f8b175• &7Site 3 %zessentials_vote_site_cooldown_ServeursMinecraft%"
        - " #f8b175• &7Site 4 %zessentials_vote_site_cooldown_TopServeurs%"
        - ""
        - "&fClick to vote !"
    actions:
      - type: book
        author: "zEssentials"
        title: "#e4cc00ᴠᴏᴛᴇ ɴᴏᴡ"
        lines: # Book pages
          1: # First page
            - '     #e4cc00ᴠᴏᴛᴇ ɴᴏᴡ'
            - ''
            - ''
            - '<hover:show_text:"#34eba8Open Serveur Minecraft Vote !"><click:open_url:"https://serveur-minecraft-vote.fr/">#f0af24Open URL<reset>'

```


# Warp

This module allows the creation of warps. You can view warps in an inventory or in a command.

## Configurations

### Config.yml

```yaml
########################################################################################################################
#
#  ░██╗░░░░░░░██╗░█████╗░██████╗░██████╗░
#  ░██║░░██╗░░██║██╔══██╗██╔══██╗██╔══██╗
#  ░╚██╗████╗██╔╝███████║██████╔╝██████╔╝
#  ░░████╔═████║░██╔══██║██╔══██╗██╔═══╝░
#  ░░╚██╔╝░╚██╔╝░██║░░██║██║░░██║██║░░░░░
#  ░░░╚═╝░░░╚═╝░░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝░░░░░
#
# Documentation: https://zessentials.groupez.dev/modules/warp
#
########################################################################################################################

enable: true

# Opens the warps menu. The file is warps.yml, you need to modify it to match your server
enable-inventory: false

# Send a message with the list of warps
enable-no-argument-message: true

```

### Warps

```yaml
name: '#3f3f3fᴡᴀʀᴘѕ'
size: 27
items:
  example:
    type: ZESSENTIALS_WARP
    warp: example
    slot: 13
    item:
      material: GRASS_BLOCK
      name: "&fᴡᴀʀᴘ ᴇxᴀᴍᴘʟᴇ"
      lore:
        - "&8Click to teleport to the warp"
    else:
      item:
        material: BARRIER
        name: "#ff0000ʏᴏᴜ ᴅᴏ ɴᴏᴛ ʜᴀᴠᴇ ᴘᴇʀᴍɪssɪᴏɴ ᴛᴏ ᴜsᴇ sᴇ ᴡᴀʀᴘ"
```


# Worldedit

## SOON !


# Getting Started

Javadocs: <https://repo.groupez.dev/javadoc/releases/fr/maxlego08/essentials/zessentials-api/1.0.2.6>

Github: <https://github.com/Maxlego08/zEssentials/>

## Maven

```xml
<repository>
  <id>groupez-releases</id>
  <name>GroupeZ Repository</name>
  <url>https://repo.groupez.dev/releases</url>
</repository>
```

```xml
<dependency>
  <groupId>fr.maxlego08.essentials</groupId>
  <artifactId>zessentials-api</artifactId>
  <version>1.0.2.6</version>
  <scope>provided</scope>
</dependency>
```

## Gradle

```gradle
maven {
    name = "groupezReleases"
    url = uri("https://repo.groupez.dev/releases")
}
```

```gradle
compileOnly("fr.maxlego08.essentials:zessentials-api:1.0.2.6")
```


# Events

The Hologram and Scoreboard modules have an option to use an event for updating a line. This allows you to update your holograms or scoreboard without having to use a task. Your event must include a player, except for the following events:

To use an event you must also specify the event package and not just its name. For example, the event[`BlockBreakEvent`](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/block/BlockBreakEvent.html) will be`org.bukkit.event.block.BlockBreakEvent`

To find the list of events please visit the spigot javadocs: <https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/package-summary.html>

## Discord

<table data-full-width="true"><thead><tr><th>Event</th><th>Description</th></tr></thead><tbody><tr><td><code>fr.maxlego08.essentials.api.event.events.economy.DiscordLinkEvent</code></td><td>This event is triggered when a user's discord account is linked.</td></tr><tr><td><code>fr.maxlego08.essentials.api.event.events.economy.DiscordUnLinkEvent</code></td><td>This event is triggered when a user's discord account is unlinked.</td></tr></tbody></table>

## Economy

<table data-full-width="true"><thead><tr><th>Event</th><th>Description</th></tr></thead><tbody><tr><td><code>fr.maxlego08.essentials.api.event.events.economy.EconomyBaltopUpdateEvent</code></td><td>This event is triggered when the economy's baltop is updated.</td></tr></tbody></table>

## Step

<table data-full-width="true"><thead><tr><th>Event</th><th>Description</th></tr></thead><tbody><tr><td><code>fr.maxlego08.essentials.api.event.events.step.StepCreateEvent</code></td><td>This event is triggered when a new step is created for a user.</td></tr><tr><td><code>fr.maxlego08.essentials.api.event.events.step.StepFinishEvent</code></td><td>This event is triggered when a step is finished by a user.</td></tr></tbody></table>

## User

<table data-full-width="true"><thead><tr><th>Event</th><th>Description</th></tr></thead><tbody><tr><td><code>fr.maxlego08.essentials.api.event.events.user.UserEconomyPostUpdateEvent</code></td><td>This event is triggered when a user's economy is updated.</td></tr><tr><td><code>fr.maxlego08.essentials.api.event.events.user.UserEconomyUpdateEvent</code></td><td>This event is triggered when a user's economy is updated.</td></tr><tr><td><code>fr.maxlego08.essentials.api.event.events.user.UserFirstJoinEvent</code></td><td>This event is triggered when a user first joins the server.</td></tr><tr><td><code>fr.maxlego08.essentials.api.event.events.user.UserJoinEvent</code></td><td>This event is triggered when a user joins the server.</td></tr><tr><td><code>fr.maxlego08.essentials.api.event.events.user.UserQuitEvent</code></td><td>This event is triggered when a user quits the server.</td></tr><tr><td><code>fr.maxlego08.essentials.api.event.events.user.UserVoteEvent</code></td><td>This event is triggered when a user votes on a website.</td></tr></tbody></table>

## Vote

<table data-full-width="true"><thead><tr><th>Event</th><th>Description</th></tr></thead><tbody><tr><td><code>fr.maxlego08.essentials.api.event.events.vote.VotePartyEvent</code></td><td>This event is triggered when a vote party is updating</td></tr><tr><td><code>fr.maxlego08.essentials.api.event.events.vote.VotePartyStartEvent</code></td><td>This event is triggered when a vote party is starting</td></tr></tbody></table>


