# Getting started

![](https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-e6b816b2ceeb3659aa9b129eb618942dc3abcbb7%2Ftop.png?alt=media)

![](https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-ff379b540ff03897375ef40e1f058a18a1061258%2Fintro.png?alt=media)

![](https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-ff98071f81120e42697b6709b9d499e77b5ebab3%2Ffeatures.png?alt=media)

![](https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-4f77921951cad15123304672605e1c511bf38314%2Fcommands.png?alt=media)

<figure><img src="https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-e27d94597038233cea15b83b854cd695f6937b2c%2Fconfig-inventory.gif?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-219efbd3b09f29a9e8088e9e83cd0f304c19c154%2Fno-money.gif?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-13a2f8e177bc90e4152b77a00decf9b19c592d94%2Fauction.gif?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-bad7e35025656bf543f46c0af32054670ae3dda7%2Fbuy.gif?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-c1e2b90d6e2e45e3c20700dddf97d76887333adc%2Fsimple-search.gif?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-7a8f0d707ca4c1b222a6ad42636e6650c906856f%2Fsell-inventory.gif?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-853068040c8d8dc08e13cb1317f6bfc81ab64a1d%2Fsell.gif?alt=media" alt=""><figcaption></figcaption></figure>

<figure><img src="https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-fe11fc069c166781280f7467c2385157449e95c5%2Fremove-admin.gif?alt=media" alt=""><figcaption></figcaption></figure>

![](https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-8905e9b03f094c2cc59ff44e3c9f9e5fe5e16282%2Fopinions.png?alt=media)

![](https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-cd4878321599eb93bece67cff631cbca3a55521f%2Fbas.png?alt=media)


# Installing zAuctionHouse

## Purchase zAuctionHouse

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

* **Spigot**: [https://www.spigotmc.org/resources/63010/](https://www.spigotmc.org/resources/1-8-1-20-zauctionhouse-2000-servers.63010/)
* **GroupeZ**: [https://groupez.dev/resources/1](https://groupez.dev/resources/zauctionhouse.1)
* **BuitsBuyBits**: [https://builtbybit.com/resources/8987/](https://builtbybit.com/resources/zauctionhouse-auction-house-plugin.8987/)
* **Polymart**: [https://polymart.org/resource/144](https://polymart.org/resource/zauctionhouse.144)

## Requirements

* **Java version**: 17 or newer
* **Server version**: <mark style="color:red;">**1.8**</mark>\*\*, <mark style="color:red;">**1.9**</mark>, <mark style="color:red;">**1.10**</mark>, <mark style="color:red;">**1.11**</mark>, <mark style="color:red;">**1.12**</mark>, <mark style="color:red;">**1.13**</mark>, <mark style="color:red;">**1.14**</mark>, <mark style="color:red;">**1.15**</mark>, <mark style="color:red;">**1.16**</mark>, <mark style="color:red;">**1.17**</mark>, <mark style="color:red;">**1.18**</mark>, <mark style="color:red;">**1.19**</mark>, <mark style="color:red;">**1.20**</mark>, <mark style="color:red;">**1.20.6**</mark>, \*\*<mark style="color:red;">**1.21**</mark>
* **Server SoftWare**: <mark style="color:orange;">Spigot</mark>, <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 <a href="#installation" id="installation"></a>

1. Download zAuctionHouse 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 voila the plugin is ready to be used!

{% hint style="info" %}
We advise you to use MYSQL storage instead of JSON, it will be more efficient for your server.
{% endhint %}


# Why i need zMenu ?

zMenu is a highly advanced inventory management plugin that provides an extensive set of features, including a robust API for seamless integration with other plugins.

The main goal of zMenu is to be the centerpiece of your plugin ecosystem, offering a unified and comprehensive approach to inventory management. By integrating with other plugins from GroupeZ and third-party plugins, zMenu standardizes inventory management across your server, making it easier to configure and providing advanced functionalities. Whether used on its own or as a replacement for other inventory plugins, zMenu delivers a feature-rich and versatile experience.

{% hint style="info" %}
Worried about reconfiguring zAuctionHouse to switch to zMenu? Don't worry! The `/ah convert zmenu` command makes it easy to convert your existing configuration!
{% endhint %}

DeluxeMenu configurations are automatically compatible with zMenu. Simply place your DeluxeMenu configuration files in the `inventories` folder of zMenu, and they will work without any additional changes!

### How to disable zMenu

If you decide not to use zMenu, disabling it is straightforward. Set `useZMenuEngine` to `false` in the `config.yml` file. Once done, you can restore your previous configurations from here: <https://dl.groupez.dev/plugins/zauctionhouse/config/old/inventories.zip>.

Note: If you are using Minecraft version 1.13 or later, make sure to use the contents from the `1.13+` folder.

However, it is strongly discouraged to disable zMenu, as you will lose access to many features, and support will be more complicated since the old system is no longer widely used. We highly recommend using zMenu for the best experience.


# Official Configurations

Looking for zAuctionHouse configurations?

## Mc-Complex Configuration

{% embed url="<https://builtbybit.com/resources/zauctionhouse-mc-complex-auctionhouse.41745/>" %}

## DonutSmp Configuration

{% embed url="<https://builtbybit.com/resources/zauctionhouse-donutsmp-auctionhouse.41404/>" %}

## Hypixel Configuration

{% embed url="<https://builtbybit.com/resources/zauctionhouse-hypixel-auctionhouse.41378/>" %}


# Multi servers

zAuctionHouseRedis is a premium addon for managing auctions across multiple Minecraft servers. It is available for purchase for just 15€. You can find it here:

* [Groupez Marketplace](https://groupez.dev/resources/zauctionhouse-redis.210)
* [BuiltByBit Marketplace](https://builtbybit.com/resources/zauctionhouse-redis.23405)

To use this addon, you need a Redis server. Redis is an in-memory data structure store that helps ensure real-time synchronization across all your servers. You can learn more about Redis and download it here: [Official Redis Website](https://redis.io/)

For more information and community support, join our Discord server: [Groupez Discord](https://discord.groupez.dev/)

![Redis Animation](https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-d55421b09aa1a624d60a45d4e6496b6539701a14%2Fredis.gif?alt=media)

{% hint style="danger" %}
Attention, you must buy the zAuctionHouseRedis addon and use a REDIS server. We do not recommend using zAuctionHouseRedis for smaller servers due to the additional resource requirements.
{% endhint %}

## Why use Redis?

Redis is an in-memory data structure store that provides extremely fast read and write operations. It is particularly well-suited for scenarios where multiple servers need to share and synchronize data in real time. Unlike traditional SQL databases, which are disk-based and can introduce significant latency when handling frequent read and write operations, Redis operates directly in memory. This makes it ideal for applications that require high-performance, low-latency access to shared data, such as an auction house.

When using multiple servers, it is crucial to have a reliable and consistent way to share data between them. Redis provides a shared cache that allows all servers to access the same information instantaneously, ensuring data consistency. This is especially important for an auction house system where data about items, bids, and transactions needs to be updated and synchronized in real time to avoid discrepancies between servers.

Using SQL to synchronize multiple servers is not efficient in this context. SQL databases are designed to handle persistent storage, which means that each read or write operation involves accessing the disk. This can become a bottleneck, especially when dealing with frequent updates and reads from multiple servers. Additionally, SQL does not handle the real-time synchronization that an auction house requires, leading to delays and potential data conflicts.

BungeeCord and Velocity are proxy solutions that facilitate communication between Minecraft servers, but they are not designed for data synchronization. While they can pass messages between servers, they lack the capability to efficiently manage shared data like items in an auction house. Redis, on the other hand, is designed for exactly this purpose: providing a shared, fast-access cache that multiple servers can use to ensure that all data is consistent and up to date.

## How to install?

1. Place the `zAuctionHouseRedis` plugin in the `plugins` folder of each server.
2. Modify the `config.yml` file to add your Redis connection information.
3. That's it! The plugin will automatically handle the rest of the configuration and synchronization for you.


# Statistics

![Showcase](https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-d5485d910d81c14566f92ad9ee1e785821128629%2Fshowcase.gif?alt=media)

**zAuctionStats** is a premium addon that significantly enhances your auction house experience by adding powerful features such as placeholders, commands, and customizable inventories. With zAuctionStats, you can take your server's auction house functionality to the next level, offering players a more dynamic and engaging experience.

This addon is available for purchase from the following trusted platforms:

* [**BuildByBits**](https://builtbybit.com/resources/zauctionhouse-stats.41622/): Purchase and download instantly to get started with advanced auction statistics and more.
* [**GroupeZ**](https://groupez.dev/resources/zauctionhouse-stats.319): Start enhancing your auction house today with seamless access to zAuctionStats.

Get zAuctionStats now and bring a new level of depth to your auction system, impressing your players with detailed statistics and better control over their auction activities.

## Installation:

Installing **zAuctionStats** is simple and straightforward. Follow these steps to get started:

1. **Download and Place in Plugins Folder**: Download the zAuctionStats addon from your preferred platform and place the `.jar` file into your server's `plugins` folder.
2. **Launch Your Server**: Start your server to allow the plugin to initialize and create the necessary configuration files.
3. **Configure the Database**: After the first launch, stop your server and locate the generated `.yml` file in the `plugins/zAuctionStats` folder. You will need to configure the database settings to store all the information the plugin needs. Supported database types include **MySQL** and **SQLite**. Fill in your database details in the `config.yml` file.
4. **Restart the Server**: Once the configuration is complete, restart your server. The plugin will now be fully operational, and you can begin using all its features.

Below is an example of the `config.yml` file for database configuration:

#### Config.yml

```yaml
# Displays more information in the console, if you have a problem please enable this option and send errors to support.
enableDebug: false

# Enables time debugs, is used to measure plugin performance
enableDebugTime: false

sql:
  # Available type: MYSQL and SQLITE
  type: MYSQL
  debug: false
  host: 192.168.10.10
  port: 3306
  user: homestead
  password: 'secret'
  database: zauctionhouse

noName: "✘"
noAmount: "0"
loading: "Loading..."

cacheDurationMaterial: 3600000
```

Ensure that your database credentials are correct to avoid any connection issues.

### Features:

* **Over 40 Custom Placeholders**: Enrich your server's experience with over 40 unique placeholders, providing detailed auction statistics that players can interact with.
* **Centralized Data Storage**: Store all auction data in a centralized database for better organization and analysis. Supports **MySQL** and **SQLite** for maximum compatibility.
* **New Command for Price Checking**: Use the new `/ah price [<economy name>]` command to quickly display item prices and help players make informed purchasing decisions.
* **Example Inventories Included**: Get started quickly with two example inventories that showcase the powerful customization options available.
* **Open Source Availability**: The code is fully open source, allowing you to review, contribute, or customize it further to suit your needs. Check it out here: [GitHub - zAuctionHouse-Stats](https://github.com/Maxlego08/zAuctionHouse-Stats).
* **Easy Integration and Customization**: zAuctionStats is designed to be easy to integrate with your current server setup, and it comes with plenty of configuration options to tailor it exactly as you need.
* **Real-time Auction Data**: Provides real-time tracking of auction activity, empowering both players and server admins with actionable insights.
* **Optimized Performance**: Built with performance in mind, ensuring minimal impact on server resources while delivering powerful statistics and features.

Would you like to have more placeholders? Come ask me on [Discord](https://discord.groupez.dev/).

## Global Placeholders:

| Placeholders                                     | Description                                               |
| ------------------------------------------------ | --------------------------------------------------------- |
| `%zahstats_item_sold_amount%`                    | The number of items listed for sale.                      |
| `%zahstats_item_purchase_amount%`                | The number of items purchased.                            |
| `%zahstats_number_of_items_not_sold%`            | The number of unsold items that will expire.              |
| `%zahstats_number_of_items_expired%`             | The number of items that have expired.                    |
| `%zahstats_number_of_items_remove_from_expire%`  | The number of items removed from the EXPIRE storage type. |
| `%zahstats_number_of_items_remove_from_storage%` | The number of items removed from the ITEMS storage type.  |
| `%zahstats_number_of_items_remove_from_bought%`  | The number of items removed from the BUY storage type.    |
| `%zahstats_number_of_items_destroy%`             | The number of items that have been destroyed.             |
| `%zahstats_auction_opened%`                      | The number of times the auction house was opened.         |

## Global Economy Placeholders:

| Placeholders                                                     | Description                                                          |
| ---------------------------------------------------------------- | -------------------------------------------------------------------- |
| `%zahstats_money_spend_<economy name>%`                          | Total money spent in the auction house.                              |
| `%zahstats_total_price_of_all_items_sold_<economy name>%`        | Cumulative price of all items that were listed for sale.             |
| `%zahstats_money_spend_format_<economy name>%`                   | Total money spent in the auction house. (Formatted)                  |
| `%zahstats_total_price_of_all_items_sold_format_<economy name>%` | Cumulative price of all items that were listed for sale. (Formatted) |

## Player Placeholders:

| Placeholders                                           | Description                      |
| ------------------------------------------------------ | -------------------------------- |
| `%zahstats_player_total_sales%`                        | Total items on sale.             |
| `%zahstats_player_total_purchases%`                    | Total items purchased.           |
| `%zahstats_player_total_sales_format%`                 | Total items on sale formatted.   |
| `%zahstats_player_total_purchases_format%`             | Total items purchased formatted. |
| `%zahstats_player_total_earned_<economy name>%`        | Total money earned.              |
| `%zahstats_player_total_spent_<economy name>%`         | Total money spent.               |
| `%zahstats_player_total_format_earned_<economy name>%` | Total money earned formatted.    |
| `%zahstats_player_total_format_spent_<economy name>%`  | Total money spent formatted.     |

## Ranking Placeholders:

| Placeholders                                                    | Description                               |
| --------------------------------------------------------------- | ----------------------------------------- |
| `%zahstats_who_spent_most_money_name_<economy name>%`           | Who spent the most - Name.                |
| `%zahstats_who_spent_most_money_amount_<economy name>%`         | Who spent the most - Amount.              |
| `%zahstats_format_who_spent_most_money_amount_<economy name>%`  | Who spent the most - Amount. (Formatted)  |
| `%zahstats_who_earned_most_money_name_<economy name>%`          | Who earned the most - Name.               |
| `%zahstats_who_earned_most_money_amount_<economy name>%`        | Who earned the most - Amount.             |
| `%zahstats_format_who_earned_most_money_amount_<economy name>%` | Who earned the most - Amount. (Formatted) |
| `%zahstats_who_purchased_most_items_name_<economy name>%`       | Who purchased the most - Name.            |
| `%zahstats_who_purchased_most_items_amount_<economy name>%`     | Who purchased the most - Amount.          |
| `%zahstats_who_sales_most_items_name_<economy name>%`           | Who sales the most - Name.                |
| `%zahstats_who_sales_most_items_amount_<economy name>%`         | Who sales the most - Amount.              |
| `%zahstats_who_purchased_most_items_name%`                      | Who purchased the most - Name.            |
| `%zahstats_who_purchased_most_items_amount%`                    | Who purchased the most - Amount.          |
| `%zahstats_who_sales_most_items_name%`                          | Who sales the most - Name.                |
| `%zahstats_who_sales_most_items_amount%`                        | Who sales the most - Amount.              |

## Material Placeholders:

| Placeholders                                                   | Description                           |
| -------------------------------------------------------------- | ------------------------------------- |
| `%zahstats_material_average_<economy name>_<material>%`        | Average price of an item.             |
| `%zahstats_material_median_<economy name>_<material>%`         | Median price of an item.              |
| `%zahstats_material_amount_<economy name>_<material>%`         | Amount of items.                      |
| `%zahstats_material_format_average_<economy name>_<material>%` | Average price of an item. (Formatted) |
| `%zahstats_material_format_median_<economy name>_<material>%`  | Median price of an item. (Formatted)  |
| `%zahstats_material_format_amount_<economy name>_<material>%`  | Amount of items. (Formatted)          |

## Commands

| Command                | Permission                       | Description              |
| ---------------------- | -------------------------------- | ------------------------ |
| `/zahstats`            | `zauctionhouse.stats.use`        | Display commands         |
| `/zahstats reload`     | `zauctionhouse.stats.reload`     | Reload configurations    |
| `/zahstats clearcache` | `zauctionhouse.stats.clearcache` | Clear plugin cache       |
| `/ah price`            | `zauctionhouse.price`            | Display item information |


# Commands and Permissions

An exhaustive list of the commands and their permissions

## Permissions

You can give one permission per grade to limit the number of items on sale.

In the config.yml file you have this:

```yaml
permissions:
- permission: zauctionhouse.max.5
  limit: 5
- permission: zauctionhouse.max.10
  limit: 10
- permission: zauctionhouse.max.15
  limit: 15
```

You can create permissions to have a different expiration time per grade.

```yaml
expirations:
- permission: zauctionhouse.expiration.vip
  expiration: 3600
- permission: zauctionhouse.expiration.elite
  expiration: 7200
- permission: zauctionhouse.expiration.legend
  expiration: 259200
```

## **Remove item as an admin**

`zauctionhouse.admin.remove`

To remove an item you must use the "click wheel", if the click wheel does not work in your version, you can use your drop key.

## Bypass cooldown command

`zauctionhouse.admin.bypass.cooldown`

## Commands

<table data-full-width="true"><thead><tr><th width="310">Command</th><th width="310">Permission</th><th>Description</th></tr></thead><tbody><tr><td><strong>/zauctionhouse</strong> (aliases: /ah, /hdv, /zauction, /zah, /zhdv)</td><td><code>zauctionhouse.use</code></td><td>Main command</td></tr><tr><td><strong>/ah sell &#x3C;price> [&#x3C;amount>]</strong></td><td><code>zauctionhouse.sell</code></td><td>You can specify the economy by adding the economy format after the price. For example you have a saving per level with the format <code>l</code>, to sell your item with this economy you must do <code>/ah sell &#x3C;price>&#x3C;format> [&#x3C;amount>]</code>. What gives us: <code>/ah sell 10l</code> if you want to sell an item at 10 levels.</td></tr><tr><td><strong>/ah sellinventory &#x3C;price></strong></td><td><code>zauctionhouse.sell.inventory</code></td><td>Sell an inventory</td></tr><tr><td>/<strong>ah reload</strong></td><td><code>zauctionhouse.reload</code></td><td>Reloaded the configuration files.</td></tr><tr><td><strong>/ah config</strong></td><td><code>zauctionhouse.config</code></td><td>Configure the in-game plugin.</td></tr><tr><td><strong>/ah version</strong></td><td>in config.yml</td><td><strong>Show plugin version</strong></td></tr><tr><td><strong>/ah blacklist</strong></td><td><code>zauctionhouse.blacklist</code></td><td>See the list of blacklist players.</td></tr><tr><td><strong>/ah history [&#x3C;page>] [&#x3C;type>]</strong></td><td><code>zauctionhouse.history</code></td><td>View your purchase and/or sale history.</td></tr><tr><td><strong>/ah transaction &#x3C;player> [&#x3C;page>] [&#x3C;type>]</strong></td><td><code>zauctionhouse.transaction</code></td><td>View a player's buy or sell history.</td></tr><tr><td><strong>/ah claim</strong></td><td><code>zauctionhouse.claim</code></td><td>Allows you to recover your pending money.</td></tr><tr><td><strong>/ah search &#x3C;string></strong></td><td><code>zauctionhouse.search</code></td><td>Allows you to search for anything, more information about the filter system on the "Filter" page.</td></tr><tr><td><strong>/ah purge &#x3C;days></strong></td><td><code>zauctionhouse.purge</code></td><td>Purge old transactions</td></tr><tr><td>/ah giveeconomyitem &#x3C;economy></td><td>zauctionhouse.give.economy.item</td><td>Retrieves the item used by an item economy</td></tr><tr><td>/ah sell-confirmation-toggle</td><td>zauctionhouse.sell.confirmation.toggle</td><td>Toggle sell confirmation inventory</td></tr></tbody></table>

## Optionals commands

You can add 4 optional commands. The permission of its four commands is the same as for the `/ah` command.

<table data-full-width="true"><thead><tr><th>Command</th><th width="142">Permission</th><th>Description</th></tr></thead><tbody><tr><td><strong>/ah expire</strong></td><td>none</td><td>Allows you to access the list of expired items.</td></tr><tr><td><strong>ah buying</strong></td><td>none</td><td>Allows you to access the list of purchased items.</td></tr><tr><td><strong>/ah categories</strong></td><td>none</td><td>Allow access to the list of categories.</td></tr><tr><td><strong>/ah items</strong></td><td>none</td><td>Allows you to access your items on sale.</td></tr></tbody></table>


# Placeholders

Placeholders can be used with and without the PlaceHolderAPI plugin. If you don't use the PlaceHolderAPI plugin then the placeholders will only work in the zAuctionHouse plugin.

<table data-full-width="true"><thead><tr><th width="365">Placeholder</th><th>Description</th></tr></thead><tbody><tr><td><code>%zauctionhouse_expired_item%</code></td><td>Allows to get the list of expired items of the player.</td></tr><tr><td><code>%zauctionhouse_expired_item%</code></td><td>Allows to get the list of expired items of the player.</td></tr><tr><td><code>%zauctionhouse_buying_item%</code></td><td>Allows to get the list of the items purchased from the player.</td></tr><tr><td><code>%zauctionhouse_buying_item%</code></td><td>Allows to get the list of the items purchased from the player.</td></tr><tr><td><code>%zauctionhouse_currents_item%</code></td><td>Allows to get the list of items for sale by the player.</td></tr><tr><td><code>%zauctionhouse_sorting%</code></td><td>Allows to obtain the type of sorting of the player.</td></tr><tr><td><code>zauctionhouse_sorting_type%</code></td><td>Returns the sort type.</td></tr><tr><td><code>%zauctionhouse_counts%</code></td><td>Allows you to obtain the number of items for sale.</td></tr><tr><td><code>%zauctionhouse_claims%</code></td><td>Returns true if the player has to get his money back, otherwise it returns false.</td></tr><tr><td><code>%zauctionhouse_category_item_</code><em><code>&#x3C;</code></em><strong><code>categoryname</code></strong><em><code>></code></em><code>%</code></td><td>Allows you to obtain the number of items in the category given in parameter.</td></tr><tr><td><code>%zauctionhouse_claim_</code><em><code>&#x3C;</code></em><strong><code>economy</code></strong><em><code>></code></em><code>%</code></td><td>Allows you to recover the amount of money on hold based on economy.</td></tr><tr><td><code>%zauctionhouse_category%</code></td><td>Display current category name for player.</td></tr><tr><td><code>%zauctionhouse_category%</code></td><td>Display current category name for player.</td></tr><tr><td><code>%zauctionhouse_max_items%</code></td><td>Returns the number of items the player can sell.</td></tr><tr><td><code>%zauctionhouse_disable_sell_confirmation%</code></td><td>Returns true if the sales confirmation menu is disabled</td></tr></tbody></table>

## Special placeholder

The placeholders below can only be used in the `SELL_SHOW` inventory type.

<table data-full-width="true"><thead><tr><th width="424">Placeholder</th><th>Description</th></tr></thead><tbody><tr><td><code>%zauctionhouse_price%</code></td><td>Allows you to retrieve the price of the item.</td></tr><tr><td><code>%zauctionhouse_amount%</code></td><td>Allows you to retrieve the amount of the item.</td></tr><tr><td><code>%zauctionhouse_currency%</code></td><td>Allows you to retrieve the currency of the item.</td></tr><tr><td><code>%zauctionhouse_sellinventory_price%</code></td><td>Allows you to recover the selling price of the inventory.</td></tr><tr><td><code>%zauctionhouse_sellinventory_currency%</code></td><td>Allows you to recover the currency of the inventory.</td></tr></tbody></table>


# Buttons

zAuctionHouse Button

{% hint style="info" %}
zAuctionHouse uses the [zMenu](https://docs.zmenu.dev/configurations/buttons) API, so you have all the features of [zMenu](https://docs.zmenu.dev/configurations/buttons) available from. Documentation: <https://docs.zmenu.dev/configurations/buttons>

\
We advise you to look at the zMenu documentation to better understand how the configurations work.

To configure the items, go to this page: <https://docs.zmenu.dev/configurations/items>
{% endhint %}

In this page you will find all the buttons that zAuctionHouse adds in zMenu.

{% hint style="danger" %}
Attention, if you have the slightest doubt on how to use one of the buttons, please look at the default configuration. If doubt persists please contact us at [discord](https://discord.groupez.dev/).
{% endhint %}

***

## Auction list

**For its buttons you have to specify a list of slots mandatory.**

### ZAUCTIONHOUSE\_AUCTION

Displays the list of items that are currently on sale..

### ZAUCTIONHOUSE\_EXPIRE

Displays the list of items that have expired for the player.

### ZAUCTIONHOUSE\_ITEMS

Displays the list of items the player currently has for sale.

### ZAUCTIONHOUSE\_BUYING

Displays the list of items the player has purchased.

### ZAUCTIONHOUSE\_SEARCH

Displays the list of items the player requested based on the search filter.

### ZAUCTIONHOUSE\_CATEGORY

Displays the list of items in the category that the player uses.

### ZAUCTIONHOUSE\_EXPIRE\_AND\_BUYING

Allows to display in a single inventory items expired or purchased

### ZAUCTIONHOUSE\_EXPIRE\_AND\_BUYING\_AND\_ITEMS

Allows to display in a single inventory the items bought, expired and on sale.

***

## Categories

### ZAUCTIONHOUSE\_CATEGORY

Open a category, you must specify the name of the catégory in the configuration.

```yaml
type: ZAUCTIONHOUSE_CATEGORY
category: <category name>
```

### ZAUCTIONHOUSE\_CATEGORIES\_LORE

Allows categories to be displayed on a single button. This configuration uses button type:

{% embed url="<https://builtbybit.com/resources/zauctionhouse-mc-complex-auctionhouse.41745/>" %}

{% hint style="info" %}
You must use this button there in the inventory file <mark style="color:red;">**category.yml**</mark>
{% endhint %}

Example:

```yaml
categories:
  isPermanent: true
  type: ZAUCTIONHOUSE_CATEGORIES_LORE
  categories:
    - 'home'
    - 'blocks'
    - 'potions'
    - 'tools'
    - 'weapons'
    - 'misc'
  enableText: '&a➜ %category%'
  disableText: '&7➜ %category%'
  slot: 47
  item:
    material: CLOCK
    name: '&bCategory: &f%category%'
    lore:
      - ''
      - '&7➜ All Categories'
      - '%blocks%'
      - '%potions%'
      - '%tools%'
      - '%weapons%'
      - '%misc%'
      - ''
      - '&bClick &fto cycle.'
```

The placeholder `%category%` allows to display the current category.

### ZAUCTIONHOUSE\_CATEGORIES\_HOME

Allows categories to be displayed on a single button. This configuration uses button type:

{% embed url="<https://builtbybit.com/resources/zauctionhouse-mc-complex-auctionhouse.41745/>" %}

{% hint style="info" %}
You must use this button there in the inventory file <mark style="color:red;">**auction.yml**</mark>
{% endhint %}

Example

```yaml
categories:
  isPermanent: true
  type: ZAUCTIONHOUSE_CATEGORIES_HOME
  categories:
    - 'home'
    - 'blocks'
    - 'potions'
    - 'tools'
    - 'weapons'
    - 'misc'
  slot: 47
  item:
    material: CLOCK
    name: '&bCategory: &fAll Categories'
    lore:
      - ''
      - '&a➜ All Categories'
      - '&7➜ Blocks'
      - '&7➜ Potions'
      - '&7➜ Tools'
      - '&7➜ Weapons'
      - '&7➜ Miscellaneous'
      - ''
      - '&bClick &fto cycle.'
```

***

## Remove All

### ZAUCTIONHOUSE\_REMOVE\_ALL\_ITEMS

Allows to recover the items that the player has put on sale.

### ZAUCTIONHOUSE\_REMOVE\_ALL\_BUYING

Retrieves items that the player has purchased.

### ZAUCTIONHOUSE\_REMOVE\_ALL\_EXPIRE

Allows you to retrieve player items that have expired.

***

## Show

### ZAUCTIONHOUSE\_SHOW\_REMOVE

Displays the item that the player will remove in the inventory removeConfirm.yml

### ZAUCTIONHOUSE\_SHOW\_BUY

Displays the item that the player will purchase in the inventory buyConfirm.yml

### ZAUCTIONHOUSE\_SHOW\_ADMIN

Displays the item that the player will remove in the inventory adminRemove.yml

***

## ZAUCTIONHOUSE\_CLAIM

Retrieves the money, does the same as the **/ah claim** command.

You can use the `refresh-placeholder: true` option to automatically update the item. If you have a storage in **SQLITE**, **SQL** or **REDIS**, the placeholder will be displayed "Loading", this option allows to update the item and avoid having the loading

***

## Sell Inventory

### ZAUCTIONHOUSE\_SELL\_INVENTORY\_ACCEPT

Allows the player to sell items at once.

### ZAUCTIONHOUSE\_SELL\_INVENTORY\_SLOT

List of slots where the player will be able to place items.

***

## ZAUCTIONHOUSE\_CHANGE\_SORT

Change the sort type for the player.

***

## ZAUCTIONHOUSE\_CHANGE\_SORTING

Change the way categories are sorted.

* Right click to advance in the list
* Left click to go back

```yaml
  change-sort:
    isPermanent: true
    type: ZAUCTIONHOUSE_CHANGE_SORTING
    sorting:
      - sorting: DECREASING_DATE
        display: "ᴅᴇᴄʀᴇᴀsɪɴɢ ᴅᴀᴛᴇ"
      - sorting: DECREASING_PRICE
        display: "ᴅᴇᴄʀᴇᴀsɪɴɢ ᴘʀɪᴄᴇ"
      - sorting: ASCENDING_DATE
        display: "ᴀsᴄᴇɴᴅɪɴɢ ᴅᴀᴛᴇ"
      - sorting: ASCENDING_PRICE
        display: "ᴀsᴄᴇɴᴅɪɴɢ ᴘʀɪᴄᴇ"
      - sorting: ALPHABETICAL_NAME
        display: "ᴀʟᴘʜᴀʙᴇᴛɪᴄᴀʟ ɴᴀᴍᴇ"
      - sorting: REVERSE_ALPHABETICAL_NAME
        display: "ʀᴇᴠᴇʀsᴇ ᴀʟᴘʜᴀʙᴇᴛɪᴄᴀʟ ɴᴀᴍᴇ"
      - sorting: SELLER_NAME_ALPHABETICAL
        display: "sᴇʟʟᴇʀ ɴᴀᴍᴇ ᴀʟᴘʜᴀʙᴇᴛɪᴄᴀʟ"
      - sorting: SELLER_NAME_REVERSE_ALPHABETICAL
        display: "sᴇʟʟᴇʀ ɴᴀᴍᴇ ʀᴇᴠᴇʀsᴇ ᴀʟᴘʜᴀʙᴇᴛɪᴄᴀʟ"
      - sorting: MATERIAL_TYPE_ALPHABETICAL
        display: "ᴍᴀᴛᴇʀɪᴀʟ ᴛʏᴘᴇ ᴀʟᴘʜᴀʙᴇᴛɪᴄᴀʟ"
      - sorting: MATERIAL_TYPE_REVERSE_ALPHABETICAL
        display: "ᴍᴀᴛᴇʀɪᴀʟ ᴛʏᴘᴇ ʀᴇᴠᴇʀsᴇ ᴀʟᴘʜᴀʙᴇᴛɪᴄᴀʟ"
      - sorting: ITEM_STACK_SIZE_ASCENDING
        display: "ɪᴛᴇᴍ sᴛᴀᴄᴋ sɪᴢᴇ ᴀsᴄᴇɴᴅɪɴɢ"
      - sorting: ITEM_STACK_SIZE_DESCENDING
        display: "ɪᴛᴇᴍ sᴛᴀᴄᴋ sɪᴢᴇ ᴅᴇsᴄᴇɴᴅɪɴɢ"
    enableText: ' #e6fff3➜ %sorting%'
    disableText: ' #8c8c8c➜ %sorting%'
    slot: 49
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGIyZWRlYjAxY2RjZTFkMTM1MWQ5YmY3ZmI3NTNiNmY1NzNhNTZiODY0NzcyOTlhNTEwMzNjYWFjODkzOTQwOCJ9fX0="
      name: ""
      lore:
        - "                #92bed8sᴏʀᴛ ᴛʏᴘᴇ"
        - "                    #8c8c8c&m     "
        - ""
        - "%DECREASING_DATE%"
        - "%DECREASING_PRICE%"
        - "%ASCENDING_DATE%"
        - "%ASCENDING_PRICE%"
        - "%ALPHABETICAL_NAME%"
        - "%REVERSE_ALPHABETICAL_NAME%"
        - "%SELLER_NAME_ALPHABETICAL%"
        - "%SELLER_NAME_REVERSE_ALPHABETICAL%"
        - "%MATERIAL_TYPE_ALPHABETICAL%"
        - "%MATERIAL_TYPE_REVERSE_ALPHABETICAL%"
        - "%ITEM_STACK_SIZE_ASCENDING%"
        - "%ITEM_STACK_SIZE_DESCENDING%"
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴄʜᴀɴɢᴇ ᴛʜᴇ sᴏʀᴛ ᴛʏᴘᴇ #8c8c8c• "
```

You can change the order or remove element in `sorting`.

#### Sorting Types

<table data-full-width="true"><thead><tr><th>Enum Value</th><th>Description</th></tr></thead><tbody><tr><td><code>DECREASING_DATE</code></td><td>Sorts items by their expiration date in descending order (latest date first).</td></tr><tr><td><code>DECREASING_PRICE</code></td><td>Sorts items by their price in descending order (highest price first).</td></tr><tr><td><code>ASCENDING_DATE</code></td><td>Sorts items by their expiration date in ascending order (earliest date first).</td></tr><tr><td><code>ASCENDING_PRICE</code></td><td>Sorts items by their price in ascending order (lowest price first).</td></tr><tr><td><code>ALPHABETICAL_NAME</code></td><td>Sorts items alphabetically by their name in ascending order (A-Z).</td></tr><tr><td><code>REVERSE_ALPHABETICAL_NAME</code></td><td>Sorts items alphabetically by their name in descending order (Z-A).</td></tr><tr><td><code>SELLER_NAME_ALPHABETICAL</code></td><td>Sorts items alphabetically by the seller's name in ascending order (A-Z).</td></tr><tr><td><code>SELLER_NAME_REVERSE_ALPHABETICAL</code></td><td>Sorts items alphabetically by the seller's name in descending order (Z-A).</td></tr><tr><td><code>MATERIAL_TYPE_ALPHABETICAL</code></td><td>Sorts items alphabetically by their material type in ascending order (A-Z).</td></tr><tr><td><code>MATERIAL_TYPE_REVERSE_ALPHABETICAL</code></td><td>Sorts items alphabetically by their material type in descending order (Z-A).</td></tr><tr><td><code>ECONOMY_NAME_ALPHABETICAL</code></td><td>Sorts items alphabetically by the associated economy name in ascending order (A-Z).</td></tr><tr><td><code>ECONOMY_NAME_REVERSE_ALPHABETICAL</code></td><td>Sorts items alphabetically by the associated economy name in descending order (Z-A).</td></tr><tr><td><code>ITEM_STACK_SIZE_ASCENDING</code></td><td>Sorts items by their stack size in ascending order (smallest stack first).</td></tr><tr><td><code>ITEM_STACK_SIZE_DESCENDING</code></td><td>Sorts items by their stack size in descending order (largest stack first).</td></tr></tbody></table>

***

## ZAUCTIONHOUSE\_SHOW\_ITEMS

Displays items from an inventory, shulker box or barrel. Is used in sellshow\.yml inventory.

***

## ZAUCTIONHOUSE\_BUY\_CONFIRM

Allows to confirm the purchase of an item.

#### Placeholders:

* `%price%` - Show price of item
* `%seller%` - Show seller name
* `%timer%` - Display the item expiration time
* `%money-after-purchase%` - Displays the player’s money after purchasing the item

***

## ZAUCTIONHOUSE\_SHOW\_SELLER

Allows to display the head of the player who sells an item, must be used in the inventory `buyconfirm.yml`

<figure><img src="https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-099eaa5ed41e4e445288295b65b4a8889a2b2ae4%2Fseller_show.png?alt=media" alt=""><figcaption></figcaption></figure>

You must do this to add the item in your configuration:

```yaml
seller:
  type: ZAUCTIONHOUSE_SHOW_SELLER
  slot: 4
  item:
    material: PLAYER_HEAD 
    name: "&f%sellerName%"
    lore:
      - "&8This item is sold by %sellerName%"
```

***

## ZAUCTIONHOUSE\_UPDATE

Updates the list of items for sale.

***

## ZAUCTIONHOUSE\_ADMIN\_REMOVE

Remove an item from the sale with several options.

```yaml
type: ZAUCTIONHOUSE_ADMIN_REMOVE
isSilent: <boolean> # If the player will receive a message
isForceRemove: <boolean> # If the item will be completely removed and not given back to the player.
```

***

## Remove Confirm

### ZAUCTIONHOUSE\_REMOVE\_CONFIRM

Allows to remove an item.

### ZAUCTIONHOUSE\_REMOVE\_CONFIRM\_ADMIN

Allows to remove an item as an administrator.

## ZAUCTIONHOUSE\_ECONOMY

When you have enabled the option for sale configuration inventory, you must use this button to set the economy used when selling the item.

You must define the name of the economy as follows:

```yaml
type: ZAUCTIONHOUSE_ECONOMY
economy: "vault" # Economy name, use the same that is present in economies.yml
```

## ZAUCTIONHOUSE\_SEARCH\_INPUT

Opens a search menu. If you have the option `search.enable-search-with-protocol-lib` enabled and if you have ProtocolLib, the search is done in a sign, otherwise the search will be in the chat.

<figure><img src="https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2FOhKLWxFWYPqMD3dZBFEy%2Fsearch-gui.gif?alt=media&amp;token=1e7f6f59-a69d-42b1-9e53-782852159c44" alt=""><figcaption></figcaption></figure>


# Economy

List of economies available with the plugin

## Economy available

* [BeastTokens](https://www.spigotmc.org/resources/13409/) - `BeastTokens`
* [CoinsEngine](https://www.spigotmc.org/resources/84121/) - `COINSENGINE`
* [EcoBits](https://www.spigotmc.org/resources/109967/) - `ECOBITS`
* [ElementalGems](https://builtbybit.com/resources/14920/) - `ELEMENTALGEMS`
* [ElementalTokens](https://builtbybit.com/resources/16707/) - `ELEMENTALTOKENS`
* [Experience](https://www.minecraft.net) - `EXPERIENCE`
* [Item](https://www.minecraft.net) - `ITEM`
* [Level](https://www.minecraft.net) - `LEVEL`
* [PlayerPoints](https://www.spigotmc.org/resources/80745/) - `PLAYERPOINTS`
* [RedisEconomy](https://www.spigotmc.org/105965/) - `REDISECONOMY`
* [Vault](https://www.spigotmc.org/resources/34315/) - `VAULT`
* [VotingPlugin](https://www.spigotmc.org/resources/15358/) - `VOTINGPLUGIN`
* [zEssentials](https://www.spigotmc.org/resources/118014/) - `ZESSENTIALS`
* [zMenu](https://www.spigotmc.org/resources/110402/) - `ZMENUITEMS`

zAuctionHouse integrates with the CurrenciesAPI, which you can find here: [CurrenciesAPI](https://github.com/Traqueur-dev/CurrenciesAPI).

You can configure multiple economies using the `economies.yml` file. For more advanced customization, you can also use the api: [Economy API](/development-portal/custom-economy)

```yaml
#########################################################################################################################################
#
# ███████╗░█████╗░██╗░░░██╗░█████╗░████████╗██╗░█████╗░███╗░░██╗██╗░░██╗░█████╗░██╗░░░██╗░██████╗███████╗██╗░░░██╗██████╗░
# ╚════██║██╔══██╗██║░░░██║██╔══██╗╚══██╔══╝██║██╔══██╗████╗░██║██║░░██║██╔══██╗██║░░░██║██╔════╝██╔════╝██║░░░██║╚════██╗
# ░░███╔═╝███████║██║░░░██║██║░░╚═╝░░░██║░░░██║██║░░██║██╔██╗██║███████║██║░░██║██║░░░██║╚█████╗░█████╗░░╚██╗░██╔╝░█████╔╝
# ██╔══╝░░██╔══██║██║░░░██║██║░░██╗░░░██║░░░██║██║░░██║██║╚████║██╔══██║██║░░██║██║░░░██║░╚═══██╗██╔══╝░░░╚████╔╝░░╚═══██╗
# ███████╗██║░░██║╚██████╔╝╚█████╔╝░░░██║░░░██║╚█████╔╝██║░╚███║██║░░██║╚█████╔╝╚██████╔╝██████╔╝███████╗░░╚██╔╝░░██████╔╝
# ╚══════╝╚═╝░░╚═╝░╚═════╝░░╚════╝░░░░╚═╝░░░╚═╝░╚════╝░╚═╝░░╚══╝╚═╝░░╚═╝░╚════╝░░╚═════╝░╚═════╝░╚══════╝░░░╚═╝░░░╚═════╝░
#
# Documentation : https://zshop.groupez.dev/
# Sponsor : https://serveur-minecraft-vote.fr/
#
# Economy available:
# - ITEM (Use items like economy, for example gold)
# - LEVEL (Minecraft player level)
# - EXPERIENCE (Minecraft player level experience point)
# - VAULT (requires https://www.spigotmc.org/resources/vault.34315/)
# - PLAYERPOINTS (requires https://www.spigotmc.org/resources/playerpoints.80745/)
# - TOKENMANAGER (requires https://www.spigotmc.org/resources/tokenmanager.8610/)
# - COINSENGINE (requires https://www.spigotmc.org/resources/84121/)
# - OPTECO (requires https://www.spigotmc.org/resources/76179/)
# - MYSQLTOKEN (requires https://www.spigotmc.org/resources/7535/)
# - BEASTTOKEN (requires https://www.spigotmc.org/resources/20806/)
#
#########################################################################################################################################

economies: # Default Economy
  VAULT:
    name: vault # Name of the economy, the name can be specified in the items
    type: VAULT # Economy type
    currency: "%price%$" # Placeholder to display the price
    format: "v"
    isEnable: true # Activate or not the economy
    denyMessage: "&cYou don't have enough money to buy this." # Message if the player does not have the money for a purchase.
  # Economy with an item, here diamond
  ITEM1:
    name: item_diamond # Name of the economy, the name can be specified in the items
    type: ITEM # Economy type
    currency: "%price% diamond%s%" # Placeholder to display the price
    format: "id"
    isEnable: false # Activate or not the economy
    denyMessage: "&cYou don't have enough money to buy this." # Message if the player does not have the money for a purchase.
    permission: "zauctionhouse.item.diamond"
    item: # Configure the item : https://zauctionhouse.groupez.dev/inventories/items
      material: DIAMOND
  # Economy with an item, here emerald
  ITEM2:
    name: item_emerald # Name of the economy, the name can be specified in the items
    type: ITEM # Economy type
    currency: "%price% emerald%s%" # Placeholder to display the price
    format: "ie"
    isEnable: false # Activate or not the economy
    denyMessage: "&cYou d'ont have enough money to buy this." # Message if the player does not have the money for a purchase.
    permission: "zauctionhouse.item.emerald"
    item: # Configure the item : https://zauctionhouse.groupez.dev/inventories/items
      material: EMERALD
  # Minecraft player level experience point
  EXPERIENCE:
    name: experience # Name of the economy, the name can be specified in the items
    type: EXPERIENCE # Economy type
    currency: "%price% xp"
    format: "xp" # Placeholder to display the price
    isEnable: false # Activate or not the economy
    denyMessage: "&cYou dont' have enough experience to buy this." # Message if the player does not have the money for a purchase.
  # Minecraft player level
  LEVEL:
    name: level # Name of the economy, the name can be specified in the items
    type: LEVEL # Economy type
    currency: "%price% level"
    format: "level" # Placeholder to display the price
    isEnable: false # Activate or not the economy
    denyMessage: "&cYou don't have enough level to buy this." # Message if the player does not have the money for a purchase.
  playerpoints:
    name: playerpoints # Name of the economy, the name can be specified in the items
    type: playerpoints # Economy type
    currency: "%price% P" # Placeholder to display the price
    format: "P"
    isEnable: false # Activate or not the economy
    denyMessage: "&cYou don't have enough points to buy this." # Message if the player does not have the money for a purchase.
  # coinsEngine:
  #  name: coinsengine # Name of the economy, the name can be specified in the items
  #  type: coinsengine # Economy type
  #  currency: "%price% c"
  #  format: "C" # Placeholder to display the price
  #  isEnable: true # Activate or not the economy
  #  currencyName: "coins" # Coins engine currency name
  #  denyMessage: "&cYou don't have enough points to buy this." # Message if the player does not have the money for a purchase.
```


# Convert

Plugin compatible for conversion:

* zAuctionHouseV2
* CrazyAuction (<https://www.spigotmc.org/resources/crazy-auctions.25219/>)
* AuctionHouseDB (<https://www.spigotmc.org/resources/auctionhouse.61836/>)
* AuctionHouseRetro (<https://www.spigotmc.org/resources/auctionhouse-retro.69278/>)
* PlayerAuctions (<https://www.spigotmc.org/resources/83073/>)
* zAuctionHouseV3 database to json
* zAuctionHouseV3 json to database
* zMenu, old config to zmenu configuration
* Item base64 to minecraft 1.21

To convert items for sale from version to version 3 you just have to take the `items.json` file and put it in the `zAuctionHouseV3/convert folder`. You must then do `/ah convert zauctionhousev2`.

![](https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-90ba43bf1c5c13f7ad1ddca5ad0640f6252ff514%2Fconvert-step-1.gif?alt=media)

![](https://4233628743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MNnv7S-sLVu0cX0Z4As%2Fuploads%2Fgit-blob-b4ce992551f2f00af8663cad206683e416c5ea8a%2Fconvert-step-2.gif?alt=media)

## Upgrade your server to 1.21

If you are in an old version of minecraft (less than or equal to 1.20.4) you must follow this tutorial to convert your items from your version to 1.21, otherwise you items are all simply disappear.

For this you must have storage in JSON or MYSQL. If you are with REDIS, please put your server in MYSQL at the time of conversion.

You must then run the following command: `/ah convert items_base64_to_minecraft_1_21`

Once done, your items will be compatible for 1.21. In the config.yml file you have the value `enableNewBase64ItemStackMethod` which is passed to true


# Search / Filter

With the command `/ah search` you will be able to search in depth the items that are present in the auction house.

You can enable in the config.yml file the option to automatically translate the search items, for example if you are in france and you want to search for sand in french, you will be able to make order `/ah search sable`. You need to enable `enable-translated-material` in `config.yml`.

You then have to set your language, you can find the list [here](https://github.com/Maxlego08/minecraft-assets/tree/1.21/assets/minecraft/lang)

```yaml
# Allows to configure the elements for the /ah search command
search:

  # Enables the /ah search command
  enable: true

  # Enable the option to search for an item with translation
  # For this option, you must be in 1.13+ and add your translation file to the zAuctionHouse/langs folder
  # By default the plugin will download all files, just enable this option and set your language
  enable-translated-material: true

# Allows to define the langs file for your server, this option only works for servers in 1.13+
# You can find the translation file here: https://github.com/Maxlego08/minecraft-assets/tree/1.21/assets/minecraft/lang
# The file must be placed in the folder zAuctionHouse/langs
language: 'fr-fr'

# If this option is enabled then the plugin will download all translation files when the zAuctionHouse/langs folder does not exist
# This saves you time and does not have to choose the file to download.
download-all-langages-files: true

# This option allows to translate the name of items in the language you have defined
enable-itemstack-translation: true
```

## Simple filter

If you need to quickly filter items you just have to do `/ah search <word>` . And so all items will be filtered according to that word about its type, name, lore and seller.

## Complex filter

For complex filters you will need to specify the name of the filter and its type.

`/ah search <name><type><word>`

Here is an example of a filter on the name: `/ah search name::Diamond`. Here you will search all items where the name is strictly equal to "Diamond".

## Filter type

There are three types of filters, they will allow you to search with more or less precision.

### Contains

* Text: `:=`
* Definition: Allows to search if the filter contains the given word.

### Equals

* Text: `::`
* Definition: Allows to search if the filter equals the given word

### Equalsignorecase

* Text: `:>`
* Definition: Allows to search if the filter equals ignore case the given word

## List of filters:

* name
* type
* seller
* lore
* material


# Messages

Message configuration file.

There are three types of messages that you can configure:

* TCHAT
* ACTION
* TITLE
* ITEMSTACK
* NONE

Now let's see each type and how to configure it:

* **TCHAT**

```yaml
messages:
  prefix:
    type: TCHAT
    message: '&7(&fzAuctionHouse&7)'
```

The `TCHAT` type is the default one, it will display a message in the chat.

* **ACTION**

```yaml
messages:
  plugin:
    disable:
      type: ACTION
      message: '&cThe auction house is currently deactivated.'
```

The `action` type will send a message in the action bar, this option is not available in 1.7.10.

* **TITLE**

```yaml
messages:
  world:
    is:
      banned:
        type: TITLE
        title: '&cError !'
        subtitle: '&cYou can''t use the auction house here.'
        fadeInTime: 30
        showTime: 40
        fadeOutTime: 10
        message: '&cYou can''t use the auction house here.'
```

The `TITLE` type will send a message to the center of your screen., this option is not available in 1.7.10.

* ITEMSTACK

```yaml
messages: 
  'no':      
    money:
      button:
        type: ITEMSTACK
        itemstack:
          material: BARRIER
          data: 0
          amount: 1
          durability: 0
          name: "&cYou don't have enough money to buy this !"

```

Only usable in certain cases to display items.

## Messages.yml

```yaml
messages:
  prefix:
    type: TCHAT
    message: '#666666(#28ed91zAuctionhouse#666666) '
  time:
    day:
      type: TCHAT
      message: '%02d day(s) %02d hour(s) %02d minute(s) %02d second(s)'
    hour:
      type: TCHAT
      message: '%02d hour(s) %02d minute(s) %02d second(s)'
    minute:
      type: TCHAT
      message: '%02d minute(s) %02d second(s)'
    second:
      type: TCHAT
      message: '%02d second(s)'
  command:
    syntaxe:
      error:
        type: TCHAT
        message: '&cYou must execute the command like this&7: &2%command%'
      help:
        type: TCHAT
        message: '&b& &f%syntaxe% &8- &7%description%'
    'no':
      permission:
        type: TCHAT
        message: '&cYou don''t have permission !'
      console:
        type: TCHAT
        message: '&cOnly player can use this command.'
      arg:
        type: TCHAT
        message: '&cThis argument does not exist !'
    cooldown:
      type: TCHAT
      message: '&cYou must wait a few seconds between each command.'
    help:
      custom:
        type: TCHAT
        message: '&6& &eAnother cmd'
    reload:
      type: TCHAT
      message: '&aPlugin successfuly reloaded.'
    sell:
      argument:
        price:
          type: TCHAT
          message: price
        amount:
          type: TCHAT
          message: amount
      custom:
        helping:
          type: TCHAT
          message: '&cYou must execute the command like this&7: &f/hdv vendre &a<price>
            &b[<amount>]'
    open:
      custom:
        helping:
          type: TCHAT
          message: '&cYou must execute the command like this&7: &f/ah'
    is:
      disable:
        type: TCHAT
        message: '&cThe command is disabled.'
  description:
    auction:
      type: TCHAT
      message: Opens the auction house
    sub:
      items:
        type: TCHAT
        message: Opens the items inventory
      categories:
        type: TCHAT
        message: Opens the categories inventory
      buying:
        type: TCHAT
        message: Opens the buying inventory
      expire:
        type: TCHAT
        message: Opens the expire inventory
    blacklist:
      list:
        type: TCHAT
        message: See the blacklist players.
      add:
        type: TCHAT
        message: Add a player to the blacklist
      remove:
        type: TCHAT
        message: Remove a player from the blacklist
    version:
      type: TCHAT
      message: Show plugin version
    open:
      type: TCHAT
      message: Open auction to a player
    purge:
      type: TCHAT
      message: Remove old transaction
    reload:
      type: TCHAT
      message: Reload plugin
    sell:
      type: TCHAT
      message: Sell an item
      inventory:
        type: TCHAT
        message: Sell an inventory
    help:
      type: TCHAT
      message: See the list of commands.
    config:
      type: TCHAT
      message: Config plugin ingame
    claim:
      type: TCHAT
      message: Claim your money
    addon:
      type: TCHAT
      message: Show addon list
    search:
      type: TCHAT
      message: Search a item
    lang:
      type: TCHAT
      message: See the list of translations.
    convert:
      type: TCHAT
      message: Convert items form another plugin to zauctionhouse
    history:
      type: TCHAT
      message: View your history
    transaction:
      type: TCHAT
      message: View a player's transactions.
  'no':
    holding:
      item:
        type: TCHAT
        message: '&cAre you stupid ? You can''t sell air !'
    money:
      button:
        type: ITEMSTACK
        itemstack:
          material: BARRIER
          amount: 1
          durability: 0
          name: '&cYou don''t have enough money to buy this !'
    enought:
      money:
        type: TCHAT
        message: '&cYou don''t have enough money to buy this !'
      place:
        type: TCHAT
        message: '&cYou don''t have enough room in your inventory to buy this item.'
  player:
    lag:
      ping:
        type: TCHAT
        message: '&cYou cannot sell items at this time. (its disableSaleIfPlayerIsLagging
          in config.json)'
      tps:
        type: TCHAT
        message: '&cYou cannot sell items at this time. (its disableSaleIfServerIsLagging
          in config.json)'
  plugin:
    disable:
      type: TCHAT
      message: '&cThe auction house is currently deactivated.'
    not:
      ready:
        type: TCHAT
        message: '&cThe plugin has not finished to be initialized, please be patient...'
        hdb:
          type: TCHAT
          message: '&cThe &fHeadDataBase &cplugin is not yet active, the plugin inventories
            have not yet loaded, please wait until HDB is working.'
  sell:
    cooldown:
      type: TCHAT
      message: '&cYou must wait &f%time%&c.'
    max:
      price:
        type: TCHAT
        message: '&cYou can''t put more than &f%max%&c for the price !'
    min:
      price:
        type: TCHAT
        message: '&cYou can''t put less than &f%min%&c for the price !'
    message:
      default:
        type: TCHAT
        message: '&fYou just put #8ee6e3x%amount% &7%item% &fon sale for #8ee6e3%price%&f.'
      inventory:
        type: TCHAT
        message: '&fYou just put #8ee6e3%amount% &7items &fon sale for #8ee6e3%price%&f.'
    creative:
      error:
        type: TCHAT
        message: '&cYou can''t sell an item in creative mode !'
    item:
      error:
        type: TCHAT
        message: '&cYou cannot sell this item, it is banned from the plugin.'
      break:
        type: TCHAT
        message: '&cYou cannot sell a broken item.'
      tax:
        default:
          type: TCHAT
          message: '&cYou need &f%tax% &cto be able to sell this item.'
      whitelist:
        type: TCHAT
        message: '&cYou do not have permission to add this item.'
    world:
      error:
        type: TCHAT
        message: '&cYou cannot sell in this world'
    items:
      error:
        type: TCHAT
        message: '&cYou cannot sell more than &f%max% &citems. &8(&7Did you set the
          &fzauctionhouse.max.<number permission in the configuration file> &7?&8)'
    inventory:
      error:
        type: TCHAT
        message: '&cYou did not put any item, sale canceled.'
      item:
        type: ITEMSTACK
        itemstack:
          material: CHEST
          amount: 1
          durability: 0
          name: '&7Sale of inventory'
  item:
    purchased:
      type: TCHAT
      message: '&fYou just purchased &a%item%&f.'
    remove:
      admin:
        type: TCHAT
        message: '&fYou have just deleted the item &a%item%&f.'
      seller:
        get:
          type: TCHAT
          message: '&fAn administrator has just removed &a%item%&f, you can retrieve
            it from the list of expired items.'
        delete:
          type: TCHAT
          message: '&fAn administrator has just removed &a%item%&f, You cannot retrieve
            your item.'
    lore:
      default:
        type: TCHAT
        messages:
        - '&8&m-+------------------------------+-'
        - '&8[&a!&8] &7%status%'
        - ''
        - '  &f* &fSeller&7: &b%seller%'
        - '  &f* &fPrice&7: &b%price%'
        - '  &f* &fExpire&7: &b%time%'
        - '&8&m-+------------------------------+-'
      expire:
        type: TCHAT
        messages:
        - '&8&m-+------------------------------+-'
        - '&8[&a!&8] &7Click to retrieve the item'
        - ''
        - '  &f* &fExpire&7: &b%time%'
        - '&8&m-+------------------------------+-'
      buying:
        type: TCHAT
        messages:
        - '&8&m-+------------------------------+-'
        - '&8[&a!&8] &7Click to retrieve the item'
        - ''
        - '  &f* &fExpire&7: &b%time%'
        - '&8&m-+------------------------------+-'
      items:
        type: TCHAT
        messages:
        - '&8&m-+------------------------------+-'
        - '&8[&a!&8] &7Click to retrieve the item'
        - ''
        - '  &f* &fExpire&7: &b%time%'
        - '&8&m-+------------------------------+-'
      inventory:
        type: TCHAT
        messages:
        - '&8&m-+------------------------------+-'
        - '&8[&a!&8] &7%status%'
        - ''
        - '  &7* &fType&7: &bInventory'
        - '  &7* &fSeller&7: &b%seller%'
        - '  &7* &fPrice&7: &b%price%'
        - '  &7* &fExpire&7: &b%time%'
        - ''
        - '  &f* &7&oRight click to buy'
        - '  &f* &7&oLeft click to see the content'
        - '&8&m-+------------------------------+-'
    economy:
      full:
        type: TCHAT
        message: '&7You have a full inventory, your items are gone in the inventory
          of expired items.'
  buyer:
    purchased:
      type: TCHAT
      message: '&a%buyer% &fjust bought &7%item% &ffor &b%price%&f.'
  remove:
    message:
      type: TCHAT
      message: '&fYou just removed #8ee6e3x%amount% &7%item% &ffrom the sales.'
  ascending:
    price:
      type: TCHAT
      message: Ascending price
    date:
      type: TCHAT
      message: Ascending date
  decreasing:
    date:
      type: TCHAT
      message: Decreasing date
    price:
      type: TCHAT
      message: Decreasing price
  status:
    player:
      type: TCHAT
      message: Click to retrieve this item
    buyer:
      type: TCHAT
      message: Click to buy this item
  error:
    buy:
      error:
        type: TCHAT
        message: '&cYou can''t buy this item.'
      money:
        type: TCHAT
        message: '&cYou don’t have enough money to buy this.'
  broadcast:
    sell:
      annonce:
        type: TCHAT
        message: '&fPlayer &b%player% &fhas added &7%item% &ffor &d%price% &fto the
          auction!'
    buy:
      annonce:
        type: TCHAT
        message: '&fPlayer &b%player% &fhas just bought &7%item% &ffor &d%price% &fto
          the auction!'
  world:
    is:
      banned:
        type: TCHAT
        message: '&cYou can''t use the auction house here.'
  inventory:
    full:
      type: TCHAT
      message: '&cYour inventory is full.'
  blacklist:
    information:
      type: TCHAT
      message: '&cYou are blacklisted, you cannot use the auction house.'
    list:
      type: TCHAT
      message: '&7List of blacklis playerst&8: &f%players%'
    empty:
      type: TCHAT
      message: '&cNo blacklist players'
    add:
      type: TCHAT
      message: '&7You have just added the player &f%player% &7 to the blacklist.'
    remove:
      type: TCHAT
      message: '&7You come to remove the player &f%player% &7 from the blacklist.'
  transaction:
    empty:
      purchase:
        type: TCHAT
        message: '&cYou have not made any purchase transactions.'
      sale:
        type: TCHAT
        message: '&cYou have not made any sales transactions.'
      both:
        type: TCHAT
        message: '&cYou have not made any transactions.'
    message:
      list:
        type: TCHAT
        messages:
        - '&8(&bzAuctionHouse&8) &fTransactions &7%type% &8(&a%page%&8/&a%maxPage%&8)'
        - '%content%'
        - '&8(&b?&8) &7&oDo &f&o/ah history %nextPage% %type% &7&oto go to the next
          page.'
      show:
        type: TCHAT
        messages:
        - '&8(&bzAuctionHouse&8) &fTransactions &7%type% &fof &b%player% &8(&a%page%&8/&a%maxPage%&8)'
        - '%content%'
        - '&8(&b?&8) &7&oDo &f&o/ah transaction %player% %nextPage% %type% &7&oto
          go to the next page.'
      content:
        sale:
          type: TCHAT
          message: '&f%seller% have sold x&a%amount% &o%item% &fto the player &b%buyer%
            for &7%price% &8(&7%date%&8)'
        purchase:
          type: TCHAT
          message: '&f%buyer% have purchased x&a%amount% &o%item% &fto the player
            &b%seller% for &7%price% &8(&7%date%&8)'
        you:
          type: TCHAT
          message: You
  connect:
    claim:
      type: TCHAT
      message: '&aYou have money to recover, make &b/ah claim &ato recover for your
        money.'
    transactions:
      type: TCHAT
      message: '&aYou sold %item% item(s) during your absence.'
  claim:
    money:
      wait:
        type: TCHAT
        message: '&7Wait few seconds...'
      cooldown:
        type: TCHAT
        message: '&cYou have to wait a few minutes before you can do this command
          again.'
      crash:
        type: TCHAT
        message: '&7Unable to retrieve transactions at this time, please contact an
          administrator.'
      error:
        type: TCHAT
        message: '&cYou have no pending transactions.'
      success:
        type: TCHAT
        message: '&aYou just got your money back on hold.'
  cooldown:
    message:
      type: ACTION
      message: ' &cYou must wait &f%cooldown% &cbefore you can do this action.'
  purge:
    start:
      type: TCHAT
      message: '&aPurge start. &8(&7Wait few seconds&8)'
    end:
      type: TCHAT
      message: '&aThe purge of transactions is over.'
  click:
    cooldown:
      type: ACTION
      message: '&cYou must wait before you can perform this action.'
  force:
    open:
      type: TCHAT
      message: '&aYou have just opened the auction house for the player &f%player%&a.'
  priority:
    type: TCHAT
    message: No priority
  economy:
    not:
      found:
        type: TCHAT
        message: '&cImpossible de trouver l''&conomy avec le nom &f%name%&c.'
  dupe:
    info:
      type: TCHAT
      message: '&aThe player &f%player% &ahas just put on sale and removed 3 items
        in less than 60 seconds !'
    infodiscord:
      type: TCHAT
      message: The player **%player%** has just put on sale and removed 3 items in
        less than 60 seconds !

```


# Prices

```yaml
#########################################################################################################################################
#
#
#   Sponsor: https://serveur-minecraft-vote.fr/
#   5€ gift code on Minecraft Vote Server : ZAUCTIONHOUSE (https://serveur-minecraft-vote.fr/utiliser/un/code/cadeau?code=ZAUCTIONHOUSE)
#
#   Documentation: https://zauctionhouse.groupez.dev/
#   Discord: https://discord.groupez.dev/
#
#   You can find the list of prices items here. Here are the different types of prices:
#   - zauctionhouse:similar_model_id
#   - zauctionhouse:names_contains
#   - zauctionhouse:zauctionhouse:contains_lore
#   - zauctionhouse:material_similar
#
#   Documentation: https://zauctionhouse.groupez.dev/prices
#
#########################################################################################################################################

prices:

    # Price items if their name contains an element
  - type: "zauctionhouse:names_contains"
    minPrice: 100
    maxPrice: 1000
    key: "Custom Sword"
      
    # Price of items with a custom model id
  - type: "zauctionhouse:similar_model_id"
    minPrice: 100
    maxPrice: 1000  
    key: PAPER # Material name (https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html)
    modelId: 10001    
    
    # Price of items with lore contains key
  - type: "zauctionhouse:contains_lore"
    minPrice: 100
    maxPrice: 1000
    key: "Cosmetics"    
    
    # Price of items with lore contains key
  - type: "zauctionhouse:material_similar"
    minPrice: 100
    maxPrice: 1000  
    key: STONE_HOE # (https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html)
```

### zauctionhouse:material\_similar

Set price for an item with material (<https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html>)

### zauctionhouse:contains\_lore

Set price for an item if lore contains a string

### zauctionhouse:similar\_model\_id

Set price for an item with material and model id

### zauctionhouse:names\_contains

Set price for an item if name contains a string


# Whitelist

To add items to the whitelist, you must enable the whitelist in the config.yml file

```yaml
#########################################################################################################################################
#
#
#   Sponsor: https://serveur-minecraft-vote.fr/
#   5€ gift code on Minecraft Vote Server : ZAUCTIONHOUSE (https://serveur-minecraft-vote.fr/utiliser/un/code/cadeau?code=ZAUCTIONHOUSE)
#
#   Documentation: https://zauctionhouse.groupez.dev/
#   Discord: https://discord.groupez.dev/
#
#   You can find the list of whitelisted items here. Here are the different types of whitelist:
#   - zauctionhouse:similar_model_id
#   - zauctionhouse:names_contains
#   - zauctionhouse:zauctionhouse:contains_lore
#   - zauctionhouse:material_similar
#
#   Documentation: https://zauctionhouse.groupez.dev/whitelist
#
#########################################################################################################################################

whitelist:
#
#    # Blacklist items if their name contains an element
#  - type: "zauctionhouse:names_contains"
#    key: "Custom Sword"
#      
#    # Blacklist of items with a custom model id
#  - type: "zauctionhouse:similar_model_id"
#    key: PAPER # Material name (https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html)
#    modelId: 10001    
#    
#    # Blacklist of items with lore contains key
#  - type: "zauctionhouse:contains_lore"
#    key: "Cosmetics"    
#    
#    # Blacklist of items with lore contains key
#  - type: "zauctionhouse:material_similar"
#    key: STONE_HOE # (https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html)
```

### zauctionhouse:material\_similar

Whitelist a material (<https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html>)

### zauctionhouse:contains\_lore

Whitelist an item if lore contains a string

### zauctionhouse:similar\_model\_id

Whitelist an item with material and model id

### zauctionhouse:names\_contains

Whitelist an item if name contains a string


# Blacklist

```yaml
#########################################################################################################################################
#
#
#   Sponsor: https://serveur-minecraft-vote.fr/
#   5€ gift code on Minecraft Vote Server : ZAUCTIONHOUSE (https://serveur-minecraft-vote.fr/utiliser/un/code/cadeau?code=ZAUCTIONHOUSE)
#
#   Documentation: https://zauctionhouse.groupez.dev/
#   Discord: https://discord.groupez.dev/
# 
# 
# ███████╗░█████╗░██╗░░░██╗░█████╗░████████╗██╗░█████╗░███╗░░██╗██╗░░██╗░█████╗░██╗░░░██╗░██████╗███████╗██╗░░░██╗██████╗░
# ╚════██║██╔══██╗██║░░░██║██╔══██╗╚══██╔══╝██║██╔══██╗████╗░██║██║░░██║██╔══██╗██║░░░██║██╔════╝██╔════╝██║░░░██║╚════██╗
# ░░███╔═╝███████║██║░░░██║██║░░╚═╝░░░██║░░░██║██║░░██║██╔██╗██║███████║██║░░██║██║░░░██║╚█████╗░█████╗░░╚██╗░██╔╝░█████╔╝
# ██╔══╝░░██╔══██║██║░░░██║██║░░██╗░░░██║░░░██║██║░░██║██║╚████║██╔══██║██║░░██║██║░░░██║░╚═══██╗██╔══╝░░░╚████╔╝░░╚═══██╗
# ███████╗██║░░██║╚██████╔╝╚█████╔╝░░░██║░░░██║╚█████╔╝██║░╚███║██║░░██║╚█████╔╝╚██████╔╝██████╔╝███████╗░░╚██╔╝░░██████╔╝
# ╚══════╝╚═╝░░╚═╝░╚═════╝░░╚════╝░░░░╚═╝░░░╚═╝░╚════╝░╚═╝░░╚══╝╚═╝░░╚═╝░╚════╝░░╚═════╝░╚═════╝░╚══════╝░░░╚═╝░░░╚═════╝░
#
#
#
#   You can find the list of blacklisted items here. Here are the different types of blacklist:
#   - zauctionhouse:similar_model_id
#   - zauctionhouse:names_contains
#   - zauctionhouse:zauctionhouse:contains_lore
#   - zauctionhouse:material_similar
#
#   Documentation: https://zauctionhouse.groupez.dev/blacklist
#
#########################################################################################################################################

blacklists:

    # Blacklist items if their name contains an element
  - type: "zauctionhouse:names_contains"
    key: "Custom Sword"
      
    # Blacklist of items with a custom model id
  - type: "zauctionhouse:similar_model_id"
    key: PAPER # Material name (https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html)
    modelId: 10001    
    
    # Blacklist of items with lore contains key
  - type: "zauctionhouse:contains_lore"
    key: "Cosmetics"    
    
    # Blacklist of items with lore contains key
  - type: "zauctionhouse:material_similar"
    key: STONE_HOE
```

### zauctionhouse:material\_similar

Blacklist a material (<https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html>)

### zauctionhouse:contains\_lore

Blacklist an item if lore contains a string

### zauctionhouse:similar\_model\_id

Blacklist an item with material and model id

### zauctionhouse:names\_contains

Blacklist an item if name contains a string


# Tax

Tax system

Tax type:

* SELL (The player will paid a tax when i sell an item)
* PURCHASE (The price will tax when player is purchase an item)
* BOTH (Its SELL and PURCHASE)
* CAPITALISM (This type will allow to sell an item at 100$, if there is a 10% tax then the item will be displayed at 110$, the buyer will pay 110$ and the seller will receive 100$)

You can enable tax for every items or for specific items

```yaml
#########################################################################################################################################
#
#
#   Sponsor: https://serveur-minecraft-vote.fr/
#   Documentation: https://zauctionhouse.groupez.dev/
#   Discord: https://discord.groupez.dev/
# 
#   Configuration of taxes by items 
#   Dont forget to set 'enableItemsTax' to true in config.json if you want to use this taxs
#
#########################################################################################################################################

taxs:
  exampleA:
    percent: 5.0 
    item:
      material: STONE
      data: 0
      amount: 1
      durability: 0
  exampleB:
    percent: 10.0
    item:
      material: IRON_ORE
      data: 0
      amount: 1
      durability: 0
  exampleC:
    percent: 30.0
    item:
      material: IRON_INGOT
      data: 0
      amount: 1
      durability: 0

```


# Categories

In the categories.yml file you will be able to create different categories and have a list of [materials](https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html) for each category:

{% hint style="info" %}
You can create your own categories in addition to the default categories created by the plugin.
{% endhint %}

```yaml
categories:
  examples:
    name: Examples
    materials:
    - name: test name
    - loreKey: test lore
    - material: STONE
      name: test stone
      removeColor: true
    - material: PAPER
      modelId: 2500
  blocks:
    name: Blocks
    materials:
    - material: AIR
    - material: STONE
    - material: GRANITE
    - material: POLISHED_GRANITE
    - ...
  
  potions:
    name: Potions
    materials:
    - material: BLAZE_ROD
    - material: GHAST_TEAR
    - material: NETHER_STAR
    - ...
  tools:
    name: Tools
    materials:
    - material: STONE_AXE
    - material: STONE_SHOVEL
    - material: STONE_HOE
    - material: STONE_PICKAXE
    - material: IRON_AXE
    - ...
  weapons:
    name: Weapons
    materials:
    - material: FLINT_AND_STEEL
    - material: BOW
    - material: ARROW
    - ...
  misc:
    name: Misc

```

Use the `CategoryItem` interface to create your own item verification for a Category.


# Item Translation

You can translate the items that will be displayed in messages into another language. To do this you need to enable the `enable-itemstack-translation` option in the config.yml file You must also define your language by the following list:<https://github.com/Maxlego08/minecraft-assets/tree/1.21/assets/minecraft/lang>

By default the plugin will download all translations available in the `zAuctionHouseV3/langs` folder, you only have to change the language value to define your own language.

```yaml
# Allows to define the langs file for your server, this option only works for servers in 1.13+
# You can find the translation file here: https://github.com/Maxlego08/minecraft-assets/tree/1.21/assets/minecraft/lang
# The file must be placed in the folder zAuctionHouse/langs
# The file name must be in the following format <country>-<language>, so for France it's will be fr-fr
language: 'fr-fr'

# If this option is enabled then the plugin will download all translation files when the zAuctionHouse/langs folder does not exist
# This saves you time and does not have to choose the file to download.
download-all-langages-files: true

# This option allows to translate the name of items in the language you have defined
enable-itemstack-translation: true
```


# Config.yml

Plugin configuration, you will find all the main configuration items here

```yaml
#########################################################################################################################################
#
#
#   Sponsor: https://serveur-minecraft-vote.fr/
#   Documentation: https://zauctionhouse.groupez.dev/
#   Discord: https://discord.groupez.dev/
#
#
# ███████╗░█████╗░██╗░░░██╗░█████╗░████████╗██╗░█████╗░███╗░░██╗██╗░░██╗░█████╗░██╗░░░██╗░██████╗███████╗██╗░░░██╗██████╗░
# ╚════██║██╔══██╗██║░░░██║██╔══██╗╚══██╔══╝██║██╔══██╗████╗░██║██║░░██║██╔══██╗██║░░░██║██╔════╝██╔════╝██║░░░██║╚════██╗
# ░░███╔═╝███████║██║░░░██║██║░░╚═╝░░░██║░░░██║██║░░██║██╔██╗██║███████║██║░░██║██║░░░██║╚█████╗░█████╗░░╚██╗░██╔╝░█████╔╝
# ██╔══╝░░██╔══██║██║░░░██║██║░░██╗░░░██║░░░██║██║░░██║██║╚████║██╔══██║██║░░██║██║░░░██║░╚═══██╗██╔══╝░░░╚████╔╝░░╚═══██╗
# ███████╗██║░░██║╚██████╔╝╚█████╔╝░░░██║░░░██║╚█████╔╝██║░╚███║██║░░██║╚█████╔╝╚██████╔╝██████╔╝███████╗░░╚██╔╝░░██████╔╝
# ╚══════╝╚═╝░░╚═╝░╚═════╝░░╚════╝░░░░╚═╝░░░╚═╝░╚════╝░╚═╝░░╚══╝╚═╝░░╚═╝░╚════╝░░╚═════╝░╚═════╝░╚══════╝░░░╚═╝░░░╚═════╝░
#
#
#
#   Commands and permissions:
#   - /zauctionhouse » Main command (aliases: /ah, /hdv, /zauction, /zah, /zhdv) - zauctionhouse.use
#   - /ah sell <price> [<amount>] » Sell an item (aliases: /ah vendre, /ah s) - zauctionhouse.sell
#   - /ah sellinventory <price> » Sell an inventory (aliases: /ah vendreinventaire, /ah si, /ah vi) - zauctionhouse.sell.inventory
#   - /ah reload » Reloaded the configuration files - zauctionhouse.reload
#   - /ah config » Configure the in-game plugin - zauctionhouse.config
#   - /ah version » See the plugin version - no permission
#   - /ah blacklist » See the list of blacklist players - zauctionhouse.blacklist
#   - /ah blacklist add <player> » Add a player to the blacklist - zauctionhouse.blacklist.add
#   - /ah blacklist remove <player> » Remove a player from the blacklist - zauctionhouse.blacklist.remove
#   - /ah history [<page>] [<type>] » View your purchase and/or sale history - zauctionhouse.history
#   - /ah transaction <player> [<page>] [<type>] » View a player's buy or sell history - zauctionhouse.transaction
#   - /ah claim » Allows you to recover your pending money - zauctionhouse.claim
#   - /ah search <string> » Allows you to search for anything, more information about the filter system on the "Filter" page - zauctionhouse.search
#   - /ah purge <days> » Purge old transactions - zauctionhouse.purge
#
#   Optionals commands:
#   - /ah expire » Allows you to access the list of expired items 
#   - /ah buying » Allows you to access the list of purchased items
#   - /ah categories » Allow access to the list of categories
#   - /ah items » Allows you to access your items on sale
#
#   Addons:
#   - zAuctionHouse Discord: https://groupez.dev/resources/zauctionhouse-discord.20 (FREE)
#     A discord bot to send messages or delete them when selling or buying
#   - zAuctionHouse Redis: https://groupez.dev/resources/zauctionhouse-redis.210 (15€)
#     An addon to link zAuctionHouse between multiple servers
#   - zAuctionHouse Stats: https://groupez.dev/resources/zauctionhouse-stats.319 (7€)
#     Save all actions performed by your players and create statics with new placeholders, orders and inventory.
#
#   Configurations (Official configuration, created by GroupeZ):
#   - DonutSMP AuctionHouse: https://builtbybit.com/resources/zauctionhouse-donutsmp-auctionhouse.41404/ (3.99)
#   - Hypixel AuctionHouse: https://builtbybit.com/resources/zauctionhouse-hypixel-auctionhouse.41378/ (3.99)
#   - Mc-Complex AuctionHouse: https://builtbybit.com/resources/zauctionhouse-mc-complex-auctionhouse.41745/ (3.99)
#
#########################################################################################################################################

# Enables detailed information display in the console.
# If you encounter an issue, enable this option and send the errors to support.
enableDebug: false

# Enables execution time debugging to measure plugin performance.
# Useful for identifying bottlenecks and optimizing performance.
enableDebugTime: false

#########################################################################################################################################
# Use zMenu's inventory system,
#
# zMenu is a comprehensive inventory plugin.
# It allows you to create custom inventories and link them to custom commands.
# With its button system, you can fully customize your inventories.
#
# zMenu provides an API that enables zAuctionHouse to connect seamlessly.
# By using zMenu, you will benefit from enhanced functionality and better performance.
#
# Download here: https://www.spigotmc.org/resources/110402/
# zMenu Convert download (Convert your DeluxeMenu or GuiPlus configuration to zMenu): https://www.spigotmc.org/resources/110403/
# zMenu Documentation: https://docs.zmenu.dev/
#
# To convert your current configuration to zMenu, use the command: /ah convert zmenu
#
# Don’t want to use zMenu? Please follow this tutorial to disable zMenu using the old configuration: https://zauctionhouse.groupez.dev/informations/why-i-need-zmenu#how-not-to-use-zmenu
#
useZMenuEngine: true

# Inventory Management with zMenu (https://www.spigotmc.org/resources/110402/)
#
# The inventories in your plugin are managed using the zMenu plugin.
# This setup allows for flexible and powerful inventory customization and management.
# Here is an overview of how it works:
#
# Inventory Location
#
# All inventories are located in the `inventaires` folder.
# This folder contains all the necessary configuration files that define how each inventory behaves and appears to the player.
#
# Pattern Location
#
# All pattern files are stored in the `patterns` folder.
# These pattern files define the layout and structure that can be applied to any inventory configuration within the `inventaires` folder.
#
# Benefits of Using Patterns
#
# 1. Consistency: Patterns ensure that all inventories share a consistent look and feel, making it easier for players to navigate and use.
# 2. Efficiency: By defining common layouts in patterns, you can quickly apply these layouts to multiple inventories without duplicating configuration code.
# 3. Maintenance: Updating a pattern file automatically updates all inventories that use that pattern, simplifying maintenance and updates.
#########################################################################################################################################

# Enable or disable the plugin.
#
# Set to 'true' to enable the plugin. If you need to perform maintenance
# or disable the plugin for any other reason, simply set this to 'false'.
# This allows you to easily manage the plugin's availability.
enablePlugin: true

# Allow item sales in Creative mode.
#
# Set to 'true' to enable the selling of items while in Creative mode.
# This can be useful for testing or administrative purposes.
# Note: Enabling this option may affect game balance, as players in Creative mode have access to unlimited resources.
enableCreativeSell: true

#########################################################################################################################################

# Enable announcements for item sales.
#
# Set to 'true' to allow announcements to be made when items are sold.
# This can be useful for notifying other players of sales and creating a dynamic marketplace environment.
# If set to 'false', no announcements will be made during sales.
enableSellAnnonce: false

# Permission required to make an announcement during a sale.
#
# This permission must be granted to players or roles that you want to allow
# making announcements when they sell items.
# Example usage: "zauctionhouse.sell.annonce"
# sellAnnoncePermission: "zauctionhouse.sell.annonce"

# Display an error message when the player cannot purchase the item.
# The message occurs when the item is already in purchase, is already purchased or other reason.
displayErrorBuyMessage: false

# Enable announcements for item purchases.
#
# Set to 'true' to allow announcements to be made when items are purchased.
# This can be useful for notifying other players of purchases and creating a dynamic marketplace environment.
# If set to 'false', no announcements will be made during purchases.
enableBuyAnnonce: false

# Permission required to make an announcement during a purchase.
#
# This permission must be granted to players or roles that you want to allow
# making announcements when they purchase items.
# Example usage: "zauctionhouse.buy.annonce"
# buyAnnoncePermission: "zauctionhouse.buy.annonce"

#########################################################################################################################################

# Default Economy
#
# Available economies:
# - ITEM: Use items as currency, such as gold.
# - LEVEL: Use the player's Minecraft level.
# - EXPERIENCE: Use the player's Minecraft experience points.
# - VAULT: Requires Vault plugin (https://www.spigotmc.org/resources/vault.34315/).
# - PLAYERPOINTS: Requires PlayerPoints plugin (https://www.spigotmc.org/resources/playerpoints.80745/).
# - TOKENMANAGER: Requires TokenManager plugin (https://www.spigotmc.org/resources/tokenmanager.8610/).
# - COINSENGINE: Requires CoinsEngine plugin (https://www.spigotmc.org/resources/84121/).
# - OPTECO: Requires Opteco plugin (https://www.spigotmc.org/resources/76179/).
# - MYSQLTOKEN: Requires MySQLToken plugin (https://www.spigotmc.org/resources/7535/).
# - BEASTTOKEN: Requires BeastToken plugin (https://www.spigotmc.org/resources/20806/).
#
defaultEconomy: VAULT

# Open a menu to choose the economy when selling an item.
#
# WARNING: This inventory allows players to select the economy they want to use.
# The defaultEconomy setting will not affect this inventory! (see economy.yml in the inventories folder)
enableSellEconomyInventory: true

# Enable cooldown on sales orders.
#
# When enabled, a cooldown period is enforced between sales orders to prevent spam.
# The default cooldown is set to 5 seconds.
sellCooldown:
  enable: true
  seconds: 5

# Change the item that players click on when they don't have enough money.
#
# By default, the item will change for 20 ticks when the player doesn't have enough funds to make a purchase.
# This provides a visual indication to the player about insufficient funds.
noMoneyItem:
  enable: true
  ticks: 20

# Activate the /ah claim command and hold players' money.
#
# Set to 'true' to enable the /ah claim command, which allows players to claim their money.
# When enabled, the money from sales is put on hold until the player claims it.
enableClaimMoney: false

# Display a message on connection if the player has money to collect with the /ah claim command.
#
# Set to 'true' to notify players upon joining the server that they have money waiting to be claimed.
# This helps ensure players are aware of unclaimed funds.
enableClaimMoneyMessageOnJoin: false

# Display a message showing the number of sales made while the player was disconnected.
#
# Set to 'true' to inform players of the total number of sales that occurred during their absence.
# This can help players stay updated on their sales activity.
enableTransactionMessageOnJoin: false

# Prevent selling items at the default price.
#
# When enabled, if the price is set to the default value, the player will receive an error message.
# This helps avoid accidental sales at incorrect prices due to command errors.
disableDefaultSellPriceFormatError: true

# Number of ticks before sending the message when the player connects.
#
# This setting determines the delay (in ticks) before a message is sent to the player upon connection.
cooldownClaimMoneyMessageTicks: 10

# Number of ticks before sending the message if the player sold items while offline.
#
# This setting determines the delay (in ticks) before informing the player about offline sales upon connection.
cooldownInformationsMessageTicks: 15

# Cooldown in seconds for using the /ah claim command.
#
# This setting imposes a cooldown period (in seconds) between consecutive uses of the /ah claim command.
cooldownClaimMoneySecond: 300

# Enable sound on successful purchase
enableBuySuccessSound: false

# Sound played on successful purchase
buySuccessSound:
  sound: ENTITY_PLAYER_LEVELUP
  volume: 1
  pitch: 1

# Enable sound when player cannot buy
enableBuyErrorSound: false

# Sound played when player cannot buy
buyErrorSound:
  sound: ENTITY_VILLAGER_NO
  volume: 1
  pitch: 1

# Price configuration
price:

  # Maximum price for any item.
  max: 999999999999999999

  # Minimum price for any item.
  min: 10

  # Allows defining permissions for the maximum price per economy
  permissions:
    vault: # Economy name
      - permission: zauctionhouse.price.max.vault.player # Permission
        amount: 128 # Max price
      - permission: zauctionhouse.price.max.vault.vip # Permission
        amount: 250 # Max price
    item_diamond: # Economy name
      - permission: zauctionhouse.price.max.item.player # Permission
        amount: 32 # Max price
      - permission: zauctionhouse.price.max.item.vip # Permission
        amount: 64 # Max price

  # Allows defining a minimum and maximum price by savings
  limits:
    - economy: item_diamond # Economy name
      max: 64 # Max price
      min: 1 # Min price

  # Enable item-based minimum and maximum prices, configurable in prices.yml.
  # If you attempt to sell from /ah sellinventory but an item is not configured, the max price will be used.
  enableMinMaxPricePerItems: false

  # Format prices for better readability.
  # When enabled, prices will be formatted according to the configuration in betterPriceEspace.
  # For example, 10000 will be displayed as 10 000.
  betterPrice: true
  betterPriceEspace: ' '

  # Reduce prices to a more readable format.
  # For example:
  # 1000 -> 1k
  # 100000 -> 100k
  # 1000000 -> 1m
  betterPriceReduction: false

  # Use colors to display text, compatible with MiniMessage: https://docs.advntr.dev/minimessage/format.html
  display: "&f%amount%"

  # Documentation for String format: https://www.geeksforgeeks.org/java-string-format-method-with-examples/
  formats:
    - 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
    - format: "%.2fQ"
      maxAmount: 100000000000000000

# Allows to manage the tax system on the plugin
tax:
  # Enable tax on all items.
  globalTax: false

  # Enable tax on certain items, configurable in taxs.yml.
  perItemTax: false

  # Tax type: SELL, PURCHASE, BOTH, or CAPITALISM.
  #
  # SELL: Tax is applied when selling items.
  # PURCHASE: Tax is applied when purchasing items.
  # BOTH: Tax is applied on both selling and purchasing items.
  # CAPITALISM: A different or special tax logic, if implemented.
  type: SELL

  # Tax Percentage to be applied.
  percent: 10.0

  # Allow certain players to bypass the tax.
  enableByPass: true
  byPassPermission: zauctionhouse.bypass.tax

# Enable the /ah sell 500k command.
#
# When enabled, players can use shorthand formats like 'k', 'M', etc., to quickly input large numbers for selling items.
enableNumberFormatSell: false

# Reduces the number of items you need to write to sell.
#
# Instead of having to use commands like /ah sell 500000, the player can use shorthand formats like /ah sell 500k.
# This list defines the shorthand formats and their corresponding multiplications.
numberFormatSellMultiplication:
  - 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: UN
    multiplication: 1000000000000000000000000000000000000
  - format: DD
    multiplication: 1000000000000000000000000000000000000000
  - format: TR
    multiplication: 1000000000000000000000000000000000000000000

# Gives the money on the server where the item was sold. Only applicable when using Redis.
#
# When enabled, the money from a sale will be credited to the player on the server where the sale occurred.
# This setting is only effective if you are using Redis for cross-server communication.
giveMoneyOnSellServer: false

#########################################################################################################################################

# Change the storage type of the plugin.
#
# Available storage types:
# - JSON: A JSON file that will contain all the plugin data. Suitable for small and medium servers.
# - SQLITE: Use a SQLITE database. Suitable for large servers.
# - MYSQL: Use a MySQL database. Suitable for large servers.
# - REDIS: Use Redis to synchronize multiple servers. Requires the zAuctionHouse Redis addon (https://groupez.dev/resources/zauctionhouse-redis.210).
# - CUSTOM: Custom storage system. You need to develop your own system.
#
storage: SQLITE

# Connect the plugin to an SQL database.
#
# SQL is used here solely as a storage system. It cannot be used to synchronize items between different servers.
sql:
  # The username for the SQL database.
  user: homestead
  # The password for the SQL database.
  password: secret
  # The port number for the SQL database connection.
  port: 3306
  # The host address for the SQL database.
  host: 192.168.10.10
  # The name of the SQL database.
  database: zauctionhouse
  # Table prefix. If you change this, you need to change it in the scripts folder too.
  prefix: "zauctionhouse_"
  # Number of retry attempts for SQL connection.
  retry: 5
  # Enable debug mode for SQL queries.
  debug: false
  # Retrieves transactions, if you have a large server please disable this option
  fetchTransactions: true

# Options for the zAuctionHouse Redis addon
# Purchase here: https://groupez.dev/resources/zauctionhouse-redis.210
redis:
  # Update inventory after purchase.
  #
  # When enabled, the player's inventory will be automatically updated after a purchase.
  autoUpdateInventory: false

  # Automatically give money to the player after purchase.
  #
  # When enabled, the money will be given to the player directly after a purchase,
  # regardless of the server they are on.
  autoGiveMoney: false

# Enable backup file creation for JSON storage.
#
# When enabled, the items.json file will be copied to the backup folder every day at 00:00.
# This ensures that you have daily backups of your data.
# If you want to change the backup times, you can use the zScheduler plugin.
# For more information, visit: https://www.spigotmc.org/resources/zschedulers.112705/
enableBackup: true

#########################################################################################################################################

# Change the way items are sorted by default.
#
# Sort type options:
# - ASCENDING_PRICE: Sort items by price in ascending order (lowest to highest).
# - DECREASING_PRICE: Sort items by price in descending order (highest to lowest).
# - ASCENDING_DATE: Sort items by date in ascending order (oldest to newest).
# - DECREASING_DATE: Sort items by date in descending order (newest to oldest).
#
defaultSort: DECREASING_DATE

time:
  # Time (in seconds) before items on sale are marked as expired.
  #
  # This setting determines how long an item can remain on sale before it is considered expired.
  sell: 172800

  # Time (in seconds) before purchased or expired items are deleted.
  #
  # This setting specifies how long to keep purchased or expired items before they are automatically deleted.
  expire: 604800

  # Time (in seconds) before a transaction is removed from the history.
  #
  # This setting determines how long transaction records are kept before being deleted from the transaction history.
  removeTransactionAfter: 604800

# Enable expiration time based on permissions.
#
# When enabled, the expiration time for items on sale can be set based on player permissions.
# This allows different groups of players to have different item expiration times.
# Ensure that the permissions and corresponding expiration times are correctly configured in the 'expirations' section.
enableExpirationPermission: false

# Allows to change the time (in seconds) for the expiration of items for sale based on permissions.
#
# If the player has the zauctionhouse.expiration.vip permission, their items will expire in 1 hour (3600 seconds).
# If the player has the zauctionhouse.expiration.elite permission, their items will expire in 2 hours (7200 seconds).
# If the player has the zauctionhouse.expiration.legend permission, their items will expire in 3 days (259200 seconds).
#
expirations:
  - permission: zauctionhouse.expiration.vip
    expiration: 3600
  - permission: zauctionhouse.expiration.elite
    expiration: 7200
  - permission: zauctionhouse.expiration.legend
    expiration: 259200

#########################################################################################################################################

# Change the number of items the player can sell based on permissions.
#
# If a player has the zauctionhouse.max.5 permission, they can sell up to 5 items.
# If a player has the zauctionhouse.max.10 permission, they can sell up to 10 items.
# If a player has the zauctionhouse.max.15 permission, they can sell up to 15 items.
#
permissions:
  - permission: zauctionhouse.max.5
    limit: 5
  - permission: zauctionhouse.max.10
    limit: 10
  - permission: zauctionhouse.max.15
    limit: 15

#########################################################################################################################################

# Enables the use of priorities in item sorting.
#
# When enabled, items will be sorted based on their priority values.
enablePrioritySort: true

# Activates a priority limit during item sorting.
#
# When enabled, the number of items displayed based on their priority will be limited according to the specified limits.
enablePrioritySortLimit: true

# To display an item in priority, its priority must be higher.
#
# You can display the priority text in the lore of the auction item with the placeholder %priority_text%.
#
priorities:
  - permission: zauctionhouse.priority.vip
    priority: 1
    limit: 10
    text: '&bVip'
  - permission: zauctionhouse.priority.vipplus
    priority: 2
    limit: 5
    text: '&6Vip+'

#########################################################################################################################################

# Enable logging options.
log:
  # Enable logs in the console.
  #
  # When enabled, logs will be displayed in the console, providing real-time feedback and information.
  enable: true

  # Enable logs in a file.
  #
  # When enabled, logs will be saved to a file, allowing for persistent logging and later review.
  inFile: true

#########################################################################################################################################

# System that will block the use of the plugin if the server or player is experiencing lag.
antiLag:
  # Block plugin access for players with high ping.
  #
  # When enabled, players with a ping higher than the specified maxPing value will be unable to access the plugin.
  player:
    enable: true
    maxPing: 600

  # Block plugin access if the server TPS (Ticks Per Second) is low.
  #
  # When enabled, if the server's TPS drops below the specified minTps value, players will be unable to access the plugin.
  server:
    enable: true
    minTps: 16

#########################################################################################################################################

optimisation:
  # The number of milliseconds an ItemStack will be cached.
  # Keeping the default value is usually sufficient.
  cacheItemStack: 1000

  # Allow PAPI (PlaceholderAPI) placeholders in item lore.
  #
  # When enabled, PAPI placeholders can be used in item lore.
  # You can always use the placeholders plugin for additional customization.
  enablePapiInLore: true

  # Cache the list of items for optimization.
  #
  # When enabled, the list of items will be cached for the specified number of seconds.
  # This is useful for servers with a large number of items for sale.
  # If you have less than 500 items for sale, there is no need to enable this option.
  cache:
    enable: false
    seconds: 15

  # Time in seconds the player has to wait before changing the sort type.
  #
  # This setting imposes a cooldown period between changes to the sort type to reduce server load.
  sortCooldown: 5

  # Time in seconds for automatic data backup, only for JSON storage.
  #
  # This setting determines how frequently (in seconds) the data will be automatically backed up.
  autoSave: 600

  # Enable messages that indicate files have been saved correctly.
  #
  # When enabled, messages will be displayed to confirm that files have been successfully saved.
  enableLogAutoSaveInformation: true

  # Open inventories to synchronize.
  #
  # When enabled, inventories will not be displayed at the same time as opening the inventory.
  # This setting is useful for synchronizing inventory data across different views.
  openSyncInventory: false

# This configuration is only available for the zAuctionHouse REDIS addon.
# If you don't use the REDIS addon, you don't need this section.
placeholder:
  # Placeholder cache duration in milliseconds.
  #
  # This setting determines how long (in milliseconds) placeholders will be cached.
  # The default is set to 1 minute (60000 milliseconds).
  cache: 60000

  # Value displayed while the placeholder is loading.
  #
  # This setting defines the text that will be shown while the placeholder data is being fetched.
  loading: "Loading..."

# Cache duration in milliseconds for categories.
#
# By default, there is 60 seconds (60000 milliseconds) cache on the list of items in each category.
# The cache will be automatically updated when an item is removed or added to the sale.
cacheDurationCategory: 60000

# Cache categories for x seconds
enableCategoriesCache: false

# Anti-duplication system. This system will completely block items that come from zAuctionHouse inventories.
# If a player successfully obtains an item from a zAuctionHouse inventory through duplication, it will be automatically deleted.
#
# This system is provided by zMenu. If you use zMenu for your inventories, you do not need to activate this.
antiDupe:
  # Enable or disable the anti-duplication system.
  enable: true

  # Send a message to your Discord when a player tries to duplicate items.
  discordWebhook:
    # Enable or disable Discord notifications for duplication attempts.
    enable: false

    # The URL of the Discord webhook.
    url: "https://discord.com/api/webhooks/xxxxx/xxxxxxxxxxxx"

    # The content of the message sent to Discord.
    content: "**%player%** tried to use x%amount% %itemname% from zAuctionHouse. Removing it!"

  # Send a message to your console when a player tries to duplicate items.
  consoleLog:
    # Enable or disable console logging for duplication attempts.
    enable: true

    # The content of the message sent to the console.
    content: "%player% tried to use x%amount% %itemname% from zAuctionHouse. Removing it!"

#########################################################################################################################################

# Configuration for the Discord webhook, allows sending a message to your Discord server during an item sale.
discordWebhook:
  # The URL of the Discord webhook.
  url: https://discord.com/api/webhooks/xxxxx/xxxxxxxxxxxx

  # Enable or disable the Discord webhook.
  #
  # When set to 'true', the webhook will send messages to the configured Discord URL.
  isEnable: false

  # The content of the message sent by the webhook.
  # Uncomment and customize the line below to set a custom message content.
  # content: "%player% just sold an item! Use /zauctionhouse"

  # Embed configuration for the Discord message.
  embed:
    # The title of the embed message.
    title: New sale !

    # The description of the embed message.
    # Uncomment and customize the line below to set a custom description.
    # description: "Your description"

    # The URL attached to the embed title.
    # Uncomment and customize the line below to set a custom URL.
    # url: "<your url>"

    # The color of the embed message.
    color:
      r: 40
      g: 240
      b: 40

    # The footer of the embed message.
    footer:
      text: zAuctionHouse
      iconUrl: https://groupez.dev/storage/images/1.png

    # The thumbnail of the embed message.
    # Uncomment and customize the line below to set a custom thumbnail.
    # thumbnail: "<your thumbnail>"

    # The image of the embed message.
    # Uncomment and customize the line below to set a custom image.
    # image: "<your image>"

    # The author of the embed message.
    # Uncomment and customize the lines below to set a custom author.
    # author:
    #   name: "Maxlego08"
    #   url: ""
    #   iconUrl: ""

    # Fields in the embed message.
    fields:
      - name: Sale
        value: "Player **%seller%** just added x%amount% %material% for **%price%**"
        inline: false

#########################################################################################################################################

# Disable the ability to sell broken items.
#
# When enabled, items that are broken or damaged cannot be sold.
# This helps maintain the quality of items in the auction house.
disableSellBreakItem: false

# Give the item directly to the player in their inventory upon purchase.
#
# When enabled, items purchased by the player will be placed directly into their inventory.
# If the player's inventory is full, the item will go to the purchased items inventory.
giveItemAfterPurchase: false

# Allow the player to retrieve the item directly from their inventory when they remove it from sale.
#
# When enabled, items removed from sale will be placed directly into the player's inventory.
# If the player's inventory is full, the item will go to the expired items inventory.
giveItemAfterRemove: false


# Prevent giving items if the player's inventory is full when giveItemAfterPurchase and/or giveItemAfterRemove is active.
#
# When enabled, items will not be given to the player if their inventory is full,
# even if the options to give items after purchase or removal are active.
dontGiveIfPlayerHasFullInventory: false

# Open the inventory after confirming the removal of an item from sale.
#
# When enabled, the player's inventory will automatically open after they confirm
# the removal of an item from sale. This helps them manage their items immediately.
openInventoryAfterRemoveConfirm: true

# Open the inventory after purchasing an item.
#
# When enabled, the player's inventory will automatically open after they purchase an item.
# This allows them to immediately see and manage the purchased item.
openInventoryAfterBuying: false


# Require a price to be specified for the /ah sellinventory command.
#
# When enabled, players must specify a price when using the /ah sellinventory command.
# This ensures that items are listed with an explicit price.
needPriceForSellInventory: true

# Display an error message if the minimum price is not respected.
#
# When enabled, an error message will be shown if a player attempts to sell an item below the minimum price.
# This helps maintain price standards within the auction house.
disablePriceErrorDefault: true

# Enable the commands /ah items, /ah expire, and /ah items.
#
# When enabled, these commands will be available for use:
# - /ah items: Allows players to view their listed items.
# - /ah expire: Allows players to view their expired items.
# - /ah items: Allows players to view their auctioned items.
enableCommandInventories: false


# Enable the plugin version checker.
#
# When enabled, the plugin will check for new versions and updates.
# This helps ensure you are always using the latest version with the latest features and fixes.
enableVersionChecker: true

# Categories will only check the material of items.
#
# When enabled, categories will be determined solely by the material of the items,
# ignoring other attributes such as item name, lore, or enchantments.
categoryCheckOnlyMaterial: true

# Display a message when the player is in cooldown.
#
# When enabled, a message will be shown to the player informing them that they are in cooldown
# and need to wait before issuing another command.
displayCooldownMessage: true


# Cooldown between transaction commands in milliseconds.
#
# This setting imposes a delay between consecutive transaction commands issued by a player.
# The cooldown is specified in milliseconds. For example, 30000 milliseconds equals 30 seconds.
cooldownTransactions: 30000

# Enable cooldown on all commands.
#
# When enabled, a cooldown period will be applied to all commands,
# preventing players from issuing commands too frequently.
enableCooldownCommand: true


# Cooldown between commands in milliseconds.
#
# This setting imposes a delay between consecutive commands issued by a player.
# The cooldown is specified in milliseconds. For example, 5000 milliseconds equals 5 seconds.
commandCooldownMilliSeconds: 5000


# Allow the inventory to update automatically during a purchase,
# when adding an item, or when an item is removed.
#
# When enabled, the inventory will automatically refresh to reflect changes
# such as new purchases, additions, or removals of items.
enableAutoUpdate: false

# Custom message configuration
enableCustomMessage:
  # Enable custom message for the /ah help command.
  #
  # When enabled, a custom message will be displayed when players use the /ah help command.
  help: false

  # Enable custom message for the /ah sell command.
  #
  # When enabled, a custom message will be displayed when players use the /ah sell command.
  sell: false

  # Enable custom message for the /ah open command.
  #
  # When enabled, a custom message will be displayed when players use the /ah open command.
  open: false

  # Enable custom message for the /ah search command.
  #
  # When enabled, a custom message will be displayed when players use the /ah search command.
  search: false


# Edit the plugin commands
command:
  # Modify the main command of the plugin.
  #
  # This setting allows you to change the primary command used to access the plugin's features.
  main: zauctionhouse

  # Change the aliases of the main command.
  #
  # This setting allows you to define alternative commands (aliases) that can be used
  # to access the plugin's features. Players can use any of these aliases as shortcuts.
  aliases:
    - zauction
    - ah
    - hdv
    - zah
    - zhdv
  
  # Change arguments for the sale command.
  #
  # This setting allows you to define alternative arguments (aliases) for the sale command.
  # Players can use any of these aliases to initiate a sale.
  # Example usage: /zauctionhouse <sell/vendre/s>
  sellCommandAliases:
    - sell
    - vendre
    - s

# Disable the plugin in specific worlds.
#
# This setting allows you to specify worlds where the plugin will be disabled.
# List the worlds where you do not want the plugin to be active.
disableWorlds:
  - world_the_end

# Open the "auction" inventory (the default inventory) from an NPC named "Auction".
#
# This setting allows players to access the auction inventory by interacting with a specified NPC.
# Define the NPC's name and the inventory that should open.
citizen:
  - name: Auction
    inventory: auction

# Permissions for specific commands.
permission:
# Permission required to use the /ah addon command.
#
# When set, this permission controls access to the /ah addon command.
# Uncomment and set the appropriate permission string if needed.
# addon: "zauctionhouse.addon"

# Permission required to use the /ah version command.
#
# When set, this permission controls access to the /ah version command.
# Uncomment and set the appropriate permission string if needed.
# version: "zauctionhouse.version"

# Date format for transactions.
#
# This setting determines the format used to display transaction history dates.
# Use the format "YYYY MM dd hh:mm:ss" to represent year, month, day, hour, minute, and second.
transactionDateFormat: "YYYY MM dd hh:mm:ss"

# Disable plugin commands.
#
# When enabled, all plugin commands will be disabled.
# This can be useful if you want to create alternative ways to access the plugin and sell items.
disableCommands: false

# Add ItemFlags to items displayed in the auction house.
itemFlags:
  # Enable or disable the use of ItemFlags.
  #
  # When enabled, the specified ItemFlags will be applied to items displayed in the auction house.
  enable: false

  # List of ItemFlags to be applied.
  #
  # The following flags can be used to hide various item attributes:
  # - HIDE_ATTRIBUTES: Hides item attributes such as attack damage.
  # - HIDE_DESTROYS: Hides the blocks that an item can destroy in adventure mode.
  # - HIDE_ENCHANTS: Hides enchantments on the item.
  # - HIDE_PLACED_ON: Hides the blocks that an item can be placed on in adventure mode.
  # - HIDE_POTION_EFFECTS: Hides potion effects.
  # - HIDE_UNBREAKABLE: Hides the unbreakable status of an item.
  # Uncomment the following flags to use them:
  # - HIDE_DYE: Hides dye color information.
  # - HIDE_ARMOR_TRIM: Hides armor trim information.
  flags:
    - HIDE_ATTRIBUTES
    - HIDE_DESTROYS
    - HIDE_ENCHANTS
    - HIDE_PLACED_ON
    - HIDE_POTION_EFFECTS
    - HIDE_UNBREAKABLE
    # - HIDE_DYE
    # - HIDE_ARMOR_TRIM


# Click action to display the contents of a shulker, chest, etc.
#
# This setting specifies which mouse button action will trigger the display of container contents.
# Options can be LEFT or RIGHT click.
showClick: RIGHT

# Number of transactions per page for the /ah transaction and /ah history commands.
#
# This setting determines how many transactions will be displayed per page
# when using the /ah transaction and /ah history commands.
transactionPageSize: 5

# Check if the HeadDatabase plugin is enabled.
#
# When enabled, the plugin will check for the HeadDatabase plugin and wait until it is active before using it.
# If you are using zMenu, the plugin will not need to wait for HeadDatabase and will load directly.
enableHeadDatabaseVerification: true

# Use the new algorithm for encoding text items. It is automatically used from 1.20.5
#
# If you are in an older version (1.20.4) and want to migrate your data later, it is advisable to enable this option
enableNewBase64ItemStackMethod: false

# Enables the whitelist of items
#
# To sell an item it must be mandatory in the list of whitelist items, otherwise it cannot be sold
enableWhitelist: false

#########################################################################################################################################

# Allows to configure the elements for the /ah search command
search:

  # Enables the /ah search command
  # If you change this value you need to restart your server
  enable: true

  # Enable the option to search for an item with translation
  # For this option, you must be in 1.13+ and add your translation file to the zAuctionHouse/langs folder
  # By default the plugin will download all files, just enable this option and set your language
  enable-translated-material: true

# Allows defining the langs file for your server, this option only works for servers in 1.13+
# You can find the translation file here: https://github.com/Maxlego08/minecraft-assets/tree/1.21/assets/minecraft/lang
# The file must be placed in the folder zAuctionHouse/langs
# The file name must be in the following format <country>-<language>, so for France it's will be fr-fr
language: 'fr-fr'

# If this option is enabled, then the plugin will download all translation files when the zAuctionHouse/langs folder does not exist
# This saves you time and does not have to choose the file to download.
download-all-langages-files: true

# This option allows translating the name of items in the language you have defined
enable-itemstack-translation: false
```


# Economies.yml

```yaml
#########################################################################################################################################
#
# ███████╗░█████╗░██╗░░░██╗░█████╗░████████╗██╗░█████╗░███╗░░██╗██╗░░██╗░█████╗░██╗░░░██╗░██████╗███████╗██╗░░░██╗██████╗░
# ╚════██║██╔══██╗██║░░░██║██╔══██╗╚══██╔══╝██║██╔══██╗████╗░██║██║░░██║██╔══██╗██║░░░██║██╔════╝██╔════╝██║░░░██║╚════██╗
# ░░███╔═╝███████║██║░░░██║██║░░╚═╝░░░██║░░░██║██║░░██║██╔██╗██║███████║██║░░██║██║░░░██║╚█████╗░█████╗░░╚██╗░██╔╝░█████╔╝
# ██╔══╝░░██╔══██║██║░░░██║██║░░██╗░░░██║░░░██║██║░░██║██║╚████║██╔══██║██║░░██║██║░░░██║░╚═══██╗██╔══╝░░░╚████╔╝░░╚═══██╗
# ███████╗██║░░██║╚██████╔╝╚█████╔╝░░░██║░░░██║╚█████╔╝██║░╚███║██║░░██║╚█████╔╝╚██████╔╝██████╔╝███████╗░░╚██╔╝░░██████╔╝
# ╚══════╝╚═╝░░╚═╝░╚═════╝░░╚════╝░░░░╚═╝░░░╚═╝░╚════╝░╚═╝░░╚══╝╚═╝░░╚═╝░╚════╝░░╚═════╝░╚═════╝░╚══════╝░░░╚═╝░░░╚═════╝░
#
# Documentation : https://zshop.groupez.dev/
# Sponsor : https://serveur-minecraft-vote.fr/
#
# Economy available:
# - ITEM (Use items like economy, for example gold)
# - LEVEL (Minecraft player level)
# - EXPERIENCE (Minecraft player level experience point)
# - VAULT (requires https://www.spigotmc.org/resources/vault.34315/)
# - PLAYERPOINTS (requires https://www.spigotmc.org/resources/playerpoints.80745/)
# - TOKENMANAGER (requires https://www.spigotmc.org/resources/tokenmanager.8610/)
# - COINSENGINE (requires https://www.spigotmc.org/resources/84121/)
# - OPTECO (requires https://www.spigotmc.org/resources/76179/)
# - MYSQLTOKEN (requires https://www.spigotmc.org/resources/7535/)
# - BEASTTOKEN (requires https://www.spigotmc.org/resources/20806/)
#
#########################################################################################################################################

economies: # Default Economy
  VAULT:
    name: vault # Name of the economy, the name can be specified in the items
    type: VAULT # Economy type
    currency: "%price%$" # Placeholder to display the price
    format: "v"
    isEnable: true # Activate or not the economy
    denyMessage: "&cYou don't have enough money to buy this." # Message if the player does not have the money for a purchase.
  # Economy with an item, here diamond
  ITEM1:
    name: item_diamond # Name of the economy, the name can be specified in the items
    type: ITEM # Economy type
    currency: "%price% diamond%s%" # Placeholder to display the price
    format: "id"
    isEnable: false # Activate or not the economy
    denyMessage: "&cYou don't have enough money to buy this." # Message if the player does not have the money for a purchase.
    item: # Configure the item : https://zauctionhouse.groupez.dev/inventories/items
      material: DIAMOND
  # Economy with an item, here emerald
  ITEM2:
    name: item_emerald # Name of the economy, the name can be specified in the items
    type: ITEM # Economy type
    currency: "%price% emerald%s%" # Placeholder to display the price
    format: "ie"
    isEnable: false # Activate or not the economy
    denyMessage: "&cYou d'ont have enough money to buy this." # Message if the player does not have the money for a purchase.
    item: # Configure the item : https://zauctionhouse.groupez.dev/inventories/items
      material: EMERALD
  # Minecraft player level experience point
  EXPERIENCE:
    name: experience # Name of the economy, the name can be specified in the items
    type: EXPERIENCE # Economy type
    currency: "%price% xp"
    format: "xp" # Placeholder to display the price
    isEnable: false # Activate or not the economy
    denyMessage: "&cYou dont' have enough experience to buy this." # Message if the player does not have the money for a purchase.
  # Minecraft player level
  LEVEL:
    name: level # Name of the economy, the name can be specified in the items
    type: LEVEL # Economy type
    currency: "%price% level"
    format: "level" # Placeholder to display the price
    isEnable: false # Activate or not the economy
    denyMessage: "&cYou don't have enough level to buy this." # Message if the player does not have the money for a purchase.
  playerpoints:
    name: playerpoints # Name of the economy, the name can be specified in the items
    type: playerpoints # Economy type
    currency: "%price% P" # Placeholder to display the price
    format: "P"
    isEnable: false # Activate or not the economy
    denyMessage: "&cYou don't have enough points to buy this." # Message if the player does not have the money for a purchase.
  # coinsEngine:
  #  name: coinsengine # Name of the economy, the name can be specified in the items
  #  type: coinsengine # Economy type
  #  currency: "%price% c"
  #  format: "C" # Placeholder to display the price
  #  isEnable: true # Activate or not the economy
  #  currencyName: "coins" # Coins engine currency name
  #  denyMessage: "&cYou don't have enough points to buy this." # Message if the player does not have the money for a purchase.
```


# Inventories

## Auction

```yaml
#
# This configuration uses zMenu, please refer to zMenu documentation
# zMenu: https://docs.zmenu.dev/
# zAuctionHouse: https://zauctionhouse.groupez.dev/
#

name: '&8ᴀᴜᴄᴛɪᴏɴ &8(&f%page%&8/&f%maxPage%&8)'  # Title of the menu, supports color codes and placeholders

size: 54  # Size of the Minecraft inventory menu, must be a multiple of 9

patterns:  # List of pattern identifiers used in the menu
  - "zauctionhouse_decoration"  # Pattern for decorative elements
  - "zauctionhouse_pagination"  # Pattern for navigation between menu pages
  - "zauctionhouse_auction"  # Pattern related to auction items or functionalities

items:
  displayItems:
    type: ZAUCTIONHOUSE_AUCTION  # Type of items to display, specific to auction house items
    isPermanent: true  # Indicates these items will always be displayed and not dynamically updated
    slots:  # Specifies the slots in the menu for the items
      - 10-16  # Items occupy slots 10 through 16
      - 19-25  # Items occupy slots 19 through 25
      - 28-34  # Items occupy slots 28 through 34
      - 37-43  # Items occupy slots 37 through 43
    else:
      slots:
        - 22
      item:
        material: BARRIER
        name: '&c&nNo Items Found'
```

## Admin remove

```yaml
#
# This configuration uses zMenu, please refer to zMenu documentation
# zMenu: https://docs.zmenu.dev/
# zAuctionHouse: https://zauctionhouse.groupez.dev/
#

name: '&8ᴀᴅᴍɪɴ ʀᴇᴍᴏᴠᴇ'  # Title of the menu, supports color codes and placeholders

size: 54  # Size of the Minecraft inventory menu, must be a multiple of 9

patterns:  # List of pattern identifiers used in the menu
  - "zauctionhouse_decoration"  # Pattern for decorative elements

items:
  show:
    type: ZAUCTIONHOUSE_SHOW_ADMIN  # Type for showing admin-specific items or information
    slot: 22  # The slot in the menu where this item will be placed

  back:
    type: BACK  # A back button for navigation
    item:
      material: RED_STAINED_GLASS_PANE  # Material used for the back button
      name: '&cBack'  # Name of the button, supports color codes
    slot: 49  # The slot in the menu where this button will be placed

  removeSilent:
    type: ZAUCTIONHOUSE_ADMIN_REMOVE  # Type for admin removal of items silently
    item:
      material: GREEN_TERRACOTTA  # Material used for the button
      name: '&fRemove silent and give item to player'  # Name of the button
      lore:
        - '&7&m                                     '
        - '&f&l» &r&7Is silent&7: &atrue'  # Indicates silent removal
        - '&f&l» &r&7Forced removal&7: &cfalse'  # Indicates non-forced removal
        - '&7&m                                     '
    isSilent: true  # Indicates that the removal will be silent
    isForceRemove: false  # Indicates that the removal will not be forced
    slot: 30  # The slot in the menu for this button

  remove:
    type: ZAUCTIONHOUSE_ADMIN_REMOVE  # Type for admin removal of items
    item:
      material: LIME_TERRACOTTA  # Material for the button
      name: '&fRemove and give item to player'  # Button name
      lore:
        - '&7&m                                     '
        - '&f&l» &r&7Is silent&7: &cfalse'  # Indicates non-silent removal
        - '&f&l» &r&7Forced removal&7: &cfalse'  # Indicates non-forced removal
        - '&7&m                                     '
    isSilent: false  # Non-silent removal
    isForceRemove: false  # Non-forced removal
    slot: 29  # The slot in the menu for this button

  removeSilentForce:
    type: ZAUCTIONHOUSE_ADMIN_REMOVE  # Type for silent and forced removal
    item:
      material: RED_TERRACOTTA  # Material for the button
      name: '&fRemove silent and remove item from player'  # Button name
      lore:
        - '&7&m                                     '
        - '&f&l» &r&7Is silent&7: &atrue'  # Indicates silent removal
        - '&f&l» &r&7Forced removal&7: &atrue'  # Indicates forced removal
        - '&7&m                                     '
    isSilent: true  # Silent removal
    isForceRemove: true  # Forced removal
    slot: 32  # Slot in the menu for this button

  removeForce:
    type: ZAUCTIONHOUSE_ADMIN_REMOVE  # Type for forced removal without giving item
    item:
      material: ORANGE_TERRACOTTA  # Material for the button
      name: '&fRemove without give item to player'  # Button name
      lore:
        - '&7&m                                     '
        - '&f&l» &r&7Is silent&7: &cfalse'  # Indicates non-silent removal
        - '&f&l» &r&7Forced removal&7: &atrue'  # Indicates forced removal
        - '&7&m                                     '
    isSilent: false  # Non-silent removal
    isForceRemove: true  # Forced removal
    slot: 33  # Slot in the menu for this button

```

## Buying

```yaml
#
# This configuration uses zMenu, please refer to zMenu documentation
# zMenu: https://docs.zmenu.dev/
# zAuctionHouse: https://zauctionhouse.groupez.dev/
#

name: '&8ʙᴏᴜɢʜᴛ ɪᴛᴇᴍs &8(&f%page%&8/&f%maxPage%&8)'  # Title of the menu, supports color codes and placeholders

size: 54  # Size of the Minecraft inventory menu, must be a multiple of 9 (6 rows in this case)

patterns: # List of pattern identifiers used in the menu
  - "zauctionhouse_decoration"  # Pattern for decorative elements
  - "zauctionhouse_pagination"  # Pattern for navigation between menu pages
  - "zauctionhouse_back"  # Pattern for a back button or return functionality

items:
  removeall:
    type: ZAUCTIONHOUSE_REMOVE_ALL_BUYING  # Type for the action of removing all items that are being bought
    isPermanent: true  # Indicates that this item will always be displayed and not dynamically updated
    slot: 48  # The slot in the menu where this item will be placed
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGQyYWNkOWYyZGZjMmUwNWY2OWQ5NDFmZTk5NzBlOGMzZjA1NTI3YTAyYTkzODExNTc4OTFjOGRkYjhjZjMifX19"  # Custom texture URL for the item
      name: ''  # No name specified for the item
      lore:
        - "         #92bed8ʀᴇᴍᴏᴠᴇ ᴇᴠᴇʀʏᴛʜɪɴɢ"  # Lore text with color code, indicating the action to remove everything
        - "                  #8c8c8c&m     "  # Lore text for decoration
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ʀᴇᴍᴏᴠᴇ ᴇᴠᴇʀʏᴛʜɪɴɢ #8c8c8c• "  # Instructions for the remove all action

  items:
    type: ZAUCTIONHOUSE_BUYING  # Type for displaying items that are currently being bought
    isPermanent: true  # Indicates that these items will always be displayed and not dynamically updated
    slots:
      - 10-16  # Items occupy slots 10 through 16
      - 19-25  # Items occupy slots 19 through 25
      - 28-34  # Items occupy slots 28 through 34
      - 37-43  # Items occupy slots 37 through 43
    else:
      slots:
        - 22
      item:
        material: BARRIER
        name: '&c&nNo Items Found'

```

## Buy Confirm

```yaml
#
# This configuration uses zMenu, please refer to zMenu documentation
# zMenu: https://docs.zmenu.dev/
# zAuctionHouse: https://zauctionhouse.groupez.dev/
#

name: '&8ᴘᴜʀᴄʜᴀsᴇ'  # Title of the menu, supports color codes and placeholders

size: 27  # Size of the Minecraft inventory menu, must be a multiple of 9 (3 rows in this case)

items:
  buy:
    type: ZAUCTIONHOUSE_BUY_CONFIRM  # Type for the action of confirming a purchase
    item:
      material: GREEN_STAINED_GLASS_PANE  # Material used for the buy confirmation button
      name: ''  # No name specified for the item
      lore:
        - "      #2bba43✔ ᴘᴜʀᴄʜᴀsᴇ"  # Lore text with color code, confirming purchase
        - "           #8c8c8c&m      "  # Lore text for decoration
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴘᴜʀᴄʜᴀsᴇ #8c8c8c• "  # Instructions for purchase action
    slots:
      - 0-2  # Items occupy slots 0 through 2
      - 9-11  # Items occupy slots 9 through 11
      - 18-20  # Items occupy slots 18 through 20

  deny:
    type: BACK  # A back button for navigation
    item:
      material: RED_STAINED_GLASS_PANE  # Material used for the back button
      name: ""  # No name specified for the item
      lore:
        - "          #c42323ʙᴀᴄᴋ"  # Lore text with color code, indicating back action
        - "          #8c8c8c&m      "  # Lore text for decoration
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ɢᴏ ʙᴀᴄᴋ #8c8c8c• "  # Instructions for going back
    slots:
      - 6-8  # Items occupy slots 6 through 8
      - 15-17  # Items occupy slots 15 through 17
      - 24-26  # Items occupy slots 24 through 26

  slot:
    item:
      material: GRAY_STAINED_GLASS_PANE  # Material used for decorative or filler items
      name: '&e'  # Name of the item, supports color codes
    slots:
      - 3-5  # Decorative items occupy slots 3 through 5
      - 12   # Decorative item occupies slot 12
      - 14   # Decorative item occupies slot 14
      - 21-23  # Decorative items occupy slots 21 through 23

  show:
    type: ZAUCTIONHOUSE_SHOW_BUY  # Type for showing the item being purchased
    slot: 13  # The slot in the menu where this item will be displayed

```

## Buy Confirm Inventory

```yaml
#
# Attention, this feature is only available with zMenu
# https://www.spigotmc.org/resources/zmenu-ultra-complete-menu-plugin.110402/
#

name: '&8ᴘᴜʀᴄʜᴀsᴇ'  # Title of the menu, supports color codes and placeholders

size: 54  # Size of the Minecraft inventory menu, must be a multiple of 9 (3 rows in this case)

patterns:
  - "zauctionhouse_decoration"

items:

  items:
    type: ZAUCTIONHOUSE_SHOW_ITEMS
    slots:
      - 10-16
      - 19-25
      - 28-34
      - 37-43

  buy:
    type: ZAUCTIONHOUSE_BUY_CONFIRM  # Type for the action of confirming a purchase
    item:
      material: GREEN_STAINED_GLASS_PANE  # Material used for the buy confirmation button
      name: ''  # No name specified for the item
      lore:
        - "      #2bba43✔ ᴘᴜʀᴄʜᴀsᴇ"  # Lore text with color code, confirming purchase
        - "           #8c8c8c&m      "  # Lore text for decoration
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴘᴜʀᴄʜᴀsᴇ #8c8c8c• "  # Instructions for purchase action
    slot: 51

  deny:
    type: BACK  # A back button for navigation
    item:
      material: RED_STAINED_GLASS_PANE  # Material used for the back button
      name: ""  # No name specified for the item
      lore:
        - "          #c42323ʙᴀᴄᴋ"  # Lore text with color code, indicating back action
        - "          #8c8c8c&m      "  # Lore text for decoration
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ɢᴏ ʙᴀᴄᴋ #8c8c8c• "  # Instructions for going back
    slot: 47

  show:
    type: ZAUCTIONHOUSE_SHOW_BUY  # Type for showing the item being purchased
    slot: 49  # The slot in the menu where this item will be displayed

```

## Categories

```yaml
#
# This configuration uses zMenu, please refer to zMenu documentation
# zMenu: https://docs.zmenu.dev/
# zAuctionHouse: https://zauctionhouse.groupez.dev/
#

name: '&8ᴄᴀᴛᴇɢᴏʀɪᴇs'
size: 54

patterns:
  - "zauctionhouse_decoration"

items:
  back:
    type: BACK
    slot: 49
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjllYTFkODYyNDdmNGFmMzUxZWQxODY2YmNhNmEzMDQwYTA2YzY4MTc3Yzc4ZTQyMzE2YTEwOThlNjBmYjdkMyJ9fX0="
      name: ""
      lore:
        - "          #92bed8ʙᴀᴄᴋ"
        - "          #8c8c8c&m      "
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ɢᴏ ʙᴀᴄᴋ #8c8c8c• "
  block:
    type: ZAUCTIONHOUSE_CATEGORIES
    category: blocks
    item:
      material: GRASS_BLOCK
      name: '&f'
      lore:
        - "                       #92bed8ʙʟᴏᴄᴋs"
        - "                         #8c8c8c&m     "
        - ""
        - " #e6fff3ᴛʜᴇʀᴇ ᴀʀᴇ #ffacd5%zauctionhouse_category_item_blocks% #e6fff3ɪᴛᴇᴍs ɪɴ ᴛʜᴇ ʙʟᴏᴄᴋ ᴄᴀᴛᴇɢᴏʀʏ "
        - ""
        - "                  #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴏᴘᴇɴ #8c8c8c• "
    slot: 20
  weapons:
    type: ZAUCTIONHOUSE_CATEGORIES
    category: weapons
    item:
      material: DIAMOND_SWORD
      name: '&f'
      lore:
        - "                      #92bed8ᴡᴇᴀᴘᴏɴs"
        - "                         #8c8c8c&m     "
        - ""
        - " #e6fff3ᴛʜᴇʀᴇ ᴀʀᴇ #ffacd5%zauctionhouse_category_item_weapons% #e6fff3ɪᴛᴇᴍs ɪɴ ᴛʜᴇ ᴡᴇᴀᴘᴏɴs ᴄᴀᴛᴇɢᴏʀʏ "
        - ""
        - "                  #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴏᴘᴇɴ #8c8c8c• "
    slot: 21
  tools:
    type: ZAUCTIONHOUSE_CATEGORIES
    category: tools
    item:
      material: IRON_AXE
      name: '&f'
      lore:
        - "                       #92bed8ᴛᴏᴏʟs"
        - "                         #8c8c8c&m     "
        - ""
        - " #e6fff3ᴛʜᴇʀᴇ ᴀʀᴇ #ffacd5%zauctionhouse_category_item_tools% #e6fff3ɪᴛᴇᴍs ɪɴ ᴛʜᴇ ᴛᴏᴏʟs ᴄᴀᴛᴇɢᴏʀʏ "
        - ""
        - "                  #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴏᴘᴇɴ #8c8c8c• "
    slot: 22
  potions:
    type: ZAUCTIONHOUSE_CATEGORIES
    category: potions
    item:
      material: BLAZE_ROD
      name: '&f'
      lore:
        - "                      #92bed8ᴘᴏᴛɪᴏɴs"
        - "                         #8c8c8c&m     "
        - ""
        - " #e6fff3ᴛʜᴇʀᴇ ᴀʀᴇ #ffacd5%zauctionhouse_category_item_potions% #e6fff3ɪᴛᴇᴍs ɪɴ ᴛʜᴇ ᴘᴏᴛɪᴏɴs ᴄᴀᴛᴇɢᴏʀʏ "
        - ""
        - "                  #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴏᴘᴇɴ #8c8c8c• "
    slot: 23
  misc:
    type: ZAUCTIONHOUSE_CATEGORIES
    category: misc
    item:
      material: EXPERIENCE_BOTTLE
      name: '&f'
      lore:
        - "                   #92bed8ᴍɪsᴄᴇʟʟᴀɴᴇᴏᴜs"
        - "                         #8c8c8c&m     "
        - ""
        - " #e6fff3ᴛʜᴇʀᴇ ᴀʀᴇ #ffacd5%zauctionhouse_category_item_misc% #e6fff3ɪᴛᴇᴍs ɪɴ ᴛʜᴇ ᴍɪsᴄᴇʟʟᴀɴᴇᴏᴜs ᴄᴀᴛᴇɢᴏʀʏ "
        - ""
        - "                  #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴏᴘᴇɴ #8c8c8c• "
    slot: 24

```

## Category

```yaml
name: '&8%zauctionhouse_category% &8(&f%page%&8/&f%maxPage%&8)'

size: 54

patterns:
  - "zauctionhouse_decoration"
  - "zauctionhouse_pagination"
  - "zauctionhouse_auction"

items:
  auctionItems:
    type: ZAUCTIONHOUSE_CATEGORY
    isPermanent: true
    slots:
      - 10-16
      - 19-25
      - 28-34
      - 37-43
```

## Economy

```yaml
name: "&8Sell confirm"
size: 27
items:
  VAULT:
    type: ZAUCTIONHOUSE_ECONOMY
    economy: "vault" # Economy name, use the same that is present in economies.yml
    slot: 11
    item:
      material: GOLD_INGOT
      name: "#edd011ᴠᴀᴜʟᴛ"
      lore:
        - ''
        - ' &f⌂ #e6fff3ᴇᴄᴏɴᴏᴍʏ#8c8c8c: #92bed8ᴠᴀᴜʟᴛ'
        - ' &f☆ #e6fff3ᴘʀɪᴄᴇ#8c8c8c: #ffacd5%price%'
        - ''
        - '#8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴜsᴇ ᴛʜɪs ᴇᴄᴏɴᴏᴍʏ'

  # PLAYERPOINT:
  #   type: ZAUCTIONHOUSE_ECONOMY
  #   economy: "playerpoints" # Economy name, use the same that is present in economies.yml
  #   slot: 12
  #   item:
  #     material: IRON_INGOT
  #     name: "#edd011ᴘʟᴀʏᴇʀᴘᴏɪɴᴛ"
  #     lore:
  #       - ''
  #       - ' &f⌂ #e6fff3ᴇᴄᴏɴᴏᴍʏ#8c8c8c: #92bed8ᴘʟᴀʏᴇʀᴘᴏɪɴᴛ'
  #       - ' &f☆ #e6fff3ᴘʀɪᴄᴇ#8c8c8c: #ffacd5%price%'
  #       - ''
  #       - '#8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴜsᴇ ᴛʜɪs ᴇᴄᴏɴᴏᴍʏ'

  item:
    type: ZAUCTIONHOUSE_ECONOMY_ITEM
    slot: 13
    item:
      lore:
        - "&fYou're going to sell this item !"

  cancel:
    closeInventory: true
    slot: 15
    item:
      material: BARRIER
      name: '#ff0000ᴄᴀɴᴄᴇʟ'
      lore:
        - ''
        - '#8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴄᴀɴᴄᴇʟ'
```

## Expire

```yaml
#
# This configuration uses zMenu, please refer to zMenu documentation
# zMenu: https://docs.zmenu.dev/
# zAuctionHouse: https://zauctionhouse.groupez.dev/
#

name: '&8ᴇxᴘɪʀᴇᴅ ɪᴛᴇᴍs &8(&f%page%&8/&f%maxPage%&8)'

size: 54

patterns:
  - "zauctionhouse_decoration"
  - "zauctionhouse_pagination"
  - "zauctionhouse_back"

items:
  removeall:
    type: ZAUCTIONHOUSE_REMOVE_ALL_EXPIRE
    isPermanent: true
    slot: 48
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGQyYWNkOWYyZGZjMmUwNWY2OWQ5NDFmZTk5NzBlOGMzZjA1NTI3YTAyYTkzODExNTc4OTFjOGRkYjhjZjMifX19"
      name: ''
      lore:
        - "         #92bed8ʀᴇᴍᴏᴠᴇ ᴇᴠᴇʀʏᴛʜɪɴɢ"
        - "                  #8c8c8c&m     "
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ʀᴇᴍᴏᴠᴇ ᴇᴠᴇʀʏᴛʜɪɴɢ #8c8c8c• "

  items:
    type: ZAUCTIONHOUSE_EXPIRE
    isPermanent: true
    slots:
      - 10-16
      - 19-25
      - 28-34
      - 37-43
    else:
      slots:
        - 22
      item:
        material: BARRIER
        name: '&c&nNo Items Found'
```

## Items

```yaml
name: '&8ʏᴏᴜʀ ɪᴛᴇᴍs &8(&f%page%&8/&f%maxPage%&8)'
size: 54

patterns:
  - "zauctionhouse_decoration"
  - "zauctionhouse_pagination"
  - "zauctionhouse_back"

items:
  removeall:
    type: ZAUCTIONHOUSE_REMOVE_ALL_ITEMS
    isPermanent: true
    slot: 48
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGQyYWNkOWYyZGZjMmUwNWY2OWQ5NDFmZTk5NzBlOGMzZjA1NTI3YTAyYTkzODExNTc4OTFjOGRkYjhjZjMifX19"
      name: ''
      lore:
        - "         #92bed8ʀᴇᴍᴏᴠᴇ ᴇᴠᴇʀʏᴛʜɪɴɢ"
        - "                  #8c8c8c&m     "
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ʀᴇᴍᴏᴠᴇ ᴇᴠᴇʀʏᴛʜɪɴɢ #8c8c8c• "

  items:
    type: ZAUCTIONHOUSE_ITEMS
    isPermanent: true
    slots:
      - 10-16
      - 19-25
      - 28-34
      - 37-43
    else:
      slots:
        - 22
      item:
        material: BARRIER
        name: '&c&nNo Items Found'

```

## Remove Confirm

```yaml
#
# This configuration uses zMenu, please refer to zMenu documentation
# zMenu: https://docs.zmenu.dev/
# zAuctionHouse: https://zauctionhouse.groupez.dev/
#

name: '&8ʀᴇᴍᴏᴠᴇ'
size: 27
items:
  remove:
    type: ZAUCTIONHOUSE_REMOVE_CONFIRM
    item:
      material: GREEN_STAINED_GLASS_PANE
      name: ''
      lore:
        - "         #2bba43ʀᴇᴍᴏᴠᴇ"
        - "          #8c8c8c&m      "
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ʀᴇᴍᴏᴠᴇ #8c8c8c• "
    slots:
    - 0-2
    - 9-11
    - 18-20
  deny:
    type: BACK
    item:
      material: RED_STAINED_GLASS_PANE
      name: ""
      lore:
        - "          #c42323ʙᴀᴄᴋ"
        - "          #8c8c8c&m      "
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ɢᴏ ʙᴀᴄᴋ #8c8c8c• "
    slots:
    - 6-8
    - 15-17
    - 24-26
  slot:
    item:
      material: GRAY_STAINED_GLASS_PANE
      name: '&e'
    slots:
    - 3-5
    - 12
    - 14
    - 21-23
  show:
    type: ZAUCTIONHOUSE_SHOW_REMOVE
    slot: 13

```

## Search

```yaml
name: '&8sᴇᴀʀᴄʜ &8(&f%page%&8/&f%maxPage%&8)'

size: 54

patterns:
  - "zauctionhouse_decoration"
  - "zauctionhouse_pagination"
  - "zauctionhouse_auction"

items:
  displayItems:
    type: ZAUCTIONHOUSE_SEARCH
    isPermanent: true
    slots:
      - 10-16
      - 19-25
      - 28-34
      - 37-43
```

## Sell

```yaml
#
# This configuration uses zMenu, please refer to zMenu documentation
# zMenu: https://docs.zmenu.dev/
# zAuctionHouse: https://zauctionhouse.groupez.dev/
#

name: '&8sᴇᴀʀᴄʜ &8(&f%page%&8/&f%maxPage%&8)'

size: 54

patterns:
  - "zauctionhouse_decoration"
  - "zauctionhouse_pagination"
  - "zauctionhouse_auction"

items:
  displayItems:
    type: ZAUCTIONHOUSE_SEARCH
    isPermanent: true
    slots:
      - 10-16
      - 19-25
      - 28-34
      - 37-43
    else:
      slots:
        - 22
      item:
        material: BARRIER
        name: '&c&nNo Items Found'
        lore:
          - ''
          - '&7Try changing your search terms'
```

## Sell Show

```yaml
#
# This configuration uses zMenu, please refer to zMenu documentation
# zMenu: https://docs.zmenu.dev/
# zAuctionHouse: https://zauctionhouse.groupez.dev/
#

name: '&8sʜᴏᴡ ɪɴᴠᴇɴᴛᴏʀʏ'
size: 54

patterns:
  - "zauctionhouse_decoration"

items:
  playerHead:
    isPermanent: true
    type: BACK
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjllYTFkODYyNDdmNGFmMzUxZWQxODY2YmNhNmEzMDQwYTA2YzY4MTc3Yzc4ZTQyMzE2YTEwOThlNjBmYjdkMyJ9fX0="
      name: ""
      lore:
        - "          #92bed8ʙᴀᴄᴋ"
        - "          #8c8c8c&m      "
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ɢᴏ ʙᴀᴄᴋ #8c8c8c• "
    slot: 49
  items:
    type: ZAUCTIONHOUSE_SHOW_ITEMS
    slots:
      - 10-16
      - 19-25
      - 28-34
      - 37-43
```

## Show

```yaml
#
# This configuration uses zMenu, please refer to zMenu documentation
# zMenu: https://docs.zmenu.dev/
# zAuctionHouse: https://zauctionhouse.groupez.dev/
#

name: '&8sʜᴏᴡ ᴄᴏɴᴛᴇɴᴛ'
size: 54

patterns:
  - "zauctionhouse_decoration"

items:
  playerHead:
    isPermanent: true
    type: BACK
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjllYTFkODYyNDdmNGFmMzUxZWQxODY2YmNhNmEzMDQwYTA2YzY4MTc3Yzc4ZTQyMzE2YTEwOThlNjBmYjdkMyJ9fX0="
      name: ""
      lore:
        - "          #92bed8ʙᴀᴄᴋ"
        - "          #8c8c8c&m      "
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ɢᴏ ʙᴀᴄᴋ #8c8c8c• "
    slot: 49
  items:
    type: ZAUCTIONHOUSE_SHOW_ITEMS
    slots:
      - 10-16
      - 19-25
      - 28-34
      - 37-43
```


# Patterns

## Auction

```yaml
#
# This configuration uses zMenu, please refer to zMenu documentation
# zMenu: https://docs.zmenu.dev/
# zAuctionHouse: https://zauctionhouse.groupez.dev/
#

name: "zauctionhouse_auction" # Name of the pattern
size: 54
items:

  expireItems:
    type: INVENTORY
    plugin: zAuctionHouseV3
    inventory: expire
    slot: 47
    isPermanent: true
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjdhYWRmZjlkZGM1NDZmZGNlYzZlZDU5MTljYzM5ZGZhOGQwYzA3ZmY0YmM2MTNhMTlmMmU2ZDdmMjU5MyJ9fX0="
      name: ""
      lore:
        - "        #92bed8ᴇxᴘɪʀᴇᴅ ɪᴛᴇᴍs"
        - "              #8c8c8c&m     "
        - ""
        - " #e6fff3ʏᴏᴜ ʜᴀᴠᴇ #ffacd5%zauctionhouse_expired_item% #e6fff3ᴇxᴘɪʀᴇᴅ ɪᴛᴇᴍs "
        - ""
        - "       #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴏᴘᴇɴ #8c8c8c• "

  buyItem:
    type: INVENTORY
    plugin: zAuctionHouseV3
    inventory: buying
    slot: 48
    isPermanent: true
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjM3Y2FlNWM1MWViMTU1OGVhODI4ZjU4ZTBkZmY4ZTZiN2IwYjFhMTgzZDczN2VlY2Y3MTQ2NjE3NjEifX19"
      name: ""
      lore:
        - "         #92bed8ʙᴏᴜɢʜᴛ ɪᴛᴇᴍs"
        - "              #8c8c8c&m     "
        - ""
        - " #e6fff3ʏᴏᴜ ʜᴀᴠᴇ #ffacd5%zauctionhouse_buying_item% #e6fff3ʙᴏᴜɢʜᴛ ɪᴛᴇᴍs "
        - ""
        - "       #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴏᴘᴇɴ #8c8c8c• "

  playerItems:
    type: INVENTORY
    plugin: zAuctionHouseV3
    inventory: items
    slot: 50
    isPermanent: true
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjU4MDdjYzRjM2I2OTU4YWVhNjE1NmU4NDUxOGQ5MWE0OWM1ZjMyOTcxZTZlYjI2OWEyM2EyNWEyNzE0NSJ9fX0="
      name: ""
      lore:
        - "        #92bed8ʏᴏᴜʀ ɪᴛᴇᴍs"
        - "            #8c8c8c&m     "
        - ""
        - " #e6fff3ʏᴏᴜ ʜᴀᴠᴇ #ffacd5%zauctionhouse_currents_item% #e6fff3ʏᴏᴜʀ ɪᴛᴇᴍs "
        - ""
        - "     #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴏᴘᴇɴ #8c8c8c• "

  categories:
    type: INVENTORY
    inventory: categories
    plugin: zAuctionHouseV3
    slot: 51
    isPermanent: true
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTZjYzQ4NmMyYmUxY2I5ZGZjYjJlNTNkZDlhM2U5YTg4M2JmYWRiMjdjYjk1NmYxODk2ZDYwMmI0MDY3In19fQ=="
      name: ""
      lore:
        - "    #92bed8ᴄᴀᴛᴇɢᴏʀɪᴇs"
        - "         #8c8c8c&m     "
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴏᴘᴇɴ #8c8c8c• "
  informations:
    type: ZAUCTIONHOUSE_UPDATE
    slot: 4
    isPermanent: true
    item:
      material: BELL
      name: '&f'
      lore:
        - "                #92bed8ɪɴғᴏʀᴍᴀᴛɪᴏɴs"
        - "                      #8c8c8c&m     "
        - ""
        - "      #e6fff3ᴡᴇʟᴄᴏᴍᴇ ᴛᴏ ᴛʜᴇ ᴀᴜᴄᴛɪᴏɴ ʜᴏᴜsᴇ"
        - " #e6fff3ɪᴛ's ᴀ ᴍᴀʀᴋᴇᴛ ᴡʜᴇʀᴇ ᴀʟʟ ᴛʜᴇ ᴘʟᴀʏᴇʀs "
        - "          #e6fff3ᴄᴀɴ sᴇʟʟ ᴏʀ ʙᴜʏ ɪᴛᴇᴍs"
        - ""
        - "                 #e6fff3→ ᴜsᴀɢᴇ ←"
        - "       #ffacd5/ᴀʜ sᴇʟʟ #8c8c8c‹&fᴘʀɪᴄᴇ#8c8c8c› #8c8c8c[‹&fᴀᴍᴏᴜɴᴛ#8c8c8c›]"
        - ""
        - "             #e6fff3ɴᴜᴍʙᴇʀ ᴏғ ɪᴛᴇᴍs#8c8c8c: #92bed8%zauctionhouse_counts%"
        - "        #e6fff3sᴏʀᴛ ᴛʏᴘᴇ#8c8c8c: #92bed8%zauctionhouse_sorting%"
        - ""
        - "      #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴜᴘᴅᴀᴛᴇ ᴛʜᴇ ɪᴛᴇᴍs #8c8c8c•"
        - ""

  change-sort:
    isPermanent: true
    type: ZAUCTIONHOUSE_CHANGE_SORTING
    sorting:
      - sorting: DECREASING_DATE
        display: "ᴅᴇᴄʀᴇᴀsɪɴɢ ᴅᴀᴛᴇ"
      - sorting: DECREASING_PRICE
        display: "ᴅᴇᴄʀᴇᴀsɪɴɢ ᴘʀɪᴄᴇ"
      - sorting: ASCENDING_DATE
        display: "ᴀsᴄᴇɴᴅɪɴɢ ᴅᴀᴛᴇ"
      - sorting: ASCENDING_PRICE
        display: "ᴀsᴄᴇɴᴅɪɴɢ ᴘʀɪᴄᴇ"
    enableText: '          #e6fff3➜ %sorting%'
    disableText: '          #8c8c8c➜ %sorting%'
    slot: 49
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGIyZWRlYjAxY2RjZTFkMTM1MWQ5YmY3ZmI3NTNiNmY1NzNhNTZiODY0NzcyOTlhNTEwMzNjYWFjODkzOTQwOCJ9fX0="
      name: ""
      lore:
        - "                #92bed8sᴏʀᴛ ᴛʏᴘᴇ"
        - "                    #8c8c8c&m     "
        - ""
        - "%DECREASING_DATE%"
        - "%DECREASING_PRICE%"
        - "%ASCENDING_DATE%"
        - "%ASCENDING_PRICE%"
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴄʜᴀɴɢᴇ ᴛʜᴇ sᴏʀᴛ ᴛʏᴘᴇ #8c8c8c• "
```

## Back

```yaml
#
# This configuration uses zMenu, please refer to zMenu documentation
# zMenu: https://docs.zmenu.dev/
# zAuctionHouse: https://zauctionhouse.groupez.dev/
#

name: "zauctionhouse_back" # Name of the pattern
size: 54
items:
  playerHead:
    isPermanent: true
    type: BACK
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjllYTFkODYyNDdmNGFmMzUxZWQxODY2YmNhNmEzMDQwYTA2YzY4MTc3Yzc4ZTQyMzE2YTEwOThlNjBmYjdkMyJ9fX0="
      name: ""
      lore:
      - "          #92bed8ʙᴀᴄᴋ"
      - "          #8c8c8c&m      "
      - ""
      - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ɢᴏ ʙᴀᴄᴋ #8c8c8c• "
    slot: 50
```

## Decoration

```yaml
#
# This configuration uses zMenu, please refer to zMenu documentation
# zMenu: https://docs.zmenu.dev/
# zAuctionHouse: https://zauctionhouse.groupez.dev/
#

name: "zauctionhouse_decoration" # Name of the pattern
size: 54
items:
  decorations:
    isPermanent: true
    item:
      material: BLACK_STAINED_GLASS_PANE
      name: "&e"
    slots:
      - 0-9
      - 17-18
      - 26-27
      - 35-36
      - 44-53
```

## Pagination

```yaml
#
# This configuration uses zMenu, please refer to zMenu documentation
# zMenu: https://docs.zmenu.dev/
# zAuctionHouse: https://zauctionhouse.groupez.dev/
#

name: "zauctionhouse_pagination" # Name of the pattern
size: 54
items:
  previous:
    isPermanent: true
    type: PREVIOUS
    slot: 45
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjllYTFkODYyNDdmNGFmMzUxZWQxODY2YmNhNmEzMDQwYTA2YzY4MTc3Yzc4ZTQyMzE2YTEwOThlNjBmYjdkMyJ9fX0="
      name: ""
      lore:
        - "                  #92bed8ᴘʀᴇᴠɪᴏᴜs ᴘᴀɢᴇ"
        - "                        #8c8c8c&m     "
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴀᴄᴄᴇss ᴛᴏ ᴛʜᴇ ᴘʀᴇᴠɪᴏᴜs ᴘᴀɢᴇ #8c8c8c• "

  next:
    isPermanent: true
    type: NEXT
    slot: 53
    item:
      url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODI3MWE0NzEwNDQ5NWUzNTdjM2U4ZTgwZjUxMWE5ZjEwMmIwNzAwY2E5Yjg4ZTg4Yjc5NWQzM2ZmMjAxMDVlYiJ9fX0="
      name: ""
      lore:
        - "                   #92bed8ɴᴇxᴛ ᴘᴀɢᴇ"
        - "                       #8c8c8c&m     "
        - ""
        - " #8c8c8c• #92bed8ᴄʟɪᴄᴋ #e6fff3ᴛᴏ ᴀᴄᴄᴇss ᴛᴏ ᴛʜᴇ ɴᴇxᴛ ᴘᴀɢᴇ #8c8c8c• "

```


# Blacklist.yml

```yaml
#########################################################################################################################################
#
#
#   Sponsor: https://serveur-minecraft-vote.fr/
#   5€ gift code on Minecraft Vote Server : ZAUCTIONHOUSE (https://serveur-minecraft-vote.fr/utiliser/un/code/cadeau?code=ZAUCTIONHOUSE)
#
#   Documentation: https://zauctionhouse.groupez.dev/
#   Discord: https://discord.groupez.dev/
#
#   You can find the list of blacklisted items here. Here are the different types of blacklist:
#   - zauctionhouse:similar_model_id
#   - zauctionhouse:names_contains
#   - zauctionhouse:zauctionhouse:contains_lore
#   - zauctionhouse:material_similar
#
#   Documentation: https://zauctionhouse.groupez.dev/blacklist
#
#########################################################################################################################################

blacklists:

    # Blacklist items if their name contains an element
  - type: "zauctionhouse:names_contains"
    key: "Custom Sword"
      
    # Blacklist of items with a custom model id
  - type: "zauctionhouse:similar_model_id"
    key: PAPER # Material name (https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html)
    modelId: 10001    
    
    # Blacklist of items with lore contains key
  - type: "zauctionhouse:contains_lore"
    key: "Cosmetics"    
    
    # Blacklist of items with lore contains key
  - type: "zauctionhouse:material_similar"
    key: STONE_HOE # (https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html)
```


# Prices.yml

```yaml
#########################################################################################################################################
#
#
#   Sponsor: https://serveur-minecraft-vote.fr/
#   5€ gift code on Minecraft Vote Server : ZAUCTIONHOUSE (https://serveur-minecraft-vote.fr/utiliser/un/code/cadeau?code=ZAUCTIONHOUSE)
#
#   Documentation: https://zauctionhouse.groupez.dev/
#   Discord: https://discord.groupez.dev/
#
#   You can find the list of prices items here. Here are the different types of prices:
#   - zauctionhouse:similar_model_id
#   - zauctionhouse:names_contains
#   - zauctionhouse:zauctionhouse:contains_lore
#   - zauctionhouse:material_similar
#
#   Documentation: https://zauctionhouse.groupez.dev/prices
#
#########################################################################################################################################

prices:

    # Price items if their name contains an element
  - type: "zauctionhouse:names_contains"
    minPrice: 100
    maxPrice: 1000
    key: "Custom Sword"
      
    # Price of items with a custom model id
  - type: "zauctionhouse:similar_model_id"
    minPrice: 100
    maxPrice: 1000  
    key: PAPER # Material name (https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html)
    modelId: 10001    
    
    # Price of items with lore contains key
  - type: "zauctionhouse:contains_lore"
    minPrice: 100
    maxPrice: 1000
    key: "Cosmetics"    
    
    # Price of items with lore contains key
  - type: "zauctionhouse:material_similar"
    minPrice: 100
    maxPrice: 1000  
    key: STONE_HOE # (https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html)
```


# Taxs.yml

```yaml
#########################################################################################################################################
#
#
#   Sponsor: https://serveur-minecraft-vote.fr/
#   Documentation: https://zauctionhouse.groupez.dev/
#   Discord: https://discord.groupez.dev/
# 
#   Configuration of taxes by items 
#   Dont forget to set 'enableItemsTax' to true in config.json if you want to use this taxs
#
#########################################################################################################################################

taxs:
  exampleA:
    percent: 5.0 
    item:
      material: STONE
      data: 0
      amount: 1
      durability: 0
  exampleB:
    percent: 10.0
    item:
      material: IRON_ORE
      data: 0
      amount: 1
      durability: 0
  exampleC:
    percent: 30.0
    item:
      material: IRON_INGOT
      data: 0
      amount: 1
      durability: 0

```


# Whitelist.yml

```yaml
#########################################################################################################################################
#
#
#   Sponsor: https://serveur-minecraft-vote.fr/
#   5€ gift code on Minecraft Vote Server : ZAUCTIONHOUSE (https://serveur-minecraft-vote.fr/utiliser/un/code/cadeau?code=ZAUCTIONHOUSE)
#
#   Documentation: https://zauctionhouse.groupez.dev/
#   Discord: https://discord.groupez.dev/
#
#   You can find the list of whitelisted items here. Here are the different types of whitelist:
#   - zauctionhouse:similar_model_id
#   - zauctionhouse:names_contains
#   - zauctionhouse:zauctionhouse:contains_lore
#   - zauctionhouse:material_similar
#
#   Documentation: https://zauctionhouse.groupez.dev/whitelist
#
#########################################################################################################################################

whitelist:
#
#    # Blacklist items if their name contains an element
#  - type: "zauctionhouse:names_contains"
#    key: "Custom Sword"
#      
#    # Blacklist of items with a custom model id
#  - type: "zauctionhouse:similar_model_id"
#    key: PAPER # Material name (https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html)
#    modelId: 10001    
#    
#    # Blacklist of items with lore contains key
#  - type: "zauctionhouse:contains_lore"
#    key: "Cosmetics"    
#    
#    # Blacklist of items with lore contains key
#  - type: "zauctionhouse:material_similar"
#    key: STONE_HOE # (https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html)
```


# Informations

You have all the information about the zAuctionHouse API

JavaDoc: [https://javadocs.groupez.dev/zauctionhousev3](https://javadocs.groupez.xyz/zauctionhousev3)

JitPack: [https://jitpack.io/#Maxlego08/zAuctionHouseV3-API/](https://jitpack.io/#Maxlego08/zAuctionHouseV3-API/3.1.4.5)

## Maven

```markup
<repositories>
	<repository>
		<id>jitpack.io</id>
		<url>https://jitpack.io</url>
	</repository>
</repositories>

<dependencies>
	<dependency>
		<groupId>com.github.Maxlego08</groupId>
		<artifactId>zAuctionHouseV3-API</artifactId>
		<version>3.2.1.9</version>
		<scope>provide</scope>
	</dependency>
</dependencies>
```

## Gradle

```c
dependencyResolutionManagement {
	repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
	repositories {
		mavenCentral()
		maven { url 'https://jitpack.io' }
	}
}
dependencies {
        implementation 'com.github.Maxlego08:3.2.1.9'
}
```

## First step

You will be able to retrieve the plugin's interfaces this way:

```java
@Override
public void onEnable() {
	AuctionManager auctionManager = getProvider(AuctionManager.class);
	InventoryManager inventoryManager = getProvider(InventoryManager.class);
	CategoryManager categoryManager = getProvider(CategoryManager.class);
	TransactionManager transactionManager = getProvider(TransactionManager.class);
	ConvertManager convertManager = getProvider(ConvertManager.class);
	FilterManager filterManager = getProvider(FilterManager.class);
	StoreManager storageManager = getProvider(StoreManager .class);
	IBlacklistManager blacklistManager = getProvider(IBlacklistManager.class);
}

private <T> T getProvider(Class<T> classz) {
	RegisteredServiceProvider<T> provider = getServer().getServicesManager().getRegistration(classz);
	if (provider == null) 
		return null;
	return provider.getProvider() != null ? (T) provider.getProvider() : null;
}
```

Then you just have to look in the javadoc for the elements you need. Nevertheless, if you need help with the API don't hesitate to come to the discord to ask for help.


# Events

List of available events

* AuctionClaimEvent
* AuctionItemExpireEvent
* AuctionPostBuyEvent
* AuctionPreBuyEvent
* AuctionRemoveEvent
* AuctionRetrieveEvent
* AuctionSellEvent
* AuctionPreSellEvent
* AuctionTransactionEvent


# Custom storage

Create your custom storage

You can create your own storage system if the default ones do not suit you.

```java
StorageManager manager = this.getProvider(StorageManager.class);
manager.setCustomStorage(new IStorage() {
	
	@Override
	public void updateTransaction(List<Transaction> transactions) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void updateItem(AuctionPlugin plugin, AuctionItem auctionItem, StorageType type) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void update(AuctionPlugin plugin, StorageType type) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void storeTransaction(Transaction transaction) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void saveTransactions(List<Transaction> transactions) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void saveItems(AuctionPlugin plugin, List<AuctionItem> auctionItems, StorageType type) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void saveItem(AuctionPlugin plugin, AuctionItem auctionItem, StorageType type) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void save(AuctionPlugin plugin) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void removeItem(AuctionPlugin plugin, AuctionItem auctionItem, StorageType type) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void load(StorageManager storageManager, AuctionPlugin plugin) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public List<Transaction> getTransactions() {
		// TODO Auto-generated method stub
		return null;
	}
	
	@Override
	public List<AuctionItem> getItems(AuctionPlugin plugin, StorageType type) {
		// TODO Auto-generated method stub
		return null;
	}
});
```

Here is an example of use with the JsonStorage class. This class is directly the one used in the plugin, if you have questions about the API you can come on discord.

```java
package fr.maxlego08.zauctionhouse.storage.storages;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import java.util.function.Consumer;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

import fr.maxlego08.zauctionhouse.api.AuctionItem;
import fr.maxlego08.zauctionhouse.api.AuctionPlugin;
import fr.maxlego08.zauctionhouse.api.enums.StorageType;
import fr.maxlego08.zauctionhouse.api.event.events.AuctionItemExpireEvent;
import fr.maxlego08.zauctionhouse.api.storage.IStorage;
import fr.maxlego08.zauctionhouse.api.storage.StorageManager;
import fr.maxlego08.zauctionhouse.api.transaction.Transaction;
import fr.maxlego08.zauctionhouse.api.utils.Config;
import fr.maxlego08.zauctionhouse.zcore.logger.LoggerManager;
import fr.maxlego08.zauctionhouse.zcore.utils.ZUtils;

public class JSonStorage extends ZUtils implements IStorage {

	private List<AuctionItem> items = new ArrayList<>();
	private List<AuctionItem> buyingItems = new ArrayList<>();
	private List<AuctionItem> expiredItems = new ArrayList<>();
	private List<Transaction> transactions = new ArrayList<>();

	private transient Map<UUID, Long> cooldowns = new HashMap<UUID, Long>();

	@Override
	public void load(StorageManager manager, AuctionPlugin plugin) {
		
		this.items.removeIf(e -> e == null);
		this.buyingItems.removeIf(e -> e == null);
		this.expiredItems.removeIf(e -> e == null);
		
		this.buyingItems.forEach(e -> {
			if (e == null){
				return;
			}

			if (e != null){
				e.setCanBuy(false);
			}
			e.setStorageType(StorageType.BUY);
		});
		this.expiredItems.forEach(e -> {

			if (e == null){
				return;
			}

			if (e != null){
				e.setCanBuy(false);
			}
			e.setStorageType(StorageType.EXPIRE);
		});
		this.items.forEach(e -> {
			if (e == null){
				return;
			}
			e.setStorageType(StorageType.STORAGE);
		});

		this.purgeTransactions(Config.removeTransactionAfterSeconds, () -> {
		});
	}

	@Override
	public void saveItem(AuctionPlugin plugin, AuctionItem auctionItem, StorageType type) {
		auctionItem.setStorageType(type);
		switch (type) {
		case BUY:
			buyingItems.add(auctionItem);
			break;
		case EXPIRE:
			expiredItems.add(auctionItem);
			break;
		case STORAGE:
			items.add(auctionItem);
			break;
		default:
			break;
		}
	}

	@Override
	public void removeItem(AuctionPlugin plugin, AuctionItem auctionItem, StorageType type) {
		switch (type) {
		case BUY:
			buyingItems.remove(auctionItem);
			break;
		case EXPIRE:
			expiredItems.remove(auctionItem);
			break;
		case STORAGE:
			items.remove(auctionItem);
			break;
		default:
			break;
		}
	}

	@Override
	public void saveItems(AuctionPlugin plugin, List<AuctionItem> i, StorageType type) {
		switch (type) {
		case BUY:
			buyingItems = i;
			break;
		case EXPIRE:
			expiredItems = i;
			break;
		case STORAGE:
			items = i;
			break;
		default:
			break;
		}
	}

	@Override
	public void update(AuctionPlugin plugin, StorageType type) {
		switch (type) {
		case BUY:
			update(plugin, buyingItems, type);
			break;
		case EXPIRE:
			update(plugin, expiredItems, type);
			break;
		case STORAGE:
			update(plugin, items, type);
			break;
		default:
			break;
		}
	}

	private void update(AuctionPlugin plugin, List<AuctionItem> items, StorageType type) {
		long currentMilliSecond = System.currentTimeMillis();
		Iterator<AuctionItem> iterator = items.iterator();
		while (iterator.hasNext()) {
			AuctionItem auctionItem = iterator.next();
			if (auctionItem == null)
				continue;

			if (System.currentTimeMillis() > auctionItem.getExpireAt() && auctionItem.getExpireAt() != -1) {

				Bukkit.getScheduler().runTask(plugin, () -> {
					AuctionItemExpireEvent event = new AuctionItemExpireEvent(auctionItem.getExpireAt(),
							currentMilliSecond, auctionItem, type);
					event.callEvent();
				});

				// Ajout de logger sur les informations ici !

				if (type.equals(StorageType.STORAGE)) {

					long expiredAt = Config.expireTime != -1 ? (System.currentTimeMillis() + (1000 * Config.expireTime))
							: Config.expireTime;
					auctionItem.setExpireAt(expiredAt);
					auctionItem.setCanBuy(false);
					saveItem(plugin, auctionItem, StorageType.EXPIRE);
					iterator.remove();

					String message = "x%s %s on sale by %s has just expired, it goes in the inventory of expired items.";
					LoggerManager.getInstance().log(message, auctionItem.getAmount(),
							getItemName(auctionItem.getItemStack()), auctionItem.getSeller().getName());
				} else {
					iterator.remove();

					if (type.equals(StorageType.BUY)) {

						String message = "x%s %s, bought by %s, has just expired, the item is definitively deleted.";
						LoggerManager.getInstance().log(message, auctionItem.getAmount(),
								getItemName(auctionItem.getItemStack()), auctionItem.getSeller().getName());

					} else {

						String message = "x%s %s, item of %s, has just expired, the item is definitively deleted.";
						LoggerManager.getInstance().log(message, auctionItem.getAmount(),
								getItemName(auctionItem.getItemStack()), auctionItem.getSeller().getName());

					}
				}
			}
		}
	}

	@Override
	public List<AuctionItem> getItems(AuctionPlugin plugin, StorageType type) {
		this.update(plugin, type);
		switch (type) {
		case BUY:
			return buyingItems;
		case EXPIRE:
			return expiredItems;
		case STORAGE:
			return items;
		default:
			return new ArrayList<>();
		}
	}

	@Override
	public void save(AuctionPlugin plugin) {

	}

	@Override
	public void storeTransaction(Transaction transaction, Consumer<Transaction> consumer) {
		this.transactions.add(transaction);
		if (consumer != null) {
			consumer.accept(transaction);
		}
	}

	@Override
	public void saveTransactions(List<Transaction> transactions) {
		this.transactions = transactions;
	}

	@Override
	public void updateItem(AuctionPlugin plugin, AuctionItem auctionItem, StorageType type) {
		this.removeItem(plugin, auctionItem, StorageType.STORAGE);
		this.saveItem(plugin, auctionItem, type);
	}

	@Override
	public List<Transaction> getTransactions() {
		return transactions;
	}

	@Override
	public void updateTransaction(List<Transaction> transactions) {
		// TODO Auto-generated method stub

	}

	@Override
	public void purgeTransactions(long seconds, Runnable runnable) {
		Iterator<Transaction> iterator = this.transactions.iterator();
		while (iterator.hasNext()) {
			Transaction transaction = iterator.next();
			long diff = Math.abs(System.currentTimeMillis() - transaction.getDate()) / 1000;
			if (diff > seconds) {
				iterator.remove();
			}
		}
		runnable.run();
	}

	/**
	 * @return the items
	 */
	public List<AuctionItem> getItems() {
		return items;
	}

	/**
	 * @return the buyingItems
	 */
	public List<AuctionItem> getBuyingItems() {
		return buyingItems;
	}

	/**
	 * @return the expiredItems
	 */
	public List<AuctionItem> getExpiredItems() {
		return expiredItems;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "JSonStorage [items=" + items + ", buyingItems=" + buyingItems + ", expiredItems=" + expiredItems
				+ ", transactions=" + transactions + "]";
	}

	@Override
	public void fetchClaimMoney(Player player, Consumer<List<Transaction>> object) {
		// TODO Auto-generated method stub

	}

	@Override
	public boolean isCooldown(UUID uniqueId) {

		long expiredAt = this.cooldowns.getOrDefault(uniqueId, 0l);

		if (expiredAt > System.currentTimeMillis()) {
			return true;
		}

		this.cooldowns.put(uniqueId, System.currentTimeMillis() + (1000 * Config.cooldownClickMilliseconds));

		return false;
	}

	/**
	 * @return the cooldowns
	 */
	public Map<UUID, Long> getCooldowns() {
		return cooldowns;
	}

	/**
	 * @param items the items to set
	 */
	public void setItems(List<AuctionItem> items) {
		this.items = items;
	}

	/**
	 * @param buyingItems the buyingItems to set
	 */
	public void setBuyingItems(List<AuctionItem> buyingItems) {
		this.buyingItems = buyingItems;
	}

	/**
	 * @param expiredItems the expiredItems to set
	 */
	public void setExpiredItems(List<AuctionItem> expiredItems) {
		this.expiredItems = expiredItems;
	}

	/**
	 * @param transactions the transactions to set
	 */
	public void setTransactions(List<Transaction> transactions) {
		this.transactions = transactions;
	}

	/**
	 * @param cooldowns the cooldowns to set
	 */
	public void setCooldowns(Map<UUID, Long> cooldowns) {
		this.cooldowns = cooldowns;
	}
	
	

}

```


# Filter

With zAuctionHouseV3 you can create your own filter for the `/ah search` command. First you need to read the Filter page which gives you all the information about how filters work.

## Step 1

First you will need to retrieve the FilterManager class.

```java
@Override
public void onEnable() {
	FilterManager filterManagerManager = getProvider(FilterManager.class);
}

private <T> T getProvider(Class<T> classz) {
	RegisteredServiceProvider<T> provider = getServer().getServicesManager().getRegistration(classz);
	if (provider == null) 
		return null;
	return provider.getProvider() != null ? (T) provider.getProvider() : null;
}
```

## Step 2

You need to create a class that will extend the `Filter` class.

```java
package fr.maxlego08.zauctionhouse.filter.filters;

import org.bukkit.ChatColor;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import fr.maxlego08.zauctionhouse.api.AuctionItem;
import fr.maxlego08.zauctionhouse.api.enums.FilterType;
import fr.maxlego08.zauctionhouse.api.filter.Filter;

public class NameFilter extends Filter {

	public NameFilter() {
		# Name of the filter that will be used in the command
		super("name");
	}

	@Override
	public boolean perform(AuctionItem auctionItem, FilterType filterType, String string) {
	
		# We retrieve the list of items present in the auctionItem object.	
		for (ItemStack itemStack : this.getItems(auctionItem)) {

			ItemMeta itemMeta = itemStack.getItemMeta();
			if (!itemMeta.hasDisplayName())
				continue;

			String name = ChatColor.stripColor(itemMeta.getDisplayName());

			# We make a switch on the type of filter
			switch (filterType) {
			case CONTAINS:
				return name.toLowerCase().contains(string.toLowerCase());
			case EQUALS:
				return name.equals(string);
			case EQUALSIGNORECASE:
				return name.equalsIgnoreCase(string);
			default:
				break;
			}
		}
		return false;
	}

}
```

## Step 3

All you have to do is save the filter.

```java
this.filterManager.registerFilter(new NameFilter());
```


# Blacklist

Blacklist your custom items

Create your own blacklist class implement from IBlacklist

```java
public class BlacklistSimilar implements IBlacklist {

	private final List<ItemStack> itemstacks;

	/**
	 * @param itemstacks
	 */
	public BlacklistSimilar(List<ItemStack> itemstacks) {
		super();
		this.itemstacks = itemstacks;
	}

	@Override
	public String getName() {
		return "Similar itemstack";
	}

	@Override
	public boolean isBlacklist(ItemStack itemStack) {
		return this.itemstacks.stream()
				.anyMatch(stack -> stack != null && itemStack != null && stack.isSimilar(itemStack));
	}

}
```

After your need to use the method `registerBlacklist` in IBlacklistManager class


# Custom economy

Add your economies

With the zAuctionHouse API, you can create an infinite amount of AuctionEconomy! To do this, you need to create a class that implements the AuctionEconomy interface. Then, simply implement each method in the interface.

Here is an example of an economy with the level of the players:

```java
package fr.maxlego08.zauctionhouse.economy;

import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;

import fr.maxlego08.zauctionhouse.api.economy.AuctionEconomy;

public class LevelEconomy implements AuctionEconomy {

  @Override
  public long getMoney(OfflinePlayer offlinePlayer) {
    return offlinePlayer.isOnline() ? ((Player) offlinePlayer).getLevel() : 0;
  }

  @Override
  public boolean hasMoney(OfflinePlayer offlinePlayer, long price) {
    return getMoney(offlinePlayer) >= price;
  }

  @Override
  public void depositMoney(OfflinePlayer offlinePlayer, long value) {
    if (offlinePlayer.isOnline()) {
      int level = offlinePlayer.getPlayer().getLevel();
      offlinePlayer.getPlayer().setLevel((int) (level + value));
    }
  }

  @Override
  public void withdrawMoney(OfflinePlayer offlinePlayer, long value) {
    if (offlinePlayer.isOnline()) {
       int level = offlinePlayer.getPlayer().getLevel();
       offlinePlayer.getPlayer().setLevel((int) (level - value));
    }
  }

  @Override
  public String getCurrency() {
    return "%price%L";
  }

  @Override
  public String getFormat() {
    return "l";
  }

  @Override
  public boolean isEnable() {  
    return true;
  }

  @Override
  public String getName() {
    return "LEVEL";
  }
  
}
```

If you directly imported the jar of the plugin you can use the `DefaultEconomy` class like that:

```java
public class ExampleEconomy extends DefaultEconomy {

    public ExampleEconomy() {
        super("example", "%price%€", "You dont have enough money", "e");
    }

    @Override
    public long getMoney(OfflinePlayer offlinePlayer) {
        return 10000;
    }

    @Override
    public void depositMoney(OfflinePlayer offlinePlayer, long l) {
        // Do Your Stuff
    }

    @Override
    public void withdrawMoney(OfflinePlayer offlinePlayer, long l) {
        // Do Your Stuff
    }
}
```

Vous devez ajouter dans votre plugin.yml le loadBefore pour zAuctionHouse. Cela va indiquer a votre serveur que votre plugin doit charger avant zAuctionHouse.

```yaml
loadbefore:
  - zAuctionHouseV3
```

Then you need to create a listener for the event `AuctionLoadEconomyEvent`, this event will allow to retrieve the `EconomyManager` interface to register your economy.

```java
public class TestListener implements Listener {

    @EventHandler
    public void onLoad(AuctionLoadEconomyEvent event) {

        EconomyManager economyManager = event.getEconomyManager();
        economyManager.registerEconomy(new ExampleEconomy());
    }

}
```


# Old Configurations


# Items

This page is valid for all plugins using the template developed by maxlego08 and using the loader system for itemstacks.

### Example:

Here is an example of an item in a yml file:

```yaml
item:
  material: 3
  data: 0
  durability: 0
  amount: 1
  glow: true
  lore:
    - "line"
    - "&cred line"
    - "&fwhite line"
  name: "&eMy awesome name"
  enchants:
    - PROTECTION_ENVIRONMENTAL,4
  flags:
    - HIDE_ENCHANTS
```

### Example [potion](https://hub.spigotmc.org/javadocs/spigot/org/bukkit/potion/PotionType.html):

```yaml
test2:
  item:
    material: POTION
    potion: "SPEED"
    splash: true
    extended: true
    level: 1
  type: NONE
  slot: 33
```

### Example player head:

```yaml
test3:
  item:
    material: PLAYER_HEAD
    url: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTM2ZTk0ZjZjMzRhMzU0NjVmY2U0YTkwZjJlMjU5NzYzODllYjk3MDlhMTIyNzM1NzRmZjcwZmQ0ZGFhNjg1MiJ9fX0="
  type: NONE
  slot: 34
```

### Add player HEAD

You have to add `HEAD` in the item name to be able to display the head of the player who opened the GUI.

Example:

```yaml
item:
    material: PLAYER_HEAD
    name: "HEAD&a%player_name%"
```

If you are below version 1.13 you have to do

```yaml
item:
  material: SKULL_ITEM
  data: 3
  name: "HEAD&a%player_name%"
```

### Head Database

```yaml
item:
  material: hdb:<head id>
type: NONE
slot: 0
```

### EpicHead

```yaml
item:
  material: eh:<head id>
type: NONE
slot: 0
```

## Now let's move on to the explanation of each element

* `material`

You can put the item ID for versions lower than 1.13 and you can put the material name for higher versions. List of materials: <https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html>

* `data`

The item data works only for versions lower than 1.13, the default value is 0.

* `amount`

The number of items (from 1 to 64), the default value is 1.

* `durability`

Allows you to change the durability of items, works only for armor and other items that use durability, the default value is 0.

* `name`

Allows you to change the name of the item, by default the name is null.

* `glow`

Allows to add an enchantment to the item and to add the HIDE\_ENCHANTS flag

* `lore`

Allows to change a lore of the item, by default the lore is null.

* `enchants`

Allows you to add enchantments, you have to put the name of the enchantment then the level of the enchantment, like this: `ENCHANT,ENCHANT_LEVEL` List of enchantments available: <https://hub.spigotmc.org/javadocs/spigot/org/bukkit/enchantments/Enchantment.html>

* `flags`

This option is available for servers greater than or equal to the 1.8. List of flags: <https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/ItemFlag.html>

* `modelID`

Allows you to put a custom model data on an item

## Developer - Loading and saving an itemtack

To save and load an item you will have to use the [ItemStackLoader](https://github.com/Maxlego08/TemplatePlugin/blob/master/src/fr/maxlego08/template/zcore/utils/loader/ItemStackLoader.java) class

```java
//Create class
ItemStackLoader loader = new ItemStackLoader();

//Load your confirguration
YamlConfiguration configuration = plugin.getConfig();

//You have to put a . at the end of your path to load the item.
String path = "item.";

//Load ItemStack
ItemStack itemStack = loader.load(configuration, path);

//Save ItemStack
loader.save(itemStack, configuration, path);
```


# Buttons

Buttons are the basic foundation of the plugin, they are very important to be able to manage your configuration. Here you have all available button types and an example of their use.

Button types:

* NONE
* NONE\_SLOT
* BACK
* HOME
* PREVIOUS
* NEXT
* INVENTORY
* PERFORM\_COMMAND
* AUCTION\_ITEM
* BUY\_INVENTORY
* SHOW\_ITEM
* REMOVE\_ITEM
* BUY\_ITEM
* CHANGE\_SORT
* CATEGORIES
* REMOVE\_ALL
* SELL\_INVENTORY\_SLOT
* SELL\_INVENTORY\_ACCEPT
* SELL\_INVENTORY\_CANCEL
* CLAIM

### Default

Here is the information that is valid for all button types.

* `type` Sets the type of the button.
* `slot` Sets the button slot.
* `isPermanent` Allows you to set a button as permanent, so the paging system will not take this button into account (you must set the value to true).
* `item` Allows you to define the item to be displayed ([Add an item](https://github.com/Maxlego08/zShop-API/wiki/How-do-I-add-an-item))
* `permission` Allows you to give permission to the.
* `elseMessage` Allows you to send a message to the user when they do not have permission to click a button.
* `else` Displays another button if the user does not have permission.
* `action` Allows you to choose the formula for the verification with place holder, you have `SUPERIOR`, `LOWER`, `SUPERIOR_OR_EQUAL`, `LOWER_OR_EQUAL`, `EQUALS_STRING` and `EQUALSIGNORECASE_STRING`
* `placeHolder` Allows to check an API placeholder variable
* `value` Allows you to set the value for placeholder verification
* `sound` Allows you to have a sound when the player clicks on the button. You have the list of sounds available here: XSound
* `volume` Changing the sound volume
* `pitch`Changing the sound pitch

Example:

```yaml
block: 
  item:
    material: GRASS_BLOCK
    name: "&aBlocks"
    lore:
      - "&7Click to access the blocks"
  type: INVENTORY
  inventory: "blocks"
  slot: 20
  sound: BLOCK_NOTE_BLOCK_PLING
  volume: 1.3f
  pitch: 0.8f
```

### NONE

Description:

* This type allows you to display a single item, no interaction is possible.

Example:

```yaml
example:
  item:
    material: GRASS_BLOCK
    name: "&cRandom name"
  type: NONE
  slot: 0
```

### NONE\_SLOT

Description:

* The type with the same works as the NONE type but allows to display the same item on several slots. Example:

```yaml
slots:
  type: NONE_SLOT
  item:
    material: GRAY_STAINED_GLASS_PANE
    name: "&e"
  slots:
    - 0
    - 1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
```

* `slots` Set button slots.

### BACK

Description:

* Returns to the previous inventory.

Example:

```yaml
back:
  item:
    material: BARRIER
    name: "&cBack"
  type: BACK
  slot: 49
```

### HOME

Description:

* Returns to the main inventory.

Example:

```yaml
home:
  item:
    material: BARRIER
    name: "&eHome"
  type: HOME
  slot: 49
```

### PREVIOUS

Description:

* Returns to the previous page

Example:

```yaml
previous:
  type: PREVIOUS
  isPermanent: true
  slot: 48
  item:
    material: ARROW
    name: "&fPrevious"
  else: #Displays another button if there is no previous page.
    slot: 48
    type: PREVIOUS
    isPermanent: true
    item:
      material: AIR
```

### NEXT

Description:

* Go to the next page

Example:

```yaml
next:
  type: NEXT
  isPermanent: true
  slot: 50
  item:
    material: ARROW
    name: "&fNext"
  else: #Displays another button if there is no next page.
    slot: 50
    type: NEXT
    isPermanent: true
    item:
      material: AIR
```

### INVENTORY

Description:

* Allows you to move between inventories. Please note that you can only move between inventories with a default type, otherwise you may get errors.

Example:

```yaml
block:
  item:
    material: GRASS_BLOCK
    name: "&aBlocks"
    lore:
      - "&7Click to access the blocks"
  type: INVENTORY
  inventory: "blocks"
  slot: 20
```

Value:

* `inventory` Allows you to define the name of the inventory to which you want to go.

### PERFORM\_COMMAND

Description:

* Allows the player to execute commands. And thus to navigate in the inventories of other plugin for example

Example:

```
commands:
  type: PERFORM_COMMAND
  item:
    material: EMERALD
    name: "&eClick for execute command"
  slot: 30
  commands:
    - "bc %player% est vraiment trop beau"
  closeInventory: true
```

Value:

* `commands` List of commands that will be executed by player.
* `consoleCommands` List of commands that will be executed by console.
* `closeInventory` Allows you to close the inventory before the commands are executed.
* `consolePermissionCommands` Allows commands to be executed at the console only if the player has permission.
* `consolePermission` Permission for the list above

### AUCTION\_ITEM

Description:

* Allows you to display the list of items in an inventory.

Example:

```yaml
slots:
  type: NONE_SLOT
  item:
    material: GRAY_STAINED_GLASS_PANE
    name: "&e"
  slots:
    - 0
    - 1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
```

### CLAIM

Description:

* Allows to display the list of intems according to the inventory.

Example:

```yaml
claim:
  type: CLAIM
  isPermanent: true
  slot: 51
  else:
    type: NONE
    item:
      material: MINECART
      name: "&fClaims money"
      lore:
        - "&f» &7You have no money on hold"
  item:
    material: HOPPER_MINECART
    name: "&aClaims money"
    lore:
      - "&f» &7You have &d%zauctionhouse_claim_vault%$&7 to claim"
```

* `slots` Set button slots.

### SELL\_INVENTORY\_SLOT

Description:

* Allows the list of items contained in an AuctionItem of inventory type. Can only be used in the SELL\_SHOW and SELL inventory type.

Example:

```yaml
items:
  type: SELL_INVENTORY_SLOT
  slots:
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 19
    - 20
    - 21
    - 22
    - 23
```

* `slots` Set button slots.

### SELL\_INVENTORY\_ACCEPT

Description:

* Allows you to accept the sale of an inventory. Can only be used in the SELL inventory type.

Example:

```yaml
accept:   
  type: SELL_INVENTORY_ACCEPT
  slot: 50
  item:
    material: GREEN_STAINED_GLASS_PANE
    name: "&fSell content"
```

### SELL\_INVENTORY\_CANCEL

Description:

* Allows you to cancel the sale of an inventory. Can only be used in the SELL inventory type.

Example:

```yaml
cancel:
  type: SELL_INVENTORY_CANCEL
  slot: 48
  item:
    material: RED_STAINED_GLASS_PANE

    name: "&fCancel"
```

### SELL\_INVENTORY\_BUY

Description:

* Allows you to purchase inventory directly from the SELL\_SHOW inventory. Can only be used in the SELL\_SHOW inventory type.

Example:

```yaml
buy:
  type: SELL_INVENTORY_BUY
  slot: 48
  item:
    material: GREEN_STAINED_GLASS_PANE
    name: "&fBuy for &b%zauctionhouse_price% %zauctionhouse_currency%"
```

### CHANGE\_SORT

Description:

* Allows you to change the sort type for items, usable only in the AUCTION inventory type.

Example:

```yaml
informations:
  type: CHANGE_SORT
  slot: 49
  isPermanent: true
  item:
    material: NETHER_STAR
    name: "&fInformations"
    lore:
      - "&7&m-------------------------------------"
      - "&f&l» &7Welcome to the auction house"
      - "&f&l» &7it's a market where all the players"
      - "&f&l» &7can sell or buy items."
      - ""
      - "&f&l» &7To be able to sell items you must do"
      - "&f&l» &a/ah sell &7<&aprice&7> &8[&7<&fnumber of items&7>&8]"
      - ""
      - "&f&l» &7Number of items available&7: &b%zauctionhouse_counts%"
      - "&f&l» &7Sort type&7: &b%zauctionhouse_sorting%"
      - "&f&l» &7Click to &bchange &7the sort type"
      - "&7&m-------------------------------------" 
```

### REMOVE\_ALL

Description:

* Allows you to remove all items that are in the ITEMS, EXPIRE and BUYING inventory.

Example:

```yaml
removeall:
  type: REMOVE_ALL
  isPermanent: true
  item:
    material: BLUE_STAINED_GLASS_PANE
    name: "&cRemove all"
  slot: 45
```

### CATEGORIES

Description:

* Displays a button to access a category. Can only be used in the CATEGORIES inventory.

Example:

```yaml
block:
  type: CATEGORIES
  category: "blocks"
  item:
    material: GRASS_BLOCK
    name: "&fCategory: Block"
    lore:
      - "&f» &7There are &b%zauctionhouse_category_item_blocks% &7items in the blocks category."
  slot: 20
weapons:
  type: CATEGORIES
  category: "weapons"
  slot: 21  
  item:
    material: DIAMOND_SWORD
    name: "&fCategory: Weapons"
    lore:
      - "&f» &7There are &b%zauctionhouse_category_item_weapons% &7items in the blocks weapons."
```

* `category` Allows you to give the name of the category to be opened.

### BUY\_ITEM

Description:

* Allows to confirm the purchase of an item, usable only in the inventory BUY\_CONFIRM.

Example:

```yaml
buy1:
  type: BUY_ITEM
  item:
    material: GREEN_STAINED_GLASS_PANE
    name: "&aBuy"
  slot: 1
```

### REMOVE\_ITEM

Description:

* Allows you to confirm the cancellation of the sale of the item, usable only in the inventory REMOVE\_CONFIRM.

Example:

```yaml
remove1:
  type: REMOVE_ITEM
  item:
    material: GREEN_STAINED_GLASS_PANE
    name: "&aRemove"
  slot: 1  
```

### SHOW\_ITEM

Description:

* Displays the item to be purchased or remove, usable only in the inventory REMOVE\_CONFIRM and BUY\_CONFIRM.

Example:

```yaml
show:
  type: SHOW_ITEM
  slot: 13
```


# Placeholder buttons

With the inventory system you can create buttons with placeholders to check if the player has a certain value or not. So you can do this with zAuctionHouse:

## Check the number of expired items

Using the placeholder `%zauctionhouse_expired_item%` you can get the number of items that have expired for the player. So you can create a button like this:

```yaml
expireItems:
  type: INVENTORY
  slot: 45
  isPermanent: true
  inventory: "expire"
  placeHolder: "%zauctionhouse_expired_item%"
  value: 1
  action: SUPERIOR_OR_EQUAL
  item:
    material: CHEST
    name: "&fExpire items"
    lore:
      - "&f» &7You have &b%zauctionhouse_expired_item% &7expired items"
  else:
    slot: 45
    isPermanent: true
    type: NONE
    item:
     material: CHEST
     name: "&fExpire items"
     lore:
       - "&f» &7You have no pending items."
```

You will therefore have a check of greater or equal on the number obtained with the placeholder. For example, if the player has 5 expired items, there will be `5 > 1` then the button will be displayed normally. But if the player with 0 items expired, there will be `0 > 1` and the button in the `else` will be displayed.


