> This is part 1 of 2 of the full documentation (pages 1–100 of 177).
> The content is paginated: fetch every part to see all of it.
> Next part: https://docs.olziedev.com/llms-full.txt/1
> Page index: https://docs.olziedev.com/llms.txt

# Introduction

Welcome to the Olzie Development documentation, here you can find information, frequent asked questions and features about our projects.

## **Player Warps**

You can view the documentation of Player Warps [here](/projects/playerwarps) or view the resource [here](https://spigotmc.org/resources/115286).

## Player Auctions

You can view the documentation of Player Auctions [here](/projects/playerauctions) or view the resource [here](https://spigotmc.org/resources/83073).

## Player Economy

You can view the documentation of Player Economy [here](/projects/playereconomy) or view the resource [here](https://www.spigotmc.org/resources/110532).

## Player Businesses

You can view the documentation of Player Businesses [here](/projects/playerbusinesses) or view the resource [here](https://www.spigotmc.org/resources/112943/).

## Player Trade

You can view the documentation of Player Trade [here](/projects/playertrade) or view the resource [here](https://www.spigotmc.org/resources/113759/).

## Player Treasury

You can view the documentation of Player Treasury [here](/projects/playertreasury) or view the resource [here](https://www.spigotmc.org/resources/113763/).

## Player Elections

You can view the documentation of Player Elections [here](/projects/playerelections) or view the resource [here](https://www.spigotmc.org/resources/114903/).

## Night Market

You can view the documentation of Night Market [here](/projects/nightmarket) or view the resource [here](https://www.spigotmc.org/resources/111652/).

{% hint style="info" %}
**Still don't understand?**

Couldn't find what you was looking for? Well we have such a great community on our discord where you can ask for help. Join our discord [here](https://olziedev.com/support).
{% endhint %}

{% hint style="info" %}
**Like our projects?**

If you like our projects, please consider donating. It helps us a lot with maintaining our projects, online services and support. You can donate [here](https://olziedev.com/donate), all donations are appreciated!
{% endhint %}


# Player Auctions

Let your players sell/bid items, automatic category detection, cross-server support and more.

## **What does it do?**

Player Auctions grants players the ability to buy and sell items through an auction house. The plugin also supports item categories to make item-finding easier!

## **Plugin Requirements**

* [Vault](https://www.spigotmc.org/resources/34315/) (It'll still work even though it hasn't been updated to the latest version of MC)

## **Features**

Player Auctions contains support for other plugins, and unique features that other plugins doesn't contain! You can check a more detailed description of each feature for Player Auctions [here](https://docs.olziedev.com/projects/playerauctions/features).

## **Supported Plugins**

You can view the supported plugins Player Auctions supports [here](/projects/playerauctions/plugins), this will give you PlaceholderAPI placeholders and way more other plugins that are supported.

{% hint style="info" %}
**Want to request a feature?**

You can request a feature in our [discord ](https://olziedev.com/support)and we will be more than happy to implement it!
{% endhint %}

## Download

You can download the latest version of Player Auctions either on the resource page [here](https://spigotmc.org/resources/83073), or you can also download it from the Olzie Development website [here](https://cdn.olziedev.com/playerauctions/releases/).

## Development Builds

You can view our development builds [here](https://olziedev.com/projects/playerauctions/pre) or on our discord, there may be bugs and issues in the build so do not run the build on a public server until you know its 100% working.

If there is an issue with the build, you can report it in our discord server and we will fix it immediately.


# Commands & Permissions

Here you can view all the available commands and permissions for Player Auctions.

{% hint style="info" %}
**Command not working?**

The command needs to be enabled in the **config.yml** for it to function properly. If the issue still persists please report it.
{% endhint %}

## Player Commands (pa.commands)

| Command                                 | Description                                     | Permission            |
| --------------------------------------- | ----------------------------------------------- | --------------------- |
| /pa help                                | Displays this menu.                             | N/A                   |
| /pa sell \<price> \[currency] \[amount] | Sell an item.                                   | pa.limit.<#>          |
| /pa bid \<price>                        | Bid an item.                                    | pa.bid & pa.limit.<#> |
| /pa auction \[player] \[price]          | Auction via a GUI.                              | pa.auction            |
| /pa cancel \[id] \[player]              | Cancel your auctioning items.                   | pa.cancel             |
| /pa collect                             | Collect cancelled/expired items.                | pa.collect            |
| /pa amount \[player]                    | Check how many auctions you have.               | pa.amount             |
| /pa open \[menu] \[options]             | Opens the player menu.                          | pa.open               |
| /pa search \<query> \[options]          | Search for a item/player.                       | pa.search             |
| /pa blacklist add \[player]             | Blacklist a player from buying your auctions.   | pa.blacklist          |
| /pa blacklist remove \[player]          | Unblacklist a player from buying your auctions. | pa.blacklist          |
| /pa blacklist list                      | List of blacklisted players.                    | pa.blacklist          |

## Admin Commands

| Command                             | Description                    | Permission           |
| ----------------------------------- | ------------------------------ | -------------------- |
| /pa reload                          | Reloads all the config files.  | pa.admin.reload      |
| /pa addauctions \<player> \<amount> | Add more auctions to a player. | pa.admin.addauctions |

## Rest API Commands

| Command                          | Description               | Permission            |
| -------------------------------- | ------------------------- | --------------------- |
| /pa apitokens                    | Shows the help menu.      | pa.apitokens          |
| /pa apitokens delete \[player]   | Delete your API token.    | pa.apitokens.delete   |
| /pa apitokens generate \[player] | Generate a new API token. | pa.apitokens.generate |

{% hint style="info" %}
**Permissions not working?**

The <> in some permissions are placeholders, you will need to replace them with a valid value like requested.
{% endhint %}

## Player Permissions

| Permission           | Description                         |
| -------------------- | ----------------------------------- |
| pa.purchase          | Purchase an auction.                |
| pa.purchase.notify   | Get notified upon auction purchase. |
| pa.amount.others     | View other players' auction amount. |
| pa.recent.remove     | Remove recent auctions in the GUI.  |
| pa.cooldown.bid      | Bypass auction bidding cooldown.    |
| pa.cooldown.sell     | Bypass auction selling cooldown.    |
| pa.cooldown.purchase | Bypass auction purchasing cooldown. |
| pa.cooldown.offer    | Bypass bid offering cooldown.       |

## Admin Permissions

| Permission             | Description                                            |
| ---------------------- | ------------------------------------------------------ |
| pa.admin.cancel        | Cancel another player's auction                        |
| pa.admin.update        | When a player joins they receive update notifications. |
| pa.admin.open          | Use open options for opening a menu.                   |
| pa.admin.expire        | Auctions do not expire.                                |
| pa.admin.collectrecent | Collect items from the recent auctions GUI.            |
| pa.admin.apitokens     | Remove/Generate other players' API tokens.             |

## Open Options Syntax

Open options are an easy way for you to change how the open command is processed, here are the latest options and examples for Player Auctions.

| Option  | Description                                           | Example             |
| ------- | ----------------------------------------------------- | ------------------- |
| player  | Open the menu for that player.                        | -player NotchIsCool |
| view    | View the menu as that player.                         | -view Olzie12       |
| search  | Add a search input to the search menu for the player. | -search "diamond"   |
| auction | Define specific auction for specific auction menus.   | -auction 21         |

With the examples shown above this is how its used in the command:`/pa open <menu> -player NotchIsCool -view Olzie12`. This will open the menu for NotchIsCool but the contents of the menu will be viewed as Olzie12, this is good for checking other players auctions in a menu.

Another example: `/pa open <menu> -view Olzie12`. This will open the menu for the executor (if it isn't console) and will be viewing it as Olzie12.

I mentioned above with the console executor, yes using the command in console will always need the `player` option to open it for that player.

For players to be able to use this, they will need `pa.admin.open` and is not suggested to give this to any normal player as they can just view menus as other players and edit their auctions.

Using the `search` option allows you to automatically enter a search input when a menu (that allows searching) has been opened, there isn't a required permission like all the others. You will need to surround the value in speech marks. For example `/pa open <search menu> -search "farm`". This will search for any auctions containing as its item `"diamond"`.


# Configuration

Here you can view all the configuration and options for Player Auctions.

## **Plugin Files**

Here are the latest plugin files, the plugin should automatically generate/update the files. If the plugin hasn't generated them make sure you've got the plugin requirements listed [here](/projects/playerauctions#plugin-requirements). If you want to test your YAML syntax you can test it [here](https://yaml-online-parser.appspot.com).

Your plugin will automatically update when there is a needed configuration update, you cannot turn this off and is added to prevent errors on your plugin if you have any missing configuration options.

The plugin connects to my webserver, if this webserver is offline or your plugin cannot access it, then the configuration files may not be updated or downloaded.

{% hint style="info" %}
[**config.yml - Change all the plugin options**](https://cdn.olziedev.com/playerauctions/configuration/config.yml)
{% endhint %}

{% hint style="info" %}
[**lang/ - Change all the plugin messages**](https://cdn.olziedev.com/playerauctions/configuration/lang/)
{% endhint %}

{% hint style="info" %}
[**guis/ - Change all the menu options/design**](https://cdn.olziedev.com/playerauctions/configuration/guis/)
{% endhint %}

{% hint style="info" %}
[**expansions.yml - Modify the expansions**](https://cdn.olziedev.com/playerauctions/configuration/expansions.yml)
{% endhint %}

## Command Actions

Command actions are an easy way you to customize and execute all sorts of functions when an event is triggered, here are the latest command actions for Player Auctions.

| Action          | Description                                                                                            | Example                                                                                                                                                                                                                                                           |
| --------------- | ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| player          | Execute a command as the player.                                                                       | \[player] spawn                                                                                                                                                                                                                                                   |
| message         | Send a message to the player.                                                                          | \[message] \&aHello!                                                                                                                                                                                                                                              |
| broadcast       | Send a message to all online players.                                                                  | \[broadcast] \&aHello World!                                                                                                                                                                                                                                      |
| perm\_broadcast | <p>Broadcast a message to</p><p>players with the permission.</p>                                       | \[perm\_broadcast] message.view \&aHello!                                                                                                                                                                                                                         |
| title           | Send a title to the player.                                                                            | \[title] 20 60 20 \&aHello\n\&aWorld!                                                                                                                                                                                                                             |
| action\_bar     | Send an action bar message to the player.                                                              | \[action\_bar] \&aHello!                                                                                                                                                                                                                                          |
| player\_loop    | Loop through all online players and execute an action.                                                 | \[player\_loop] \[player] spawn                                                                                                                                                                                                                                   |
| server          | Execute a command as the server.                                                                       | \[server] spawn %player%                                                                                                                                                                                                                                          |
| command\_event  | Execute a unregistered command as the player.                                                          | \[command\_event] menu                                                                                                                                                                                                                                            |
| chat\_wait      | Wait for the user to enter a value in chat.                                                            | \[chat\_wait] \&aEnter a number:\[message] \&aYou said %value%                                                                                                                                                                                                    |
| chat\_wait      | Wait for the user to enter a value in chat, but removes the color from the chat input with **!color**. | \[chat\_wait] \&aEnter a number:\[message] **!color** \&aYou said %value%                                                                                                                                                                                         |
| add\_money      | Give a player money.                                                                                   | \[add\_money] 500                                                                                                                                                                                                                                                 |
| take\_money     | Take money from a player.                                                                              | \[take\_money] 500                                                                                                                                                                                                                                                |
| take\_perm      | Take a permission away from a player.                                                                  | \[take\_perm] message.view                                                                                                                                                                                                                                        |
| give\_perm      | Give a permission to a player                                                                          | \[give\_perm] message.view                                                                                                                                                                                                                                        |
| sound           | Play a sound to the player.                                                                            | <p>\[sound] <a href="https://javadocs.olziedev.com/spigot/latest/org/bukkit/Sound.html#AMBIENT_CAVE">AMBIENT\_CAVE</a></p><p>\[sound] <a href="https://javadocs.olziedev.com/spigot/latest/org/bukkit/Sound.html#AMBIENT_CAVE">AMBIENT\_CAVE </a>volume pitch</p> |
| close           | Close the inventory of the player.                                                                     | \[close]                                                                                                                                                                                                                                                          |

### Action Tags

You can also add action tags that modify how the action is executed, you can use it in your command action like this `[ACTION<TAG=value>]`.

| Tag        | Description                                           | Example                                                                                                            |
| ---------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| delay      | Execute the action later in ticks.                    | \[broadcast\<delay=20>] \&aHello World                                                                             |
| permission | Execute the action only if the player has permission. | \[add\_money\<permission=pa.donator>] 1000                                                                         |
| condition  | Execute the action only if the value matches.         | <p>\[add\_money\<condition=%player\_name%=Notch>] 1000<br>\[add\_money\<condition=%player\_name%!=Notch>] 1000</p> |
| vanished   | Execute the action if the player is in vanish or not. | \[broadcast\<vanished=false>] This player is not in vanish!                                                        |

## Requirements

Player Auctions supports certain requirements in the configuration, where certain requirements needs to be met for something to happen.

When requirements are created in the config, you will always have 3 default values that is available for every requirement. Here is a list and explaination of what they do.

| Option   | Description                                                                                                                                                                |
| -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| inverted | If the value doesn't get met, then the outcome is successful. Inverted is disabled by default.                                                                             |
| cached   | If the value should be cached, this is useful if you've got a lot of requirements and do not want to constantly check for the same outcome. Caching is enabled by default. |
| type     | The type of the requirement, you can view all the requirement types below.                                                                                                 |

Please note if multiple requirements are created under one section, it will evaluate the requirements in order, if a requirement is not met then it the outcome will not be successful. Multiple requirements can return a successful outcome.

Here is a list of all the avaliable requirement types:

### Has permission

This requirement checks if the player has the permission.

Here is an example on how to use the has permission requirement, below in the example the player needs the permission "requirement.test"

```yaml
    1:
      inverted: false
      cached: true
      permission: "requirement.test"
      type: has permission
```

### Has money

This requirement checks if the player has the money.

Here is an example on how to use the has money requirement, below in the example the player needs $100

```yaml
    1:
      inverted: false
      cached: true
      amount: 100
      type: has money
```

### String equals

This requirement checks if the input equals to the output.

Here is an example on how to use the string equals requirement, below in the example the output needs to equal "Notch"

```yaml
    1:
      inverted: false
      cached: true
      input: "%player_name%"
      output: "Notch"
      type: string equals
```

## Color & Hex Color

Player Auctions supports color codes that you can use literally everywhere possible that is displayed to the player. If you don't know the color codes off by heart, you can view them [here](https://htmlcolorcodes.com/bukkit-color-codes/).

Player Auctions also supports the 1.16+ hex colors, with the current format `{#HEX_CODE}` with the following example `{#f5a142}` This shows a nice orange color. You can also use this [here](https://g.co/kgs/h4CeKb), to get your hex colors.

When using hex colors, you can also make cool looking gradients using 2 or more hex color codes. You can create gradients using these examples:

* `{#f5a142:#ffffff}` - This goes from a nice orange color then slowly fades into white.
* `{#f5a142:#ffffff:#0000ff}` - This goes from a nice orange color, then fades into white then slowly fades into blue.

## External Sources

You may want to use some external links to help you when configurating Player Auctions.

### Material Types

Here is a list of all of the valid materials that you can use to create items in Player Auctions for each version of Minecraft.

* [1.8.8](https://javadocs.olziedev.com/spigot/1.8.8/org/bukkit/Material.html)
* [1.9.4](https://javadocs.olziedev.com/spigot/1.9.4/org/bukkit/Material.html)
* [1.10.2](https://javadocs.olziedev.com/spigot/1.10.2/org/bukkit/Material.html)
* [1.11.2](https://javadocs.olziedev.com/spigot/1.11.2/org/bukkit/Material.html)
* [1.12.2](https://javadocs.olziedev.com/spigot/1.12.2/org/bukkit/Material.html)
* [1.13.2](https://javadocs.olziedev.com/spigot/1.13.2/org/bukkit/Material.html)
* [1.14.4](https://javadocs.olziedev.com/spigot/1.14.4/org/bukkit/Material.html)
* [1.15.2](https://javadocs.olziedev.com/spigot/1.15.2/org/bukkit/Material.html)
* [1.16.5](https://javadocs.olziedev.com/spigot/1.16.5/org/bukkit/Material.html)
* [1.17.1](https://javadocs.olziedev.com/spigot/1.17.1/org/bukkit/Material.html)
* [1.18.2](https://javadocs.olziedev.com/spigot/1.18.2/org/bukkit/Material.html)
* [1.19.4](https://javadocs.olziedev.com/spigot/1.19.4/org/bukkit/Material.html)
* [1.20.6](https://javadocs.olziedev.com/spigot/1.20.6/org/bukkit/Material.html)
* [1.21.4](https://javadocs.olziedev.com/spigot/1.21.4/org/bukkit/Material.html)
* [Latest](https://javadocs.olziedev.com/spigot/latest/org/bukkit/Material.html)

### Sound Types

Here is a list of all the valid sound types that you can use to create cool sound effects in Player Auctions for each version of Minecraft.

* [1.8.8](https://javadocs.olziedev.com/spigot/1.8.8/org/bukkit/Sound.html)
* [1.9.4](https://javadocs.olziedev.com/spigot/1.9.4/org/bukkit/Sound.html)
* [1.10.2](https://javadocs.olziedev.com/spigot/1.10.2/org/bukkit/Sound.html)
* [1.11.2](https://javadocs.olziedev.com/spigot/1.11.2/org/bukkit/Sound.html)
* [1.12.2](https://javadocs.olziedev.com/spigot/1.12.2/org/bukkit/Sound.html)
* [1.13.2](https://javadocs.olziedev.com/spigot/1.13.2/org/bukkit/Sound.html)
* [1.14.4](https://javadocs.olziedev.com/spigot/1.14.4/org/bukkit/Sound.html)
* [1.15.2](https://javadocs.olziedev.com/spigot/1.15.2/org/bukkit/Sound.html)
* [1.16.5](https://javadocs.olziedev.com/spigot/1.16.5/org/bukkit/Sound.html)
* [1.17.1](https://javadocs.olziedev.com/spigot/1.17.1/org/bukkit/Sound.html)
* [1.18.2](https://javadocs.olziedev.com/spigot/1.18.2/org/bukkit/Sound.html)
* [1.19.4](ttps://javadocs.olziedev.com/spigot/1.19.4/org/bukkit/Sound.html)
* [1.20.6](https://javadocs.olziedev.com/spigot/1.20.6/org/bukkit/Sound.html)
* [1.21.4](https://javadocs.olziedev.com/spigot/1.21.4/org/bukkit/Sound.html)
* [Latest](https://javadocs.olziedev.com/spigot/latest/org/bukkit/Sound.html)

### Item Flags

Here is a list of all the valid item flags that you can use on your items in Player Auctions for each version of Minecraft.

* [1.8.8](https://javadocs.olziedev.com/spigot/1.8.8/org/bukkit/inventory/ItemFlag.html)
* [1.9.4](https://javadocs.olziedev.com/spigot/1.9.4/org/bukkit/inventory/ItemFlag.html)
* [1.10.2](https://javadocs.olziedev.com/spigot/1.10.2/org/bukkit/inventory/ItemFlag.html)
* [1.11.2](https://javadocs.olziedev.com/spigot/1.11.2/org/bukkit/inventory/ItemFlag.html)
* [1.12.2](https://javadocs.olziedev.com/spigot/1.12.2/org/bukkit/inventory/ItemFlag.html)
* [1.13.2](https://javadocs.olziedev.com/spigot/1.13.2/org/bukkit/inventory/ItemFlag.html)
* [1.14.4](https://javadocs.olziedev.com/spigot/1.14.4/org/bukkit/inventory/ItemFlag.html)
* [1.15.2](https://javadocs.olziedev.com/spigot/1.15.2/org/bukkit/inventory/ItemFlag.html)
* [1.16.5](https://javadocs.olziedev.com/spigot/1.16.5/org/bukkit/inventory/ItemFlag.html)
* [1.17.1](https://javadocs.olziedev.com/spigot/1.17.1/org/bukkit/inventory/ItemFlag.html)
* [1.18.2](https://javadocs.olziedev.com/spigot/1.18.2/org/bukkit/inventory/ItemFlag.html)
* [1.19.4](https://javadocs.olziedev.com/spigot/1.19.4/org/bukkit/inventory/ItemFlag.html)
* [1.20.6](https://javadocs.olziedev.com/spigot/1.20.6/org/bukkit/inventory/ItemFlag.html)
* [1.21.4](https://javadocs.olziedev.com/spigot/1.21.4/org/bukkit/inventory/ItemFlag.html)
* [Latest](https://javadocs.olziedev.com/spigot/latest/org/bukkit/inventory/ItemFlag.html)

### Enchantments

Here is a list of all the valid item enchantments that you can use on your items in Player Auctions for each version of Minecraft.

* [1.8.8](https://javadocs.olziedev.com/spigot/1.8.8/org/bukkit/enchantments/Enchantment.html)
* [1.9.4](https://javadocs.olziedev.com/spigot/1.9.4/org/bukkit/enchantments/Enchantment.html)
* [1.10.2](https://javadocs.olziedev.com/spigot/1.10.2/org/bukkit/enchantments/Enchantment.html)
* [1.11.2](https://javadocs.olziedev.com/spigot/1.11.2/org/bukkit/enchantments/Enchantment.html)
* [1.12.2](https://javadocs.olziedev.com/spigot/1.12.2/org/bukkit/enchantments/Enchantment.html)
* [1.13.2](https://javadocs.olziedev.com/spigot/1.13.2/org/bukkit/enchantments/Enchantment.html)
* [1.14.4](https://javadocs.olziedev.com/spigot/1.14.4/org/bukkit/enchantments/Enchantment.html)
* [1.15.2](https://javadocs.olziedev.com/spigot/1.15.2/org/bukkit/enchantments/Enchantment.html)
* [1.16.5](https://javadocs.olziedev.com/spigot/1.16.5/org/bukkit/enchantments/Enchantment.html)
* [1.17.1](https://javadocs.olziedev.com/spigot/1.17.1/org/bukkit/enchantments/Enchantment.html)
* [1.18.2](https://javadocs.olziedev.com/spigot/1.18.2/org/bukkit/enchantments/Enchantment.html)
* [1.19.4](https://javadocs.olziedev.com/spigot/1.19.4/org/bukkit/enchantments/Enchantment.html)
* [1.20.6](https://javadocs.olziedev.com/spigot/1.20.6/org/bukkit/enchantments/Enchantment.html)
* [1.21.4](https://javadocs.olziedev.com/spigot/1.21.4/org/bukkit/enchantments/Enchantment.html)
* [Latest](https://javadocs.olziedev.com/spigot/latest/org/bukkit/enchantments/Enchantment.html)


# Item Configuration

Here you can view all the configuration, examples and options for creating items in Player Auctions.

## Item Creation

In Player Auctions you customize the items that are displayed in the menu, how they are displayed and what they do, there are a lot of item tags for you to be able to accomplish this.

### Item Material

When creating an item, you will always need to provide a material type, material type is just what the item is. Make sure when using item materials, they're all capitals and they are a correct material from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/Material.html).

Make sure the material you're using from the list, exists in your Minecraft version otherwise the item will not be shown in the menu. If you're using a Minecraft version lower than 1.13, you may want to also check out [Item Data](#item-data).

Here is an example on how to use materials, below in the example it will show a diamond sword in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   amount: 1
   slot: 0
```

Alternatively, if you are either using [ItemsAdder](https://www.spigotmc.org/resources/73355/), [Oxraen](https://www.spigotmc.org/resources/72448/) or [Nexo](https://docs.nexomc.com/), you can easily use their custom items by using the following format.

```yaml
# ItemsAdder:
1:
  material: itemsadder-bananna
  slot: 0
# Oraxen:
2:
  material: oraxen-pear
  slot: 0
# Nexo:
3:
  material: nexo-apple
  slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-65615f44b68ae421a07a373a8d1c831fc263a383%2Fimage.png?alt=media)

### Item Data

When creating an item in Minecraft versions **1.12 and below**, you may need to provide an item data type to correspond to the item you want. These item data types are usually used when you have multiple types or states of one block for example stained glass, you have multiple colors of this glass.

If you need to get the item data, you can use `F3+H` in game to enable advanced tooltips, then you will be able to view the item data type after the / like shown below.

![The item above shows an item id of 2.](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-12019be2b16b63a0a1e39db0ad9a607c98cbd366%2Fimage.png?alt=media)

You can also use item data to specify the damage value of the item as well, this will only work if the item can actually be damaged though.

Here is an example on how to use materials with item data values, below in the example it will show a magenta stained glass pane in the menu.

#### Configuration Example

```yaml
1:
   material: STAINED_GLASS_PANE
   data: 2
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-0ccae6b97eef538c35a5deec7137ddb604c758a9%2Fimage.png?alt=media)

### Item Amount

When creating an item, you will need to specify the amount you want to be displayed in the menu. If you do not specify any amount, the default will be thus making it not showing in the menu.

You cannot exceed over the maximum stack size of the menu, which is `64`, the number will also need to be a positive number as well.

### Item Display Name

When creating an item, you can modify the item name that is displayed when you hover over the item. With display names you may also have color codes in the name as well to make it stand out in the menu.

Here is an example on how to use item names, below in the example it will show a diamond sword with the name as `Knife` as red in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   name: "&cKnife"
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-4154625c49b4da6d2e720930a42e0198194be542%2Fimage.png?alt=media)

### Item Custom Name

When creating an item, you can modify the custom name of the actual item, this is different from the display name as this is the actual name of the item. This is used for plugins that use custom items and need to identify them.

Here is an example on how to use item custom names, below in the example it will show a diamond sword with the custom name as `Knife` in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   custom-name: "Knife"
   amount: 1
   slot: 0
```

### Item Lore

When creating an item, you can have a description in your item so when you hover over the item it will show the description below the item name. With lores you can have color codes and have multiple lines in the description as well.

The color will not go onto the next line so you will also need to put it on the other lines as well.

Here is an example on how to use item lores, below in the example it will show a diamond sword with the 1st line as `This is a item`, with the color blue with the second line as `description example.` with the color blue again in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   lore: 
     - "&bThis is a item"
     - "&bdescription example."
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-e9b5b45bfce25d97cce70c047bfca69cc31f9350%2Fimage.png?alt=media)

### Item Glowing

When creating an item, you can give the item a glowing affect, it gives the item an invisible enchantment that you cannot see and makes your menu look more shiny.

Here is an example on how to use the glowing affect, below in the example it will show a glowing diamond sword in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   glowing: true
   amount: 1
   slot: i
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-3f561c01f03359e53f6f495dc2839483ad8dc86e%2Fimage.png?alt=media)

### Skull Owner

When creating player heads, you can give the player head an owner. The owner of player head will be the skin of the head, you can put any players name as the owner or you could put `[owner]` for it to set the skulls owner as the player that is viewing the menu.

Remember, when creating player heads its different in **1.13 and 1.12 and below**. If you're using 1.12 and below please make sure the data value is 3 and the material is `SKULL`, if you're using 1.13 you will not need a data value and the material will be `PLAYER_HEAD`

Here is an example on how to create player heads with an owner, below in the example it will show a skull with my skin as I'm viewing the menu.

#### Configuration Example

```yaml
1: # Example for 1.13+
   material: PLAYER_HEAD
   owner: [owner]
   amount: 1
   slot: 0
2: # Example for 1.12-
   material: SKULL_ITEM
   owner: [owner]
   data: 3
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-b41f629e05b1a086048c48d57758e23c48155dfc%2Fimage.png?alt=media)

### Skull Texture

When creating player heads, you can give the player head a texture. Unlike the skull owners, an existing player has to have that skin textures don't and you can create and use some awesome looking skulls.

There are loads of sites you can get the Base64 texture from like [here](https://minecraft-heads.com/custom-heads) and then copy the value field for your texture.

Here is an example on how to create player heads with a texture, below in the example it will show a skull with as a computer.

#### Configuration Example

```yaml
1: # Example for 1.13+
   material: PLAYER_HEAD
   texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTc4Mjk1ZThlYzEwZjlmYmEzZjBjN2IxMTRkMzM0OTkyYjAzZjRlMjNmODA2NDc2NmVlNDM0ZGRjZGExMjdmMSJ9fX0=
   amount: 1
   slot: 0
2: # Example for 1.12-
   material: SKULL_ITEM
   texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTc4Mjk1ZThlYzEwZjlmYmEzZjBjN2IxMTRkMzM0OTkyYjAzZjRlMjNmODA2NDc2NmVlNDM0ZGRjZGExMjdmMSJ9fX0=
   data: 3
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-6aacc9a4698e6a358ed505321aeda97f9029649d%2Fimage.png?alt=media)

### Potion Data

When creating potions, you can select any type of potion material. For example `SPASH_POTION`, `POTION`, `LINGERING_POTION`, `TIPPED_ARROW`

A potion will also need the effect, duration and the amplifier.\
The effect of potion is what is given to you when the potion is splashed. You can view all the potion effect names [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/potion/PotionEffectType.html).\
The amplifier is how strong the potion is, remember this starts from `0!`\
The duration is how long the potion lasts, this is measured in ticks `(20 ticks = 1 second)` and not seconds!

You can also add underlying potion type, this will not give the effect. But instead changes the item displayed. Remeber potion effect types are not potion types. You can find a list of potion types [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/potion/PotionType.html)

Here is an example on how to create potions, below in the example it will show a splash potion with speed 2 lasting for 2 seconds.

#### Configuration Example

```yaml
1:
   material: SPLASH_POTION
   effect: SPEED
   amplifier: 1
   duration: 40
   amount: 1
   slot: 0
2:
   material: TIPPED_ARROW
   potion: SPEED
   replaced: false
   extended: false
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-10de8f1f20c88f4394efcc153dd316726b43d37a%2Fimage.png?alt=media)

### Banner Data

When creating banners, you may want to be able to add dye color and patterns. To view the full list of dyes you can use are from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/DyeColor.html). To view the full list of patterns you can use are from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/block/banner/PatternType.html).

Here is an example on how to use banner data, below in the example it will show a black banner with a red border.

#### Configuration Example

```yaml
1: # Example for 1.13+
   material: BLACK_BANNER
   patterns:
     1:
       dye: RED
       pattern: BORDER
   amount: 1
   slot: 0
2: # Example for 1.12-
   material: BANNER
   patterns:
     1:
       dye: RED
       pattern: BORDER
   data: 0
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

<figure><img src="https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-22dc09ea7ba2f31ce5c221ef024766d4ad8ce10e%2Fimage%20(6)-4.png?alt=media" alt=""><figcaption></figcaption></figure>

### Armor Color

When creating items that are armor, depending on the type of armor you can add color to it! As of right now you can only add color to Leather. When adding the color make sure u use the RGB format. You can use an RGB picker [here](https://g.co/kgs/Tct6MN).

#### Configuration Example

```yaml
1:
   material: LEATHER_BOOTS
   color: "252, 186, 3"
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

<figure><img src="https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2FtqIl6mbUbM8bzcphLXq1%2Fimage.png?alt=media&amp;token=604e5b81-6476-4c69-a279-951ce729b8b4" alt=""><figcaption></figcaption></figure>

### Armor Trim

When creating items that are armor, you can add armor trims to the armor. You can use the default trims provided by Minecraft or you can add your own!

Here is an example on how to use armor trims, below in the example it will show a diamond helmet with the quartz sentry trim. If you wish to use your own you will need to provide your namespace and id separated by a colon, for example `myplugin:mytrim`.

**Configuration Example**

```yml
1:
  material: DIAMOND_HELMET
  trim-material: "QUARTZ"
  trim-pattern: "SENTRY"
  amount: 1
  slot: 0
```

### Item Flags

When creating items, you can disable the item flags for the item so it doesn't show information that you may not want to show when hovering over the item. Make sure when using item flags, they're all capitals and they are a correct flag from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/inventory/ItemFlag.html).

Here is an example on how to use item flags, below in the example it will show a diamond sword in the menu without the `When in main hand:` in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   item-flags:
     - "HIDE_ATTRIBUTES"
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-ab0250d887f1cc4f19675a791bb1e4398585343d%2Fimage.png?alt=media)

### Item Enchantments

When creating an item, you can add enchantments and what level of those enchantments on that item. Make sure when you're adding enchantments, they're all capitals and they are an enchantment from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/enchantments/Enchantment.html).

Here is an example on how to use enchantments, below in the example it will show a diamond sword in the menu with the unbreaking level 1 enchantment.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   enchantments:
     - "DURABILITY:1"
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-eaf2c8518a1841358661dcfdc93851b7d45523ba%2Fimage.png?alt=media)

### Item Storage Enchantments

When creating an enchantable book, you can add enchantments and what level of those enchantments on that book. Make sure when you're adding enchantments, they're all capitals and they are an enchantment from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/enchantments/Enchantment.html).

Here is an example on how to use enchantments, below in the example it will show a enchanted book in the menu with the unbreaking level 1 enchantment.

#### Configuration Example

```yaml
1:
   material: ENCHANTED_BOOK
   stored-enchantments:
     - "DURABILITY:1"
   amount: 1
   slot: 0
```

### Item Commands

When creating an item, you may want the item to execute a type of action when left or right clicking the item. You can view the command actions and how to use them [here](/projects/playerauctions/configuration#command-actions).

Here is an example on how to use item commands, below in the example it will show a diamond sword in the menu and when you click on it it'll say hey in chat.

#### Configuration Example

```yaml
1: # Only listening for right click
   material: DIAMOND_SWORD
   right-commands:
     - "[message] hey"
   amount: 1
   slot: 0
2: # Only listening for left click
   material: DIAMOND_SWORD
   left-commands:
     - "[message] hey"
   amount: 1
   slot: 0
3: # Listening for both
   material: DIAMOND_SWORD
   commands:
     - "[message] hey"
   amount: 1
   slot: 0
```

Here is a preview of what the above example how it works in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-de3db9dd5399a625ab551072178b0a03e8c14081%2Fezgif.com-gif-maker.gif?alt=media\&token=4380e9a9-2030-4175-9a54-62ccae7d0714)

### Item NBT Data

When creating an item, you can specify NBT item tags for your item for whatever reason. NBT tags have two parts, the token and the value.

Here is an example on how to use item NBT data, below in the example it will show a diamond sword in the menu with a NBT data string named `Sword` and the value being `Awesome`.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   nbt-data:
     - "Sword:Awesome"
   amount: 1
   slot: 0
```

### Item Custom Model Data

When creating an item, you may want the item be displayed as a texture from your texture pack.

Here is an example on how to use item custom model data, below in the example it will show a diamond sword in the menu with a custom model data of `1`.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   custom-model-data: 1
   amount: 1
   slot: 0
```

### Item Custom Model Data Component

When creating an item, you may want the item be displayed as a texture from your texture pack. This uses more of a modern version of the CustomModelData API.

Here is an example on how to use item custom model data, below in the example it will show a diamond sword in the menu with a custom model data of `1`.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   custom-model-data-component:
     colors: [""]
     flags: [""]
     floats: [""]
     strings: ["1"]
   amount: 1
   slot: 0
```

### Item Model

When creating an item, you may want the item be displayed as a model from your texture pack.

Item Models use NamespacedKeys which are in the format of `namespace:key`. Here is an example on how to use item models, below in the example it will show a diamond sword in the menu with a model of `playerauctions:diamond_sword_1`.

#### Configuration Example

```yaml
1:
  material: DIAMOND_SWORD
  item-model: "playerauctions:diamond_sword_1"
  amount: 1
  slot: 0
```

### Item Tooltip Style

When creating an item, you may want the item tooltip style from your texture pack.

Item Tooltip styles use NamespacedKeys which are in the format of `namespace:key`. Here is an example on how to use tooltip styles, below in the example it will show a diamond sword in the menu with a tooltip style of `playerauctions:diamond_sword_1`.

#### Configuration Example

```yaml
1:
  material: DIAMOND_SWORD
  tooltip-style: "playerauctions:diamond_sword_1"
  amount: 1
  slot: 0
```

### Item Hide Tooltip

When creating an item, you may want to completely hide the tooltips.

Here is an example on how to hide the tooltip.

#### Configuration Example

```yaml
1:
  material: DIAMOND_SWORD
  hide-tooltip: true
  amount: 1
  slot: 0
```

### Item Unbreakable

When creating an item with damage, you may want the durability status to be removed from the tooltip on the item if some players have the setting "Item Tooltips" enabled.

Here is an example on how to use unbreakable.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   unbreakable: true
   amount: 1
   slot: 0
```

### Item Slot

When creating an item, you will need to specify a slot of where your item will be in the menu. Item slots always start from 0, meaning slot 0 will be slot 1 in the menu.

Slots can only be 0 to the menu size - 1, for example if your menu size is 27, it'll be 0-26. There are 3 different ways on how you can specify slots in the configuration.

Here is an example on how to use item slots, below in the example it will show a diamond sword in the slots `0, 1, 2, 3, 4, 5, 6, 7, 8` of the menu.

If you wish to remove an existing item from the inventory, but you want to keep it in the file. You can set the slot to `-1` to remove it from the menu.

#### Configuration Example

<pre class="language-yaml"><code class="lang-yaml">1: # Using the slot range system
   material: DIAMOND_SWORD
   slot: 0-8
   amount: 1
2: # Using the slot list system
   material: DIAMOND_SWORD
   slot: [0, 1, 2, 3, 4, 5, 6, 7, 8]
   amount: 1
3: 
  # Using the manual slot system, then repeat this 7 more 
<strong>  # times but with a different slot number. (very painful)
</strong>   material: DIAMOND_SWORD
   slot: 0
   amount: 1
</code></pre>

### Item View Requirements

When creating an item, you can add certain requirements to only view the item. If the requirement does not meet then it will not show the item. If the requirement is met, it will show the item.

View more information about requirements [here](/projects/playerauctions/configuration#requirements).

Here is an example on how to use the item view requirements, below in the example the player needs the permission "item.view" to see the item.

#### Configuration Example

```yaml
1:
  material: DIAMOND_SWORD
  amount: 1
  slot: 0
  view-requirements:
    1:
      inverted: false
      cached: true
      permission: "item.view"
      type: has permission
```

### Item Click Requirements

When creating an item, you can add certain requirements to only click the item. If the requirement does not meet then it will not allow the item to be clicked and execute deny commands. If the requirement is met, it will allow the item to be clicked and execute success commands. Note, it will also execute the item commands if successful.

View more information about requirements [here](/projects/playerauctions/configuration#requirements).

Here is an example on how to use the item click requirements, below in the example the player needs the permission "item.click" to click the item.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   commands:
     - "[message] hey"
   amount: 1
   slot: 0
   click-requirements:
     1:
       inverted: false
       cached: true
       permission: "item.click"
       type: has permission
       deny-commands:
         - "[message] you don't have permission"
       success-commands:
        - "[message] you have permission"
```

## Item Placeholders


# Menu Configuration

Here you can view all the configuration, examples and options for creating menus in Player Auctions.

## Menu Creation

In Player Auctions you customize the menus that are provided by the plugin, please note that you cannot create new menus that aren't already provided by the plugin. You can change how the menu is displayed and how it works.

Please note all the menu tags show here aren't ALL the tags, but the basic & default tags for all menus. Some menus may add more tags, these are added to the config by default.

### Menu Size

When creating a menu, you need to specify the size of the menu. You need to specify multiples of 9 only as each of a chest is 9 slots. The maximum of slots you can have is 54 (9\*6) 6 being the max of rows.

Here is an example on how to use the menu size, below in the example the size of the menu contains 27 slots and will be 3 rows.

#### Configuration Example

```yaml
menu: # The menu name goes here, you cannot change this.
  size: 27 # The size of the menu, must be a multiple of 9.
```

### Menu Title

When creating a menu, you need to specify the title of the menu. You may use color codes in your title. You cannot have multiple lines in a title, this is a limitation of Minecraft.

Please note server version 1.17.10 does limit titles to be 32 characters including color codes.

Here is an example on how to use the menu title, below in the example the title of the menu will be "My lovely menu" in aqua.

#### Configuration Example

```yaml
menu: # The menu name goes here, you cannot change this.
  size: 27 # The size of the menu, must be a multiple of 9.
  title: "&bMy lovely menu" # The title of the menu.
```

### Menu enabled/disabled

When managing menus, you can either enable or disable this menu so its not able to be opened at all.

Here is an example on how to use the menu enable/disable, below in the example the status of the menu is enabled.

#### Configuration Example

```yaml
menu: # The menu name goes here, you cannot change this.
  size: 27 # The size of the menu, must be a multiple of 9.
  title: "&bMy lovely menu" # The title of the menu.
  enabled: true # If the menu is disabled or not.
```

### Menu Open Actions

When opening a menu, you can execute commands to happen. This happens after the menu has been opened. You can view the command actions and how to use them [here](/projects/playerauctions/configuration#command-actions).

Here is an example on how to use the menu open actions, below in the example it it'll say hey in chat when the menu is opened.

```yaml
menu: # The menu name goes here, you cannot change this.
  size: 27 # The size of the menu, must be a multiple of 9.
  title: "&bMy lovely menu" # The title of the menu.
  enabled: true # If the menu is disabled or not.
  open-actions: # the actions when this menu is opened up
    - "[message] hey"
```

### Menu Close Actions

When closing a menu, you can execute commands to happen. This happens after the menu has been closed. You can view the command actions and how to use them [here](/projects/playerauctions/configuration#command-actions).

Here is an example on how to use the menu close actions, below in the example it it'll say hey in chat when the menu is closed.

```yaml
menu: # The menu name goes here, you cannot change this.
  size: 27 # The size of the menu, must be a multiple of 9.
  title: "&bMy lovely menu" # The title of the menu.
  enabled: true # If the menu is disabled or not.
  open-actions: # the actions when this menu is opened
    - "[message] hey"
  close-actions: # the actions when this menu is closed
    - "[message] hey"
```

### Menu Open Requirements

When opening a menu, you can add certain requirements to only open the menu. If the requirement does not meet then it will not open the menu and execute denied commands. If the requirement is met, it will open the menu and execute success commands. Note, it will also execute the open actions if successful.

View more information about requirements [here](/projects/playerauctions/configuration#requirements).

Here is an example on how to use the menu open requirements, below in the example the player needs the permission "menu.open" to open the menu

<pre class="language-yaml"><code class="lang-yaml">menu: # The menu name goes here, you cannot change this.
  size: 27 # The size of the menu, must be a multiple of 9.
  title: "&#x26;bMy lovely menu" # The title of the menu.
  enabled: true # If the menu is disabled or not.
  open-actions: # the actions when this menu is opened
    - "[message] hey"
  close-actions: # the actions when this menu is closed
    - "[message] hey"
  open-requirements:
<strong>    1:
</strong>      inverted: false
      cached: true
      permission: "menu.open"
      type: has permission
      deny-commands:
        - "[message] you don't have permission"
      success-commands:
        - "[message] you have permission"
</code></pre>


# Lang Configuration

Here you can view all the configuration, examples and options for creating messages in Player Auctions.

## Language Support

Player Auctions supports multi language support currently there is not many languages that it supports, thats where you can help us! If you wish, you can give us your translation of Player Auctions and we will upload it to our webserver where every server can access it in the lang folder.

If you wish to change the plugin language you can change this in the `config.yml` and then select the languages in the lang folder to use. Make sure you put the exact file name without the file extension (.yml) in the `config.yml`.

## JSON Messages

Player Auctions supports the ability to use JSON formatting in your messages, for you to add clickable commands, hover events and more!

If you wish to add colors to your JSON text, you'll find that the client will stop registering the color when it goes on the next line. You can use the in-built JSON color to solve that.

For you to easily create the JSON format, you can use this site [here](https://www.minecraftjson.com) and start to create text. Then copy the command it gives you and remove the `/tellraw @p`from the command so its just JSON.

Also, make sure you select the version below on the site that you're using, have fun creating cool looking JSON messages!

If you need some help formatting or using the site to format your JSON, come and join our discord and we will help you!

## MiniMessage Support

Player Auctions supports the [MiniMessage](https://docs.adventure.kyori.net/minimessage/index.html) library, this allows you to easily add clickable commands, hover events and more! You can use this generator [here](https://webui.advntr.dev/) to make your life so much easier.

MiniMessage is more advanced, modern and easier than using JSON Messages. All you need to do is make sure you have the proper message syntax in your message and the plugin will recognise it as a mini message.

Please note that MiniMessage is only supported from 1.16.5 and above, for an alternative you will need to use JSON messages.

If you are experiencing any issues with MiniMessage formatting and quotes not being escaped properly in variables. Please note that you can use `<escape_quotes>%Variable%</escape_quotes>` to escape quotes in variables. This will ensure the MiniMessage parser handles them correctly.

## Message Placeholders

Player Auctions supports all types of message placeholders that you can use in your messages, there are two types of placeholders and these are `global` and `individual`. Global placeholders allow you to use these placeholders in any message of the plugin. Individual placeholders are only set placeholders for that specific message.

Here is a list of the current global placeholders. Remember, you can also use [PlaceholderAPI](https://docs.olziedev.com/projects/playerauctions/plugins#placeholderapi) placeholders in all the messages as well.

| Placeholder   | Description                                                         |
| ------------- | ------------------------------------------------------------------- |
| %prefix%      | Shows the prefix set in your lang file.                             |
| %player%      | Shows the players name that is receiving the message.               |
| %displayname% | Shows the display name of the player that is receiving the message. |

If you're looking for the individual placeholders, the default placeholders that can be used in that message is in the default configuration for that message already.


# FAQ

Here you can view the frequent asked questions for Player Auctions, it might answer your question!

## 1. **Why cant my players sell any items?**

You will need a permissions plugin, and give them the permission `pa.limit.<auctions>`**.** For example: `pa.limit.1` - can sell one item.

If you wish for players to have infinite auctions, you can give them `pa.limit.*`!

## **2. Can I edit/remove/add auction categories?**

Yes, you can. You can go into the folder, `/guis/category.yml` and go to the bottom and manage the categories there.

## 3. Why can't I add empty lines to item descriptions?

There is a feature disabled by default the empty lines will automatically be removed in the description, you can disable this in the `config.yml`

## 4. Where do I change the category name?

You can change the category name in the `guis/category.yml`, some people do get confused between the difference of the item name and the category name. The category item name is under "name" whereas the category name is quite hidden, its the section name.

```yaml
    all: # <--- # This is the name of category.
      displayname: "All" # <---- This is the display name of the category. This is what will be used to show to the player.
      name: "&bAll Auctions" # <---- this is the item name
      material: BOOK
      data: 0
      lore:
        - "&eClick&b to view all the auctions."
      slot: 4
      amount: 1
```

You might question yourself, how do you I specify its an all category if I change the name? Player Auctions will always recognise that the all category is the first category listed in the configuration file no matter what.

## 5. How do I change the currency prefix?

You can change the currency prefix in the category.yml where all the currencies are listed. Yes, we're aware its a very weird place to change it, but currencies are implemented as expansions so thats why they're listed there.

## 6. When using a chat wait action why does my chat message get sent into chat?

To fix chat messages from being sent into chat, go into your `config.yml`and go right to the bottom you'll see two settings `wait-chat-event-priority`and `use-paper-event`, try disabling `use-paper-event`and reload plugin. If it doesn't work, try changing the `wait-chat-event-priority`to LOWEST, if that doesn't work, try enabling `use-paper-event`again with priority set to lowest. \
Unfortunately all chat plugins are different, they use different methods so you need to tell the plugin what works. &#x20;


# Database FAQ

Here you can view the frequent asked questions for the Player Auctions database system.

## 1. Why does Player Auctions keep throwing "No operations allowed after connection closed."?

If you're running MySQL, this is a very common issue. Sometimes your database server might be closing the connection because the connection is "sleeping", you can solve this by either adding `"autoReconnect=true"` to your sql arguments in the `config.yml` or you can enable the `close`option in the `config.yml` to close connections after every few minutes and open a new one.

## 2. Why does Player Auctions keep throwing "No operations allowed after connection closed."?

If you're running MySQL, this is a very common issue. Sometimes your database server might be closing the connection because the connection is "sleeping", you can solve this by either adding `"autoReconnect=true"` to your sql arguments in the `config.yml` or you can enable the `close`option in the `config.yml` to close connections after every few minutes and open a new one.

## 3. How do I convert my data from the SQLite to MySQL?

You can convert all of your data back and forth between MySQL and SQite. To convert from SQLite to MySQL, you will need to enter all of you connection details and enable MySQL. To convert from MySQL to SQLite you need to make sure all of your connection details have been entered but MySQL is disabled

Once completed, you can also enable the convert option. Once enabled, restart your server. The data will be converted. Once its been converted, disable the convert option back in the config then restart your server again. Should be all good to go!


# Supported Plugins

Here you can view all the supported extensions information for Player Auctions.

## Vault

Player Auctions depends on [Vault ](https://www.spigotmc.org/resources/34315/)so you can use any of your favorite economy/permissions plugins that will be used in Player Auctions by hooking into Vault.

## PlaceholderAPI

Player Auctions hooks into [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) so you can use the Player Auctions placeholders everywhere that supports PlaceholderAPI, here is a list of the current placeholders.

| Placeholder                           | Description                                                                                                                                                                                          |
| ------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| %pa\_player\_auctions%                | View the amount of current auctions.                                                                                                                                                                 |
| %pa\_player\_available%               | View the amount of current auctions a player can sell.                                                                                                                                               |
| %pa\_player\_maxauctions%             | View the maximum amount of auctions that you can sell.                                                                                                                                               |
| %pa\_player\_expired%                 | View the amount of expired auctions.                                                                                                                                                                 |
| %pa\_player\_recent%                  | View the total amount of recent auctions.                                                                                                                                                            |
| %pa\_player\_recent\_\<type>%         | View the amount of recent auctions for that type.                                                                                                                                                    |
| %pa\_player\_recent\_spent\_\[when]%  | View the amount the player has spent based on their recently bought. The when placeholder is optional and can either be: `day`, `week`, `month` & `year.` You may append \_raw to get the raw value. |
| %pa\_player\_recent\_earned\_\[when]% | View the amount the player has earned based on their recently sold. The when placeholder is optional and can either be: `day`, `week`, `month` & `year.` You may append \_raw to get the raw value.  |
| %pa\_server\_auctions%                | View the amount of current auctions on the server.                                                                                                                                                   |
| %pa\_server\_auctions\_\<category>%   | View the amount of current auctions for that category.                                                                                                                                               |
| %pa\_gui\_auction\_\<modifier>%       | <p>View the modifier of the current auction that is assigned to the player via a menu.</p><p>Check modifiers below.</p>                                                                              |
| %pa\_gui\_category%                   | View the current category name that is assigned to the player via a menu.                                                                                                                            |
| %pa\_gui\_category\_display%          | View the current category display name that is assigned to the player via a menu.                                                                                                                    |
| %pa\_gui\_page%                       | View the current page that is assigned to the player via a menu.                                                                                                                                     |
| %pa\_gui\_pages%                      | View the current pages that is assigned to the player via a menu.                                                                                                                                    |

| Modifier          | Description                              |
| ----------------- | ---------------------------------------- |
| price             | Get tge price of the auction.            |
| price\_formatted  | Get the formatted price of the auction.  |
| price\_item       | Get the price per item for that auction. |
| currency          | Get the currency of the auction.         |
| seller            | Get the seller of the auction.           |
| seller\_uuid      | Get the seller UUID of the auction.      |
| expire            | Get the expired time of the auction.     |
| categories        | Get the categories of the auction.       |
| id                | Get the ID of the auction.               |
| enchantments      | Get the enchantments of the auction.     |
| repair\_cost      | Get the repair cost of the auction.      |
| amount            | Get the amount of the auction.           |
| lore              | Get the lore of the auction.             |
| date              | Get the date created of the auction.     |
| bidder            | Get the top bidder of the auction.       |
| server            | Get the server of the auction.           |
| item              | Get the item of the auction.             |
| item\_displayname | Get the item displayname of the auction. |

These are the current auction expansions, that hook into other plugins to change on how the plugin works. You can configure all these expansions and change how they work in the expansions.yml. Every expansion is configurable.

## TokenManager

Player Auctions hooks into [TokenManager](https://www.spigotmc.org/resources/8610/) as a currency so you can sell/purchase items on the auction house using this currency. Here is the default configuration for this addon.

```yaml
  tokenmanager:
    # Do you want to enable the TokenManager currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The name that is used in-game to decide what currency to use.
    name: "tokens"
    # The prefix of the price variable, this is how you want the variable to show when using the token manager currency.
    prefix: "%price% tokens"
    # The minimum amount they need to at least pay when using this currency in the confirmation GUI. Set to -1 to ignore.
    min-price-purchase: -1
    # What's the minimum amount the player can add to the offer of a bid?
    # This is to stop people from adding for example $1 when the bid is about to end to win the bid.
    min-bid-amount: 1000
    # What is the minimum price for an auction?
    min-price-auction: 1000
    # What is the maximum price for an auction?
    max-price-auction: 9999999
```

## PlayerPoints

Player Auctions hooks into [PlayerPoints](https://www.spigotmc.org/resources/80745/) as a currency so you can sell/purchase items on the auction house using this currency. Here is the default configuration for this addon.

```yaml
  playerpoints:
    # Do you want to enable the PlayerPoints currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The name that is used in-game to decide what currency to use.
    name: "points"
    # The prefix of the price variable, this is how you want the variable to show when using the player points currency.
    prefix: "%price% points"
    # The minimum amount they need to at least pay when using this currency in the confirmation GUI. Set to -1 to ignore.
    min-price-purchase: -1
    # What's the minimum amount the player can add to the offer of a bid?
    # This is to stop people from adding for example $1 when the bid is about to end to win the bid.
    min-bid-amount: 1000
    # What is the minimum price for an auction?
    min-price-auction: 1000
    # What is the maximum price for an auction?
    max-price-auction: 9999999
```

## BeastToken

Player Auctions hooks into [BeastToken](https://www.spigotmc.org/resources/20806/) as a currency so you can sell/purchase items on the auction house using this currency. Here is the default configuration for this addon.

```yaml
  beasttoken:
    # Do you want to enable the BeastToken currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The name that is used in-game to decide what currency to use.
    name: "tokens"
    # The prefix of the price variable, this is how you want the variable to show when using the beast token currency.
    prefix: "%price% tokens"
    # The minimum amount they need to at least pay when using this currency in the confirmation GUI. Set to -1 to ignore.
    min-price-purchase: -1
    # What's the minimum amount the player can add to the offer of a bid?
    # This is to stop people from adding for example $1 when the bid is about to end to win the bid.
    min-bid-amount: 1000
    # What is the minimum price for an auction?
    min-price-auction: 1000
    # What is the maximum price for an auction?
    max-price-auction: 9999999
```

## GemsEconomy

Player Auctions hooks into [GemsEconomy](https://www.spigotmc.org/resources/95658/) as a currency so you can sell/purchase items on the auction house using this currency. Here is the default configuration for this addon.

```yaml
  gemseconomy:
    # Do you want to enable the GemsEconomy currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The name that is used in-game to decide what currency to use.
    name: "gems"
    # The prefix of the price variable, this is how you want the variable to show when using the gemseconomy currency.
    prefixes:
      currency_name: "%price% gems"
    # The minimum amount they need to at least pay when using this currency in the confirmation GUI. Set to -1 to ignore.
    min-price-purchase: -1
    # What's the minimum amount the player can add to the offer of a bid?
    # This is to stop people from adding for example $1 when the bid is about to end to win the bid.
    min-bid-amount: 1000
    # What is the minimum price for an auction?
    min-price-auction: 1000
    # What is the maximum price for an auction?
    max-price-auction: 9999999
```

## UltraEconomy

Player Auctions hooks into [UltraEconomy](https://www.spigotmc.org/resources/83374/) as a currency so you can sell/purchase items on the auction house using this currency. Here is the default configuration for this addon.

```yaml
  ultraeconomy:
    # Do you want to enable the UltraEconomy currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The name that is used in-game to decide what currency to use.
    name: "gems"
    # The prefix of the price variable, this is how you want the variable to show when using the ultraeconomy currency.
    prefixes:
      currency_name: "%price% coins"
    # The minimum amount they need to at least pay when using this currency in the confirmation GUI. Set to -1 to ignore.
    min-price-purchase: -1
    # What's the minimum amount the player can add to the offer of a bid?
    # This is to stop people from adding for example $1 when the bid is about to end to win the bid.
    min-bid-amount: 1000
    # What is the minimum price for an auction?
    min-price-auction: 1000
    # What is the maximum price for an auction?
    max-price-auction: 9999999
```

## EcoBits

Player Auctions hooks into [EcoBits](https://www.spigotmc.org/resources/109967/) as a currency so you can sell/purchase items on the auction house using this currency. Here is the default configuration for this addon.

```yaml
  ecobits:
    # Do you want to enable the EcoBits currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The name that is used in the config to decide what currency to use.
    name: "bits"
    # The prefix of the price variable, this is how you want the variable to show when using the eco bits currency.
    prefixes:
      currency_name: "%price% bits"
    # The minimum amount they need to at least pay when using this currency in the confirmation GUI. Set to -1 to ignore.
    min-price-purchase: -1
    # What's the minimum amount the player can add to the offer of a bid?
    # This is to stop people from adding for example $1 when the bid is about to end to win the bid.
    min-bid-amount: 1000
    # What is the minimum price for an auction?
    min-price-auction: 1000
    # What is the maximum price for an auction?
    max-price-auction: 9999999
```

## ExcellentEconomy

Player Auctions hooks into [ExcellentEconomy](https://www.spigotmc.org/resources/84121/) as a currency so you can sell/purchase items on the auction house using this currency. Here is the default configuration for this addon.

```yaml
  excellenteconomy:
    # Do you want to enable the ExcellentEconomy currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The name that is used in the config to decide what currency to use.
    name: "coins"
    # The prefix of the price variable, this is how you want the variable to show when using the excellent economy currency.
    prefixes:
      currency_name: "%price% coins"
    # The minimum amount they need to at least pay when using this currency in the confirmation GUI. Set to -1 to ignore.
    min-price-purchase: -1
    # What's the minimum amount the player can add to the offer of a bid?
    # This is to stop people from adding for example $1 when the bid is about to end to win the bid.
    min-bid-amount: 1000
    # What is the minimum price for an auction?
    min-price-auction: 1000
    # What is the maximum price for an auction?
    max-price-auction: 9999999
```

## RivalCredits

Player Auctions hooks into [RivalCredits](https://builtbybit.com/resources/31250/) as a currency so you can sell/purchase items on the auction house using this currency. Here is the default configuration for this addon.

```yaml
  rivalcredits:
    # Do you want to enable the RivalCredits currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The name that is used in the config to decide what currency to use.
    name: "credits"
    # The prefix of the price variable, this is how you want the variable to show when using the rival credits currency.
    prefix: "%price% credits"
    # The minimum amount they need to at least pay when using this currency in the confirmation GUI. Set to -1 to ignore.
    min-price-purchase: -1
    # What's the minimum amount the player can add to the offer of a bid?
    # This is to stop people from adding for example $1 when the bid is about to end to win the bid.
    min-bid-amount: 1000
    # What is the minimum price for an auction?
    min-price-auction: 1000
    # What is the maximum price for an auction?
    max-price-auction: 9999999
```

## RivalHarvesterHoes

Player Auctions hooks into [RivalHarvesterHoes](https://builtbybit.com/resources/21424/) as a currency so you can sell/purchase items on the auction house using this currency. Here is the default configuration for this addon.

```yaml
  rivalharvesterhoes:
    # Do you want to enable the RivalHarvesterHoes currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The name that is used in the config to decide what currency to use.
    name: "credits"
    # The prefix of the price variable, this is how you want the variable to show when using the rival harvester hoes currency.
    prefix: "%price% credits"
    # The minimum amount they need to at least pay when using this currency in the confirmation GUI. Set to -1 to ignore.
    min-price-purchase: -1
    # What's the minimum amount the player can add to the offer of a bid?
    # This is to stop people from adding for example $1 when the bid is about to end to win the bid.
    min-bid-amount: 1000
    # What is the minimum price for an auction?
    min-price-auction: 1000
    # What is the maximum price for an auction?
    max-price-auction: 9999999
```


# Plugin Features

Here is a detailed description of most of the features and how they work here.

## Economy Support

Player Auctions hooks into your favorite economy plugin using Vault to make auction selling/bidding and purchasing support your economy. You can control the static cost system in the **config.yml**.

## Auction Categories

Player Auctions has automatic auction categories so auction items are in their own categories to make it easy to search and look for items in their category. The items for each category can be configured in the **guis/category.yml**.

## Proxy Support

Player Auctions supports multi server auction auctioning and purchasing, for this to work you will need to make sure you have MySQL setup properly. You can setup MySQL in the **config.yml**, and easily convert your data from SQLite to MySQL easily. You will also need to setup a another plugin on your proxy called AuctionSync, you can download this [here](https://cdn.olziedev.com/playerauctions/expansions/auctionsyncexpansion/auctionsyncexpansion-1.0.0.jar).

Please note before going to the 1st step, AuctionSync only supports the specific proxies:

* [Bungeecord](https://www.spigotmc.org/wiki/bungeecord/)
* [Velocity](https://velocitypowered.com)

If you wish for more proxies support to be added, please let us know and we may add it. If you have any of the proxies list above, you can proceed with syncing your auctions!

Make sure you have AuctionSync on your proxy and you enable the expansion in the Player Auctions **expansions.yml** on all of your sub servers that you want to be able to sync up. Once you've got all of them to load on all of your servers, go into your proxy config and configure the needed options.

For the proxy configuration file, you will need to edit the `host` option to your proxy's IP address. You'll also need to edit the needed `port`, you will need to open a port on your proxy and place it in that option. You'll also need to put all of your sub-servers' IP address' in the `allowed-ips` list to make sure they authenticate properly. You may set it to `*` in the first section of the list to allow any ip address, although be careful how this is used. The `auth` option is the "token" for this syncing system and it is randomly generated, you will need to put this in the configuration file of all the sub servers' config.

For the Player Auctions integrated expansion, you will need to edit the `host` option to your proxy's IP address (If you're using pterodactyl with the proxy on the same node as the servers, then you most likely you will connect to your local ip container address which by default is `172.18.0.1`). You'll also need to edit the needed `port`, you will need to put the port that you opened on your proxy and place it into that option. You will also need to put your `auth` token that you just got from your proxy.

This system is currently in beta mode and there still might be missing syncing/issues, please open issues on our discord server.

## Discord Alerts

Player Auctions supports discord notifications using Discord webhooks and Player Auctions' auction discord addon. Make sure that you enable the expansion in the Player Auctions **expansions.yml** and then configure the options correctly.

If you're struggling where to find a Discord webhook URL you can follow the steps below:

1. Right click on the discord channel you wish to send alerts to
2. Then click on "Edit channel"
3. Click on "Integrations"
4. Click on "Webhooks"
5. Click on "New Webhook"
6. Finally, click on "Copy Webhook URL"

## Auction Menus

Player Auctions has a verity of menus that make it easily usable for a player. Here is a list of the current menus and what they do.

* **Player Auction Menu** - This menu shows a list of all the auctions that are currently on the server.
* **Search Menu** - This menu lets players search for auctions (by item type, item name, id) that are currently in that menu. You can also search auctions by the players exact name as well.
* **Confirm Menu** - This menu shows all the available categories that are on the server and will open the Player Auctions menu.
* **Bidding Menu** - This menu lets players to add an offer the the current bid.
* **Preview Menu** - This menu shows contents that are inside of an item. (e.g. Shulker boxes).
* **My Auctions Menu** - This menu shows a list of auctions the auctions the player owns.
* **Expired Auctions Menu** - This menu shows a list of all the expired auctions.
* **Recent Auction Menu** - This menu shows a list of all the recent bought/sold auctions.
* **Start Auction Menu** - This menu lets players to easily start an auction via a menu.

## Auction Bidding/Selling

In Player Auctions, there are two types of auctions, you can sell items or bid items. Here is how both of them work.

### **Bidding**

With bidding, an auction is on the market for a certain amount of time and players can offer an amount, the player with the highest price will get the item when the time has ended.

### Selling

With selling, an auction is on the market for a certain amount of time and players can purchase that auction at any time. When a player purchases this auction, they can choose the amount of that item they want in the confirm menu. Obviously, this changes the price as well to make it cheaper if they're buying less.

If a player has not purchased the item and the time has ended, the item will appear in the expired auctions menu where you can collect that item again.


# Plugin API

Here you can view the JavaDocs and how to access/use the Player Auctions API

## Java Docs

Here you can view the Java Docs [here](https://javadocs.olziedev.com/playerauctions) for Player Auctions which provides you all the usages and descriptions of the API.

## Maven Repository

Do you want to integrate with Player Auctions in your plugin? You can use the OlzieDev repo to build against the Player Auctions API.

Under `repositories` in your `pom.xml`, you need to add a new `repository` for the repo.

```java
<repositories>
    ...
    <repository>
        <id>olzie-repo</id>
        <url>https://repo.olziedev.com/</url>
    </repository>
</repositories>
```

Next, add Player Auctions as a `dependency` under `dependencies`:

`VERSION_HERE` would be your exact plugin version, you will not need to update the API version every time a plugin update is out, only when an api update happens.

```java
<dependencies>
    ...
    <dependency>
        <groupId>com.olziedev</groupId>
        <artifactId>playerauctions-api</artifactId>
        <version>VERSION_HERE</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
```

## How to access the API

You can access the Player Auctions API by getting the instance. If the plugin hasn't fully loaded the instance will return null, you can use a callback to access the API when its ready.

```java
/* 
Accessing the instance, can return null if not loaded.

This instance can also change when a plugin reload has 
happened, so its not advisted to use this
*/ 
PlayerAuctionsAPI api = PlayerAuctionsAPI.getInstance(); 

PlayerAuctionsAPI.getInstance(api -> { // accessing the instance when its ready.

});
```

## Some examples

Here is an example on how to create a player auction.

```java
PlayerAuctionsAPI.getInstance(api -> {
    APlayer seller = api.getAuctionPlayer(UUID.randomUUID());
    // now this could possibly throw an error if the default product provider is not an ItemStack provider.
    // By default player auctions does use an ItemStack provider, but another plugin might integrate and change it.
    AProductProvider<ItemStack> provider = (AProductProvider<ItemStack>) api.getDefaultProductProvider();
    ItemStack itemStack = new ItemStack(Material.DIAMOND, 1);
    // you can either create your own itemstack object, it grab the item safely from their hand using provider#setupProduct(long, Player)
    api.createPlayerAuction(1000d,
                            seller,
                            provider.setupProduct(1L, itemStack),
                            false,
                            auction -> {
                            // the auction instance.
                            });
});
```

Here is an example on how to access a auction player by their UUID.

```java
PlayerAuctionsAPI.getInstance(api -> {
    APlayer player = api.getAuctionPlayer(UUID.randomUUID());
    // set all the auctions as expired.
    player.getPlayerAuctions().forEach(auction -> auction.setExpireTime(null, null, false)); 
});
```


# Creating expansions

Here you can view examples and details on how the expansion system works in Player Auctions.

In Player Auctions you can create expansions that will hook into the plugin to either add more functionality or to modify how the plugin works.

## Registering Expansions

There are two types of ways how you can register the expansions, you can either have it external or internal.

### External

Internal expansion is where you register the expansion in a plugin of your own. You can extend the necessary expansion type in a class and then using the [ExpansionRegistry](https://javadocs.olziedev.com/playerauctions/com/olziedev/playerauctions/api/expansion/ExpansionRegistry.html) to register your expansion.

Here is an example to register your expansion internally, instance is your expansions' instance.

```java
PlayerAuctionsAPI.getInstance().getExpansionRegistry().registerExpansion(instance);
```

### Integrated

External expansions is where you can create a jar file that contains a class extending a necessary expansion type and the plugin will automatically find it as long as you put it into the expansions folder of the plugin. Make sure you do not have any constructors.

## Examples

Here is an example of an expansion class, this is a plain expansion and will do nothing in functionality unless you program it to. If you wish to add actual functionality within the plugin that's already been programmed then you can look at [next](/projects/playerauctions/api/expansions/currency) expansion type.

```java
import com.olziedev.playerauctions.api.expansion.Expansion;

public class ExampleExpansion extends Expansion {

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

    @Override
    public String getName() {
         return "Example Expansion";
    }

    @Override
    public void onLoad() {

    }
}
```

You will need to make sure that you provide an expansion name, this isn't really used much anywhere apart from just a unique identifier and used in console.

If isEnabled returns false then the onLoad method will not be called and the expansion will not be loaded into memory.

The expansion class actually contains a view public fields that you can use:

* `plugin` - This is the instance of the Player Auctions plugin, this may be used to register events etc.
* `api` - This is the API instance of Player Auctions.
* `registry` - This is the Expansion Registry instance of Player Auctions.
* `expansionConfig` - This is the expansion configuration that you can use to grab options from the `expansions.yml`.
* `config` - This is the main configuration that you can also use to grab options from the `config.yml`


# Auction Currency

Here you can view details on how to create a currency addon using the Expansions Plugin API.

In Player Auctions you can create a currency addon that will allow you to create a new currency type. This will allow you to create a new currency type that will be able to be used on the auction house.

## Registering

You can go [here](/projects/playerauctions/api/expansions#registering-expansions) to learn on how to register an expansion.

## Examples

Here is an example of a currency addon class, this will let you be able to create a new currency type.

```java
import com.olziedev.playerauctions.api.expansion.ACurrency;
import com.olziedev.playerauctions.api.player.APlayer;

import java.util.function.Consumer;

public class CurrencyExample extends ACurrency {

    @Override
    public String getCurrencyName() {
        return null;
    }

    @Override
    public String getCurrencyPrefix() {
        return null;
    }

    @Override
    public double getMinPricePurchaseAmount() {
        return 0;
    }

    @Override
    public double getMinPriceSellAmount() {
        return 0;
    }

    @Override
    public double getMaxPriceSellAmount() {
        return 0;
    }

    @Override
    public double getMinPriceBidAmount() {
        return 0;
    }

    @Override
    public boolean hasDecimalSupport() {
        return false;
    }

    @Override
    public void getBalance(APlayer aPlayer, Consumer<Double> balanceConsumer) {

    }

    @Override
    public void deposit(APlayer aPlayer, double amount) {

    }

    @Override
    public void withdraw(APlayer aPlayer, double amount) {

    }

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

    @Override
    public String getName() {
        return "Example Currency";
    }

    @Override
    public void onLoad() {

    }
}
```

The above example is a currency addon that will allow you to create a new currency type. You can use this to create a new currency type that will be able to be used on the auction house.


# Auction Product

Here you can view details on how to create a product addon using the Expansions Plugin API.

In Player Auctions you can create a product addon that will allow you to create a new product type. This will allow you to create a new product type that will be able to be sold on the auction house.

## Registering

You can go [here](/projects/playerauctions/api/expansions#registering-expansions) to learn on how to register an expansion.

## Examples

Here is an example of a product addon class, this will let you be able to create a new product type.

```java
public class ProductExample extends AProductProvider<String> {
    
    @Override
    public void giveProduct(AProduct<String> aProduct, Player player) {
        
    }

    @Override
    public boolean isInvalidProduct(AProduct<String> product, Player player) {
        return false;
    }

    @Override
    public boolean isDamagedProduct(AProduct<String> product, Player player) {
        return false;
    }

    @Override
    public boolean isCorrect(AProduct<String> product, Player player) {
        return false;
    }

    @Override
    public boolean isSimilarProduct(ASerializableProduct<?> product, ASerializableProduct<?> other) {
        return false;
    }

    @Override
    public void takeProduct(AProduct<String> product, Player player) {

    }

    @Override
    public AProduct<String> setupProduct(Long amount, Player player) {
        return null;
    }

    @Override
    public AProduct<String> setupProduct(Long amount, String s) {
        return null;
    }

    @Override
    public ASerializableProduct<String> getSerializableProduct(byte[] bytes) {
        return null;
    }

    @Override
    public ItemStack getIcon(AProduct<String> product) {
        return null;
    }

    @Override
    public List<ACategory> getCategories(AProduct<String> product) {
        return null;
    }

    @Override
    public List<ACategory> getCategories(String product) {
        return null;
    }

    @Override
    public String getProductName(AProduct<String> product, FileConfiguration configuration, FileConfiguration lang, boolean showDisplayName) {
        return null;
    }

    @Override
    public List<String> getItemLore(Auction auction, ConfigurationSection section) {
        return null;
    }

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

    @Override
    public String getName() {
        return "Example Expansion";
    }

    @Override
    public void onLoad() {

    }
}
```

A product addon class must extend the `AProductProvider` class. This class has a generic type that must be the type of the product you are creating. In this example we are creating a product that is a string.

The `AProductProvider` class has many methods that you must override. These methods are used to handle the product you are creating.

The `giveProduct` method is called when a player buys the product. This method is used to give the player the product.

The `isInvalidProduct` method is called when a player tries to buy the product. This method is used to check if the player can buy the product.

The `isDamagedProduct` method is called when a player tries to buy the product. This method is used to check if the product is damaged.

The `isCorrect` method is called when a player tries to buy the product. This method is used to check if the product is correct.

The `isSimilarProduct` method is called when a player tries to buy the product. This method is used to check if the product is similar to another product.

The `takeProduct` method is called when a player buys the product. This method is used to take the product from the player.

The `setupProduct` method is called when a player tries to buy the product. This method is used to setup the product.

The `getSerializableProduct` method is called when a player tries to buy the product. This method is used to get the serializable product.

The `getIcon` method is called when a player views the product. This method is used to get the icon of the product.

The `getCategories` method is called when a player views the product. This method is used to get the categories of the product.

The `getProductName` method is called when a player views the product. This method is used to get the name of the product.

The `getItemLore` method is called when a player views the product. This method is used to get the lore of the product.


# Auction Converter

Here you can view details on how to create a converter auction addon using the Expansions Plugin API.

In Player Auctions you can create a auction converter addon that will essentially convert an auction from one plugin to another.

## Registering

You can go [here](/projects/playerauctions/api/expansions#registering-expansions) to learn on how to register an expansion.

## Examples

Here is an example of an auction converter addon class, this will let you be able to convert an auction from one plugin to another.

```java
import com.olziedev.playerauctions.api.expansion.AConverter;

public class ExampleConverter extends AConverter {

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

    @Override
    public String getName() {
        return "Example Expansion";
    }

    @Override
    public void onLoad() {

    }
}
```

Right now there isn't any methods to actually convert an auction, but there will be in the future hopefully.

You will just have to grab the auction from the old plugin and then create a new auction in Player Auctions.


# Creating Commands

Here you can view details on how to create sub commands using the Commands Plugin API.

## Creating Commands

In Player Auctions you can create a sub command that will allow you to create sub commands.

## Registering

You can register the commands using the [CommandRegistry](https://javadocs.olziedev.com/playerauctions/com/olziedev/playerauctions/api/auction/command/CommandRegistry.html) to register your command.

Here is an example to register your command, instance is your expansions' instance.

```java
PlayerAuctionsAPI.getInstance().getCommandRegistry().addSubCommand(instance);
```

### Examples

Here is an example of a sub command class, this will let you be able to create sub commands.

```java
import com.olziedev.playerauctions.api.auction.command.ACommand;
import org.bukkit.command.CommandSender;

import java.util.List;

public class ExampleCommand extends ACommand {

    public ExampleCommand() {
        super("example");
        this.executorType = ExecutorType.PLAYER_ONLY;
    }

    @Override
    public void execute(CommandSender sender, String[] arguments) {
        
    }

    @Override
    public List<String> onTabComplete(CommandSender sender, String[] arguments) {
        return super.onTabComplete(sender, arguments);
    }
}
```

The executor type is the type of executor that can execute the command, you can set it to PLAYER\_ONLY, CONSOLE\_ONLY, or null for both.

The onTabComplete method is a optional the method that will show a list of strings that will be shown to the player.


# Using Events

Here you can view details on how to listen to events using the Plugin API.

In Player Auctions you can listen to events using the API, this will allow you to listen to events that happen in the plugin. It uses the Bukkit event system so you should be familiar with that.

## Examples

Here is an example of a listener class, this will let you be able to listen to events that happen in the plugin. Here is a list of events you can listen [here](https://javadocs.olziedev.com/playerauctions/com/olziedev/playerauctions/api/events/package-summary.html).

```java
import com.olziedev.playerauctions.api.auction.Auction;
import com.olziedev.playerauctions.api.events.auction.PlayerAuctionSellEvent;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class ExampleEvents implements Listener {

    @EventHandler
    public void onAuctionSell(PlayerAuctionSellEvent event) {
        Auction auction = event.getPlayerAuction();
        Player sender = event.getSeller();
    }
}
```


# Rest API

Here you can view the endpoints and how to access/use the Player Auctions Rest API.

The Player Auctions REST API extends the capabilities of the Player Auctions plugin, allowing interaction with plugin objects and events from outside the Minecraft server environment. This documentation provides a comprehensive guide to using the API, including its endpoints, WebSocket functionality, and authentication mechanisms.

The base URL for the Player Auctions REST API is determined by the server administrator. Please remember to include the base URL of the server where the Player Auctions API is hosted, which can probably be found on the servers documentation.

## Authentication

To interact with the **Player Auctions REST API** or **WebSocket**, authentication is required to ensure secure access. We use **Basic Authentication**, where:

* **Username**: Your **Minecraft UUID** (You can find your **FULL UUID** [here](https://mcuuid.net/?q=ForgotUrPassword)).
* **Password**: Your **API Key** (a unique token generated for your account to interact with the API).

#### Generating an API Key

To generate an API token, use the command:

```bash
/pa apitokens generate
```

This will create a new API token for your account, which can then be used for authentication in your API requests. **Do not share your API token with anyone else, as it provides access to your account and data.**

#### API Key Limitations

* You can only have **one active API token** at a time.
* If you generate a new API token using `/pa apitokens generate`, it will **replace** your existing API token. The previous token will no longer be valid.
* If you wish to delete your API token without generating a new one, use the following command:

  ```arduino
  /pa apitokens delete
  ```

  This will delete your existing API token, but **will not generate a new one**. You will need to generate a new token manually if required.

#### Example API Request

Here’s how to authenticate API requests using your Minecraft UUID and API token:

**Request Header**:

```http
Authorization: Basic {Base64 encoded string of 'UUID:API_KEY'}
```

In this case, the base64 encoded string would be a combination of your Minecraft UUID and API Key (separated by a colon). You can use your program to easily generate the base64 encoding.

## Endpoints

You will find a comprehensive list of all the available API endpoints for interacting with the Player Auctions plugin. Each endpoint includes detailed descriptions, request methods, parameters, and responses.

To view the available endpoints, go to the [Endpoints](/projects/playerauctions/restapi/endpoints) page.

## Events

The Player Auctions API also supports real-time event handling through WebSockets. This section covers connecting, subscribing, and receiving events like auction creation or removal.

Go to the [Events](/projects/playerauctions/restapi/events) page for details on subscribing to and receiving WebSocket events.

## Errors

The Player Auctions API can throw errors, and you will need to catch them! You can view them [here](/projects/playerauctions/restapi/errors).


# Endpoints

Here you can view all available endpoints in the Player Auctions REST API, allowing you to manage and retrieve auction data. Each endpoint is described with its path, parameters, and response format.

This section documents all the available endpoints in the Player Auctions REST API. These endpoints allow you to manage auction data and retrieve player-specific information. Each endpoint is designed to be easily accessible, with clear paths for retrieving and modifying auction data based on auction names, IDs and player UUIDs.

**Note:**\
Currently, there are no endpoints for creating or editing data (i.e., no POST or PUT endpoints).

**Authentication:**\
Authentication is required to access the API, as detailed in the [Authentication](/projects/playerauctions/restapi#authentication) section.

**Warp Ownership:**\
Depending on the server settings, you may not be able to retrieve auction information if you do not own the auction.

## Endpoints

* [GET /api/playerauctions/getPlayerAuctionByID/{id}](/projects/playerauctions/restapi/endpoints/get/getplayerauctionbyid)
* [GET /api/playerauctions/getRecentAuctionsByUUID/{page}](/projects/playerauctions/restapi/endpoints/get/getrecentauctionsbyuuid)
* [GET /api/playerauctions/getPlayerAuctions/{page}](/projects/playerauctions/restapi/endpoints/get/getplayerauctions)
* [GET /api/playerauctions/getAuctionCategoryByName/{categoryname}](/projects/playerauctions/restapi/endpoints/get/getauctioncategorybyname)
* [GET /api/playerauctions/getAuctionCategories/{page}](/projects/playerauctions/restapi/endpoints/get/getauctioncategories)
* [GET /api/playerauctions/getAuctionPlayerByUUID/{uuid}](/projects/playerauctions/restapi/endpoints/get/getauctionplayerbyuuid)
* [DELETE /api/playerauctions/deleteRecentAuctionByID/{id}](/projects/playerauctions/restapi/endpoints/delete/deleterecentauctionbyid)

Each endpoint is designed to help you manage and retrieve auction data efficiently.


# GET

This section documents all the available GET endpoints in the Player Auctions REST API. These endpoints allow you to retrieve auction data and player-specific information.

## Endpoints

* [GET /api/playerauctions/getPlayerAuctionByID/{id}](/projects/playerauctions/restapi/endpoints/get/getplayerauctionbyid)
* [GET /api/playerauctions/getRecentAuctionsByUUID/{page}](/projects/playerauctions/restapi/endpoints/get/getrecentauctionsbyuuid)
* [GET /api/playerauctions/getPlayerAuctions/{page}](/projects/playerauctions/restapi/endpoints/get/getplayerauctions)
* [GET /api/playerauctions/getAuctionCategoryByName/{categoryname}](/projects/playerauctions/restapi/endpoints/get/getauctioncategorybyname)
* [GET /api/playerauctions/getAuctionCategories/{page}](/projects/playerauctions/restapi/endpoints/get/getauctioncategories)
* [GET /api/playerauctions/getAuctionPlayerByUUID/{uuid}](/projects/playerauctions/restapi/endpoints/get/getauctionplayerbyuuid)


# /api/playerauctions/getPlayerAuctionByID/{id}

Retrieve an auction's information by its auction ID.

* **Parameters:**
  * `id`: The ID of the auction to retrieve.
* **Response:**

  The response will return a JSON object with the following structure:

  ```json
  {
    "id" : 1,
    "auctionCategories" : [ {
      "name" : "blocks",
      "minPrice" : -1.0,
      "maxPrice" : -1.0,
      "all" : false,
      "icon" : {
        "type" : "DIRT",
        "meta" : {
          "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Blocks\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
          "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the blocks.\",\"color\":\"aqua\"}],\"italic\":false}" ],
          "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
        }
      },
      "displayName" : "Blocks"
    } ],
    "price" : 1000.0,
    "originalPrice" : 1000.0,
    "currency" : {
      "integrated" : false,
      "version" : "1.1.0-pre2",
      "minPricePurchaseAmount" : -1.0,
      "minPriceSellAmount" : 1000.0,
      "maxPriceSellAmount" : 9999999.0,
      "minPriceBidAmount" : 1000.0,
      "name" : "Vault Currency",
      "enabled" : true,
      "currencyName" : "money",
      "internalCurrencies" : [ ]
    },
    "internalCurrency" : null,
    "expireTime" : 172799000,
    "bidding" : false,
    "randomSort" : 0,
    "world" : "world",
    "auctionPlayer" : {
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "messages" : [ ],
      "madeOffline" : [ ],
      "staticAuctions" : 0,
      "logs" : [ ],
      "backpack" : [ ],
      "blacklistedPlayers" : [ ],
      "maximumAuctions" : 9223372036854775807,
      "prettyMaximumAuctions" : "Unlimited",
      "sellPrice" : 500.0,
      "name" : "ForgotUrPassword",
      "language" : null
    },
    "bidder" : null,
    "auctionDate" : 1736121811679,
    "auctionServer" : "PA_SERVER",
    "itemAmount" : 64,
    "unlimited" : false,
    "item" : {
      "type" : "DIRT",
      "amount" : 64
    }
  }
  ```

**Fields:**

* **id** (Number): The unique identifier for this auction entry.
* **auctionCategories** (Array): A list of auction categories.
  * **name** (String): The name of the category.
  * **minPrice** (Number): The minimum price for the category.
  * **maxPrice** (Number): The maximum price for the category.
  * **all** (Boolean): Whether all auctions are included.
  * **icon** (Object): The icon associated with the category.
    * **type** (String): The type of icon.
    * **meta** (Object): Metadata for the icon.
      * **display-name** (String): A formatted string for the display name.
      * **lore** (Array of Strings): A list of lore strings for the item.
      * **PublicBukkitValues** (String): A string containing public Bukkit values.
  * **displayName** (String): The display name for the category.
* **price** (Number): The price of the auction item.
* **originalPrice** (Number): The original price before any adjustments.
* **currency** (Object): Information about the auction currency.
  * **integrated** (Boolean): Whether the currency is integrated.
  * **version** (String): The version of the currency system.
  * **minPricePurchaseAmount** (Number): The minimum price for purchasing.
  * **minPriceSellAmount** (Number): The minimum price for selling.
  * **maxPriceSellAmount** (Number): The maximum price for selling.
  * **minPriceBidAmount** (Number): The minimum bid amount.
  * **name** (String): The name of the currency
  * **enabled** (Boolean): Whether the currency is enabled.
  * **currencyName** (String): The name of the currency.
  * **internalCurrencies** (Array): A list of internal currencies.
* **internalCurrency** (Null or Object): The internal currency used for the auction, if applicable.
* **expireTime** (Number): The expiration time of the auction in milliseconds.
* **bidding** (Boolean): Whether bidding is enabled for the auction.
* **randomSort** (Number): A random sorting value for the auction.
* **world** (String): The world associated with the auction.
* **auctionPlayer** (Object): Information about the player who created the auction.
  * **uuid** (String): The unique identifier for the player.
  * **messages** (Array): A list of messages for the player.
  * **madeOffline** (Array): A list of times the player was made offline.
  * **staticAuctions** (Number): The number of static auctions for the player.
  * **logs** (Array): A list of logs for the player.
  * **backpack** (Array): A list of items in the player's backpack.
  * **blacklistedPlayers** (Array): A list of blacklisted players.
  * **maximumAuctions** (Number): The maximum number of auctions the player can create.
  * **prettyMaximumAuctions** (String): The human-readable version of the maximum auctions.
  * **sellPrice** (Number): The price at which the player sells items.
  * **name** (String): The name of the player.
  * **language** (Null or String): The language setting for the player.
* **bidder** (Null or Object): Information about the bidder, if any.
* **auctionDate** (Number): The auction creation date in milliseconds.
* **auctionServer** (String): The server where the auction is hosted.
* **itemAmount** (Number): The amount of items in the auction.
* **unlimited** (Boolean): Whether the auction has unlimited items.
* **item** (Object): The item being auctioned.
  * **type** (String): The type of the item.
  * **amount** (Number): The amount of the item being auctioned.

**Note:**

* [**Authentication**](/projects/playerauctions/restapi#authentication) is required to access this endpoint.
* Based on server settings, you may not be able to access auction information if you do not own the auction.


# /api/playerauctions/getRecentAuctionsByUUID/{page}

Retrieve a paginated list of recent auctions from a player.

* **Parameters:**
  * `page`: The page number to retrieve (for pagination).
  * `uuid`: Required query parameter to fetch the auctions from the player.
* **Response:**

  The response will return a JSON object with the following structure:

  ```json
  {
    "totalAuctions" : 3,
    "totalPages" : 1,
    "currentPage" : 1,
    "auctions" : [ {
      "randomSort" : -1,
      "internalCurrency" : null,
      "price" : 50000.0,
      "auctionDate" : 1736121916675,
      "auctionServer" : "PA_SERVER",
      "itemAmount" : 1,
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "world" : "world",
      "unlimited" : false,
      "type" : "AUCTIONED",
      "currency" : {
        "integrated" : false,
        "version" : "1.1.0-pre2",
        "minPricePurchaseAmount" : -1.0,
        "minPriceSellAmount" : 1000.0,
        "maxPriceSellAmount" : 9999999.0,
        "minPriceBidAmount" : 1000.0,
        "name" : "Vault Currency",
        "enabled" : true,
        "currencyName" : "money",
        "internalCurrencies" : [ ]
      },
      "id" : 3,
      "item" : {
        "type" : "DIAMOND_CHESTPLATE",
        "meta" : {
          "enchants" : {
            "minecraft:mending" : 1,
            "minecraft:protection" : 5,
            "minecraft:unbreaking" : 3
          }
        }
      },
      "originalPrice" : 0.0,
      "auctionCategories" : [ ],
      "bidder" : null,
      "bidding" : false,
      "expireTime" : -1
    }, {
      "randomSort" : -1,
      "internalCurrency" : null,
      "price" : 5000.0,
      "auctionDate" : 1736121853774,
      "auctionServer" : "PA_SERVER",
      "itemAmount" : 1,
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "world" : "world",
      "unlimited" : false,
      "type" : "AUCTIONED",
      "currency" : {
        "integrated" : false,
        "version" : "1.1.0-pre2",
        "minPricePurchaseAmount" : -1.0,
        "minPriceSellAmount" : 1000.0,
        "maxPriceSellAmount" : 9999999.0,
        "minPriceBidAmount" : 1000.0,
        "name" : "Vault Currency",
        "enabled" : true,
        "currencyName" : "money",
        "internalCurrencies" : [ ]
      },
      "id" : 2,
      "item" : {
        "type" : "DIAMOND_SWORD"
      },
      "originalPrice" : 0.0,
      "auctionCategories" : [ ],
      "bidder" : null,
      "bidding" : false,
      "expireTime" : -1
    }, {
      "randomSort" : -1,
      "internalCurrency" : null,
      "price" : 1000.0,
      "auctionDate" : 1736121811974,
      "auctionServer" : "PA_SERVER",
      "itemAmount" : 64,
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "world" : "world",
      "unlimited" : false,
      "type" : "AUCTIONED",
      "currency" : {
        "integrated" : false,
        "version" : "1.1.0-pre2",
        "minPricePurchaseAmount" : -1.0,
        "minPriceSellAmount" : 1000.0,
        "maxPriceSellAmount" : 9999999.0,
        "minPriceBidAmount" : 1000.0,
        "name" : "Vault Currency",
        "enabled" : true,
        "currencyName" : "money",
        "internalCurrencies" : [ ]
      },
      "id" : 1,
      "item" : {
        "type" : "DIRT",
        "amount" : 64
      },
      "originalPrice" : 0.0,
      "auctionCategories" : [ ],
      "bidder" : null,
      "bidding" : false,
      "expireTime" : -1
    } ]
  }
  ```

**Fields:**

* **totalAuctions** (Number): The total number of auctions available.
* **totalPages** (Number): The total number of pages for the auctions.
* **currentPage** (Number): The current page number being viewed.
* **auctions** (Array): A list of auction items.
  * **randomSort** (Number): A random sort value for the auction.
  * **internalCurrency** (Null): The internal currency value.
  * **price** (Number): The price of the auction item.
  * **auctionDate** (Number): The timestamp when the auction was created.
  * **auctionServer** (String): The server where the auction is hosted.
  * **itemAmount** (Number): The number of items listed in the auction.
  * **uuid** (String): The unique identifier for the auction.
  * **world** (String): The world associated with the auction.
  * **unlimited** (Boolean): Whether the auction has unlimited items.
  * **type** (String): The type of auction.
  * **currency** (Object): Information about the currency used in the auction.
    * **integrated** (Boolean): Whether the currency is integrated into the auction.
    * **version** (String): The version of the currency system.
    * **minPricePurchaseAmount** (Number): The minimum purchase amount for the auction item.
    * **minPriceSellAmount** (Number): The minimum sell amount for the auction item.
    * **maxPriceSellAmount** (Number): The maximum sell amount for the auction item.
    * **minPriceBidAmount** (Number): The minimum bid amount for the auction item.
    * **name** (String): The name of the currency.
    * **enabled** (Boolean): Whether the currency is enabled.
    * **currencyName** (String): The name of the currency.
    * **internalCurrencies** (Array): A list of internal currencies associated with the auction.
  * **id** (Number): The unique ID of the auction.
  * **item** (Object): Details of the item being auctioned.
    * **type** (String): The type of the item.
    * **meta** (Object): Metadata for the item, if applicable.
      * **enchants** (Object): Enchantments applied to the item.
        * **minecraft:mending** (Number): The level of the Mending enchantment.
        * **minecraft:protection** (Number): The level of the Protection enchantment.
        * **minecraft:unbreaking** (Number): The level of the Unbreaking enchantment.
    * **amount** (Number): The amount of the item, if applicable.
  * **originalPrice** (Number): The original price of the auction item.
  * **auctionCategories** (Array): A list of auction categories.
  * **bidder** (Null): Information about the bidder, if applicable.
  * **bidding** (Boolean): Whether bidding is allowed for the auction.
  * **expireTime** (Number): The expiration time of the auction item in milliseconds.

**Note:**

* [**Authentication**](/projects/playerauctions/restapi#authentication) is required to access this endpoint.
* Based on server settings, you may not be able to access auction information if you do not own the auction.


# /api/playerauctions/getPlayerAuctions/{page}

Retrieve a paginated list of player auctions.

* **Parameters:**
  * `page`: The page number to retrieve (for pagination).
* **Response:**

  The response will return a JSON object with the following structure:

  ```json
  {
    "totalAuctions" : 3,
    "totalPages" : 1,
    "currentPage" : 1,
    "auctions" : [ {
      "randomSort" : 0,
      "originalPrice" : 1000.0,
      "internalCurrency" : null,
      "auctionPlayer" : {
        "logs" : [ ],
        "backpack" : [ ],
        "staticAuctions" : 0,
        "blacklistedPlayers" : [ ],
        "madeOffline" : [ ],
        "maximumAuctions" : 9223372036854775807,
        "prettyMaximumAuctions" : "Unlimited",
        "sellPrice" : 500.0,
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "name" : "ForgotUrPassword",
        "language" : null
      },
      "auctionCategories" : [ {
        "minPrice" : -1.0,
        "maxPrice" : -1.0,
        "all" : false,
        "icon" : {
          "type" : "DIRT",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Blocks\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the blocks.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
          }
        },
        "name" : "blocks",
        "displayName" : "Blocks"
      } ],
      "bidder" : null,
      "price" : 1000.0,
      "bidding" : false,
      "auctionDate" : 1736121811679,
      "expireTime" : 172799000,
      "auctionServer" : "PA_SERVER",
      "itemAmount" : 64,
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "world" : "world",
      "unlimited" : false,
      "currency" : {
        "integrated" : false,
        "version" : "1.1.0-pre2",
        "minPricePurchaseAmount" : -1.0,
        "minPriceSellAmount" : 1000.0,
        "maxPriceSellAmount" : 9999999.0,
        "minPriceBidAmount" : 1000.0,
        "name" : "Vault Currency",
        "enabled" : true,
        "currencyName" : "money",
        "internalCurrencies" : [ ]
      },
      "id" : 1,
      "item" : {
        "type" : "DIRT",
        "amount" : 64
      }
    }, {
      "randomSort" : 0,
      "originalPrice" : 5000.0,
      "internalCurrency" : null,
      "auctionPlayer" : {
        "logs" : [ ],
        "backpack" : [ ],
        "staticAuctions" : 0,
        "blacklistedPlayers" : [ ],
        "madeOffline" : [ ],
        "maximumAuctions" : 9223372036854775807,
        "prettyMaximumAuctions" : "Unlimited",
        "sellPrice" : 500.0,
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "name" : "ForgotUrPassword",
        "language" : null
      },
      "auctionCategories" : [ {
        "minPrice" : -1.0,
        "maxPrice" : -1.0,
        "all" : false,
        "icon" : {
          "type" : "DIAMOND_PICKAXE",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Tools\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the tools.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "attribute-modifiers" : { },
            "ItemFlags" : [ "HIDE_ATTRIBUTES" ],
            "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
          }
        },
        "name" : "tools",
        "displayName" : "Tools"
      } ],
      "bidder" : null,
      "price" : 5000.0,
      "bidding" : false,
      "auctionDate" : 1736121853583,
      "expireTime" : 172799000,
      "auctionServer" : "PA_SERVER",
      "itemAmount" : 1,
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "world" : "world",
      "unlimited" : false,
      "currency" : {
        "integrated" : false,
        "version" : "1.1.0-pre2",
        "minPricePurchaseAmount" : -1.0,
        "minPriceSellAmount" : 1000.0,
        "maxPriceSellAmount" : 9999999.0,
        "minPriceBidAmount" : 1000.0,
        "name" : "Vault Currency",
        "enabled" : true,
        "currencyName" : "money",
        "internalCurrencies" : [ ]
      },
      "id" : 2,
      "item" : {
        "type" : "DIAMOND_SWORD"
      }
    }, {
      "randomSort" : 0,
      "originalPrice" : 50000.0,
      "internalCurrency" : null,
      "auctionPlayer" : {
        "logs" : [ ],
        "backpack" : [ ],
        "staticAuctions" : 0,
        "blacklistedPlayers" : [ ],
        "madeOffline" : [ ],
        "maximumAuctions" : 9223372036854775807,
        "prettyMaximumAuctions" : "Unlimited",
        "sellPrice" : 500.0,
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "name" : "ForgotUrPassword",
        "language" : null
      },
      "auctionCategories" : [ {
        "minPrice" : -1.0,
        "maxPrice" : -1.0,
        "all" : false,
        "icon" : {
          "type" : "DIAMOND_HELMET",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Armor\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the armor.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "attribute-modifiers" : { },
            "ItemFlags" : [ "HIDE_ATTRIBUTES" ],
            "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
          }
        },
        "name" : "armor",
        "displayName" : "Armor"
      } ],
      "bidder" : null,
      "price" : 50000.0,
      "bidding" : false,
      "auctionDate" : 1736121916482,
      "expireTime" : 172799000,
      "auctionServer" : "PA_SERVER",
      "itemAmount" : 1,
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "world" : "world",
      "unlimited" : false,
      "currency" : {
        "integrated" : false,
        "version" : "1.1.0-pre2",
        "minPricePurchaseAmount" : -1.0,
        "minPriceSellAmount" : 1000.0,
        "maxPriceSellAmount" : 9999999.0,
        "minPriceBidAmount" : 1000.0,
        "name" : "Vault Currency",
        "enabled" : true,
        "currencyName" : "money",
        "internalCurrencies" : [ ]
      },
      "id" : 3,
      "item" : {
        "type" : "DIAMOND_CHESTPLATE",
        "meta" : {
          "enchants" : {
            "minecraft:mending" : 1,
            "minecraft:protection" : 5,
            "minecraft:unbreaking" : 3
          }
        }
      }
    } ]
  }
  ```

**Fields:**

* **totalAuctions** (Number): The total number of auctions available.
* **totalPages** (Number): The total number of pages for the auctions.
* **currentPage** (Number): The current page number being viewed.
* **auctions** (Array): A list of auction items.
  * **randomSort** (Number): A random sort value for the auction.
  * **originalPrice** (Number): The original price of the auction item.
  * **internalCurrency** (Null): The internal currency value (null).
  * **auctionPlayer** (Object): Information about the player who created the auction.
    * **logs** (Array): A list of logs related to the player (empty array).
    * **backpack** (Array): A list of items in the player's backpack (empty array).
    * **staticAuctions** (Number): Number of static auctions allowed for the player.
    * **blacklistedPlayers** (Array): List of blacklisted players (empty array).
    * **madeOffline** (Array): A list of times the player was made offline (empty array).
    * **maximumAuctions** (Number): The maximum number of auctions the player can create.
    * **prettyMaximumAuctions** (String): Human-readable format of maximum auctions.
    * **sellPrice** (Number): The price at which the player can sell items.
    * **uuid** (String): The unique identifier for the player.
    * **messages** (Array): A list of messages related to the player (empty array).
    * **name** (String): The name of the player.
    * **language** (Null): The language of the player (null).
  * **auctionCategories** (Array): A list of auction categories.
    * **minPrice** (Number): The minimum price for the auction category.
    * **maxPrice** (Number): The maximum price for the auction category.
    * **all** (Boolean): Whether the category applies to all auctions.
    * **icon** (Object): The icon for the category.
      * **type** (String): The type of icon.
      * **meta** (Object): Metadata for the icon.
        * **display-name** (String): Display name for the category.
        * **lore** (Array of Strings): A list of lore descriptions.
        * **PublicBukkitValues** (String): A string representing public Bukkit values.
    * **displayName** (String): The name displayed for the auction category.
  * **price** (Number): The price of the auction item.
  * **originalPrice** (Number): The original price of the auction item.
  * **currency** (Object): Information about the currency used in the auction.
    * **integrated** (Boolean): Whether the currency is integrated into the auction.
    * **version** (String): The version of the currency system.
    * **minPricePurchaseAmount** (Number): The minimum purchase amount for the auction item.
    * **minPriceSellAmount** (Number): The minimum sell amount for the auction item.
    * **maxPriceSellAmount** (Number): The maximum sell amount for the auction item.
    * **minPriceBidAmount** (Number): The minimum bid amount for the auction item.
    * **name** (String): The name of the currency.
    * **enabled** (Boolean): Whether the currency is enabled.
    * **currencyName** (String): The name of the currency.
    * **internalCurrencies** (Array): A list of internal currencies associated with the auction.
  * **internalCurrency** (Null or Object): The internal currency used, if applicable (null or object).
  * **expireTime** (Number): The expiration time of the auction item in milliseconds.
  * **bidding** (Boolean): Whether bidding is allowed for the auction.
  * **randomSort** (Number): A random value used to sort auctions.
  * **world** (String): The world associated with the auction.
  * **auctionPlayer** (Object): Details of the auction player (see above).
  * **bidder** (Null or Object): Information about the bidder, if applicable (null or object).
  * **auctionDate** (Number): The date when the auction was created, in milliseconds.
  * **auctionServer** (String): The server where the auction is hosted.
  * **itemAmount** (Number): The number of items listed in the auction.
  * **unlimited** (Boolean): Whether the auction has unlimited items.
  * **item** (Object): Details of the item being auctioned.
    * **type** (String): The type of the item.
    * **amount** (Number): The amount of the item being auctioned.

**Note:**

* [**Authentication**](/projects/playerauctions/restapi#authentication) is required to access this endpoint.
* Based on server settings, you may not be able to access auction information if you do not own the auction.


# /api/playerauctions/getAuctionCategoryByName/{categoryname}

Retrieve an auction category information by the category name.

* **Parameters:**
  * `categoryname`: The name of the category to retrieve.
* **Response:**

  The response will return a JSON object with the following structure:

  ```json
  {
    "minPrice" : -1.0,
    "maxPrice" : -1.0,
    "all" : true,
    "icon" : {
      "type" : "BOOK",
      "meta" : {
        "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"All Auctions\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
        "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the auctions.\",\"color\":\"aqua\"}],\"italic\":false}" ],
        "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
      }
    },
    "name" : "all",
    "displayName" : "All"
  }
  ```

**Fields:**

* **minPrice** (Number): The minimum price for the category.
* **maxPrice** (Number): The maximum price for the category.
* **all** (Boolean): Indicates if this category includes all items.
* **icon** (Object): The icon details for the category.
  * **type** (String): The type of the icon (e.g., BOOK).
  * **meta** (Object): Metadata for the icon.
    * **display-name** (String): The JSON string representation of the display name.
    * **lore** (Array of Strings): Lore text to describe the icon.
    * **PublicBukkitValues** (String): A JSON string containing custom metadata for Bukkit.
* **name** (String): The unique identifier for the category.
* **displayName** (String): The display name of the category.

**Note:**

* [**Authentication**](/projects/playerauctions/restapi#authentication) is required to access this endpoint.
* Based on server settings, you may not be able to access auction information if you do not own the auction.


# /api/playerauctions/getAuctionCategories/{page}

Retrieve a paginated list of auction categories.

* **Parameters:**
  * `page`: The page number to retrieve (for pagination).
* **Response:**

  The response will return a JSON object with the following structure:

  ```json
  {
    "totalPages" : 1,
    "totalCategories" : 6,
    "categories" : [ {
      "minPrice" : -1.0,
      "maxPrice" : -1.0,
      "all" : true,
      "icon" : {
        "type" : "BOOK",
        "meta" : {
          "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"All Auctions\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
          "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the auctions.\",\"color\":\"aqua\"}],\"italic\":false}" ],
          "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
        }
      },
      "name" : "all",
      "displayName" : "All"
    }, {
      "minPrice" : -1.0,
      "maxPrice" : -1.0,
      "all" : false,
      "icon" : {
        "type" : "CAKE",
        "meta" : {
          "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Food\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
          "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the food.\",\"color\":\"aqua\"}],\"italic\":false}" ],
          "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
        }
      },
      "name" : "food",
      "displayName" : "Food"
    }, {
      "minPrice" : -1.0,
      "maxPrice" : -1.0,
      "all" : false,
      "icon" : {
        "type" : "DIAMOND_PICKAXE",
        "meta" : {
          "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Tools\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
          "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the tools.\",\"color\":\"aqua\"}],\"italic\":false}" ],
          "attribute-modifiers" : { },
          "ItemFlags" : [ "HIDE_ATTRIBUTES" ],
          "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
        }
      },
      "name" : "tools",
      "displayName" : "Tools"
    }, {
      "minPrice" : -1.0,
      "maxPrice" : -1.0,
      "all" : false,
      "icon" : {
        "type" : "DIAMOND_HELMET",
        "meta" : {
          "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Armor\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
          "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the armor.\",\"color\":\"aqua\"}],\"italic\":false}" ],
          "attribute-modifiers" : { },
          "ItemFlags" : [ "HIDE_ATTRIBUTES" ],
          "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
        }
      },
      "name" : "armor",
      "displayName" : "Armor"
    }, {
      "minPrice" : -1.0,
      "maxPrice" : -1.0,
      "all" : false,
      "icon" : {
        "type" : "ENCHANTED_BOOK",
        "meta" : {
          "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Items\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
          "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the items.\",\"color\":\"aqua\"}],\"italic\":false}" ],
          "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
        }
      },
      "name" : "items",
      "displayName" : "Items"
    }, {
      "minPrice" : -1.0,
      "maxPrice" : -1.0,
      "all" : false,
      "icon" : {
        "type" : "DIRT",
        "meta" : {
          "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Blocks\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
          "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the blocks.\",\"color\":\"aqua\"}],\"italic\":false}" ],
          "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
        }
      },
      "name" : "blocks",
      "displayName" : "Blocks"
    } ],
    "currentPage" : 1
  }
  ```

**Fields:**

* **totalPages** (Number): The total number of pages.
* **totalCategories** (Number): The total number of categories.
* **currentPage** (Number): The current page number.
* **categories** (Array of Objects): A list of category details.
  * **minPrice** (Number): The minimum price for the category.
  * **maxPrice** (Number): The maximum price for the category.
  * **all** (Boolean): Indicates if this category includes all items.
  * **icon** (Object): The icon details for the category.
    * **type** (String): The type of the icon (e.g., BOOK, CAKE).
    * **meta** (Object): Metadata for the icon.
      * **display-name** (String): The JSON string representation of the display name.
      * **lore** (Array of Strings): Lore text to describe the icon.
      * **PublicBukkitValues** (String): A JSON string containing custom metadata for Bukkit.
      * **attribute-modifiers** (Object): Any modifiers applied to the icon's attributes.
      * **ItemFlags** (Array of Strings): Flags applied to the icon (e.g., hiding attributes).
  * **name** (String): The unique identifier for the category.
  * **displayName** (String): The display name of the category.

**Note:**

* [**Authentication**](/projects/playerauctions/restapi#authentication) is required to access this endpoint.
* Based on server settings, you may not be able to access auction information if you do not own the auction.


# /api/playerauctions/getAuctionPlayerByUUID/{uuid}

Retrieve a player's information associated with a specific UUID.

* **Parameters:**
  * `uuid`: The UUID of the player.
* **Response:**

  The response will return a JSON object with the following structure:

  ```json
  {
    "logs" : [ ],
    "backpack" : [ ],
    "staticAuctions" : 0,
    "blacklistedPlayers" : [ ],
    "madeOffline" : [ ],
    "maximumAuctions" : 9223372036854775807,
    "prettyMaximumAuctions" : "Unlimited",
    "sellPrice" : 500.0,
    "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
    "messages" : [ ],
    "name" : "ForgotUrPassword",
    "language" : null
  }
  ```

**Fields:**

* **logs** (Array): A list of logs associated with this entry.
* **backpack** (Array): A list of items in the backpack.
* **staticAuctions** (Number): The number of static auctions.
* **blacklistedPlayers** (Array): A list of blacklisted players.
* **madeOffline** (Array): A list of players or entries marked as offline.
* **maximumAuctions** (Number): The maximum number of auctions allowed.
* **prettyMaximumAuctions** (String): A human-readable version of the maximum auctions value (e.g., "Unlimited").
* **sellPrice** (Number): The price at which the item or service is sold.
* **uuid** (String): A unique identifier for this entry.
* **messages** (Array): A list of messages associated with this entry.
* **name** (String): The name or identifier for this entry.
* **language** (Null or String): The language setting (null if unspecified).

**Note:**

* [**Authentication**](/projects/playerauctions/restapi#authentication) is required to access this endpoint.
* Based on server settings, you may not be able to access auction information if you do not own the auction.


# DELETE

This section documents all the available DELETE endpoints in the Player Auctions REST API. These endpoints allow you to delete auction data.

## Endpoints

* [DELETE /api/playerauctions/deleteRecentAuctionByID/{id}](/projects/playerauctions/restapi/endpoints/delete/deleterecentauctionbyid)


# /api/playerauctions/deleteRecentAuctionByID/{id}

Delete a recent auctions by a auction ID.

* **Parameters:**
  * `id`: The ID of the recent auction to delete.
* **Response:**

  The response will return a JSON object with the following structure:

  ```json
  {
    "success": true,
    "message": "Recent auction removed."
  }
  ```

  **Note:**

  * [**Authentication**](/projects/playerauctions/restapi#authentication) is required to access this endpoint.


# Events

Here you can view the events and how to listen to them in the Player Warps REST API.

The Player Warps REST API provides real-time interactions through events, allowing you to receive updates, notifications, and other important information dynamically. You can connect to these events using a WebSocket with basic authentication. Once connected, you will be able to listen to the events and receive the necessary information.

## Connecting

You can connect to the websocket just using the base URL of the API (Found in your servers documentation), and your server documentation should tell you if you need to connect with `wss` or `ws` (Secure or not secure). The socket will automatically listen to all events, and you can filter them on your end.

## Examples

You can view an example on how to connect to the websocket using Java and The [**Java-Websocket**](https://github.com/TooTallNate/Java-WebSocket) library [here](https://haste.olziedev.com/weyoyodaxi.csharp)

## Events

These events are sent through the WebSocket and can be listened to, these events are also referenced in the Plugin API as well. You can view an example of the event structure below that is sent through the WebSocket.

```json
{
  "type" : "EVENT_TRIGGERED",
  "name" : "PlayerAuctionSellEvent",
  "event" : {}
}
```

* [PlayerAuctionSellEvent](/projects/playerauctions/restapi/events/playerauctionsellevent)
* [PlayerAuctionBuyEvent](/projects/playerauctions/restapi/events/playerauctionbuyevent)
* [PlayerAuctionBidEvent](/projects/playerauctions/restapi/events/playerauctionbidevent)
* [PlayerAuctionBidWonEvent](/projects/playerauctions/restapi/events/playerauctionbidwonevent)
* [PlayerAuctionRemoveEvent](/projects/playerauctions/restapi/events/playerauctionremoveevent)
* [AuctionExpireUpdateEvent](/projects/playerauctions/restapi/events/auctionexpireupdateevent)
* [AuctionPlayerUpdateEvent](/projects/playerauctions/restapi/events/auctionplayerupdateevent)
* [AuctionUpdateEvent](/projects/playerauctions/restapi/events/auctionupdateevent)


# PlayerAuctionSellEvent

This event is called when an auction is being added to the auction house, you can view the JavaDocs for this event [here](https://javadocs.olziedev.com/playerauctions/com/olziedev/playerauctions/api/events/auction/PlayerAuctionSellEvent.html). Please note that this event will only be triggered for the creator of the auction if the server has setup like that.

## **Received Data**

Once the event is triggered, you will receive a JSON object containing the data below:

```json
{
  "name" : "PlayerAuctionSellEvent",
  "type" : "EVENT_TRIGGERED",
  "event" : {
    "cancelled" : false,
    "playerAuction" : {
      "randomSort" : 0,
      "originalPrice" : 1000.0,
      "internalCurrency" : null,
      "auctionPlayer" : {
        "logs" : [ ],
        "backpack" : [ ],
        "staticAuctions" : 0,
        "blacklistedPlayers" : [ ],
        "madeOffline" : [ ],
        "maximumAuctions" : 9223372036854775807,
        "prettyMaximumAuctions" : "Unlimited",
        "sellPrice" : 500.0,
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "name" : "ForgotUrPassword",
        "language" : null
      },
      "auctionCategories" : [ {
        "minPrice" : -1.0,
        "maxPrice" : -1.0,
        "all" : false,
        "icon" : {
          "type" : "DIRT",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Blocks\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the blocks.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
          }
        },
        "name" : "blocks",
        "displayName" : "Blocks"
      } ],
      "bidder" : null,
      "price" : 1000.0,
      "bidding" : false,
      "auctionDate" : 1736126742429,
      "expireTime" : 0,
      "auctionServer" : "PA_SERVER",
      "itemAmount" : 1,
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "world" : "world",
      "unlimited" : false,
      "currency" : {
        "integrated" : false,
        "version" : "1.1.0-pre2",
        "minPricePurchaseAmount" : -1.0,
        "minPriceSellAmount" : 1000.0,
        "maxPriceSellAmount" : 9999999.0,
        "minPriceBidAmount" : 1000.0,
        "name" : "Vault Currency",
        "enabled" : true,
        "currencyName" : "money",
        "internalCurrencies" : [ ]
      },
      "id" : 4,
      "item" : {
        "type" : "DIRT"
      }
    },
    "seller" : {
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "name" : "ForgotUrPassword"
    },
    "asynchronous" : false
  }
}
```


# PlayerAuctionBuyEvent

This event is called when a player purchases an auction, you can view the JavaDocs for this event [here](https://javadocs.olziedev.com/playerauctions/com/olziedev/playerauctions/api/events/auction/PlayerAuctionBuyEvent.html). Please note that this event will only be triggered for the creator of the auction if the server has setup like that.

## **Received Data**

Once the event is triggered, you will receive a JSON object containing the data below:

```json
{
  "name" : "PlayerAuctionBuyEvent",
  "type" : "EVENT_TRIGGERED",
  "event" : {
    "cancelled" : false,
    "playerAuction" : {
      "randomSort" : 0,
      "originalPrice" : 50000.0,
      "internalCurrency" : null,
      "auctionPlayer" : {
        "logs" : [ ],
        "backpack" : [ ],
        "staticAuctions" : 0,
        "blacklistedPlayers" : [ ],
        "madeOffline" : [ ],
        "maximumAuctions" : 9223372036854775807,
        "prettyMaximumAuctions" : "Unlimited",
        "sellPrice" : 500.0,
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "name" : "ForgotUrPassword",
        "language" : null
      },
      "auctionCategories" : [ {
        "minPrice" : -1.0,
        "maxPrice" : -1.0,
        "all" : false,
        "icon" : {
          "type" : "DIAMOND_HELMET",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Armor\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the armor.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "attribute-modifiers" : { },
            "ItemFlags" : [ "HIDE_ATTRIBUTES" ],
            "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
          }
        },
        "name" : "armor",
        "displayName" : "Armor"
      } ],
      "bidder" : null,
      "price" : 50000.0,
      "bidding" : false,
      "auctionDate" : 1736121916482,
      "expireTime" : 172799000,
      "auctionServer" : "PA_SERVER",
      "itemAmount" : 1,
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "world" : "world",
      "unlimited" : false,
      "currency" : {
        "integrated" : false,
        "version" : "1.1.0-pre2",
        "minPricePurchaseAmount" : -1.0,
        "minPriceSellAmount" : 1000.0,
        "maxPriceSellAmount" : 9999999.0,
        "minPriceBidAmount" : 1000.0,
        "name" : "Vault Currency",
        "enabled" : true,
        "currencyName" : "money",
        "internalCurrencies" : [ ]
      },
      "id" : 3,
      "item" : {
        "type" : "DIAMOND_CHESTPLATE",
        "meta" : {
          "enchants" : {
            "minecraft:mending" : 1,
            "minecraft:protection" : 5,
            "minecraft:unbreaking" : 3
          }
        }
      }
    },
    "buyer" : {
      "uuid" : "2bb28618-c1e1-46cc-9492-fe30d5dba8fa",
      "name" : "ResetUrPassword"
    },
    "price" : 50000.0,
    "serializableProduct" : {
      "bytes" : "rO0ABXVyABBbTGphdmEudXRpbC5NYXA7/+CwhupHTAsCAAB4cAAAAAFzcgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4cD9AAAAAAAAMdwgAAAAQAAAAAXQABXBhcGVydXIAAltCrPMX+AYIVOACAAB4cAAAAJcfiwgAAAAAAAD/VY6xDsIwEEMNUREKA0JCTHwJc7+BFR3JQSOSS5Rc+X4KHSoGL362ZQsY7HpSunJtIQuwb1usg8c5BWFX6aEXHyhl8Tc3cNMSSdmgc3kUBbCysC6nkoVFm8Vp6bG4gUTTDDaR3xybwWFJTMgHeX5nDI6LP8q9Mr1mZP5QqVnZ6e8rukn4AOuFfLvFAAAAeA==",
      "amount" : 1,
      "naturalAmount" : 0,
      "maxAmount" : 1,
      "product" : {
        "type" : "DIAMOND_CHESTPLATE",
        "meta" : {
          "enchants" : {
            "minecraft:mending" : 1,
            "minecraft:protection" : 5,
            "minecraft:unbreaking" : 3
          }
        }
      },
    },
    "asynchronous" : false
  }
}
```


# PlayerAuctionBidEvent

This event is called when a player bids on an auction, you can view the JavaDocs for this event [here](https://javadocs.olziedev.com/playerauctions/com/olziedev/playerauctions/api/events/auction/PlayerAuctionBidEvent.html). Please note that this event will only be triggered for the creator of the auction if the server has setup like that.

## **Received Data**

Once the event is triggered, you will receive a JSON object containing the data below:

```json
{
  "name" : "PlayerAuctionBidEvent",
  "type" : "EVENT_TRIGGERED",
  "event" : {
    "cancelled" : false,
    "playerAuction" : {
      "randomSort" : 0,
      "originalPrice" : 1000.0,
      "internalCurrency" : null,
      "auctionPlayer" : {
        "logs" : [ ],
        "backpack" : [ ],
        "staticAuctions" : 0,
        "blacklistedPlayers" : [ ],
        "madeOffline" : [ ],
        "maximumAuctions" : 0,
        "prettyMaximumAuctions" : "0",
        "sellPrice" : 500.0,
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "name" : "ForgotUrPassword",
        "language" : null
      },
      "auctionCategories" : [ {
        "minPrice" : -1.0,
        "maxPrice" : -1.0,
        "all" : false,
        "icon" : {
          "type" : "DIRT",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Blocks\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the blocks.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
          }
        },
        "name" : "blocks",
        "displayName" : "Blocks"
      } ],
      "bidder" : null,
      "price" : 1000.0,
      "bidding" : true,
      "auctionDate" : 1736129378442,
      "expireTime" : 172799000,
      "auctionServer" : "PA_SERVER",
      "itemAmount" : 1,
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "world" : "world",
      "unlimited" : false,
      "currency" : {
        "integrated" : false,
        "version" : "1.1.0-pre2",
        "minPricePurchaseAmount" : -1.0,
        "minPriceSellAmount" : 1000.0,
        "maxPriceSellAmount" : 9999999.0,
        "minPriceBidAmount" : 1000.0,
        "name" : "Vault Currency",
        "enabled" : true,
        "currencyName" : "money",
        "internalCurrencies" : [ ]
      },
      "id" : 9,
      "item" : {
        "type" : "DIRT"
      }
    },
    "bidder" : {
      "logs" : [ ],
      "backpack" : [ ],
      "staticAuctions" : 0,
      "blacklistedPlayers" : [ ],
      "madeOffline" : [ ],
      "maximumAuctions" : 9223372036854775807,
      "prettyMaximumAuctions" : "Unlimited",
      "sellPrice" : 500.0,
      "uuid" : "2bb28618-c1e1-46cc-9492-fe30d5dba8fa",
      "messages" : [ ],
      "name" : "ResetUrPassword",
      "language" : null
    },
    "price" : 2000.0,
    "notEnoughMoney" : false,
    "asynchronous" : false
  }
}
```


# PlayerAuctionBidWonEvent

This event is called when a player wins a bids on an auction, you can view the JavaDocs for this event [here](https://javadocs.olziedev.com/playerauctions/com/olziedev/playerauctions/api/events/auction/PlayerAuctionBidWonEvent.html). Please note that this event will only be triggered for the creator of the auction if the server has setup like that.

## **Received Data**

Once the event is triggered, you will receive a JSON object containing the data below:

```json
{
  "name" : "PlayerAuctionBidWonEvent",
  "type" : "EVENT_TRIGGERED",
  "event" : {
    "cancelled" : false,
    "playerAuction" : {
      "randomSort" : 0,
      "originalPrice" : 1000.0,
      "internalCurrency" : null,
      "auctionPlayer" : {
        "logs" : [ ],
        "backpack" : [ ],
        "staticAuctions" : 0,
        "blacklistedPlayers" : [ ],
        "madeOffline" : [ ],
        "maximumAuctions" : 0,
        "prettyMaximumAuctions" : "0",
        "sellPrice" : 500.0,
        "uuid" : "2bb28618-c1e1-46cc-9492-fe30d5dba8fa",
        "messages" : [ ],
        "name" : "ResetUrPassword",
        "language" : null
      },
      "auctionCategories" : [ {
        "minPrice" : -1.0,
        "maxPrice" : -1.0,
        "all" : false,
        "icon" : {
          "type" : "DIRT",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Blocks\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the blocks.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
          }
        },
        "name" : "blocks",
        "displayName" : "Blocks"
      } ],
      "bidder" : {
        "logs" : [ ],
        "backpack" : [ ],
        "staticAuctions" : 0,
        "blacklistedPlayers" : [ ],
        "madeOffline" : [ ],
        "maximumAuctions" : 9223372036854775807,
        "prettyMaximumAuctions" : "Unlimited",
        "sellPrice" : 500.0,
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "name" : "ForgotUrPassword",
        "language" : null
      },
      "price" : 2000.0,
      "bidding" : true,
      "auctionDate" : 1736129950330,
      "expireTime" : -1,
      "auctionServer" : "PA_SERVER",
      "itemAmount" : 1,
      "uuid" : "2bb28618-c1e1-46cc-9492-fe30d5dba8fa",
      "world" : "world",
      "unlimited" : false,
      "currency" : {
        "integrated" : false,
        "version" : "1.1.0-pre2",
        "minPricePurchaseAmount" : -1.0,
        "minPriceSellAmount" : 1000.0,
        "maxPriceSellAmount" : 9999999.0,
        "minPriceBidAmount" : 1000.0,
        "name" : "Vault Currency",
        "enabled" : true,
        "currencyName" : "money",
        "internalCurrencies" : [ ]
      },
      "id" : 11,
      "item" : {
        "type" : "DIRT"
      }
    },
    "price" : 2000.0,
    "asynchronous" : true
  }
}
```


# PlayerAuctionRemoveEvent

This event is called an auction has been removed, you can view the JavaDocs for this event [here](https://javadocs.olziedev.com/playerauctions/com/olziedev/playerauctions/api/events/auction/PlayerAuctionRemoveEvent.html). Please note that this event will only be triggered for the creator of the auction if the server has setup like that.

## **Received Data**

Once the event is triggered, you will receive a JSON object containing the data below:

```json
{
  "name" : "PlayerAuctionRemoveEvent",
  "type" : "EVENT_TRIGGERED",
  "event" : {
    "cancelled" : false,
    "playerAuction" : {
      "randomSort" : 0,
      "originalPrice" : 50000.0,
      "internalCurrency" : null,
      "auctionPlayer" : {
        "logs" : [ ],
        "backpack" : [ ],
        "staticAuctions" : 0,
        "blacklistedPlayers" : [ ],
        "madeOffline" : [ ],
        "maximumAuctions" : 9223372036854775807,
        "prettyMaximumAuctions" : "Unlimited",
        "sellPrice" : 500.0,
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "name" : "ForgotUrPassword",
        "language" : null
      },
      "auctionCategories" : [ {
        "minPrice" : -1.0,
        "maxPrice" : -1.0,
        "all" : false,
        "icon" : {
          "type" : "DIAMOND_HELMET",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Armor\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the armor.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "attribute-modifiers" : { },
            "ItemFlags" : [ "HIDE_ATTRIBUTES" ],
            "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
          }
        },
        "name" : "armor",
        "displayName" : "Armor"
      } ],
      "bidder" : null,
      "price" : 0.0,
      "bidding" : false,
      "auctionDate" : 1736121916482,
      "expireTime" : 172799000,
      "auctionServer" : "PA_SERVER",
      "itemAmount" : 0,
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "world" : "world",
      "unlimited" : false,
      "currency" : {
        "integrated" : false,
        "version" : "1.1.0-pre2",
        "minPricePurchaseAmount" : -1.0,
        "minPriceSellAmount" : 1000.0,
        "maxPriceSellAmount" : 9999999.0,
        "minPriceBidAmount" : 1000.0,
        "name" : "Vault Currency",
        "enabled" : true,
        "currencyName" : "money",
        "internalCurrencies" : [ ]
      },
      "id" : 3,
      "item" : {
        "type" : "AIR",
        "amount" : 0
      }
    },
    "remover" : {
      "uuid" : "2bb28618-c1e1-46cc-9492-fe30d5dba8fa",
      "name" : "ResetUrPassword"
    },
    "cause" : "SOLD",
    "asynchronous" : true
  }
}
```


# AuctionExpireUpdateEvent

This event is called when an auction expire time has been updated, you can view the JavaDocs for this event [here](https://javadocs.olziedev.com/playerauctions/com/olziedev/playerauctions/api/events/update/AuctionExpireUpdateEvent.html). Please note that this event will only be triggered for the creator of the auction if the server has setup like that.

## **Received Data**

Once the event is triggered, you will receive a JSON object containing the data below:

```json
{
  "name" : "AuctionExpireUpdateEvent",
  "type" : "EVENT_TRIGGERED",
  "event" : {
    "cancelled" : false,
    "updatedValue" : 172439000,
    "playerAuction" : {
      "randomSort" : 0,
      "originalPrice" : 1000.0,
      "internalCurrency" : null,
      "auctionPlayer" : {
        "logs" : [ ],
        "backpack" : [ ],
        "staticAuctions" : 0,
        "blacklistedPlayers" : [ ],
        "madeOffline" : [ ],
        "maximumAuctions" : 0,
        "prettyMaximumAuctions" : "0",
        "sellPrice" : 500.0,
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "name" : "ForgotUrPassword",
        "language" : null
      },
      "auctionCategories" : [ {
        "minPrice" : -1.0,
        "maxPrice" : -1.0,
        "all" : false,
        "icon" : {
          "type" : "DIRT",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Blocks\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the blocks.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
          }
        },
        "name" : "blocks",
        "displayName" : "Blocks"
      } ],
      "bidder" : {
        "logs" : [ ],
        "backpack" : [ ],
        "staticAuctions" : 0,
        "blacklistedPlayers" : [ ],
        "madeOffline" : [ ],
        "maximumAuctions" : 9223372036854775807,
        "prettyMaximumAuctions" : "Unlimited",
        "sellPrice" : 500.0,
        "uuid" : "2bb28618-c1e1-46cc-9492-fe30d5dba8fa",
        "messages" : [ ],
        "name" : "ResetUrPassword",
        "language" : null
      },
      "price" : 2000.0,
      "bidding" : true,
      "auctionDate" : 1736129378442,
      "expireTime" : 172439000,
      "auctionServer" : "PA_SERVER",
      "itemAmount" : 1,
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "world" : "world",
      "unlimited" : false,
      "currency" : {
        "integrated" : false,
        "version" : "1.1.0-pre2",
        "minPricePurchaseAmount" : -1.0,
        "minPriceSellAmount" : 1000.0,
        "maxPriceSellAmount" : 9999999.0,
        "minPriceBidAmount" : 1000.0,
        "name" : "Vault Currency",
        "enabled" : true,
        "currencyName" : "money",
        "internalCurrencies" : [ ]
      },
      "id" : 9,
      "item" : {
        "type" : "DIRT"
      }
    },
    "asynchronous" : true
  }
}
```


# AuctionPlayerUpdateEvent

This event is called a player's data has been updated, you can view the JavaDocs for this event [here](https://javadocs.olziedev.com/playerauctions/com/olziedev/playerauctions/api/events/update/AuctionPlayerUpdateEvent.html). Please note that this event will only be triggered for the creator of the auction if the server has setup like that.

## **Received Data**

Once the event is triggered, you will receive a JSON object containing the data below:

```json
{
  "name" : "AuctionPlayerUpdateEvent",
  "type" : "EVENT_TRIGGERED",
  "event" : {
    "cancelled" : false,
    "updatedValue" : {
      "logs" : [ ],
      "backpack" : [ ],
      "staticAuctions" : 0,
      "blacklistedPlayers" : [ ],
      "madeOffline" : [ ],
      "maximumAuctions" : 9223372036854775807,
      "prettyMaximumAuctions" : "Unlimited",
      "sellPrice" : 500.0,
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "messages" : [ ],
      "name" : "ForgotUrPassword",
      "language" : null
    },
    "type" : "RECENT_AUCTION_UPDATE",
    "asynchronous" : true
  }
}
```


# PlayerAuctionUpdateEvent

This event is called when an auction has been updated, you can view the JavaDocs for this event [here](https://javadocs.olziedev.com/playerauctions/com/olziedev/playerauctions/api/events/update/PlayerAuctionUpdateEvent.html). Please note that this event will only be triggered for the creator of the auction if the server has setup like that.

## **Received Data**

Once the event is triggered, you will receive a JSON object containing the data below:

```json
{
  "name" : "PlayerAuctionUpdateEvent",
  "type" : "EVENT_TRIGGERED",
  "event" : {
    "cancelled" : false,
    "updatedValue" : {
      "randomSort" : 0,
      "originalPrice" : 1000.0,
      "internalCurrency" : null,
      "auctionPlayer" : {
        "logs" : [ ],
        "backpack" : [ ],
        "staticAuctions" : 0,
        "blacklistedPlayers" : [ ],
        "madeOffline" : [ ],
        "maximumAuctions" : 9223372036854775807,
        "prettyMaximumAuctions" : "Unlimited",
        "sellPrice" : 500.0,
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "name" : "ForgotUrPassword",
        "language" : null
      },
      "auctionCategories" : [ {
        "minPrice" : -1.0,
        "maxPrice" : -1.0,
        "all" : false,
        "icon" : {
          "type" : "DIRT",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Blocks\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"yellow\"},{\"text\":\" to view all the blocks.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "PublicBukkitValues" : "{\n    \"playerauctions:itemtag_item\": \"1\"\n}"
          }
        },
        "name" : "blocks",
        "displayName" : "Blocks"
      } ],
      "bidder" : null,
      "price" : 0.0,
      "bidding" : false,
      "auctionDate" : 1736121811679,
      "expireTime" : 172799000,
      "auctionServer" : "PA_SERVER",
      "itemAmount" : 64,
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "world" : "world",
      "unlimited" : false,
      "currency" : {
        "integrated" : false,
        "version" : "1.1.0-pre2",
        "minPricePurchaseAmount" : -1.0,
        "minPriceSellAmount" : 1000.0,
        "maxPriceSellAmount" : 9999999.0,
        "minPriceBidAmount" : 1000.0,
        "name" : "Vault Currency",
        "enabled" : true,
        "currencyName" : "money",
        "internalCurrencies" : [ ]
      },
      "id" : 1,
      "item" : {
        "type" : "DIRT",
        "amount" : 64
      }
    },
    "type" : "PRODUCT",
    "asynchronous" : true
  }
}
```


# Errors

Here you can view the error codes and on the Player Auctions Rest API.

## **Error Codes and Messages**

This section contains a list of common error responses by their error codes. Here is an example of what a response might look like:

```json
{
  "error": {
    "code": 401,
    "message": "You are no longer authorized, did you change your API token?"
  }
}
```

## **401 Unauthorized (API Key Error)**

**Error Code**: 401\
**Message**: "You are no longer authorized, did you change your API token?"

***

## **401 Unauthorized (Basic Authentication Required)**

**Error Code**: 401\
**Message**: "You are not authorized, did you provide the correct credentials?"

***

## **404 Cannot Find**

**Error Code**: 404\
**Message**: "Cannot find \<requested resource>"

***

## **403 Forbidden to View Auction**

**Error Code**: 403\
**Message**: "Forbidden, you cannot view this auction"

***

## **403 Forbidden to Delete Warp**

**Error Code**: 403\
**Message**: "Forbidden, you cannot delete this warp!"

***

## **404 Auction Not Found**

**Error Code**: 404\
**Message**: "The auction you are looking for does not exist!"

***

## **404 Recent Auction Not Found**

**Error Code**: 404\
**Message**: "The recent auction you are looking for does not exist!"

***

## **403 Forbidden to View Recent Auction**

**Error Code**: 403\
**Message**: "Forbidden, you cannot view this recent auction!"

***

## **400 Invalid UUID**

**Error Code**: 400\
**Message**: "Invalid UUID provided!"

***

## **403 Unauthorized to View Player**

**Error Code**: 403\
**Message**: "Forbidden, you cannot view this player!"


# Player Economy

Let your players have pocket/bank accounts, loads of commands and more.

## **What does it do?**

Player Economy gives your server unique economy features. This also supports virtual and physical balances!

## **Plugin Requirements**

* [Vault](https://www.spigotmc.org/resources/34315/) (It'll still work even though it hasn't been updated to the latest version of MC)

## **Features**

Player Economy contains loads of commands and other cool features you'll never find anywhere else! You can check a more detailed description of each feature for Player Economy [here](https://docs.olziedev.com/projects/playereconomy/features).

## **Supported Plugins**

You can view the supported plugins Player Economy supports [here](/projects/playereconomy/plugins), this will give you PlaceholderAPI placeholders and way more other plugins that are supported.

{% hint style="info" %}
**Want to request a feature?**

You can request a feature in our [discord](https://olziedev.com/support) and we will be more than happy to implement it!
{% endhint %}

## Download

You can download the latest version of Player Economy either on the resource page [here](https://spigotmc.org/resources/83073), or you can also download it from the Olzie Development website [here](https://cdn.olziedev.com/playereconomy/releases/).

## Development Builds

You can view our development builds [here](https://olziedev.com/pre/playereconomy) or on our discord, there may be bugs and issues in the build so do not run the build on a public server until you know its 100% working.

If there is an issue with the build, you can report it in our discord server and we will fix it immediately.


# Commands & Permissions

Here you can view all the available commands and permissions for Player Economy.

{% hint style="info" %}
**Command not working?**

The command needs to be enabled in the **config.yml** for it to function properly. If the issue still persists please report it.
{% endhint %}

## Player Commands (pe.commands)

| Command                         | Description                                                | Permission    |
| ------------------------------- | ---------------------------------------------------------- | ------------- |
| /peconomy help                  | Displays this menu.                                        | N/A           |
| /balance \[player]              | Displays your balance.                                     | pe.balance    |
| /balancetop                     | Displays the server balance top.                           | pe.balancetop |
| /pay \<player> \<amount>        | Pay another play from your balance.                        | pe.pay        |
| /withdraw \<amount> \[quantity] | Withdraw your item into an item.                           | pe.withdraw   |
| /paytoggle \[player]            | Toggle the ability to receive payments from other players. | pe.paytoggle  |

## Admin Commands

| Command                            | Description                   | Permission      |
| ---------------------------------- | ----------------------------- | --------------- |
| /peconomy reload                   | Reloads all the config files. | pe.admin.reload |
| /peconomy set \<player> \<amount>  | Set a player's balance.       | pe.admin.set    |
| /peconomy take \<player> \<amount> | Take money from a player.     | pe.admin.take   |
| /peconomy give \<player> \<amount> | Give money to a player.       | pe.admin.give   |
| /peconomy reset \<player>          | Reset a player's balance.     | pe.admin.reset  |

## Rest API Commands

| Command                                | Description               | Permission            |
| -------------------------------------- | ------------------------- | --------------------- |
| /peconomy apitokens                    | Shows the help menu.      | pe.apitokens          |
| /peconomy apitokens delete \[player]   | Delete your API token.    | pe.apitokens.delete   |
| /peconomy apitokens generate \[player] | Generate a new API token. | pe.apitokens.generate |

{% hint style="info" %}
**Permissions not working?**

The <> in some permissions are placeholders, you will need to replace them with a valid value like requested.
{% endhint %}

## Player Permissions

| Permission        | Description                        |
| ----------------- | ---------------------------------- |
| pe.balance.others | Displays another player's balance. |

## Admin Permissions

| Permission         | Description                                            |
| ------------------ | ------------------------------------------------------ |
| pe.admin.update    | When a player joins they receive update notifications. |
| pe.admin.apitokens | Remove/Generate other players' API tokens.             |
| pe.admin.paytoggle | Toggle payments for another player.                    |


# Configuration

Here you can view all the configuration and options for Player Economy.

## **Plugin Files**

Here are the latest plugin files, the plugin should automatically generate/update the files. If the plugin hasn't generated them make sure you've got the plugin requirements listed [here](/projects/playereconomy#plugin-requirements). If you want to test your YAML syntax you can test it [here](https://yaml-online-parser.appspot.com).

Your plugin will automatically update when there is a needed configuration update, you cannot turn this off and is added to prevent errors on your plugin if you have any missing configuration options.

The plugin connects to my webserver, if this webserver is offline or your plugin cannot access it, then the configuration files may not be updated or downloaded.

{% hint style="info" %}
[**config.yml - Change all the plugin options**](https://cdn.olziedev.com/playereconomy/configuration/config.yml)
{% endhint %}

{% hint style="info" %}
[**lang/ - Change all the plugin messages**](https://cdn.olziedev.com/playereconomy/configuration/lang/)
{% endhint %}

{% hint style="info" %}
[**guis/ - Change all the menu options/design**](https://cdn.olziedev.com/playereconomy/configuration/guis/)
{% endhint %}

## Command Actions

Command actions are an easy way you to customize and execute all sorts of functions when an event is triggered, here are the latest command actions for Player Economy.

| Action          | Description                                                                                            | Example                                                                                                                                                                                                                                                           |
| --------------- | ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| player          | Execute a command as the player.                                                                       | \[player] spawn                                                                                                                                                                                                                                                   |
| message         | Send a message to the player.                                                                          | \[message] \&aHello!                                                                                                                                                                                                                                              |
| broadcast       | Send a message to all online players.                                                                  | \[broadcast] \&aHello World!                                                                                                                                                                                                                                      |
| perm\_broadcast | <p>Broadcast a message to</p><p>players with the permission.</p>                                       | \[perm\_broadcast] message.view \&aHello!                                                                                                                                                                                                                         |
| action\_bar     | Send an action bar message to the player.                                                              | \[action\_bar] \&aHello!                                                                                                                                                                                                                                          |
| title           | Send a title to the player.                                                                            | \[title] 20 60 20 \&aHello\n\&aWorld!                                                                                                                                                                                                                             |
| player\_loop    | Loop through all online players and execute an action.                                                 | \[player\_loop] \[player] spawn                                                                                                                                                                                                                                   |
| server          | Execute a command as the server.                                                                       | \[server] spawn %player%                                                                                                                                                                                                                                          |
| command\_event  | Execute a unregistered command as the player.                                                          | \[command\_event] menu                                                                                                                                                                                                                                            |
| chat\_wait      | Wait for the user to enter a value in chat.                                                            | \[chat\_wait] \&aEnter a number:\[message] \&aYou said %value%                                                                                                                                                                                                    |
| chat\_wait      | Wait for the user to enter a value in chat, but removes the color from the chat input with **!color**. | \[chat\_wait] \&aEnter a number:\[message] **!color** \&aYou said %value%                                                                                                                                                                                         |
| add\_money      | Give a player money.                                                                                   | \[add\_money] 500                                                                                                                                                                                                                                                 |
| take\_money     | Take money from a player.                                                                              | \[take\_money] 500                                                                                                                                                                                                                                                |
| take\_perm      | Take a permission away from a player.                                                                  | \[take\_perm] message.view                                                                                                                                                                                                                                        |
| give\_perm      | Give a permission to a player                                                                          | \[give\_perm] message.view                                                                                                                                                                                                                                        |
| sound           | Play a sound to the player.                                                                            | <p>\[sound] <a href="https://javadocs.olziedev.com/spigot/latest/org/bukkit/Sound.html#AMBIENT_CAVE">AMBIENT\_CAVE</a></p><p>\[sound] <a href="https://javadocs.olziedev.com/spigot/latest/org/bukkit/Sound.html#AMBIENT_CAVE">AMBIENT\_CAVE </a>volume pitch</p> |
| close           | Close the inventory of the player.                                                                     | \[close]                                                                                                                                                                                                                                                          |

### Action Tags

You can also add action tags that modify how the action is executed, you can use it in your command action like this `[ACTION<TAG=value>]`.

| Tag        | Description                                           | Example                                                                                                            |
| ---------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| delay      | Execute the action later in ticks.                    | \[broadcast\<delay=20>] \&aHello World                                                                             |
| permission | Execute the action only if the player has permission. | \[add\_money\<permission=pa.donator>] 1000                                                                         |
| condition  | Execute the action only if the value matches.         | <p>\[add\_money\<condition=%player\_name%=Notch>] 1000<br>\[add\_money\<condition=%player\_name%!=Notch>] 1000</p> |
| vanished   | Execute the action if the player is in vanish or not. | \[broadcast\<vanished=false>] This player is not in vanish!                                                        |

## Requirements

Player Economy supports certain requirements in the configuration, where certain requirements needs to be met for something to happen.

When requirements are created in the config, you will always have 3 default values that is available for every requirement. Here is a list and explaination of what they do.

| Option   | Description                                                                                                                                                                |
| -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| inverted | If the value doesn't get met, then the outcome is successful. Inverted is disabled by default.                                                                             |
| cached   | If the value should be cached, this is useful if you've got a lot of requirements and do not want to constantly check for the same outcome. Caching is enabled by default. |
| type     | The type of the requirement, you can view all the requirement types below.                                                                                                 |

Please note if multiple requirements are created under one section, it will evaluate the requirements in order, if a requirement is not met then it the outcome will not be successful. Multiple requirements can return a successful outcome.

Here is a list of all the avaliable requirement types:

### Has permission

This requirement checks if the player has the permission.

Here is an example on how to use the has permission requirement, below in the example the player needs the permission "requirement.test"

```yaml
    1:
      inverted: false
      cached: true
      permission: "requirement.test"
      type: has permission
```

### Has money

This requirement checks if the player has the money.

Here is an example on how to use the has money requirement, below in the example the player needs $100

```yaml
    1:
      inverted: false
      cached: true
      amount: 100
      type: has money
```

### String equals

This requirement checks if the input equals to the output.

Here is an example on how to use the string equals requirement, below in the example the output needs to equal "Notch"

```yaml
    1:
      inverted: false
      cached: true
      input: "%player_name%"
      output: "Notch"
      type: string equals
```

## Color & Hex Color

Player Economy supports color codes that you can use literally everywhere possible that is displayed to the player. If you don't know the color codes off by heart, you can view them [here](https://htmlcolorcodes.com/bukkit-color-codes/).

Player Economy also supports the 1.16+ hex colors, with the current format `{#HEX_CODE}` with the following example `{#f5a142}` This shows a nice orange color. You can also use this [here](https://g.co/kgs/h4CeKb), to get your hex colors.

When using hex colors, you can also make cool looking gradients using 2 or more hex color codes. You can create gradients using these examples:

* `{#f5a142:#ffffff}` - This goes from a nice orange color then slowly fades into white.
* `{#f5a142:#ffffff:#0000ff}` - This goes from a nice orange color, then fades into white then slowly fades into blue.

## External Sources

You may want to use some external links to help you when configurating Player Economy.

### Material Types

Here is a list of all of the valid materials that you can use to create items in Player Economy for each version of Minecraft.

* [1.8.8](https://javadocs.olziedev.com/spigot/1.8.8/org/bukkit/Material.html)
* [1.9.4](https://javadocs.olziedev.com/spigot/1.9.4/org/bukkit/Material.html)
* [1.10.2](https://javadocs.olziedev.com/spigot/1.10.2/org/bukkit/Material.html)
* [1.11.2](https://javadocs.olziedev.com/spigot/1.11.2/org/bukkit/Material.html)
* [1.12.2](https://javadocs.olziedev.com/spigot/1.12.2/org/bukkit/Material.html)
* [1.13.2](https://javadocs.olziedev.com/spigot/1.13.2/org/bukkit/Material.html)
* [1.14.4](https://javadocs.olziedev.com/spigot/1.14.4/org/bukkit/Material.html)
* [1.15.2](https://javadocs.olziedev.com/spigot/1.15.2/org/bukkit/Material.html)
* [1.16.5](https://javadocs.olziedev.com/spigot/1.16.5/org/bukkit/Material.html)
* [1.17.1](https://javadocs.olziedev.com/spigot/1.17.1/org/bukkit/Material.html)
* [1.18.2](https://javadocs.olziedev.com/spigot/1.18.2/org/bukkit/Material.html)
* [1.19.4](https://javadocs.olziedev.com/spigot/1.19.4/org/bukkit/Material.html)
* [1.20.6](https://javadocs.olziedev.com/spigot/1.20.6/org/bukkit/Material.html)
* [1.21.4](https://javadocs.olziedev.com/spigot/1.21.4/org/bukkit/Material.html)
* [Latest](https://javadocs.olziedev.com/spigot/latest/org/bukkit/Material.html)

### Sound Types

Here is a list of all the valid sound types that you can use to create cool sound effects in Player Economy for each version of Minecraft.

* [1.8.8](https://javadocs.olziedev.com/spigot/1.8.8/org/bukkit/Sound.html)
* [1.9.4](https://javadocs.olziedev.com/spigot/1.9.4/org/bukkit/Sound.html)
* [1.10.2](https://javadocs.olziedev.com/spigot/1.10.2/org/bukkit/Sound.html)
* [1.11.2](https://javadocs.olziedev.com/spigot/1.11.2/org/bukkit/Sound.html)
* [1.12.2](https://javadocs.olziedev.com/spigot/1.12.2/org/bukkit/Sound.html)
* [1.13.2](https://javadocs.olziedev.com/spigot/1.13.2/org/bukkit/Sound.html)
* [1.14.4](https://javadocs.olziedev.com/spigot/1.14.4/org/bukkit/Sound.html)
* [1.15.2](https://javadocs.olziedev.com/spigot/1.15.2/org/bukkit/Sound.html)
* [1.16.5](https://javadocs.olziedev.com/spigot/1.16.5/org/bukkit/Sound.html)
* [1.17.1](https://javadocs.olziedev.com/spigot/1.17.1/org/bukkit/Sound.html)
* [1.18.2](https://javadocs.olziedev.com/spigot/1.18.2/org/bukkit/Sound.html)
* [1.19.4](ttps://javadocs.olziedev.com/spigot/1.19.4/org/bukkit/Sound.html)
* [1.20.6](https://javadocs.olziedev.com/spigot/1.20.6/org/bukkit/Sound.html)
* [1.21.4](https://javadocs.olziedev.com/spigot/1.21.4/org/bukkit/Sound.html)
* [Latest](https://javadocs.olziedev.com/spigot/latest/org/bukkit/Sound.html)

### Item Flags

Here is a list of all the valid item flags that you can use on your items in Player Economy for each version of Minecraft.

* [1.8.8](https://javadocs.olziedev.com/spigot/1.8.8/org/bukkit/inventory/ItemFlag.html)
* [1.9.4](https://javadocs.olziedev.com/spigot/1.9.4/org/bukkit/inventory/ItemFlag.html)
* [1.10.2](https://javadocs.olziedev.com/spigot/1.10.2/org/bukkit/inventory/ItemFlag.html)
* [1.11.2](https://javadocs.olziedev.com/spigot/1.11.2/org/bukkit/inventory/ItemFlag.html)
* [1.12.2](https://javadocs.olziedev.com/spigot/1.12.2/org/bukkit/inventory/ItemFlag.html)
* [1.13.2](https://javadocs.olziedev.com/spigot/1.13.2/org/bukkit/inventory/ItemFlag.html)
* [1.14.4](https://javadocs.olziedev.com/spigot/1.14.4/org/bukkit/inventory/ItemFlag.html)
* [1.15.2](https://javadocs.olziedev.com/spigot/1.15.2/org/bukkit/inventory/ItemFlag.html)
* [1.16.5](https://javadocs.olziedev.com/spigot/1.16.5/org/bukkit/inventory/ItemFlag.html)
* [1.17.1](https://javadocs.olziedev.com/spigot/1.17.1/org/bukkit/inventory/ItemFlag.html)
* [1.18.2](https://javadocs.olziedev.com/spigot/1.18.2/org/bukkit/inventory/ItemFlag.html)
* [1.19.4](https://javadocs.olziedev.com/spigot/1.19.4/org/bukkit/inventory/ItemFlag.html)
* [1.20.6](https://javadocs.olziedev.com/spigot/1.20.6/org/bukkit/inventory/ItemFlag.html)
* [1.21.4](https://javadocs.olziedev.com/spigot/1.21.4/org/bukkit/inventory/ItemFlag.html)
* [Latest](https://javadocs.olziedev.com/spigot/latest/org/bukkit/inventory/ItemFlag.html)

### Enchantments

Here is a list of all the valid item enchantments that you can use on your items in Player Economy for each version of Minecraft.

* [1.8.8](https://javadocs.olziedev.com/spigot/1.8.8/org/bukkit/enchantments/Enchantment.html)
* [1.9.4](https://javadocs.olziedev.com/spigot/1.9.4/org/bukkit/enchantments/Enchantment.html)
* [1.10.2](https://javadocs.olziedev.com/spigot/1.10.2/org/bukkit/enchantments/Enchantment.html)
* [1.11.2](https://javadocs.olziedev.com/spigot/1.11.2/org/bukkit/enchantments/Enchantment.html)
* [1.12.2](https://javadocs.olziedev.com/spigot/1.12.2/org/bukkit/enchantments/Enchantment.html)
* [1.13.2](https://javadocs.olziedev.com/spigot/1.13.2/org/bukkit/enchantments/Enchantment.html)
* [1.14.4](https://javadocs.olziedev.com/spigot/1.14.4/org/bukkit/enchantments/Enchantment.html)
* [1.15.2](https://javadocs.olziedev.com/spigot/1.15.2/org/bukkit/enchantments/Enchantment.html)
* [1.16.5](https://javadocs.olziedev.com/spigot/1.16.5/org/bukkit/enchantments/Enchantment.html)
* [1.17.1](https://javadocs.olziedev.com/spigot/1.17.1/org/bukkit/enchantments/Enchantment.html)
* [1.18.2](https://javadocs.olziedev.com/spigot/1.18.2/org/bukkit/enchantments/Enchantment.html)
* [1.19.4](https://javadocs.olziedev.com/spigot/1.19.4/org/bukkit/enchantments/Enchantment.html)
* [1.20.6](https://javadocs.olziedev.com/spigot/1.20.6/org/bukkit/enchantments/Enchantment.html)
* [1.21.4](https://javadocs.olziedev.com/spigot/1.21.4/org/bukkit/enchantments/Enchantment.html)
* [Latest](https://javadocs.olziedev.com/spigot/latest/org/bukkit/enchantments/Enchantment.html)


# Item Configuration

Here you can view all the configuration, examples and options for creating items in Player Economy.

## Item Creation

In Player Economy you customize the items that are displayed in the menu, how they are displayed and what they do, there are a lot of item tags for you to be able to accomplish this.

### Item Material

When creating an item, you will always need to provide a material type, material type is just what the item is. Make sure when using item materials, they're all capitals and they are a correct material from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/Material.html).

Make sure the material you're using from the list, exists in your Minecraft version otherwise the item will not be shown in the menu. If you're using a Minecraft version lower than 1.13, you may want to also check out [Item Data](#item-data).

Here is an example on how to use materials, below in the example it will show a diamond sword in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   amount: 1
   slot: 0
```

Alternatively, if you are either using [ItemsAdder](https://www.spigotmc.org/resources/73355/), [Oxraen](https://www.spigotmc.org/resources/72448/) or [Nexo](https://docs.nexomc.com/), you can easily use their custom items by using the following format.

```yaml
# ItemsAdder:
1:
  material: itemsadder-bananna
  slot: 0
# Oraxen:
2:
  material: oraxen-pear
  slot: 0
# Nexo:
3:
  material: nexo-apple
  slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-65615f44b68ae421a07a373a8d1c831fc263a383%2Fimage.png?alt=media)

### Item Data

When creating an item in Minecraft versions **1.12 and below**, you may need to provide an item data type to correspond to the item you want. These item data types are usually used when you have multiple types or states of one block for example stained glass, you have multiple colors of this glass.

If you need to get the item data, you can use `F3+H` in game to enable advanced tooltips, then you will be able to view the item data type after the / like shown below.

![The item above shows an item id of 2.](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-12019be2b16b63a0a1e39db0ad9a607c98cbd366%2Fimage.png?alt=media)

You can also use item data to specify the damage value of the item as well, this will only work if the item can actually be damaged though.

Here is an example on how to use materials with item data values, below in the example it will show a magenta stained glass pane in the menu.

#### Configuration Example

```yaml
1:
   material: STAINED_GLASS_PANE
   data: 2
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-0ccae6b97eef538c35a5deec7137ddb604c758a9%2Fimage.png?alt=media)

### Item Amount

When creating an item, you will need to specify the amount you want to be displayed in the menu. If you do not specify any amount, the default will be thus making it not showing in the menu.

You cannot exceed over the maximum stack size of the menu, which is `64`, the number will also need to be a positive number as well.

### Item Display Name

When creating an item, you can modify the item name that is displayed when you hover over the item. With display names you may also have color codes in the name as well to make it stand out in the menu.

Here is an example on how to use item names, below in the example it will show a diamond sword with the name as `Knife` as red in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   name: "&cKnife"
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-4154625c49b4da6d2e720930a42e0198194be542%2Fimage.png?alt=media)

### Item Custom Name

When creating an item, you can modify the custom name of the actual item, this is different from the display name as this is the actual name of the item. This is used for plugins that use custom items and need to identify them.

Here is an example on how to use item custom names, below in the example it will show a diamond sword with the custom name as `Knife` in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   custom-name: "Knife"
   amount: 1
   slot: 0
```

### Item Lore

When creating an item, you can have a description in your item so when you hover over the item it will show the description below the item name. With lores you can have color codes and have multiple lines in the description as well.

The color will not go onto the next line so you will also need to put it on the other lines as well.

Here is an example on how to use item lores, below in the example it will show a diamond sword with the 1st line as `This is a item`, with the color blue with the second line as `description example.` with the color blue again in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   lore: 
     - "&bThis is a item"
     - "&bdescription example."
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-e9b5b45bfce25d97cce70c047bfca69cc31f9350%2Fimage.png?alt=media)

### Item Glowing

When creating an item, you can give the item a glowing affect, it gives the item an invisible enchantment that you cannot see and makes your menu look more shiny.

Here is an example on how to use the glowing affect, below in the example it will show a glowing diamond sword in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   glowing: true
   amount: 1
   slot: i
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-3f561c01f03359e53f6f495dc2839483ad8dc86e%2Fimage.png?alt=media)

### Skull Owner

When creating player heads, you can give the player head an owner. The owner of player head will be the skin of the head, you can put any players name as the owner or you could put `[owner]` for it to set the skulls owner as the player that is viewing the menu.

Remember, when creating player heads its different in **1.13 and 1.12 and below**. If you're using 1.12 and below please make sure the data value is 3 and the material is `SKULL`, if you're using 1.13 you will not need a data value and the material will be `PLAYER_HEAD`

Here is an example on how to create player heads with an owner, below in the example it will show a skull with my skin as I'm viewing the menu.

#### Configuration Example

```yaml
1: # Example for 1.13+
   material: PLAYER_HEAD
   owner: [owner]
   amount: 1
   slot: 0
2: # Example for 1.12-
   material: SKULL_ITEM
   owner: [owner]
   data: 3
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-b41f629e05b1a086048c48d57758e23c48155dfc%2Fimage.png?alt=media)

### Skull Texture

When creating player heads, you can give the player head a texture. Unlike the skull owners, an existing player has to have that skin textures don't and you can create and use some awesome looking skulls.

There are loads of sites you can get the Base64 texture from like [here](https://minecraft-heads.com/custom-heads) and then copy the value field for your texture.

Here is an example on how to create player heads with a texture, below in the example it will show a skull with as a computer.

#### Configuration Example

```yaml
1: # Example for 1.13+
   material: PLAYER_HEAD
   texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTc4Mjk1ZThlYzEwZjlmYmEzZjBjN2IxMTRkMzM0OTkyYjAzZjRlMjNmODA2NDc2NmVlNDM0ZGRjZGExMjdmMSJ9fX0=
   amount: 1
   slot: 0
2: # Example for 1.12-
   material: SKULL_ITEM
   texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTc4Mjk1ZThlYzEwZjlmYmEzZjBjN2IxMTRkMzM0OTkyYjAzZjRlMjNmODA2NDc2NmVlNDM0ZGRjZGExMjdmMSJ9fX0=
   data: 3
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-6aacc9a4698e6a358ed505321aeda97f9029649d%2Fimage.png?alt=media)

### Potion Data

When creating potions, you can select any type of potion material. For example `SPASH_POTION`, `POTION`, `LINGERING_POTION`, `TIPPED_ARROW`

A potion will also need the effect, duration and the amplifier.\
The effect of potion is what is given to you when the potion is splashed. You can view all the potion effect names [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/potion/PotionEffectType.html).\
The amplifier is how strong the potion is, remember this starts from `0!`\
The duration is how long the potion lasts, this is measured in ticks `(20 ticks = 1 second)` and not seconds!

You can also add underlying potion type, this will not give the effect. But instead changes the item displayed. Remeber potion effect types are not potion types. You can find a list of potion types [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/potion/PotionType.html)

Here is an example on how to create potions, below in the example it will show a splash potion with speed 2 lasting for 2 seconds.

#### Configuration Example

```yaml
1:
   material: SPLASH_POTION
   effect: SPEED
   amplifier: 1
   duration: 40
   amount: 1
   slot: 0
2:
   material: TIPPED_ARROW
   potion: SPEED
   replaced: false
   extended: false
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-10de8f1f20c88f4394efcc153dd316726b43d37a%2Fimage.png?alt=media)

### Banner Data

When creating banners, you may want to be able to add dye color and patterns. To view the full list of dyes you can use are from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/DyeColor.html). To view the full list of patterns you can use are from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/block/banner/PatternType.html).

Here is an example on how to use banner data, below in the example it will show a black banner with a red border.

#### Configuration Example

```yaml
1: # Example for 1.13+
   material: BLACK_BANNER
   patterns:
     1:
       dye: RED
       pattern: BORDER
   amount: 1
   slot: 0
2: # Example for 1.12-
   material: BANNER
   patterns:
     1:
       dye: RED
       pattern: BORDER
   data: 0
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

<figure><img src="https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-22dc09ea7ba2f31ce5c221ef024766d4ad8ce10e%2Fimage%20(6)-4.png?alt=media" alt=""><figcaption></figcaption></figure>

### Armor Color

When creating items that are armor, depending on the type of armor you can add color to it! As of right now you can only add color to Leather. When adding the color make sure u use the RGB format. You can use an RGB picker [here](https://g.co/kgs/Tct6MN).

#### Configuration Example

```yaml
1:
   material: LEATHER_BOOTS
   color: "252, 186, 3"
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

<figure><img src="https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2FtqIl6mbUbM8bzcphLXq1%2Fimage.png?alt=media&amp;token=604e5b81-6476-4c69-a279-951ce729b8b4" alt=""><figcaption></figcaption></figure>

### Armor Trim

When creating items that are armor, you can add armor trims to the armor. You can use the default trims provided by Minecraft or you can add your own!

Here is an example on how to use armor trims, below in the example it will show a diamond helmet with the quartz sentry trim. If you wish to use your own you will need to provide your namespace and id separated by a colon, for example `myplugin:mytrim`.

**Configuration Example**

```yml
1:
  material: DIAMOND_HELMET
  trim-material: "QUARTZ"
  trim-pattern: "SENTRY"
  amount: 1
  slot: 0
```

### Item Flags

When creating items, you can disable the item flags for the item so it doesn't show information that you may not want to show when hovering over the item. Make sure when using item flags, they're all capitals and they are a correct flag from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/inventory/ItemFlag.html).

Here is an example on how to use item flags, below in the example it will show a diamond sword in the menu without the `When in main hand:` in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   item-flags:
     - "HIDE_ATTRIBUTES"
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-ab0250d887f1cc4f19675a791bb1e4398585343d%2Fimage.png?alt=media)

### Item Enchantments

When creating an item, you can add enchantments and what level of those enchantments on that item. Make sure when you're adding enchantments, they're all capitals and they are a enchantment from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/enchantments/Enchantment.html).

Here is an example on how to use enchantments, below in the example it will show a diamond sword in the menu with the unbreaking level 1 enchantment.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   enchantments:
     - "DURABILITY:1"
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-eaf2c8518a1841358661dcfdc93851b7d45523ba%2Fimage.png?alt=media)

### Item Storage Enchantments

When creating an enchantable book, you can add enchantments and what level of those enchantments on that book. Make sure when you're adding enchantments, they're all capitals and they are an enchantment from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/enchantments/Enchantment.html).

Here is an example on how to use enchantments, below in the example it will show a enchanted book in the menu with the unbreaking level 1 enchantment.

#### Configuration Example

```yaml
1:
   material: ENCHANTED_BOOK
   stored-enchantments:
     - "DURABILITY:1"
   amount: 1
   slot: 0
```

### Item Commands

When creating an item, you may want the item to execute a type of action when left or right clicking the item. You can view the command actions and how to use them [here](/projects/playereconomy/configuration#command-actions).

Here is an example on how to use item commands, below in the example it will show a diamond sword in the menu and when you click on it it'll say hey in chat.

#### Configuration Example

```yaml
1: # Only listening for right click
   material: DIAMOND_SWORD
   right-commands:
     - "[message] hey"
   amount: 1
   slot: 0
2: # Only listening for left click
   material: DIAMOND_SWORD
   left-commands:
     - "[message] hey"
   amount: 1
   slot: 0
3: # Listening for both
   material: DIAMOND_SWORD
   commands:
     - "[message] hey"
   amount: 1
   slot: 0
```

Here is a preview of what the above example how it works in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-de3db9dd5399a625ab551072178b0a03e8c14081%2Fezgif.com-gif-maker.gif?alt=media\&token=4380e9a9-2030-4175-9a54-62ccae7d0714)

### Item NBT Data

When creating an item, you can specify NBT item tags for your item for whatever reason. NBT tags have two parts, the token and the value.

Here is an example on how to use item NBT data, below in the example it will show a diamond sword in the menu with a NBT data string named `Sword` and the value being `Awesome`.

### Item Custom Model Data

When creating an item, you may want the item be displayed as a texture from your texture pack.

Here is an example on how to use item custom model data, below in the example it will show a diamond sword in the menu with a custom model data of `1`.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   custom-model-data: 1
   amount: 1
   slot: 0
```

### Item Custom Model Data Component

When creating an item, you may want the item be displayed as a texture from your texture pack. This uses more of a modern version of the CustomModelData API.

Here is an example on how to use item custom model data, below in the example it will show a diamond sword in the menu with a custom model data of `1`.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   custom-model-data-component:
     colors: [""]
     flags: [""]
     floats: [""]
     strings: ["1"]
   amount: 1
   slot: 0
```

### Item Model

When creating an item, you may want the item be displayed as a model from your texture pack.

Item Models use NamespacedKeys which are in the format of `namespace:key`. Here is an example on how to use item models, below in the example it will show a diamond sword in the menu with a model of `playereconomy:diamond_sword_1`.

#### Configuration Example

```yaml
1:
  material: DIAMOND_SWORD
  item-model: "playereconomy:diamond_sword_1"
  amount: 1
  slot: 0
```

### Item Tooltip Style

When creating an item, you may want the item tooltip style from your texture pack.

Item Tooltip styles use NamespacedKeys which are in the format of `namespace:key`. Here is an example on how to use tooltip styles, below in the example it will show a diamond sword in the menu with a tooltip style of `playereconomy:diamond_sword_1`.

#### Configuration Example

```yaml
1:
  material: DIAMOND_SWORD
  tooltip-style: "playereconomy:diamond_sword_1"
  amount: 1
  slot: 0
```

### Item Hide Tooltip

When creating an item, you may want to completely hide the tooltips.

Here is an example on how to hide the tooltip.

#### Configuration Example

```yaml
1:
  material: DIAMOND_SWORD
  hide-tooltip: true
  amount: 1
  slot: 0
```

### Item Unbreakable

When creating an item with damage, you may want the durability status to be removed from the tooltip on the item if some players have the setting "Item Tooltips" enabled.

Here is an example on how to use unbreakable.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   unbreakable: true
   amount: 1
   slot: 0
```

### Item Slot

When creating an item, you will need to specify a slot of where your item will be in the menu. Item slots always start from 0, meaning slot 0 will be slot 1 in the menu.

Slots can only be 0 to the menu size - 1, for example if your menu size is 27, it'll be 0-26. There are 3 different ways on how you can specify slots in the configuration.

Here is an example on how to use item slots, below in the example it will show a diamond sword in the slots `0, 1, 2, 3, 4, 5, 6, 7, 8` of the menu.

If you wish to remove an existing item from the inventory, but you want to keep it in the file. You can set the slot to `-1` to remove it from the menu.

#### Configuration Example

<pre class="language-yaml"><code class="lang-yaml">1: # Using the slot range system
   material: DIAMOND_SWORD
   slot: 0-8
   amount: 1
2: # Using the slot list system
   material: DIAMOND_SWORD
   slot: [0, 1, 2, 3, 4, 5, 6, 7, 8]
   amount: 1
3: 
  # Using the manual slot system, then repeat this 7 more 
<strong>  # times but with a different slot number. (very painful)
</strong>   material: DIAMOND_SWORD
   slot: 0
   amount: 1
</code></pre>

### Item View Requirements

When creating an item, you can add certain requirements to only view the item. If the requirement does not meet then it will not show the item. If the requirement is met, it will show the item.

View more information about requirements [here](/projects/playereconomy/configuration#requirements).

Here is an example on how to use the item view requirements, below in the example the player needs the permission "item.view" to see the item.

#### Configuration Example

```yaml
1:
  material: DIAMOND_SWORD
  amount: 1
  slot: 0
  view-requirements:
    1:
      inverted: false
      cached: true
      permission: "item.view"
      type: has permission
```

### Item Click Requirements

When creating an item, you can add certain requirements to only click the item. If the requirement does not meet then it will not allow the item to be clicked and execute deny commands. If the requirement is met, it will allow the item to be clicked and execute success commands. Note, it will also execute the item commands if successful.

View more information about requirements [here](/projects/playereconomy/configuration#requirements).

Here is an example on how to use the item click requirements, below in the example the player needs the permission "item.click" to click the item.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   commands:
     - "[message] hey"
   amount: 1
   slot: 0
   click-requirements:
     1:
       inverted: false
       cached: true
       permission: "item.click"
       type: has permission
       deny-commands:
         - "[message] you don't have permission"
       success-commands:
        - "[message] you have permission"
```

## Item Placeholders


# Lang Configuration

Here you can view all the configuration, examples and options for creating messages in Player Economy.

## Language Support

Player Economy supports multi language support currently there is not many languages that it supports, thats where you can help us! If you wish, you can give us your translation of Player Economy and we will upload it to our webserver where every server can access it in the lang folder.

If you wish to change the plugin language you can change this in the `config.yml` and then select the languages in the lang folder to use. Make sure you put the exact file name without the file extension (.yml) in the `config.yml`.

## JSON Messages

Player Economy supports the ability to use JSON formatting in your messages, for you to add clickable commands, hover events and more!

If you wish to add colors to your JSON text, you'll find that the client will stop registering the color when it goes on the next line. You can use the in-built JSON color to solve that.

For you to easily create the JSON format, you can use this site [here](https://www.minecraftjson.com) and start to create text. Then copy the command it gives you and remove the `/tellraw @p`from the command so its just JSON.

Also, make sure you select the version below on the site that you're using, have fun creating cool looking JSON messages!

If you need some help formatting or using the site to format your JSON, come and join our discord and we will help you!

## MiniMessage Support

Player Economy supports the [MiniMessage](https://docs.adventure.kyori.net/minimessage/index.html) library, this allows you to easily add clickable commands, hover events and more! You can use this generator [here](https://webui.advntr.dev/) to make your life so much easier.

MiniMessage is more advanced, modern and easier than using JSON Messages. All you need to do is make sure you have the proper message syntax in your message and the plugin will recognise it as a mini message.

Please note that MiniMessage is only supported from 1.16.5 and above, for an alternative you will need to use JSON messages.

If you are experiencing any issues with MiniMessage formatting and quotes not being escaped properly in variables. Please note that you can use `<escape_quotes>%Variable%</escape_quotes>` to escape quotes in variables. This will ensure the MiniMessage parser handles them correctly.

## Message Placeholders

Player Economy supports all types of message placeholders that you can use in your messages, there are two types of placeholders and these are `global` and `individual`. Global placeholders allow you to use these placeholders in any message of the plugin. Individual placeholders are only set placeholders for that specific message.

Here is a list of the current global placeholders. Remember, you can also use [PlaceholderAPI](https://docs.olziedev.com/projects/playereconomy/plugins#placeholderapi) placeholders in all the messages as well.

| Placeholder   | Description                                                         |
| ------------- | ------------------------------------------------------------------- |
| %prefix%      | Shows the prefix set in your lang file.                             |
| %player%      | Shows the players name that is receiving the message.               |
| %displayname% | Shows the display name of the player that is receiving the message. |

If you're looking for the individual placeholders, the default placeholders that can be used in that message is in the default configuration for that message already.


# FAQ

Here you can view the frequent asked questions for Player Economy, it might answer your question!


# Database FAQ

Here you can view the frequent asked questions for the Player Economy database system.

## 1. Why does Player Economy keep throwing "No operations allowed after connection closed."?

If you're running MySQL, this is a very common issue. Sometimes your database server might be closing the connection because the connection is "sleeping", you can solve this by either adding `"autoReconnect=true"` to your sql arguments in the `config.yml` or you can enable the `close`option in the `config.yml` to close connections after every few minutes and open a new one.

## 2. Why does Player Economy keep throwing "No operations allowed after connection closed."?

If you're running MySQL, this is a very common issue. Sometimes your database server might be closing the connection because the connection is "sleeping", you can solve this by either adding `"autoReconnect=true"` to your sql arguments in the `config.yml` or you can enable the `close`option in the `config.yml` to close connections after every few minutes and open a new one.

## 3. How do I convert my data from the SQLite to MySQL?

You can convert all of your data back and forth between MySQL and SQite. To convert from SQLite to MySQL, you will need to enter all of you connection details and enable MySQL. To convert from MySQL to SQLite you need to make sure all of your connection details have been entered but MySQL is disabled

Once completed, you can also enable the convert option. Once enabled, restart your server. The data will be converted. Once its been converted, disable the convert option back in the config then restart your server again. Should be all good to go!


# Supported Plugins

Here you can view all the supported extensions information for Player Economy.

## Vault

Player Economy depends on [Vault ](https://www.spigotmc.org/resources/34315/)so you can use any of your plugins that supports Vault and it will use Player Economy's economy.

## PlaceholderAPI

Player Economy hooks into [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) so you can use the Player Economy placeholders everywhere that supports PlaceholderAPI, here is a list of the current placeholders.

| Placeholder                                | Description                                                                                   |
| ------------------------------------------ | --------------------------------------------------------------------------------------------- |
| %pe\_player\_\<modifier>%                  | <p>View the modifier of the player.</p><p>Check modifiers below.</p>                          |
| %pe\_player\_balancetop%                   | View your balance top position.                                                               |
| %pe\_player\_allowing\_payments%           | View if you're allowing payments via /pay.                                                    |
| %pe\_server\_balance%                      | View the total balance of the server.                                                         |
| %pe\_server\_balances%                     | View the amount of players with a balance.                                                    |
| %pe\_balancetop\_\<position>\_\<modifier>% | <p>View the modifier of a balancetop entry in that position.</p><p>Check modifiers below.</p> |

### Modifiers

Some placeholders do support modifiers, which allow you to grab information on a certain player.

| Modifier           | Description                        |
| ------------------ | ---------------------------------- |
| player             | View the player name.              |
| balance            | View the balance. (e.g 1,1000).    |
| balance\_formatted | View formatted balance (e.g 1.1k). |
| balance\_raw       | View raw balance (e.g 1100).       |


# Plugin Features

Here is a detailed description of most of the features and how they work here.

## Economy Support

Player Economy provides an economy, it depends on vault so it can be used as a bridge to connect other plugins with the economy. Currently, Player Economy only provides a virtual currency, this will be changed in the future.

## MySQL Support

Player Economy supports MySQL so you can connect player's data to your database. You can setup MySQL in the **config.yml**, and easily convert your data from SQLite to MySQL easily.

## Balance

Player Economy provides a unique balance per player, you can give other players money from their bank account by using the command **/pay \<player> \<amount>**. You can also compete with other players on the server by viewing the leader board on **/baltop**. You can withdraw your money by using the command **/withdraw \<amount>**. You can find more information on withdrawing below.

## Withdrawing

In Player Economy, you can withdraw your virtual balance into a physical item for you to fairly trade with another player. You can also merge banknote by clicking a banknote onto another banknote in the inventory to merge into one banknote. If you wish to redeem all, you can shift and click to claim all of the banknotes.


# Plugin API

Here you can view the JavaDocs and how to access/use the Player Economy Plugin API.

## Java Docs

Here you can view the Java Docs [here](https://javadocs.olziedev.com/playereconomy) for Player Economy which provides you all the usages and descriptions of the API.

## Maven Repository

Do you want to integrate with Player Economy in your plugin? You can use the OlzieDev repo to build against the Player Economy API.

Under `repositories` in your `pom.xml`, you need to add a new `repository` for the repo.

```java
<repositories>
    ...
    <repository>
        <id>olzie-repo</id>
        <url>https://repo.olziedev.com/</url>
    </repository>
</repositories>
```

Next, add Player Economy as a `dependency` under `dependencies`:

`VERSION_HERE` would be your exact plugin version, you will not need to update the API version every time a plugin update is out, only when an api update happens.

```java
<dependencies>
    ...
    <dependency>
        <groupId>com.olziedev</groupId>
        <artifactId>playereconomy-api</artifactId>
        <version>VERSION_HERE</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
```

## How to access the API

You can access the Player Economy API by getting the instance. If the plugin hasn't fully loaded the instance will return null, you can use a callback to access the API when its ready.

```java
/* 
Accessing the instance, can return null if not loaded.

This instance can also change when a plugin reload has 
happened, so its not advisted to use this
*/ 
PlayerEconomy api = PlayerEconomy.getInstance();

PlayerEconomy.getInstance(api -> { // accessing the instance when its ready.

});
```

## Some examples

Here is an example on how to access a economy player by their UUID.

```java
PlayerEconomy.getInstance(api -> {
    EPlayer player = api.getEcoPlayer(UUID.randomUUID());
    // get their balance
    player.getBalance();    
});
```


# Creating Commands

Here you can view details on how to create sub commands using the Commands Plugin API.

## Creating Commands

In Player Economy you can create a sub command that will allow you to create sub commands.

## Registering

You can register the commands using the [CommandRegistry](https://javadocs.olziedev.com/playereconomy/com/olziedev/playereconomy/api/eco/command/CommandRegistry.html) to register your command.

Here is an example to register your command, instance is your expansions' instance.

```java
PlayerEconomyAPI.getInstance().getCommandRegistry().addSubCommand(instance);
```

### Examples

Here is an example of a sub command class, this will let you be able to create sub commands.

```java
import com.olziedev.playereconomy.api.eco.command.ECommand;
import org.bukkit.command.CommandSender;

import java.util.List;

public class ExampleCommand extends ECommand {

    public ExampleCommand() {
        super("example");
        this.executorType = ExecutorType.PLAYER_ONLY;
    }

    @Override
    public void execute(CommandSender sender, String[] arguments) {
        
    }

    @Override
    public List<String> onTabComplete(CommandSender sender, String[] arguments) {
        return super.onTabComplete(sender, arguments);
    }
}
```

The executor type is the type of executor that can execute the command, you can set it to PLAYER\_ONLY, CONSOLE\_ONLY, or null for both.

The onTabComplete method is a optional the method that will show a list of strings that will be shown to the player.


# Using Events

Here you can view details on how to listen to events using the Plugin API.

In Player Economy you can listen to events using the API, this will allow you to listen to events that happen in the plugin. It uses the Bukkit event system so you should be familiar with that.

## Examples

Here is an example of a listener class, this will let you be able to listen to events that happen in the plugin. Here is a list of events you can listen for Economy [here](https://javadocs.olziedev.com/playereconomy/com/olziedev/playereconomy/api/events/player/package-summary.html).

```java
import com.olziedev.playereconomy.api.player.EPlayer;
import com.olziedev.playereconomy.api.events.player.PlayerEconomyDepositEvent;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class ExampleEvents implements Listener {

    @EventHandler
    public void onEcoDeposit(PlayerEconomyDepositEvent event) {
        EPlayer player = event.getEcoPlayer();
        double amount = event.getAmount();
    }
}
```


# Rest API

Here you can view the endpoints and how to access/use the Player Economy Rest API.

The Player Economy REST API extends the capabilities of the Player Economy plugin, allowing interaction with plugin objects and events from outside the Minecraft server environment. This documentation provides a comprehensive guide to using the API, including its endpoints, WebSocket functionality, and authentication mechanisms.

The base URL for the Player Economy REST API is determined by the server administrator. Please remember to include the base URL of the server where the Player Economy API is hosted, which can probably be found on the servers documentation.

## Authentication

To interact with the **Player Economy REST API** or **WebSocket**, authentication is required to ensure secure access. We use **Basic Authentication**, where:

* **Username**: Your **Minecraft UUID** (You can find your **FULL UUID** [here](https://mcuuid.net/?q=ForgotUrPassword)).
* **Password**: Your **API Key** (a unique token generated for your account to interact with the API).

#### Generating an API Key

To generate an API token, use the command:

```bash
/peconomy apitokens generate
```

This will create a new API token for your account, which can then be used for authentication in your API requests. **Do not share your API token with anyone else, as it provides access to your account and data.**

#### API Key Limitations

* You can only have **one active API token** at a time.
* If you generate a new API token using `/peconomy apitokens generate`, it will **replace** your existing API token. The previous token will no longer be valid.
* If you wish to delete your API token without generating a new one, use the following command:

  ```arduino
  /peconomy apitokens delete
  ```

  This will delete your existing API token, but **will not generate a new one**. You will need to generate a new token manually if required.

#### Example API Request

Here’s how to authenticate API requests using your Minecraft UUID and API token:

**Request Header**:

```http
Authorization: Basic {Base64 encoded string of 'UUID:API_KEY'}
```

In this case, the base64 encoded string would be a combination of your Minecraft UUID and API Key (separated by a colon). You can use your program to easily generate the base64 encoding.

## Endpoints

You will find a comprehensive list of all the available API endpoints for interacting with the Player Economy plugin. Each endpoint includes detailed descriptions, request methods, parameters, and responses.

To view the available endpoints, go to the [Endpoints](/projects/playereconomy/restapi/endpoints) page.

## Events

The Player Economy API also supports real-time event handling through WebSockets. This section covers connecting, subscribing, and receiving events like depositing or withdrawing money.

Go to the [Events](/projects/playereconomy/restapi/events) page for details on subscribing to and receiving WebSocket events.

## Errors

The Player Economy API can throw errors, and you will need to catch them! You can view them [here](/projects/playereconomy/restapi/errors).


# Endpoints

Here you can view all available endpoints in the Player Economy REST API, allowing you to manage and retrieve player data. Each endpoint is described with its path, parameters, and response format.

This section documents all the available endpoints in the Player Economy REST API. These endpoints allow you to manage player data and retrieve player-specific information. Each endpoint is designed to be easily accessible, with clear paths for retrieving and modifying player data based on player UUIDs.

**Note:**\
Currently, there are no endpoints for creating or editing data (i.e., no POST or PUT endpoints).

**Authentication:**\
Authentication is required to access the API, as detailed in the [Authentication](/projects/playereconomy/restapi#authentication) section.

## Endpoints

Each endpoint is designed to help you manage and retrieve playteplayer data efficiently.


# GET

This section documents all the available GET endpoints in the Player Economy REST API. These endpoints allow you to retrieve player-specific information.

## Endpoints


# DELETE

This section documents all the available DELETE endpoints in the Player Economy REST API. These endpoints allow you to delete player data.

## Endpoints


# Events

Here you can view the events and how to listen to them in the Player Economy REST API.

The Player Economy REST API provides real-time interactions through events, allowing you to receive updates, notifications, and other important information dynamically. You can connect to these events using a WebSocket with basic authentication. Once connected, you will be able to listen to the events and receive the necessary information.

## Connecting

You can connect to the websocket just using the base URL of the API (Found in your servers documentation), and your server documentation should tell you if you need to connect with `wss` or `ws` (Secure or not secure). The socket will automatically listen to all events, and you can filter them on your end.

## Examples

You can view an example on how to connect to the websocket using Java and The [**Java-Websocket**](https://github.com/TooTallNate/Java-WebSocket) library [here](https://haste.olziedev.com/weyoyodaxi.csharp)

## Events

These events are sent through the WebSocket and can be listened to, these events are also referenced in the Plugin API as well. You can view an example of the event structure below that is sent through the WebSocket.


# Errors

Here you can view the error codes and on the Player Economy Rest API.

## **Error Codes and Messages**

This section contains a list of common error responses by their error codes. Here is an example of what a response might look like:

```json
{
  "error": {
    "code": 401,
    "message": "You are no longer authorized, did you change your API token?"
  }
}
```

## **401 Unauthorized (API Key Error)**

**Error Code**: 401\
**Message**: "You are no longer authorized, did you change your API token?"

***

## **401 Unauthorized (Basic Authentication Required)**

**Error Code**: 401\
**Message**: "You are not authorized, did you provide the correct credentials?"

***

## **404 Cannot Find**

**Error Code**: 404\
**Message**: "Cannot find \<requested resource>"

***


# Player Warps

Let your players set warps, supports your favorite plugins, cross-server support and more.

## **What does it do?**

Player Warps allows players to set their own warps. This also supports loads of your other favorite plugins that make the experience so much better!

## **Plugin Requirements**

* [Vault](https://www.spigotmc.org/resources/34315/) (It'll still work even though it hasn't been updated to the latest version of MC)

## **Features**

Player Warps contains support for many other plugins, and other cool features you'll never find anywhere else! You can check a more detailed description of each feature for Player Warps [here](https://docs.olziedev.com/projects/playerwarps/features%20).

## **Supported Plugins**

You can view the supported plugins Player Warps supports [here](/projects/playerwarps/plugins), this will give you PlaceholderAPI placeholders and way more other plugins that are supported.

{% hint style="info" %}
**Want to request a feature?**

You can request a feature in our [discord](https://olziedev.com/support) and we will be more than happy to implement it!
{% endhint %}

## Development Builds

You can view our development builds [here](https://olziedev.com/projects/playerwarps/pre) or on our discord, there may be bugs and issues in the build so do not run the build on a public server until you know its 100% working.

If there is an issue with the build, you can report it in our discord server and we will fix it immediately.


# Commands & Permissions

Here you can view all the available commands and permissions for Player Warps.

{% hint style="info" %}
**Command not working?**

The command needs to be enabled in the **config.yml** for it to function properly. If the issue still persists please report it.
{% endhint %}

## Player Commands (pw\.commands)

| Command                                                        | Description                                                                                                                                                                    | Permission    |
| -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------- |
| /pw help                                                       | Displays this menu.                                                                                                                                                            | N/A           |
| /pw \<warp>                                                    | Teleports to the player warp.                                                                                                                                                  | pw\.warp      |
| /pw set \<name> \[player]                                      | Sets a warp to your location.                                                                                                                                                  | pw\.limit.<#> |
| /pw remove \<warp>                                             | Removes the warp.                                                                                                                                                              | pw\.remove    |
| /pw desc set/remove \<warp> \<desc>                            | Manage warp descriptions.                                                                                                                                                      | pw\.desc      |
| /pw list \[page] \[player]                                     | Lists all the current player warps.                                                                                                                                            | pw\.list      |
| /pw near \[page]                                               | List all the nearby player warps.                                                                                                                                              | pw\.near      |
| /pw open \[menu] \[options]                                    | Opens the player menu.                                                                                                                                                         | pw\.open      |
| /pw search \<query> \[options]                                 | Search for a warp/player.                                                                                                                                                      | pw\.search    |
| /pw amount \[player]                                           | Check how much warps you have.                                                                                                                                                 | pw\.amount    |
| /pw rtp                                                        | Teleport to a random warp.                                                                                                                                                     | pw\.rtp       |
| /pw icon \<set/remove> \<warp>                                 | Manage warp icons.                                                                                                                                                             | pw\.icon      |
| /pw category set/remove/list/clear \<warp> \[category]         | Set a warp category.                                                                                                                                                           | pw\.category  |
| /pw tags set/remove/list \<warp> \[tag] \[value]               | Set a warp tag.                                                                                                                                                                | pw\.tags      |
| /pw rate \<warp> \<rate> \<description>                        | Rate a warp.                                                                                                                                                                   | pw\.rate      |
| /pw lock \<warp> \[true/false]                                 | Lock a warp.                                                                                                                                                                   | pw\.lock      |
| /pw cost set/remove \<warp> \<cost>                            | Manage Warp costs.                                                                                                                                                             | pw\.cost      |
| /pw reset \<warp>                                              | Re-set a warps location.                                                                                                                                                       | pw\.reset     |
| /pw rename \<warp> \<name>                                     | Rename a warp.                                                                                                                                                                 | pw\.rename    |
| /pw setowner \<warp> \<player>                                 | <p>Transfer a warp's ownership.<br>Players with <code>pw\.admin.setowner</code> can append <code>-force</code> to ignore confirmation process if enabled and limit checks.</p> | pw\.setowner  |
| /pw password set/remove \<warp> \<password>                    | Manage warp passwords.                                                                                                                                                         | pw\.password  |
| /pw whitelist set/remove/list/disable/enable \<warp> \<player> | Manage warp whitelist.                                                                                                                                                         | pw\.whitelist |
| /pw ban set/remove/list \<warp> \[player] \[time] \[reason]    | Manage warp banning.                                                                                                                                                           | pw\.ban       |
| /pw managers set/remove/list \<warp> \[player]                 | Manage warp managers.                                                                                                                                                          | pw\.managers  |
| /pw favourite \<warp> \[player]                                | Add a warp to your favourites.                                                                                                                                                 | pw\.favourite |
| /pw info \<warp>                                               | View information about a warp.                                                                                                                                                 | pw\.info      |
| /pw settings \<warp>                                           | Open the warp settings gui.                                                                                                                                                    | pw\.settings  |
| /pw tags set/remove/list/clear \<warp>                         | Manage your warp tags.                                                                                                                                                         | pw\.tags      |

## Admin Commands

| Command                               | Description                                    | Permission            |
| ------------------------------------- | ---------------------------------------------- | --------------------- |
| /pw removeall \<player>               | Removes all the player's warps.                | pw\.admin.removeall   |
| /pw reload                            | Reloads all the config files.                  | pw\.admin.reload      |
| /pw addwarps \<player> \<amount>      | Add more warps to a player.                    | pw\.admin.addwarps    |
| /pw purge \<type>                     | Purge specific data types.                     | pw\.admin.purge       |
| /pw transferall \<player> \<newowner> | Transfer all warps from one player to another. | pw\.admin.transferall |

## Rest API Commands

| Command                          | Description               | Permission             |
| -------------------------------- | ------------------------- | ---------------------- |
| /pw apitokens                    | Shows the help menu.      | pw\.apitokens          |
| /pw apitokens delete \[player]   | Delete your API token.    | pw\.apitokens.delete   |
| /pw apitokens generate \[player] | Generate a new API token. | pw\.apitokens.generate |

{% hint style="info" %}
**Permissions not working?**

The <> in some permissions are placeholders, you will need to replace them with a valid value like requested.
{% endhint %}

## Player Permissions

| Permission               | Description                                                |
| ------------------------ | ---------------------------------------------------------- |
| pw\.desc.color           | Put colors in warp descriptions.                           |
| pw\.rate.color           | Put colors in rate descriptions.                           |
| pw\.set.color            | Put colors in warp names.                                  |
| pw\.warp.notify          | Get notified upon warp teleportation.                      |
| pw\.amount.others        | View other players' warp amount.                           |
| pw\.set.sign             | Create a warp via a sign if enabled in config.             |
| pw\.warp.sign            | Create/destroy a sign to tp to warps if enabled in config. |
| pw\.category.\<category> | Allows the player to set a warp to that category.          |
| pw\.warp.delay           | Bypass the warp wait delay.                                |
| pw\.warp.delay.move      | Bypass warp movement for warp delay.                       |
| pw\.warp.safe            | Bypass warp safe check.                                    |
| pw\.cost.bypass          | Bypass warp teleportation costs.                           |
| pw\.cooldown.visit       | Bypass warp visit cooldown.                                |
| pw\.cooldown.teleport    | Bypass warp teleport cooldown.                             |
| pw\.cooldown.set         | Bypass warp setting cooldown.                              |
| pw\.cooldown.rate        | Bypass warp rating cooldown.                               |
| pw\.cooldown.sponsor     | Bypass warp sponsor cooldown.                              |

## Admin Permissions

| Permission               | Description                                                                                 |
| ------------------------ | ------------------------------------------------------------------------------------------- |
| pw\.admin.bypass         | Bypass any restriction with the warp addons.                                                |
| pw\.admin.update         | When a player joins they receive update notifications.                                      |
| pw\.admin.set            | Set a warp for another player.                                                              |
| pw\.admin.nopurge        | Bypass the purging warp feature.                                                            |
| pw\.admin.category       | Set any other warp categories including your own.                                           |
| pw\.admin.tags           | Set any other warp tags including your own.                                                 |
| pw\.admin.setowner       | Transfer any other warp owners including your own.                                          |
| pw\.admin.rent           | Bypass the warp renting feature.                                                            |
| pw\.admin.ban            | Manage any other warp bans including your own and also bypasses teleport restriction.       |
| pw\.admin.managers       | Manage any other warp managers including your own.                                          |
| pw\.admin.whitelist      | Manage any other warp whitelists including your own and also bypasses teleport restriction. |
| pw\.admin.rename         | Rename any other warp including your own.                                                   |
| pw\.admin.remove         | Remove any other warp including your own.                                                   |
| pw\.admin.reset          | Re-set any other warp locations including your own.                                         |
| pw\.admin.desc           | Manage any other warp descriptions including your own.                                      |
| pw\.admin.list           | View a list of warps for another player.                                                    |
| pw\.admin.icon           | Manage any other warp icons including your own.                                             |
| pw\.admin.cost           | Manage any other warp costs including your own.                                             |
| pw\.admin.lock           | Lock any other warp including your own and also bypasses teleport restriction.              |
| pw\.admin.viewlock       | View locked warps in the warp menu.                                                         |
| pw\.admin.sponsor        | Sponsor any other warp including your own.                                                  |
| pw\.admin.delsponsor     | Remove the warp as a sponsor.                                                               |
| pw\.admin.teleport       | Force a player to teleport to that warp.                                                    |
| pw\.admin.favourite      | Add a warp to another players favourite warp list.                                          |
| pw\.admin.disabledworlds | Bypass the disabled worlds restriction.                                                     |
| pw\.admin.open           | Use open options for opening a menu.                                                        |
| pw\.admin.notify         | Bypass the warp teleport notification (pw\.warp.notify).                                    |
| pw\.admin.rate           | Remove a players rating from a warp.                                                        |
| pw\.admin.apitokens      | Remove/Generate other players' API tokens.                                                  |

## Open Options Syntax

Open options are an easy way for you to change how the open command is processed, here are the latest options and examples for Player Warps.

| Option | Description                                           | Example             |
| ------ | ----------------------------------------------------- | ------------------- |
| player | Open the menu for that player.                        | -player NotchIsCool |
| view   | View the menu as that player.                         | -view Olzie12       |
| search | Add a search input to the search menu for the player. | -search "farm"      |
| warp   | Define specific warp for specific warp menus.         | -warp Farm          |

With the examples shown above this is how its used in the command:`/pw open <menu> -player NotchIsCool -view Olzie12`. This will open the menu for NotchIsCool but the contents of the menu will be viewed as Olzie12, this is good for checking other players warps in a menu.

Another example: `/pw open <menu> -view Olzie12`. This will open the menu for the executor (if it isn't console) and will be viewing it as Olzie12.

I mentioned above with the console executor, yes using the command in console will always need the `player` option to open it for that player.

For players to be able to use this, they will need `pw.admin.open` and is not suggested to give this to any normal player as they can just view menus as other players and edit their warps.

\
Using the `search` option allows you to automatically enter a search input when a menu (that allows searching) has been opened, there isn't a required permission like all the others. You will need to surround the value in speech marks. For example `/pw open <search menu> -search "farm`". This will search for any warps containing or being called `"farm"`.


# Configuration

Here you can view all the configuration and options for Player Warps.

## **Plugin Files**

Here are the latest plugin files, the plugin should automatically generate/update the files. If the plugin hasn't generated them make sure you've got the plugin requirements listed [here](/projects/playerwarps#plugin-requirements). If you want to test your YAML syntax you can test it [here](https://yaml-online-parser.appspot.com).

Your plugin will automatically update when there is a needed configuration update, you cannot turn this off and is added to prevent errors on your plugin if you have any missing configuration options.

The plugin connects to my webserver, if this webserver is offline or your plugin cannot access it, then the configuration files may not be updated or downloaded.

{% hint style="info" %}
[**config.yml - Change all the plugin options**](https://cdn.olziedev.com/playerwarps/configuration/config.yml)
{% endhint %}

{% hint style="info" %}
[**lang/ - Change all the plugin messages**](https://cdn.olziedev.com/playerwarps/configuration/lang/)
{% endhint %}

{% hint style="info" %}
[**guis/ - Change all the menu options/design**](https://cdn.olziedev.com/playerwarps/configuration/guis/)
{% endhint %}

{% hint style="info" %}
[**expansions.yml - Modify the expansions**](https://cdn.olziedev.com/playerwarps/configuration/expansions.yml)
{% endhint %}

## Command Actions

Command actions are an easy way you to customize and execute all sorts of functions when an event is triggered, here are the latest command actions for Player Warps.

| Action          | Description                                                                                            | Example                                                                                                                                                                                                                                                           |
| --------------- | ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| player          | Execute a command as the player.                                                                       | \[player] spawn                                                                                                                                                                                                                                                   |
| message         | Send a message to the player.                                                                          | \[message] \&aHello!                                                                                                                                                                                                                                              |
| broadcast       | Send a message to all online players.                                                                  | \[broadcast] \&aHello World!                                                                                                                                                                                                                                      |
| perm\_broadcast | <p>Broadcast a message to</p><p>players with the permission.</p>                                       | \[perm\_broadcast] message.view \&aHello!                                                                                                                                                                                                                         |
| title           | Send a title to the player.                                                                            | \[title] 20 60 20 \&aHello\n\&aWorld!                                                                                                                                                                                                                             |
| action\_bar     | Send an action bar message to the player.                                                              | \[action\_bar] \&aHello!                                                                                                                                                                                                                                          |
| player\_loop    | Loop through all online players and execute an action.                                                 | \[player\_loop] \[player] spawn                                                                                                                                                                                                                                   |
| server          | Execute a command as the server.                                                                       | \[server] spawn %player%                                                                                                                                                                                                                                          |
| command\_event  | Execute a unregistered command as the player.                                                          | \[command\_event] menu                                                                                                                                                                                                                                            |
| chat\_wait      | Wait for the user to enter a value in chat.                                                            | \[chat\_wait] \&aEnter a number:\[message] \&aYou said %value%                                                                                                                                                                                                    |
| chat\_wait      | Wait for the user to enter a value in chat, but removes the color from the chat input with **!color**. | \[chat\_wait] \&aEnter a number:\[message] **!color** \&aYou said %value%                                                                                                                                                                                         |
| add\_money      | Give a player money.                                                                                   | \[add\_money] 500                                                                                                                                                                                                                                                 |
| take\_money     | Take money from a player.                                                                              | \[take\_money] 500                                                                                                                                                                                                                                                |
| take\_perm      | Take a permission away from a player.                                                                  | \[take\_perm] message.view                                                                                                                                                                                                                                        |
| give\_perm      | Give a permission to a player                                                                          | \[give\_perm] message.view                                                                                                                                                                                                                                        |
| sound           | Play a sound to the player.                                                                            | <p>\[sound] <a href="https://javadocs.olziedev.com/spigot/latest/org/bukkit/Sound.html#AMBIENT_CAVE">AMBIENT\_CAVE</a></p><p>\[sound] <a href="https://javadocs.olziedev.com/spigot/latest/org/bukkit/Sound.html#AMBIENT_CAVE">AMBIENT\_CAVE </a>volume pitch</p> |
| close           | Close the inventory of the player.                                                                     | \[close]                                                                                                                                                                                                                                                          |

### Action Tags

You can also add action tags that modify how the action is executed, you can use it in your command action like this `[ACTION<TAG=value>]`.

<table><thead><tr><th width="131.33333333333331">Tag</th><th>Description</th><th>Example</th></tr></thead><tbody><tr><td>delay</td><td>Execute the action later in ticks.</td><td>[broadcast&#x3C;delay=20>] &#x26;aHello World</td></tr><tr><td>permission</td><td>Execute the action only if the player has permission.</td><td>[add_money&#x3C;permission=pw.donator>] 1000</td></tr><tr><td>condition</td><td>Execute the action only if the value matches.</td><td>[add_money&#x3C;condition=%player_name%=Notch>] 1000<br>[add_money&#x3C;condition=%player_name%!=Notch>] 1000</td></tr><tr><td>vanished</td><td>Execute the action if the player is in vanish or not.</td><td>[broadcast&#x3C;vanished=false>] This player is not in vanish!</td></tr></tbody></table>

## Requirements

Player Warps supports certain requirements in the configuration, where certain requirements needs to be met for something to happen.

When requirements are created in the config, you will always have 3 default values that is available for every requirement. Here is a list and explaination of what they do.

| Option   | Description                                                                                                                                                                |
| -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| inverted | If the value doesn't get met, then the outcome is successful. Inverted is disabled by default.                                                                             |
| cached   | If the value should be cached, this is useful if you've got a lot of requirements and do not want to constantly check for the same outcome. Caching is enabled by default. |
| type     | The type of the requirement, you can view all the requirement types below.                                                                                                 |

Please note if multiple requirements are created under one section, it will evaluate the requirements in order, if a requirement is not met then it the outcome will not be successful. Multiple requirements can return a successful outcome.

Here is a list of all the avaliable requirement types:

### Has permission

This requirement checks if the player has the permission.

Here is an example on how to use the has permission requirement, below in the example the player needs the permission "requirement.test"

```yaml
    1:
      inverted: false
      cached: true
      permission: "requirement.test"
      type: has permission
```

### Has money

This requirement checks if the player has the money.

Here is an example on how to use the has money requirement, below in the example the player needs $100

```yaml
    1:
      inverted: false
      cached: true
      amount: 100
      type: has money
```

### String equals

This requirement checks if the input equals to the output.

Here is an example on how to use the string equals requirement, below in the example the output needs to equal "Notch"

```yaml
    1:
      inverted: false
      cached: true
      input: "%player_name%"
      output: "Notch"
      type: string equals
```

## Color & Hex Color

Player Warps supports color codes that you can use literally everywhere possible that is displayed to the player. If you don't know the color codes off by heart, you can view them [here](https://htmlcolorcodes.com/bukkit-color-codes/).

Player Warps also supports the 1.16+ hex colors, with the current format `{#HEX_CODE}` with the following example `{#f5a142}` This shows a nice orange color. You can also use this [here](https://g.co/kgs/h4CeKb), to get your hex colors.

When using hex colors, you can also make cool looking gradients using 2 or more hex color codes. You can create gradients using these examples:

* `{#f5a142:#ffffff}` - This goes from a nice orange color then slowly fades into white.
* `{#f5a142:#ffffff:#0000ff}` - This goes from a nice orange color, then fades into white then slowly fades into blue.

## External Sources

You may want to use some external links to help you when configurating Player Warps.

### Material Types

Here is a list of all of the valid materials that you can use to create items in Player Warps for each version of Minecraft.

* [1.8.8](https://javadocs.olziedev.com/spigot/1.8.8/org/bukkit/Material.html)
* [1.9.4](https://javadocs.olziedev.com/spigot/1.9.4/org/bukkit/Material.html)
* [1.10.2](https://javadocs.olziedev.com/spigot/1.10.2/org/bukkit/Material.html)
* [1.11.2](https://javadocs.olziedev.com/spigot/1.11.2/org/bukkit/Material.html)
* [1.12.2](https://javadocs.olziedev.com/spigot/1.12.2/org/bukkit/Material.html)
* [1.13.2](https://javadocs.olziedev.com/spigot/1.13.2/org/bukkit/Material.html)
* [1.14.4](https://javadocs.olziedev.com/spigot/1.14.4/org/bukkit/Material.html)
* [1.15.2](https://javadocs.olziedev.com/spigot/1.15.2/org/bukkit/Material.html)
* [1.16.5](https://javadocs.olziedev.com/spigot/1.16.5/org/bukkit/Material.html)
* [1.17.1](https://javadocs.olziedev.com/spigot/1.17.1/org/bukkit/Material.html)
* [1.18.2](https://javadocs.olziedev.com/spigot/1.18.2/org/bukkit/Material.html)
* [1.19.4](https://javadocs.olziedev.com/spigot/1.19.4/org/bukkit/Material.html)
* [1.20.6](https://javadocs.olziedev.com/spigot/1.20.6/org/bukkit/Material.html)
* [1.21.4](https://javadocs.olziedev.com/spigot/1.21.4/org/bukkit/Material.html)
* [Latest](https://javadocs.olziedev.com/spigot/latest/org/bukkit/Material.html)

### Sound Types

Here is a list of all the valid sound types that you can use to create cool sound effects in Player Warps for each version of Minecraft.

* [1.8.8](https://javadocs.olziedev.com/spigot/1.8.8/org/bukkit/Sound.html)
* [1.9.4](https://javadocs.olziedev.com/spigot/1.9.4/org/bukkit/Sound.html)
* [1.10.2](https://javadocs.olziedev.com/spigot/1.10.2/org/bukkit/Sound.html)
* [1.11.2](https://javadocs.olziedev.com/spigot/1.11.2/org/bukkit/Sound.html)
* [1.12.2](https://javadocs.olziedev.com/spigot/1.12.2/org/bukkit/Sound.html)
* [1.13.2](https://javadocs.olziedev.com/spigot/1.13.2/org/bukkit/Sound.html)
* [1.14.4](https://javadocs.olziedev.com/spigot/1.14.4/org/bukkit/Sound.html)
* [1.15.2](https://javadocs.olziedev.com/spigot/1.15.2/org/bukkit/Sound.html)
* [1.16.5](https://javadocs.olziedev.com/spigot/1.16.5/org/bukkit/Sound.html)
* [1.17.1](https://javadocs.olziedev.com/spigot/1.17.1/org/bukkit/Sound.html)
* [1.18.2](https://javadocs.olziedev.com/spigot/1.18.2/org/bukkit/Sound.html)
* [1.19.4](ttps://javadocs.olziedev.com/spigot/1.19.4/org/bukkit/Sound.html)
* [1.20.6](https://javadocs.olziedev.com/spigot/1.20.6/org/bukkit/Sound.html)
* [1.21.4](https://javadocs.olziedev.com/spigot/1.21.4/org/bukkit/Sound.html)
* [Latest](https://javadocs.olziedev.com/spigot/latest/org/bukkit/Sound.html)

### Item Flags

Here is a list of all the valid item flags that you can use on your items in Player Warps for each version of Minecraft.

* [1.8.8](https://javadocs.olziedev.com/spigot/1.8.8/org/bukkit/inventory/ItemFlag.html)
* [1.9.4](https://javadocs.olziedev.com/spigot/1.9.4/org/bukkit/inventory/ItemFlag.html)
* [1.10.2](https://javadocs.olziedev.com/spigot/1.10.2/org/bukkit/inventory/ItemFlag.html)
* [1.11.2](https://javadocs.olziedev.com/spigot/1.11.2/org/bukkit/inventory/ItemFlag.html)
* [1.12.2](https://javadocs.olziedev.com/spigot/1.12.2/org/bukkit/inventory/ItemFlag.html)
* [1.13.2](https://javadocs.olziedev.com/spigot/1.13.2/org/bukkit/inventory/ItemFlag.html)
* [1.14.4](https://javadocs.olziedev.com/spigot/1.14.4/org/bukkit/inventory/ItemFlag.html)
* [1.15.2](https://javadocs.olziedev.com/spigot/1.15.2/org/bukkit/inventory/ItemFlag.html)
* [1.16.5](https://javadocs.olziedev.com/spigot/1.16.5/org/bukkit/inventory/ItemFlag.html)
* [1.17.1](https://javadocs.olziedev.com/spigot/1.17.1/org/bukkit/inventory/ItemFlag.html)
* [1.18.2](https://javadocs.olziedev.com/spigot/1.18.2/org/bukkit/inventory/ItemFlag.html)
* [1.19.4](https://javadocs.olziedev.com/spigot/1.19.4/org/bukkit/inventory/ItemFlag.html)
* [1.20.6](https://javadocs.olziedev.com/spigot/1.20.6/org/bukkit/inventory/ItemFlag.html)
* [1.21.4](https://javadocs.olziedev.com/spigot/1.21.4/org/bukkit/inventory/ItemFlag.html)
* [Latest](https://javadocs.olziedev.com/spigot/latest/org/bukkit/inventory/ItemFlag.html)

### Enchantments

Here is a list of all the valid item enchantments that you can use on your items in Player Warps for each version of Minecraft.

* [1.8.8](https://javadocs.olziedev.com/spigot/1.8.8/org/bukkit/enchantments/Enchantment.html)
* [1.9.4](https://javadocs.olziedev.com/spigot/1.9.4/org/bukkit/enchantments/Enchantment.html)
* [1.10.2](https://javadocs.olziedev.com/spigot/1.10.2/org/bukkit/enchantments/Enchantment.html)
* [1.11.2](https://javadocs.olziedev.com/spigot/1.11.2/org/bukkit/enchantments/Enchantment.html)
* [1.12.2](https://javadocs.olziedev.com/spigot/1.12.2/org/bukkit/enchantments/Enchantment.html)
* [1.13.2](https://javadocs.olziedev.com/spigot/1.13.2/org/bukkit/enchantments/Enchantment.html)
* [1.14.4](https://javadocs.olziedev.com/spigot/1.14.4/org/bukkit/enchantments/Enchantment.html)
* [1.15.2](https://javadocs.olziedev.com/spigot/1.15.2/org/bukkit/enchantments/Enchantment.html)
* [1.16.5](https://javadocs.olziedev.com/spigot/1.16.5/org/bukkit/enchantments/Enchantment.html)
* [1.17.1](https://javadocs.olziedev.com/spigot/1.17.1/org/bukkit/enchantments/Enchantment.html)
* [1.18.2](https://javadocs.olziedev.com/spigot/1.18.2/org/bukkit/enchantments/Enchantment.html)
* [1.19.4](https://javadocs.olziedev.com/spigot/1.19.4/org/bukkit/enchantments/Enchantment.html)
* [1.20.6](https://javadocs.olziedev.com/spigot/1.20.6/org/bukkit/enchantments/Enchantment.html)
* [1.21.4](https://javadocs.olziedev.com/spigot/1.21.4/org/bukkit/enchantments/Enchantment.html)
* [Latest](https://javadocs.olziedev.com/spigot/latest/org/bukkit/enchantments/Enchantment.html)


# Item Configuration

Here you can view all the configuration, examples and options for creating items in Player Warps.

## Item Creation

In Player Warps you customize the items that are displayed in the menu, how they are displayed and what they do, there are a lot of item tags for you to be able to accomplish this.

### Item Material

When creating an item, you will always need to provide a material type, material type is just what the item is. Make sure when using item materials, they're all capitals and they are a correct material from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/Material.html).

Make sure the material you're using from the list, exists in your Minecraft version otherwise the item will not be shown in the menu. If you're using a Minecraft version lower than 1.13, you may want to also check out [Item Data](#item-data).

Here is an example on how to use materials, below in the example it will show a diamond sword in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   amount: 1
   slot: 0
```

Alternatively, if you are either using [ItemsAdder](https://www.spigotmc.org/resources/73355/), [Oxraen](https://www.spigotmc.org/resources/72448/) or [Nexo](https://docs.nexomc.com/), you can easily use their custom items by using the following format.

```yaml
# ItemsAdder:
1:
  material: itemsadder-bananna
  slot: 0
# Oraxen:
2:
  material: oraxen-pear
  slot: 0
# Nexo:
3:
  material: nexo-apple
  slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-65615f44b68ae421a07a373a8d1c831fc263a383%2Fimage.png?alt=media)

### Item Data

When creating an item in Minecraft versions **1.12 and below**, you may need to provide an item data type to correspond to the item you want. These item data types are usually used when you have multiple types or states of one block for example stained glass, you have multiple colors of this glass.

If you need to get the item data, you can use `F3+H` in game to enable advanced tooltips, then you will be able to view the item data type after the / like shown below.

![The item above shows an item id of 2.](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-12019be2b16b63a0a1e39db0ad9a607c98cbd366%2Fimage.png?alt=media)

You can also use item data to specify the damage value of the item as well, this will only work if the item can actually be damaged though.

Here is an example on how to use materials with item data values, below in the example it will show a magenta stained glass pane in the menu.

#### Configuration Example

```yaml
1:
   material: STAINED_GLASS_PANE
   data: 2
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-0ccae6b97eef538c35a5deec7137ddb604c758a9%2Fimage.png?alt=media)

### Item Amount

When creating an item, you will need to specify the amount you want to be displayed in the menu. If you do not specify any amount, the default will be thus making it not showing in the menu.

You cannot exceed over the maximum stack size of the menu, which is `64`, the number will also need to be a positive number as well.

### Item Display Name

When creating an item, you can modify the item name that is displayed when you hover over the item. With display names you may also have color codes in the name as well to make it stand out in the menu.

Here is an example on how to use item names, below in the example it will show a diamond sword with the name as `Knife` as red in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   name: "&cKnife"
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-4154625c49b4da6d2e720930a42e0198194be542%2Fimage.png?alt=media)

### Item Custom Name

When creating an item, you can modify the custom name of the actual item, this is different from the display name as this is the actual name of the item. This is used for plugins that use custom items and need to identify them.

Here is an example on how to use item custom names, below in the example it will show a diamond sword with the custom name as `Knife` in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   custom-name: "Knife"
   amount: 1
   slot: 0
```

### Item Lore

When creating an item, you can have a description in your item so when you hover over the item it will show the description below the item name. With lores you can have color codes and have multiple lines in the description as well.

The color will not go onto the next line so you will also need to put it on the other lines as well.

Here is an example on how to use item lores, below in the example it will show a diamond sword with the 1st line as `This is a item`, with the color blue with the second line as `description example.` with the color blue again in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   lore: 
     - "&bThis is a item"
     - "&bdescription example."
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-e9b5b45bfce25d97cce70c047bfca69cc31f9350%2Fimage.png?alt=media)

### Item Glowing

When creating an item, you can give the item a glowing affect, it gives the item an invisible enchantment that you cannot see and makes your menu look more shiny.

Here is an example on how to use the glowing affect, below in the example it will show a glowing diamond sword in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   glowing: true
   amount: 1
   slot: i
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-3f561c01f03359e53f6f495dc2839483ad8dc86e%2Fimage.png?alt=media)

### Skull Owner

When creating player heads, you can give the player head an owner. The owner of player head will be the skin of the head, you can put any players name as the owner or you could put `[owner]` for it to set the skulls owner as the player that is viewing the menu.

Remember, when creating player heads its different in **1.13 and 1.12 and below**. If you're using 1.12 and below please make sure the data value is 3 and the material is `SKULL`, if you're using 1.13 you will not need a data value and the material will be `PLAYER_HEAD`

Here is an example on how to create player heads with an owner, below in the example it will show a skull with my skin as I'm viewing the menu.

#### Configuration Example

```yaml
1: # Example for 1.13+
   material: PLAYER_HEAD
   owner: [owner]
   amount: 1
   slot: 0
2: # Example for 1.12-
   material: SKULL_ITEM
   owner: [owner]
   data: 3
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-b41f629e05b1a086048c48d57758e23c48155dfc%2Fimage.png?alt=media)

### Skull Texture

When creating player heads, you can give the player head a texture. Unlike the skull owners, an existing player has to have that skin textures don't and you can create and use some awesome looking skulls.

There are loads of sites you can get the Base64 texture from like [here](https://minecraft-heads.com/custom-heads) and then copy the value field for your texture.

Here is an example on how to create player heads with a texture, below in the example it will show a skull with as a computer.

#### Configuration Example

```yaml
1: # Example for 1.13+
   material: PLAYER_HEAD
   texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTc4Mjk1ZThlYzEwZjlmYmEzZjBjN2IxMTRkMzM0OTkyYjAzZjRlMjNmODA2NDc2NmVlNDM0ZGRjZGExMjdmMSJ9fX0=
   amount: 1
   slot: 0
2: # Example for 1.12-
   material: SKULL_ITEM
   texture: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTc4Mjk1ZThlYzEwZjlmYmEzZjBjN2IxMTRkMzM0OTkyYjAzZjRlMjNmODA2NDc2NmVlNDM0ZGRjZGExMjdmMSJ9fX0=
   data: 3
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-6aacc9a4698e6a358ed505321aeda97f9029649d%2Fimage.png?alt=media)

### Potion Data

When creating potions, you can select any type of potion material. For example `SPASH_POTION`, `POTION`, `LINGERING_POTION`, `TIPPED_ARROW`

A potion will also need the effect, duration and the amplifier.\
The effect of potion is what is given to you when the potion is splashed. You can view all the potion effect names [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/potion/PotionEffectType.html).\
The amplifier is how strong the potion is, remember this starts from `0!`\
The duration is how long the potion lasts, this is measured in ticks `(20 ticks = 1 second)` and not seconds!

You can also add underlying potion type, this will not give the effect. But instead changes the item displayed. Remeber potion effect types are not potion types. You can find a list of potion types [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/potion/PotionType.html)

Here is an example on how to create potions, below in the example it will show a splash potion with speed 2 lasting for 2 seconds.

#### Configuration Example

```yaml
1:
   material: SPLASH_POTION
   effect: SPEED
   amplifier: 1
   duration: 40
   amount: 1
   slot: 0
2:
   material: TIPPED_ARROW
   potion: SPEED
   replaced: false
   extended: false
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-10de8f1f20c88f4394efcc153dd316726b43d37a%2Fimage.png?alt=media)

### Banner Data

When creating banners, you may want to be able to add dye color and patterns. To view the full list of dyes you can use are from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/DyeColor.html). To view the full list of patterns you can use are from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/block/banner/PatternType.html).

Here is an example on how to use banner data, below in the example it will show a black banner with a red border.

#### Configuration Example

```yaml
1: # Example for 1.13+
   material: BLACK_BANNER
   patterns:
     1:
       dye: RED
       pattern: BORDER
   amount: 1
   slot: 0
2: # Example for 1.12-
   material: BANNER
   patterns:
     1:
       dye: RED
       pattern: BORDER
   data: 0
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

<figure><img src="https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-22dc09ea7ba2f31ce5c221ef024766d4ad8ce10e%2Fimage%20(6)-4.png?alt=media" alt=""><figcaption></figcaption></figure>

### Armor Color

When creating items that are armor, depending on the type of armor you can add color to it! As of right now you can only add color to Leather. When adding the color make sure u use the RGB format. You can use an RGB picker [here](https://g.co/kgs/Tct6MN).

#### Configuration Example

```yaml
1:
   material: LEATHER_BOOTS
   color: "252, 186, 3"
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

<figure><img src="https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2FtqIl6mbUbM8bzcphLXq1%2Fimage.png?alt=media&amp;token=604e5b81-6476-4c69-a279-951ce729b8b4" alt=""><figcaption></figcaption></figure>

### Armor Trim

When creating items that are armor, you can add armor trims to the armor. You can use the default trims provided by Minecraft or you can add your own!

Here is an example on how to use armor trims, below in the example it will show a diamond helmet with the quartz sentry trim. If you wish to use your own you will need to provide your namespace and id separated by a colon, for example `myplugin:mytrim`.

**Configuration Example**

```yml
1:
  material: DIAMOND_HELMET
  trim-material: "QUARTZ"
  trim-pattern: "SENTRY"
  amount: 1
  slot: 0
```

### Item Flags

When creating items, you can disable the item flags for the item so it doesn't show information that you may not want to show when hovering over the item. Make sure when using item flags, they're all capitals and they are a correct flag from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/inventory/ItemFlag.html).

Here is an example on how to use item flags, below in the example it will show a diamond sword in the menu without the `When in main hand:` in the menu.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   item-flags:
     - "HIDE_ATTRIBUTES"
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-ab0250d887f1cc4f19675a791bb1e4398585343d%2Fimage.png?alt=media)

### Item Enchantments

When creating an item, you can add enchantments and what level of those enchantments on that item. Make sure when you're adding enchantments, they're all capitals and they are an enchantment from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/enchantments/Enchantment.html).

Here is an example on how to use enchantments, below in the example it will show a diamond sword in the menu with the unbreaking level 1 enchantment.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   enchantments:
     - "DURABILITY:1"
   amount: 1
   slot: 0
```

Here is a preview of what the above example would look like in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-eaf2c8518a1841358661dcfdc93851b7d45523ba%2Fimage.png?alt=media)

### Item Storage Enchantments

When creating an enchantable book, you can add enchantments and what level of those enchantments on that book. Make sure when you're adding enchantments, they're all capitals and they are an enchantment from the list [here](https://javadocs.olziedev.com/spigot/latest/org/bukkit/enchantments/Enchantment.html).

Here is an example on how to use enchantments, below in the example it will show a enchanted book in the menu with the unbreaking level 1 enchantment.

#### Configuration Example

```yaml
1:
   material: ENCHANTED_BOOK
   stored-enchantments:
     - "DURABILITY:1"
   amount: 1
   slot: 0
```

### Item Commands

When creating an item, you may want the item to execute a type of action when left or right clicking the item. You can view the command actions and how to use them [here](/projects/playerwarps/configuration#command-actions).

Here is an example on how to use item commands, below in the example it will show a diamond sword in the menu and when you click on it it'll say hey in chat.

#### Configuration Example

```yaml
1: # Only listening for right click
   material: DIAMOND_SWORD
   right-commands:
     - "[message] hey"
   amount: 1
   slot: 0
2: # Only listening for left click
   material: DIAMOND_SWORD
   left-commands:
     - "[message] hey"
   amount: 1
   slot: 0
3: # Listening for both
   material: DIAMOND_SWORD
   commands:
     - "[message] hey"
   amount: 1
   slot: 0
```

Here is a preview of what the above example how it works in the menu.

#### Preview

![](https://2199631893-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVXR8jADpiAkCqrOtUI%2Fuploads%2Fgit-blob-de3db9dd5399a625ab551072178b0a03e8c14081%2Fezgif.com-gif-maker.gif?alt=media\&token=4380e9a9-2030-4175-9a54-62ccae7d0714)

### Item NBT Data

When creating an item, you can specify NBT item tags for your item for whatever reason. NBT tags have two parts, the token and the value.

Here is an example on how to use item NBT data, below in the example it will show a diamond sword in the menu with a NBT data string named `Sword` and the value being `Awesome`.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   nbt-data:
     - "Sword:Awesome"
   amount: 1
   slot: 0
```

### Item Custom Model Data

When creating an item, you may want the item be displayed as a texture from your texture pack.

Here is an example on how to use item custom model data, below in the example it will show a diamond sword in the menu with a custom model data of `1`.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   custom-model-data: 1
   amount: 1
   slot: 0
```

### Item Custom Model Data Component

When creating an item, you may want the item be displayed as a texture from your texture pack. This uses more of a modern version of the CustomModelData API.

Here is an example on how to use item custom model data, below in the example it will show a diamond sword in the menu with a custom model data of `1`.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   custom-model-data-component:
     colors: [""]
     flags: [""]
     floats: [""]
     strings: ["1"]
   amount: 1
   slot: 0
```

### Item Model

When creating an item, you may want the item be displayed as a model from your texture pack.

Item Models use NamespacedKeys which are in the format of `namespace:key`. Here is an example on how to use item models, below in the example it will show a diamond sword in the menu with a model of `playerwarps:diamond_sword_1`.

#### Configuration Example

```yaml
1:
  material: DIAMOND_SWORD
  item-model: "playerwarps:diamond_sword_1"
  amount: 1
  slot: 0
```

### Item Tooltip Style

When creating an item, you may want the item tooltip style from your texture pack.

Item Tooltip styles use NamespacedKeys which are in the format of `namespace:key`. Here is an example on how to use tooltip styles, below in the example it will show a diamond sword in the menu with a tooltip style of `playerwarps:diamond_sword_1`.

#### Configuration Example

```yaml
1:
  material: DIAMOND_SWORD
  tooltip-style: "playerwarps:diamond_sword_1"
  amount: 1
  slot: 0
```

### Item Hide Tooltip

When creating an item, you may want to completely hide the tooltips.

Here is an example on how to hide the tooltip.

#### Configuration Example

```yaml
1:
  material: DIAMOND_SWORD
  hide-tooltip: true
  amount: 1
  slot: 0
```

### Item Unbreakable

When creating an item with damage, you may want the durability status to be removed from the tooltip on the item if some players have the setting "Item Tooltips" enabled.

Here is an example on how to use unbreakable.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   unbreakable: true
   amount: 1
   slot: 0
```

### Item Slot

When creating an item, you will need to specify a slot of where your item will be in the menu. Item slots always start from 0, meaning slot 0 will be slot 1 in the menu.

Slots can only be 0 to the menu size - 1, for example if your menu size is 27, it'll be 0-26. There are 3 different ways on how you can specify slots in the configuration.

Here is an example on how to use item slots, below in the example it will show a diamond sword in the slots `0, 1, 2, 3, 4, 5, 6, 7, 8` of the menu.

If you wish to remove an existing item from the inventory, but you want to keep it in the file. You can set the slot to `-1` to remove it from the menu.

#### Configuration Example

<pre class="language-yaml"><code class="lang-yaml">1: # Using the slot range system
   material: DIAMOND_SWORD
   slot: 0-8
   amount: 1
2: # Using the slot list system
   material: DIAMOND_SWORD
   slot: [0, 1, 2, 3, 4, 5, 6, 7, 8]
   amount: 1
3: 
  # Using the manual slot system, then repeat this 7 more 
<strong>  # times but with a different slot number. (very painful)
</strong>   material: DIAMOND_SWORD
   slot: 0
   amount: 1
</code></pre>

### Item View Requirements

When creating an item, you can add certain requirements to only view the item. If the requirement does not meet then it will not show the item. If the requirement is met, it will show the item.

View more information about requirements [here](/projects/playerwarps/configuration#requirements).

Here is an example on how to use the item view requirements, below in the example the player needs the permission "item.view" to see the item.

#### Configuration Example

```yaml
1:
  material: DIAMOND_SWORD
  amount: 1
  slot: 0
  view-requirements:
    1:
      inverted: false
      cached: true
      permission: "item.view"
      type: has permission
```

### Item Click Requirements

When creating an item, you can add certain requirements to only click the item. If the requirement does not meet then it will not allow the item to be clicked and execute deny commands. If the requirement is met, it will allow the item to be clicked and execute success commands. Note, it will also execute the item commands if successful.

View more information about requirements [here](/projects/playerwarps/configuration#requirements).

Here is an example on how to use the item click requirements, below in the example the player needs the permission "item.click" to click the item.

#### Configuration Example

```yaml
1:
   material: DIAMOND_SWORD
   commands:
     - "[message] hey"
   amount: 1
   slot: 0
   click-requirements:
     1:
       inverted: false
       cached: true
       permission: "item.click"
       type: has permission
       deny-commands:
         - "[message] you don't have permission"
       success-commands:
        - "[message] you have permission"
```

## Item Placeholders


# Menu Configuration

Here you can view all the configuration, examples and options for creating menus in Player Warps.

## Menu Creation

In Player Warps you customize the menus that are provided by the plugin, please note that you cannot create new menus that aren't already provided by the plugin. You can change how the menu is displayed and how it works.

Please note all the menu tags show here aren't ALL the tags, but the basic & default tags for all menus. Some menus may add more tags, these are added to the config by default.

### Menu Size

When creating a menu, you need to specify the size of the menu. You need to specify multiples of 9 only as each of a chest is 9 slots. The maximum of slots you can have is 54 (9\*6) 6 being the max of rows.

Here is an example on how to use the menu size, below in the example the size of the menu contains 27 slots and will be 3 rows.

#### Configuration Example

```yaml
menu: # The menu name goes here, you cannot change this.
  size: 27 # The size of the menu, must be a multiple of 9.
```

### Menu Title

When creating a menu, you need to specify the title of the menu. You may use color codes in your title. You cannot have multiple lines in a title, this is a limitation of Minecraft.

Please note server version 1.17.10 does limit titles to be 32 characters including color codes.

Here is an example on how to use the menu title, below in the example the title of the menu will be "My lovely menu" in aqua.

#### Configuration Example

```yaml
menu: # The menu name goes here, you cannot change this.
  size: 27 # The size of the menu, must be a multiple of 9.
  title: "&bMy lovely menu" # The title of the menu.
```

### Menu enabled/disabled

When creating a menu, you can either enable or disable this menu so its not able to be opened at all.

Here is an example on how to use the menu enable/disable, below in the example the status of the menu is enabled.

#### Configuration Example

```yaml
menu: # The menu name goes here, you cannot change this.
  size: 27 # The size of the menu, must be a multiple of 9.
  title: "&bMy lovely menu" # The title of the menu.
  enabled: true # If the menu is disabled or not.
```

### Menu Open Actions

When opening a menu, you can execute commands to happen. This happens after the menu has been opened. You can view the command actions and how to use them [here](/projects/playerwarps/configuration#command-actions).

Here is an example on how to use the menu open actions, below in the example it it'll say hey in chat when the menu is opened.

```yaml
menu: # The menu name goes here, you cannot change this.
  size: 27 # The size of the menu, must be a multiple of 9.
  title: "&bMy lovely menu" # The title of the menu.
  enabled: true # If the menu is disabled or not.
  open-actions: # the actions when this menu is opened up
    - "[message] hey"
```

### Menu Close Actions

When creating a menu, you can execute commands to happen. This happens after the menu has been closed. You can view the command actions and how to use them [here](/projects/playerwarps/configuration#command-actions).

Here is an example on how to use the menu close actions, below in the example it it'll say hey in chat when the menu is closed.

```yaml
menu: # The menu name goes here, you cannot change this.
  size: 27 # The size of the menu, must be a multiple of 9.
  title: "&bMy lovely menu" # The title of the menu.
  enabled: true # If the menu is disabled or not.
  open-actions: # the actions when this menu is opened
    - "[message] hey"
  close-actions: # the actions when this menu is closed
    - "[message] hey"
```

### Menu Open Requirements

When creating a menu, you can add certain requirements to only open the menu. If the requirement does not meet then it will not open the menu and execute denied commands. If the requirement is met, it will open the menu and execute success commands. Note, it will also execute the open actions if successful.

View more information about requirements [here](/projects/playerwarps/configuration#requirements).

Here is an example on how to use the menu open requirements, below in the example the player needs the permission "menu.open" to open the menu

```yaml
menu: # The menu name goes here, you cannot change this.
  size: 27 # The size of the menu, must be a multiple of 9.
  title: "&bMy lovely menu" # The title of the menu.
  enabled: true # If the menu is disabled or not.
  open-actions: # the actions when this menu is opened
    - "[message] hey"
  close-actions: # the actions when this menu is closed
    - "[message] hey"
  open-requirements:
    1:
      inverted: false
      cached: true
      permission: "menu.open"
      type: has permission
      deny-commands:
        - "[message] you don't have permission"
      success-commands:
        - "[message] you have permission"
```


# Lang Configuration

Here you can view all the configuration, examples and options for creating messages in Player Warps.

## Language Support

Player Warps supports multi language support currently there is not many languages that it supports, thats where you can help us! If you wish, you can give us your translation of Player Warps and we will upload it to our webserver where every server can access it in the lang folder.

If you wish to change the plugin language you can change this in the `config.yml` and then select the languages in the lang folder to use. Make sure you put the exact file name without the file extension (.yml) in the `config.yml`.

## JSON Messages

Player Warps supports the ability to use JSON formatting in your messages, for you to add clickable commands, hover events and more!

If you wish to add colors to your JSON text, you'll find that the client will stop registering the color when it goes on the next line. You can use the in-built JSON color to solve that.

For you to easily create the JSON format, you can use this site [here](https://www.minecraftjson.com) and start to create text. Then copy the command it gives you and remove the `/tellraw @p`from the command so its just JSON.

Also, make sure you select the version below on the site that you're using, have fun creating cool looking JSON messages!

If you need some help formatting or using the site to format your JSON, come and join our discord and we will help you!

## MiniMessage Support

Player Warps supports the [MiniMessage](https://docs.adventure.kyori.net/minimessage/index.html) library, this allows you to easily add clickable commands, hover events and more! You can use this generator [here](https://webui.advntr.dev/) to make your life so much easier.

MiniMessage is more advanced, modern and easier than using JSON Messages. All you need to do is make sure you have the proper message syntax in your message and the plugin will recognise it as a mini message.

Please note that MiniMessage is only supported from 1.16.5 and above, for an alternative you will need to use JSON messages.

If you are experiencing any issues with MiniMessage formatting and quotes not being escaped properly in variables. Please note that you can use `<escape_quotes>%Variable%</escape_quotes>` to escape quotes in variables. This will ensure the MiniMessage parser handles them correctly.

## Message Placeholders

Player Warps supports all types of message placeholders that you can use in your messages, there are two types of placeholders and these are `global` and `individual`. Global placeholders allow you to use these placeholders in any message of the plugin. Individual placeholders are only set placeholders for that specific message.

Here is a list of the current global placeholders. Remember, you can also use [PlaceholderAPI ](https://docs.olziedev.com/projects/playerwarps/plugins#placeholderapi)placeholders in all the messages as well.

| Placeholder   | Description                                                         |
| ------------- | ------------------------------------------------------------------- |
| %prefix%      | Shows the prefix set in your lang file.                             |
| %player%      | Shows the players name that is receiving the message.               |
| %displayname% | Shows the display name of the player that is receiving the message. |

If you're looking for the individual placeholders, the default placeholders that can be used in that message is in the default configuration for that message already.


# FAQ

Here you can view the frequent asked questions for Player Warps, it might answer your question!

## 1. **Why can't my players set any warps?**

You will need a permissions plugin, and give them the permission `pw.limit.<warps>`. For example: `pw.limit.1` - can set one warp.

If you wish for players to have infinite warps, you can give them `pw.limit.*`!

## **2. Can I edit/remove/add warp categories?**

Yes, you can. You can go into the folder, `/guis/category.yml` and go to the bottom and manage the categories there.

## **3. Why can't my players set their warp to a category?**

You will need to give them two permissions, `pw.category` to access the command and `pw.category.<category name>`. If you wish to give them all categories You can give `pw.category.*` for all categories.

## **4. Why does the description go on the next line?**

You can edit how many characters are on each line of the description in the `config.yml`.

## **5. When I execute a sub command like `"lock"`. Why does it say that warp does not exist?**

The plugin thinks you're trying to teleport to that warp as the command is disabled in the `config.yml`. Enable it and it should work!

## **6. Why do skulls not appear/dont work in the GUI?**

If you're running 1.12 you will need to set the material to `SKULL_ITEM` with a data of 3. If you're running 1.13+ the material will need to be `PLAYER_HEAD`!

## **7. Why can’t players teleport/view the warps in the shop category?**

In the `/guis/category.yml` there is a default permission `pw.view.shop` just for that category. You can either give the permission or just remove it from the category in the file.

## 8. How do I change the teleport message in chat?

Some people get confused with the broadcast when someone teleports to a warp in the `config.yml` and the message that gets sent to the owner when someone teleports to their warp in the `lang` folder.

If you wish to remove the broadcast, simply go into your config.yml and search for `[broadcast]` and you should find it.

## 9. Why can't I add empty lines to item descriptions?

There is a feature disabled by default the empty lines will automatically be removed in the description, you can disable this in the `config.yml`

## 10. Where can I change the warp sponsor costs?

You can change the warp sponsor costs in the `/guis/category.yml` right at the bottom of the configuration file.

## 10. Where do I change the category name?

You can change the category name in the `guis/category.yml`, some people do get confused between the difference of the item name and the category name. The category item name is under "name" whereas the category name is quite hidden, its the section name.

```yaml
    all: # <--- # This is the name of category.
      displayname: "All" # <---- This is the display name of the category. This is what will be used to show to the player.
      name: "&bAll Warps" # <---- this is the item name
      material: BOOK
      data: 0
      lore:
        - "&dClick&b to view all the warps."
      slot: 4
      amount: 1
```

You might question yourself, how do you I specify its an all category if I change the name? Player Warps will always recognise that the all category is the first category listed in the configuration file no matter what.

## 11. How do I create a sever warp?

There are 2 ways to create a server warp, its not very intuitive at first but its pretty simple! If you want to create a new warp, then you can use `/pw set <warp> server` this will create a server warp. If you want to change an existing warp thats already created, you can use `/pw setowner <warp> server` to change the owner!

Please note to create server warps, you will need the permission `pw.admin.set`!

## 12. When using a chat wait action why does my chat message get sent into chat?

To fix chat messages from being sent into chat, go into your `config.yml`and go right to the bottom you'll see two settings `wait-chat-event-priority`and `use-paper-event`, try disabling `use-paper-event`and reload plugin. If it doesn't work, try changing the `wait-chat-event-priority`to LOWEST, if that doesn't work, try enabling `use-paper-event`again with priority set to lowest. \
Unfortunately all chat plugins are different, they use different methods so you need to tell the plugin what works. &#x20;

{% hint style="info" %}
**Didn't find an answer to your question?**

You can join our discord [here ](https://olziedev.com/support)and ask your question and get a fast response from our community!
{% endhint %}


# Database FAQ

Here you can view the frequent asked questions for the Player Warps database system.

## 1. Why does Player Warps lag the server when loading the warps?

Player Warps has a safe detection system, the plugin tries its best to keep it stable like using the paper async chunk feature. If you're having issues with it, either use paper if you're not already or you can disable the safe detection feature in your `config.yml.`

## 2. Why does Player Warps keep throwing "No operations allowed after connection closed."?

If you're running MySQL, this is a very common issue. Sometimes your database server might be closing the connection because the connection is "sleeping", you can solve this by either adding `"autoReconnect=true"` to your sql arguments in the `config.yml` or you can enable the `close`option in the `config.yml` to close connections after every few minutes and open a new one.

## 3. How do I convert my data from the SQLite to MySQL?

You can convert all of your data back and forth between MySQL and SQite. To convert from SQLite to MySQL, you will need to enter all of you connection details and enable MySQL. To convert from MySQL to SQLite you need to make sure all of your connection details have been entered but MySQL is disabled

Once completed, you can also enable the convert option. Once enabled, restart your server. The data will be converted. Once its been converted, disable the convert option back in the config then restart your server again. Should be all good to go!


# Supported Plugins

Here you can view all the supported extensions information for Player Warps.

## **Vault**

Player Warps depends on [Vault](https://www.spigotmc.org/resources/34315/) so you can use any of your favorite economy/permissions plugins that will be used in Player Warps by hooking into Vault.

## **PlaceholderAPI**

Player Warps hooks into [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) so you can use the Player Warps placeholders everywhere that supports PlaceholderAPI. You can also use placeholders from PlaceHolderAPI anywhere in Player Warps. Here is a list of the current placeholders supported by Player Warps.

| Placeholder                                     | Description                                                                                                          |
| ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| %pw\_player\_warps%                             | View the amount of your current warps.                                                                               |
| %pw\_player\_available%                         | View the amount of current warps a player can set.                                                                   |
| %pw\_player\_list\_\<lock/unlock>\_\<modifier>% | <p>View the warps in a list for that player.<br>Check the modifiers below.</p>                                       |
| %pw\_server\_list\_\<lock/unlock>\_\<modifier>% | <p>View the server warps in a list.<br>Check the modifiers below.</p>                                                |
| %pw\_player\_maxwarps%                          | View the maximum amount of warps that you can set.                                                                   |
| %pw\_server\_warps%                             | View the amount of current warps on the server.                                                                      |
| %pw\_visited\_warps%                            | View the amount of warps that have been visited.                                                                     |
| %pw\_visited\_warps\_percentage%                | View the percentage of warps that have been visited.                                                                 |
| %pw\_server\_warps\_\<category>%                | View the amount of current warps for that category.                                                                  |
| %pw\_warp\_name\_\<name>\_\<modifier>%          | <p>View the modifier of a specific warp.</p><p>Check modifiers below.</p>                                            |
| %pw\_warp\_pos\_\<position>\_\<modifier>%       | <p>View the modifier of a warp in that position of the warp list.</p><p>Check modifiers below.</p>                   |
| %pw\_warp\_sponsor\_\<id>\_\<modifier>%         | <p>View the modifier of a warp that is currently in that sponsor id.</p><p>Check modifiers below.</p>                |
| %pw\_gui\_warp\_\<modifier>%                    | <p>View the modifier of the current warp that is assigned to the player via a menu.</p><p>Check modifiers below.</p> |
| %pw\_gui\_category%                             | View the current category name that is assigned to the player via a menu.                                            |
| %pw\_gui\_category\_display%                    | View the current category display name that is assigned to the player via a menu.                                    |
| %pw\_gui\_page%                                 | View the current page that is assigned to the player via a menu.                                                     |
| %pw\_gui\_pages%                                | View the current pages that is assigned to the player via a menu.                                                    |

### Modifiers

Some placeholders do support modifiers, which allow you to grab information on a certain warp.

*Please remember, warp names may contain "\_" which will break any placeholder using a modifier. You need to make sure you adapt to this change by surrounding the warp names in <> For example %pw\_warp\_name\_\<test>\_owner% this is very important.*

| Modifier         | Description                                                                                                                                            |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| safe             | If the warp is safe or not.                                                                                                                            |
| owner            | Get the owner of the warp.                                                                                                                             |
| owner\_uuid      | Get the owner UUID of the warp.                                                                                                                        |
| warp             | Get the actual name of the warp.                                                                                                                       |
| warp\_display    | Get the display name of the warp.                                                                                                                      |
| id               | Get the ID of the warp                                                                                                                                 |
| favourite\_count | Get the favourite count for that warp.                                                                                                                 |
| location         | Get the location of the warp.                                                                                                                          |
| visits           | Get the visits of the warp                                                                                                                             |
| visits\_purged   | Get the amount of purged visits for that warp.                                                                                                         |
| my\_visits       | <p>Get the amount of visits the player has visited for that warp.</p><p><em>This will only work if you have the visited players menu enabled.</em></p> |
| has\_visited     | <p>If the player has visited the warp or not.</p><p><em>This will only work if you have the visited warps menu enabled.</em></p>                       |
| category         | Get the category of the warp.                                                                                                                          |
| rates\_all       | Get the total amount of rates for that warp.                                                                                                           |
| rates\_stars     | Get the average amount of rates represented as stars for that warp.                                                                                    |
| world            | Get the world of the warp.                                                                                                                             |
| world\_type      | Get the world type of the warp.                                                                                                                        |
| cost             | Get the teleport cost of the warp in a formatted way.                                                                                                  |
| cost\_raw        | Get the teleport cost of the warp that strips out all text.                                                                                            |
| cost\_set        | Get the set cost of the warp in a formatted way.                                                                                                       |
| cost\_set\_raw   | Get the set cost of the warp that strips out all text.                                                                                                 |
| server           | Get the server the warp is in.                                                                                                                         |
| sponsortime      | If the warp is sponsoring then it will show the amount of time left until the sponsor ends.                                                            |
| date             | Get the date the warp was created.                                                                                                                     |
| rent\_due        | Get the next rent due date for the warp.                                                                                                               |
| password         | Get the warp password.                                                                                                                                 |
| locked           | If the warp is locked or not in formatted text.                                                                                                        |
| locked\_raw      | If the warp is locked or not with no format.                                                                                                           |
| has\_password    | If the warp has a password or not.                                                                                                                     |
| paid             | Get the amount players paid for that warp.                                                                                                             |
| desc             | Get the description of the warp.                                                                                                                       |
| desc\_unwrapped  | Get the unwrapped description of the warp.                                                                                                             |

These are the current warp expansions, that hook into other plugins to change on how the plugin works. You can configure all these expansions and change how they work in the expansions.yml. Every expansion is configurable.

## BlueMap

Player Warps hooks into [BlueMap](https://www.spigotmc.org/resources/83557/) as an addon so you can view the warps on the server via the BlueMap web server interface. Here is the default configuration for this addon.

```yaml
  bluemap:
    # Do you want to enable bluemap support?
    # You need bluemap installed for this to work!
    enabled: false
    # What is the layer name?
    layer-name: "PlayerWarps"
```

## Dynmap

Player Warps hooks into [Dynmap](https://www.spigotmc.org/resources/274/) as an addon so you can view the warps on the server via the Dynmap web server interface. Here is the default configuration for this addon.

```yaml
  dynmap:
    # Do you want to enable dynmap support?
    # You need dynmap installed for this to work!
    enabled: false
    # What is the marker icon?
    marker-icon: star
    # What is the layer name?
    layer-name: "PlayerWarps"
    # What is the description of the marker?
    description:
      - "Owner: [owner]"
      - "Visits: [visits]"
      - "Description: [desc]"
      - "Time Created: [date]"
      - "Category: [category]"
      - "Rates: [rates]"
      - "Rates Average: [rates_average] ([rates_stars])"

```

## Pl3xMap

Player Warps hooks into [Pl3xMap](https://github.com/pl3xgaming/Pl3xMap) as an addon so you can view the warps on the server via the Pl3xMap web server interface. Here is the default configuration for this addon.

```yaml

pl3xmap:
  # Do you want to enable pl3xmap/squaremap support?
  # You need pl3xmap/squaremap installed for this to work!
  enabled: false
  # What is the layer name?
  layer-name: "PlayerWarps"
  # What is the tooltip for the marker?
  description:
    - "[warp]"
    - " "
    - "Owner: [owner]"
    - "Visits: [visits]"
    - "Description: [desc]"
    - "Time Created: [date]"
    - "Category: [category]"
    - "Rates: [rates]"
    - "Rates Average: [rates_average] ([rates_stars])"
  # What is the icon size?
  icon-size: 16
  # What is the anchor x?
  icon-x: 8
  # What is the anchor z?
  icon-z: 16
  # Should the layer be hidden by default?
  default-hidden: false
```

## ASkyBlock

Player Warps hooks into [ASkyBlock](https://www.spigotmc.org/resources/1220/) as an addon so players are restricted to create warps, manage warps and automatically create/delete warps in their own islands. Here is the default configuration for this addon.

```yaml
  askyblock:
    # Do you want to enable askyblock support?
    # You need askyblock installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp be created when an island is created?
    create: fals
    # What should the warp name be called when its created? Only as of right now you can use %player%
    warp-name-creation: "%player%"
    # Should the warp get deleted once the island is deleted?
    delete: true
    # Should they only be able to set warps in islands? If disabled, they can set warps on their island or wilderness.
    only-land: true
    lang:
      not-in-island: "%prefix% &cSorry you can't set a warp here, &cYou aren't on a island!"
      dont-own-island: "%prefix% &cSorry you can't set a warp here, because you don't own this island."
```

## BentoBox

Player Warps hooks into [BentoBox ](https://www.spigotmc.org/resources/73261/)as an addon so players are restricted to create warps, manage warps and automatically create/delete warps in their own islands. Here is the default configuration for this addon.

```yaml
  bentobox:
    # Do you want to enable bentobox support?
    # You need bentobox installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp be created when an island is created?
    create: false
    # What should the warp name be called when its created? Only as of right now you can use %player%
    warp-name-creation: "%player%"
    # Should the warp get deleted once the island is deleted?
    delete: true
    # Should they only be able to set warps in islands? If disabled, they can set warps on their island or wilderness.
    only-land: true
    lang:
      not-in-island: "%prefix% &cSorry you can't set a warp here, &cYou aren't on a island!"
      dont-own-island: "%prefix% &cSorry you can't set a warp here, because you don't own this island."
```

## FabledSkyBlock

Player Warps hooks into [FabledSkyBlock](https://songoda.com/marketplace/product/17) as an addon so players are restricted to create warps, manage warps and automatically create/delete warps in their own island. Here is the default configuration for this addon.

```yaml
  fabledskyblock:
    # Do you want to enable fabledskyblock support?
    # You need fabledskyblock installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp be created when an island is created?
    create: false
    # What should the warp name be called when its created? Only as of right now you can use %player%
    warp-name-creation: "%player%"
    # Should the warp get deleted once the island is deleted?
    delete: true
    # Should they only be able to set warps in islands? If disabled, they can set warps on their island or wilderness.
    only-land: true
    lang:
      not-in-island: "%prefix% &cSorry you can't set a warp here, &cYou aren't on a island!"
      dont-own-island: "%prefix% &cSorry you can't set a warp here, because you don't own this island."
```

## IridiumSkyblock

Player Warps hooks into [IridiumSkyblock](https://www.spigotmc.org/resources/62480/) as an addon so players are restricted to create warps, manage warps and automatically create/delete warps in their own island. Here is the default configuration for this addon.

```yaml
  iridiumskyblock:
    # Do you want to enable iridiumskyblock support?
    # You need iridiumskyblock installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp be created when an island is created?
    create: false
    # What should the warp name be called when its created? Only as of right now you can use %player%
    warp-name-creation: "%player%"
    # Should the warp get deleted once the island is deleted?
    delete: true
    # Should they only be able to set warps in islands? If disabled, they can set warps on their island or wilderness.
    only-land: true
    lang:
      not-in-island: "%prefix% &cSorry you can't set a warp here, &cYou aren't on a island!"
      dont-own-island: "%prefix% &cSorry you can't set a warp here, because you don't own this island."
```

## Factions

Player Warps hooks into [Factions](https://www.spigotmc.org/resources/1900/) as an addon so players are restricted to create warps, manage warps and automatically delete warps in their own claims. Here is the default configuration for this addon.

```yaml
  factions:
    # Do you want to enable factions support?
    # You need factions installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp get deleted once the faction is deleted?
    delete: true
    # Should they only be able to set warps in claims? If disabled, they can set warps in their claim or wilderness.
    only-land: true
    lang:
      not-in-claim: "%prefix% &cSorry you can't set a warp here, &cYou aren't in a claim!"
      dont-own-claim: "%prefix% &cSorry you can't set a warp here, because you don't own this claim."
```

## FactionsUUID

Player Warps hooks into [FactionsUUID](https://www.spigotmc.org/resources/1035/) as an addon so players are restricted to create warps, manage warps and automatically delete warps in their own claims. Here is the default configuration for this addon.

```yaml
  factionsuuid:
    # Do you want to enable factionsuuid support?
    # You need factionsuuid installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp get deleted once the faction is deleted?
    delete: true
    # Should they only be able to set warps in claims? If disabled, they can set warps in their claim or wilderness.
    only-land: true
    lang:
      not-in-claim: "%prefix% &cSorry you can't set a warp here, &cYou aren't in a claim!"
      dont-own-claim: "%prefix% &cSorry you can't set a warp here, because you don't own this claim."
```

## SaberFactions

Player Warps hooks into [SaberFactions ](https://www.spigotmc.org/resources/69771/)as an addon so players are restricted to create warps, manage warps and automatically delete warps in their own claims. Here is the default configuration for this addon.

```yaml
  saberfactions:
    # Do you want to enable saberfactions support?
    # You need saberfactions installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp get deleted once the faction is deleted?
    delete: true
    # Should they only be able to set warps in claims? If disabled, they can set warps in their claim or wilderness.
    only-land: true
    lang:
      not-in-claim: "%prefix% &cSorry you can't set a warp here, &cYou aren't in a claim!"
      dont-own-claim: "%prefix% &cSorry you can't set a warp here, because you don't own this claim."
```

## FactionsX

Player Warps hooks into [FactionsX](https://www.spigotmc.org/resources/83459/) as an addon so players are restricted to create warps, manage warps and automatically create/delete warps in their own claims. Here is the default configuration for this addon.

```yaml
  factionsx:
    # Do you want to enable factionsx support?
    # You need factionsx installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp get deleted once the faction is deleted?
    delete: true
    # Should they only be able to set warps in claims? If disabled, they can set warps in their claim or wilderness.
    only-land: true
    lang:
      not-in-claim: "%prefix% &cSorry you can't set a warp here, &cYou aren't in a claim!"
      dont-own-claim: "%prefix% &cSorry you can't set a warp here, because you don't own this claim."
```

## GriefPrevention

Player Warps hooks into [GriefPrevention](https://www.spigotmc.org/resources/1884/) as an addon so players are restricted to create warps, manage warps and automatically create/delete warps in their own claims. Here is the default configuration for this addon.

```yaml
  griefprevention:
    # Do you want to enable griefprevention support?
    # You need griefprevention installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp be created when a claim is created?
    create: false
    # What should the warp name be called when its created? Only as of right now you can use %player%
    warp-name-creation: "%player%"
    # Should the warp get deleted once the claim is deleted?
    delete: true
    # Should they only be able to set warps in claim? If disabled, they can set warps in their claim or wilderness.
    only-land: true
    lang:
      not-in-claim: "%prefix% &cSorry you can't set a warp here, &cYou aren't in a claim!"
      dont-own-claim: "%prefix% &cSorry you can't set a warp here, because you don't own this claim."
```

## GriefDefender

Player Warps hooks into [GriefDefender ](https://www.spigotmc.org/resources/68900/)as an addon so players are restricted to create warps, manage warps and automatically create/delete warps in their own claims. Here is the default configuration for this addon.

```yaml
  griefdefender:
    # Do you want to enable griefdefender support?
    # You need griefdefender installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp be created when a claim is created?
    create: false
    # What should the warp name be called when its created? Only as of right now you can use %player%
    warp-name-creation: "%player%"
    # Should the warp get deleted once the claim is deleted?
    delete: true
    # Should they only be able to set warps in claim? If disabled, they can set warps in their claim or wilderness.
    only-land: true
    lang:
      not-in-claim: "%prefix% &cSorry you can't set a warp here, &cYou aren't in a claim!"
      dont-own-claim: "%prefix% &cSorry you can't set a warp here, because you don't own this claim."
```

## Lands

Player Warps hooks into [Lands](https://www.spigotmc.org/resources/53313/) as an addon so players are restricted to create warps, manage warps and automatically create/delete warps in their own land. Here is the default configuration for this addon.

```yaml
  lands:
    # Do you want to enable lands support?
    # You need lands installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp be created when a land is created?
    create: false
    # What should the warp name be called when its created? Only as of right now you can use %player%
    warp-name-creation: "%player%"
    # Should the warp be created when a land spawn is set? (Only works if create is disabled)
    spawn-create: false
    # Should the warp get deleted once the land is deleted?
    delete: true
    # Should the warp get deleted once the land spawn is deleted? (Only works if spawn-create is enabled)
    spawn-delete: false
    # Should they only be able to set warps in lands? If disabled, they can set warps in their land or wilderness.
    only-land: true
    # Force PlayerWarps to allow warps to bypass land restrictions
    force: false
    lang:
      not-in-land: "%prefix% &cSorry you can't set a warp here, &cYou aren't on a land"
      dont-own-land: "%prefix% &cSorry you can't set a warp here, because you don't own this land."
```

## LandLord

Player Warps hooks into [LandLord](https://www.spigotmc.org/resources/44398/) as an addon so players are restricted to create warps, manage warps and automatically create/delete warps in their own land. Here is the default configuration for this addon.

```yaml
  landlord:
    # Do you want to enable landlord support?
    # You need landlord installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp be created when a land is created?
    create: false
    # What should the warp name be called when its created? Only as of right now you can use %player%
    warp-name-creation: "%player%"
    # Should the warp get deleted once the land is deleted?
    delete: true
    # Should they only be able to set warps in lands? If disabled, they can set warps in their land or wilderness.
    only-land: true
    lang:
      not-in-land: "%prefix% &cSorry you can't set a warp here, &cYou aren't on a land"
      dont-own-land: "%prefix% &cSorry you can't set a warp here, because you don't own this land."
```

## KingdomsX

Player Warps hooks into [KingdomsX](https://www.spigotmc.org/resources/77670/) as an addon so players are restricted to create warps, manage warps and automatically create/delete warps in their own land. Here is the default configuration for this addon.

```yaml
  kindomsx:
    # Do you want to enable kingdomsx support?
    # You need kingdomsx installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp be created when a land is created?
    create: false
    # What should the warp name be called when its created? Only as of right now you can use %player%
    warp-name-creation: "%player%"
    # Should the warp get deleted once the land is deleted?
    delete: true
    # Should they only be able to set warps in lands? If disabled, they can set warps in their land or wilderness.
    only-land: true
    lang:
      not-in-land: "%prefix% &cSorry you can't set a warp here, &cYou aren't on a land"
      dont-own-land: "%prefix% &cSorry you can't set a warp here, because you don't own this land."
```

## Residence

Player Warps hooks into [Residence](https://www.spigotmc.org/resources/11480/) as an addon so players are restricted to create warps, manage warps and automatically create/delete warps in their own land. Here is the default configuration for this addon.

```yaml
  residence:
    # Do you want to enable residence support?
    # You need Residence installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp be created when a land is created?
    create: false
    # What should the warp name be called when its created? Only as of right now you can use %player%
    warp-name-creation: "%player%"
    # Should the warp get deleted once the land is deleted?
    delete: true
    # Should they only be able to set warps in lands? If disabled, they can set warps in their land or wilderness.
    only-land: true
    lang:
      not-in-land: "%prefix% &cSorry you can't set a warp here, &cYou aren't on a land"
      dont-own-land: "%prefix% &cSorry you can't set a warp here, because you don't own this land."
      not-allowed-to-tp: "%prefix% &cSorry you can't teleport to this warp, &cYou don't have permission to teleport there."
```

## UltimateClaims

Player Warps hooks into [UltimateClaims](https://marketplace.songoda.com/marketplace/product/65) as an addon so players are restricted to create warps, manage warps and automatically create/delete warps in their own claims. Here is the default configuration for this addon.

```yaml
  ultimateclaims:
    # Do you want to enable ultimateclaims support?
    # You need ultimateclaims installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp be created when a claim is created?
    create: false
    # What should the warp name be called when its created? Only as of right now you can use %player%
    warp-name-creation: "%player%"
    # Should the warp get deleted once the claim is deleted?
    delete: true
    # Should they only be able to set warps in lands? If disabled, they can set warps in their land or wilderness.
    only-land: true
    lang:
      not-in-claim: "%prefix% &cSorry you can't set a warp here, &cYou aren't on a claim"
      dont-own-claim: "%prefix% &cSorry you can't set a warp here, because you don't own this claim."
```

## ClaimChunk

Player Warps hooks into [ClaimChunk](https://www.spigotmc.org/resources/44458/) as an addon so players are restricted to create warps and manage warps in their own claims. Here is the default configuration for this addon.

```yaml
  claimchunk:
    # Do you want to enable claimchunk support?
    # You need claimchunk installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp be created when a claim is created?
    # Should they only be able to set warps in lands? If disabled, they can set warps in their land or wilderness.
    only-land: true
    lang:
      not-in-claim: "%prefix% &cSorry you can't set a warp here, &cYou aren't on a claim"
      dont-own-claim: "%prefix% &cSorry you can't set a warp here, because you don't own this claim."
```

## CrashClaims

Player Warps hooks into [CrashClaims](https://www.spigotmc.org/resources/94017/) as an addon so players are restricted to create warps and manage warps in their own claims. Here is the default configuration for this addon.

```yaml
  crashclaims:
    # Do you want to enable crashclaims support?
    # You need crashclaims installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should they only be able to set warps in lands? If disabled, they can set warps in their land or wilderness.
    only-land: true
    lang:
      not-in-claim: "%prefix% &cSorry you can't set a warp here, &cYou aren't on a claim"
      dont-own-claim: "%prefix% &cSorry you can't set a warp here, because you don't own this claim."
```

## PlotSquared

Player Warps hooks into [PlotSquared](https://www.spigotmc.org/resources/1177/) as an addon so players are restricted to create warps, manage warps and automatically create/delete warps in their own plots. Here is the default configuration for this addon.

```yaml
  plotsquared:
    # Do you want to enable plotsquared support?
    # You need plotsquared installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp be created when a plot is created?
    create: false
    # What should the warp name be called when its created? Only as of right now you can use %player%
    warp-name-creation: "%player%"
    # Should the warp get deleted once the plot is deleted?
    delete: true
    # Should they only be able to set warps in plots? If disabled, they can set warps in their plot or wilderness.
    only-land: true
    lang:
      not-in-plot: "%prefix% &cSorry you can't set a warp here, &cYou aren't on a plot!"
      dont-own-plot: "%prefix% &cSorry you can't set a warp here, because you dont own this plot!"
```

## VirtualRealty

Player Warps hooks into [VirtualRealty](https://www.spigotmc.org/resources/95599/) as an addon so players are restricted to create warps, manage warps in their own plots. Here is the default configuration for this addon.

```yaml
  virtualrealty:
    # Do you want to enable virtualrealty support?
    # You need virtualrealty installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should trusted players (with place permissions) be treated like the owner of the claim?
    trusted-members: true
    # Should they only be able to set warps in claim? If disabled, they can set warps in their claim or wilderness.
    only-land: true
    lang:
      not-in-plot: "%prefix% &cSorry you can't set a warp here, &cYou aren't in a plot!"
      dont-own-plot: "%prefix% &cSorry you can't set a warp here, because you don't own this plot."
```

## SimpleSkyBlock

Player Warps hooks into [SimpleSkyBlock](https://www.spigotmc.org/resources/72100/) as an addon so players are restricted to create warps and manage warps in their own islands. Here is the default configuration for this addon.

```yaml
  simpleskyblock:
    # Do you want to enable simpleskyblock support?
    # You need simpleskyblock installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should they only be able to set warps in islands? If disabled, they can set warps on their island or wilderness.
    only-land: true
    lang:
      not-in-island: "%prefix% &cSorry you can't set a warp here, &cYou aren't on a island!"
      dont-own-island: "%prefix% &cSorry you can't set a warp here, because you don't own this island."
```

## SuperiorSkyBlock

Player Warps hooks into [SuperiorSkyBlock](https://bg-software.com/superiorskyblock/) as an addon so players are restricted to create warps, manage warps and automatically delete warps in their own islands. Here is the default configuration for this addon.

```yaml
  superiorskyblock:
    # Do you want to enable superiorskyblock support?
    # You need superiorskyblock installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp be created when a claim is created?
    create: false
    # What should the warp name be called when its created? Only as of right now you can use %player%
    warp-name-creation: "%player%"
    # Should the warp get deleted once the faction is deleted?
    delete: true
    # Should they only be able to set warps in islands? If disabled, they can set warps on their island or wilderness.
    only-land: true
    lang:
      not-in-island: "%prefix% &cSorry you can't set a warp here, &cYou aren't on a island!"
      dont-own-island: "%prefix% &cSorry you can't set a warp here, because you don't own this island."
      island-banned: "%prefix% &cSorry you can't teleport here, because you're banned from this island!"
      island-locked: "%prefix% &cSorry you can't teleport here, because this island is locked!"
```

## Towny

Player Warps hooks into [Towny](https://www.spigotmc.org/resources/72694/) as an addon so players are restricted to create warps and manage warps in their own towns. Here is the default configuration for this addon.

```yaml
  towny:
    # Do you want to enable towny support?
    # You need towny installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should town residents be treated like the owner of the town?
    town-residents: true
    # Should the warp get deleted once the town is deleted?
    delete: true
    # Should they only be able to set warps in towns? If disabled, they can set warps in their town or wilderness.
    only-land: true
    # Should the plugin cancel the warp teleportation if the warp they're teleporting to is enemey land?
    cancel-enemy-teleport: false
    # Should the plugin only allow warp teleportation if the player is a member of the town?
    # Please note that if this is enabled, the above setting will be ignored.
    only-town-members-teleport: false
    # Block players from teleporting to warps in outlaw towns.
    block-outlaw-teleport: false
    # Should the plugin mark the warp as unsafe if its in pvp land?
    mark-warp-unsafe-if-pvp: true
    lang:
      not-in-town: "%prefix% &cSorry you can't set a warp here, &cYou aren't in a town!"
      dont-own-town: "%prefix% &cSorry you can't set a warp here, because you don't own this town."
      town-teleport-enemy: "%prefix% &cSorry you can't teleport to this warp as its in enemy land."
      town-not-member: "%prefix% &cSorry you can't teleport to this warp as you're not a member of this town."
      town-outlaw: "%prefix% &cSorry you can't teleport to this warp as its in an outlaw town."
```

## HuskTowns

Player Warps hooks into [HuskTowns](https://www.spigotmc.org/resources/92672/) as an addon so players are restricted to create warps, manage warps and automatically delete warps in their own towns. Here is the default configuration for this addon.

```yaml
  husktowns:
    # Do you want to enable husktowns support?
    # You need husktowns installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should the warp be created when a town is created?
    create: false
    # What should the warp name be called when its created? Only as of right now you can use %player%
    warp-name-creation: "%player%"
    # Should the warp get deleted once the town is deleted?
    delete: true
    # Should they only be able to set warps in towns? If disabled, they can set warps in their town or wilderness.
    only-land: true
    # What is the required level for a town to set a warp?
    required-level: 0
    lang:
      not-in-town: "%prefix% &cSorry you can't set a warp here, &cYou aren't in a town!"
      dont-own-town: "%prefix% &cSorry you can't set a warp here, because you don't own this town."
      not-required-level: "%prefix% &cSorry your town doesn't meet the level requirements"
```

## HuskClaims

Player Warps hooks into [HuskClaims](https://www.spigotmc.org/resources/92672/) as an addon so players are restricted to create warps, manage warps and automatically delete warps in their own claims. Here is the default configuration for this addon.

```yaml
  huskclaims:
    # Do you want to enable huskclaims support?
    # You need huskclaims installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should trusted members be treated like the owner of the town?
    trusted-members: true
    # Should the warp be created when a town is created?
    create: false
    # What should the warp name be called when its created? Only as of right now you can use %player%
    warp-name-creation: "%player%"
    # Should the warp get deleted once the town is deleted?
    delete: true
    # Should they only be able to set warps in towns? If disabled, they can set warps in their town or wilderness.
    only-land: true
    lang:
      not-in-claim: "%prefix% &cSorry you can't set a warp here, &cYou aren't in a claim!"
      dont-own-claim: "%prefix% &cSorry you can't set a warp here, because you don't own this claim."
```

## uxmClaims

Player Warps hooks into [uxmClaims](https://builtbybit.com/resources/86890/) as an addon so players are restricted to create warps, manage warps and automatically delete warps in their own claims. Here is the default configuration for this addon.

```yaml
  uxmclaims:
    # Do you want to enable uxmclaims support?
    # You need uxmclaims installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Should trusted members be treated like the owner of the claim?
    trusted-members: true
    # Should the warp be created when a claim is created?
    create: false
    # What should the warp name be called when its created? Only as of right now you can use %player%
    warp-name-creation: "%player%"
    # Should the warp get deleted once the claim is deleted?
    delete: true
    # Should they only be able to set warps in claim? If disabled, they can set warps in their claim or wilderness.
    only-land: true
    lang:
      not-in-claim: "%prefix% &cSorry you can't set a warp here, &cYou aren't in a claim!"
      dont-own-claim: "%prefix% &cSorry you can't set a warp here, because you don't own this claim."
```

## WorldGuard

Player Warps hooks into [WorldGuard](https://dev.bukkit.org/projects/worldguard) as an addon so players are restricted to create warps in regions. Here is the default configuration for this addon.

```yaml
  worldguard:
    # Do you want to enable worldguard support?
    # You need worldguard installed for this to work!
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # Do you want to revert the addon to make players force to be in a region? If so the message below will be displayed as not being in a region.
    revert: false
    # When reverted, do players need to be a member/owner of the region?
    owner-member: false
    # Should the warp get deleted once the region is deleted?
    # Due to limitations of WorldGuard, this setting will only work if you have ProtectionStones enabled on your server.
    delete: false
    lang:
      in-region: "%prefix% &cSorry you can't set a warp here, because you are in a region!"
      dont-own-region: "%prefix% &cSorry you can't set a warp here, because you dont own this region!"
```

## Essentials

Player Warps hooks into [Essentials](https://www.spigotmc.org/resources/9089/) as an expansion so players previous locations are remembered when teleporting to a warp. Here is the default configuration for this addon.

```yaml
  essentials:
    # Do you want to enable essentials expansion?
    # This expansion sets their last location before they teleport to a warp.
    # You need Essentials installed for this to work!
    enabled: true
    # What version of this expansion do you want to download/use?
    version: latest
```

## HuskHomes

Player Warps hooks into [HuskHomes](https://www.spigotmc.org/resources/83767/) as an expansion so players previous locations are remembered when teleporting to a warp. Here is the default configuration for this addon.

```yaml
  huskhomes:
    # Do you want to enable huskhomes expansion?
    # This expansion sets their last location before they teleport to a warp.
    # You need HuskHomes installed for this to work!
    enabled: true
    # What version of this expansion do you want to download/use?
    version: latest
```

## TokenManager

Player Warps hooks into [TokenManager](https://www.spigotmc.org/resources/8610/) as a currency so you can teleport/set/rent/rename/reset warps using this currency. Here is the default configuration for this addon.

```yaml
  tokenmanager:
    # Do you want to enable the TokenManager currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The prefix of the price variable, this is how you want the variable to show when using the token manager currency.
    prefix: "%price% tokens"
```

## PlayerPoints

Player Warps hooks into [PlayerPoints](https://www.spigotmc.org/resources/80745/) as a currency so you can teleport/set/rent/rename/reset warps using this currency. Here is the default configuration for this addon.

```yaml
  playerpoints:
    # Do you want to enable the PlayerPoints currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The prefix of the price variable, this is how you want the variable to show when using the player points currency.
    prefix: "%price% points"
```

## BeastToken

Player Warps hooks into [BeastToken](https://www.spigotmc.org/resources/20806/) as a currency so you can teleport/set/rent/rename/reset warps using this currency. Here is the default configuration for this addon.

```yaml
  beasttoken:
    # Do you want to enable the BeastToken currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The prefix of the price variable, this is how you want the variable to show when using the beast token currency.
    prefix: "%price% tokens"
```

## GemsEconomy

Player Warps hooks into [GemsEconomy](https://www.spigotmc.org/resources/95658/) as a currency so you can teleport/set/rent/rename/reset warps using this currency. Here is the default configuration for this addon.

```yaml
  gemseconomy:
    # Do you want to enable the GemsEconomy currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The prefix of the price variable, this is how you want the variable to show when using the gemseconomy currency.
    prefixes:
      currency_name: "%price% gems"
```

## UltraEconomy

Player Warps hooks into [UltraEconomy](https://www.spigotmc.org/resources/83374/) as a currency so you can teleport/set/rent/rename/reset warps using this currency. Here is the default configuration for this addon.

```yaml
  ultraeconomy:
    # Do you want to enable the UltraEconomy currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The name that is used in-game to decide what currency to use.
    name: "gems"
    # The prefix of the price variable, this is how you want the variable to show when using the ultraeconomy currency.
    prefixes:
      currency_name: "%price% coins"
```

## EcoBits

Player Warps hooks into [EcoBits](https://www.spigotmc.org/resources/109967/) as a currency so you can teleport/set/rent/rename/reset warps using this currency. Here is the default configuration for this addon.

```yaml
  ecobits:
    # Do you want to enable the EcoBits currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The prefix of the price variable, this is how you want the variable to show when using the eco bits currency.
    prefixes:
      currency_name: "%price% coins"
```

## ExcellentEconomy

Player Warps hooks into [ExcellentEconomy](https://www.spigotmc.org/resources/84121/) as a currency so you can teleport/set/rent/rename/reset warps using this currency. Here is the default configuration for this addon.

```yaml
  excellenteconomy:
    # Do you want to enable the ExcellentEconomy currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The prefix of the price variable, this is how you want the variable to show when using the excellent economy currency.
    prefixes:
      currency_name: "%price% coins"
```

## RivalCredits

Player Warps hooks into [RivalCredits](https://builtbybit.com/resources/31250/) as a currency so you can teleport/set/rent/rename/reset warps using this currency. Here is the default configuration for this addon.

```yaml
  rivalcredits:
    # Do you want to enable the RivalCredits currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The prefix of the price variable, this is how you want the variable to show when using the rival credits currency.
    prefix: "%price% credits"
```

## RivalHarvesterHoes

Player Warps hooks into [RivalHarvesterHoes](https://builtbybit.com/resources/21424/) as a currency so you can teleport/set/rent/rename/reset warps using this currency. Here is the default configuration for this addon.

```yaml
  rivalharvesterhoes:
    # Do you want to enable the RivalHarvesterHoes currency?
    enabled: false
    # What version of this expansion do you want to download/use?
    version: latest
    # The prefix of the price variable, this is how you want the variable to show when using the rival harvester hoes currency.
    prefix: "%price% credits"
```


# Plugin Features

Here is a detailed description of most of the features and how they work here.

## Economy support

Player Warps hooks into your favorite economy plugin using Vault to make warp setting, naming, teleport and resetting support your economy. You can control the entire cost system in the **config.yml**.

## World Support

Player Warps supports worlds, so you can only set warps in a list of worlds. Soon, Player Warps will support warps per world. You can control this functionality in the **config.yml**.

## Warp Categories

Player Warps has warp categories so your players can set a warp into its specific category using the command **/pw category \<warp> \<category>**. The category name is determined in the **guis/category.yml** of each item title. You will need this permission to add a warp to a category **pw\.category.\<category>.** View more about permissions of categories [here](https://docs.olziedev.com/projects/playerwarps/commands).

You can also set per teleport prices for each categories by using adding the following token to the category `teleport-price`. Please note the cost command still overrides this though.

## Proxy Support

Player Warps supports multi server warp teleporting and listing, for this to work you will need to make sure you have MySQL setup properly. You can setup MySQL in the **config.yml**, and easily convert your data from SQLite to MySQL easily. You will need to make sure that the server names match up exactly from Bungeecord or Velocity in the Player Warps config.yml.

Player Warps entirely runs on the backend and doesn't need to be placed on the proxy.

## Discord Alerts

Player Warps supports discord notifications using discord webhooks and Player Warps' warp discord addon. Make sure that you enable the expansion in the Player Warps **expansions.yml** and then configure the options correctly.

If you're struggling where to find a Discord webhook URL you can follow the steps below:

1. Right click on the discord channel you wish to send alerts to
2. Then click on "Edit channel"
3. Click on "Integrations"
4. Click on "Webhooks"
5. Click on "New Webhook"
6. Finally, click on "Copy Webhook URL"

## **Warp Menus**

Player Warps has a verity of menus that make it easily usable for a player. Here is a list of the current menus and what they do.

* **Player Warps Menu** - This menu shows a list of all the warps that are currently on the server.
* **Search Menu** - This menu lets players search for warps (by warp name) that are currently in that menu. You can also search warps by the players full name as well.
* **My Warps Menu** - This menu shows a list of all the warps the player owns and can easily easily open the Manage Warp menu for that specific warp.
* **Manage Warp Menu** - This menu gives the player ability to manage the warp easily in a menu.
* **Category Menu** - This menu shows all the available categories that are on the server and will open the Player Warps menu.
* **Favorite Warps Menu** - This menu shows all the warps the player has marked as a favorite.
* **Visited Warps Menu** - This menu shows all the recently warps the player has visited.
* **Visit Edit Menu** - This menu gives players ability to manage the warp as a visitor, like rating, mark it as a favorite or teleport to it. You can right click a warp in the Player Warps menu to open this menu.

## Warp Purging

There are currently 3 types of different warp purging in Player Warps, Here is a list of the current types of purges and how they work. You can control this functionality in the **config.yml**.

* **Offline Player Purging** - This purges all the warps owned by a player if they was offline for a certain amount of days.
* **Warp Day Purging** - This purges warps that have been created for a certain amount of days.
* **Limit Purging** - This purges some warps from the player if they no longer can create that amount of warps.

## Unsafe Warp Detection

There is an automatic safe detection for warps if they are safe or not, Player Warps checks if a warp is unsafe if there are blacklisted blocks around the warp, you can manage this in the **config.yml**.

Warning, in 1.13+ due to Mojang's chunk system, it is very resource efficient. If you are using Paper, Player Warps will attempt to load the chunk asynchronously to reduce the amount of load on the CPU if you're not using paper the server will load the chunk synchronously and might cause lag on the server.

## Warp Rating

Warp rating gives players the ability to rate a players warp depending on how good they think the warp is. You can rate a warp via the Visit Edit menu or executing **/pw rate \<warp> \<rate>**. You can change what the rate is out of in the **config.yml**.

## Warp Locking

Warp locking allows players to lock their own warps so other players cannot view and teleport to the warp. The owner of the warp can still teleport to the warp by executing **/pw \<warp>** or teleport it through the My Warps menu.

## Warp Whitelists

Warp whitelisting allows players to only allow specific players to teleport to the warp, only the owner of the warp can manage this. For you to enable the whitelist, you will need to add a player to the whitelist for the warp to be come whitelisted.

## Sponsor Warps

Sponsor warps is a feature that warps are shown on the front page of the category menu, if you wish to edit the prices or times, you can edit them in **guis/category.yml**. Players do have a limit on how many slots they can sponsor, this can also be changed.

## Server Warps

Server warps is a feature that allows you to create warps in the plugin but to be filtered as a server warp. For you to be able to create a server warp, its pretty simple. If you want to create a server warp that doesn't exist, you can use the command `/pw set <name> server` with the permission `pw.admin.set.` If you want to set an existing warp to a server warp you can use the command `/pw setowner <name> server` to set the warp to a server warp.

Players with admin permissions can only control the warp once its a server warp and you can also revert this action by setting it back to a normal warp using the setowner command with a players name.


# Plugin API

Here you can view the JavaDocs and how to access/use the Player Warps Plugin API.

## Java Docs

Here you can view the Java Docs [here](https://javadocs.olziedev.com/playerwarps) for Player Warps which provides you all the usages and descriptions of the API.

## Maven Repository

Do you want to integrate with Player Warps in your plugin? You can use the OlzieDev repo to build against the Player Warps API.

Under `repositories` in your `pom.xml`, you need to add a new `repository` for the repo.

```java
<repositories>
    ...
    <repository>
        <id>olzie-repo</id>
        <url>https://repo.olziedev.com/</url>
    </repository>
</repositories>
```

Next, add Player Warps as a `dependency` under `dependencies`:

`VERSION_HERE` would be your exact plugin version, you will not need to update the API version every time a plugin update is out, only when an api update happens.

```java
<dependencies>
    ...
    <dependency>
        <groupId>com.olziedev</groupId>
        <artifactId>playerwarps-api</artifactId>
        <version>VERSION_HERE</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
```

## How to access the API

You can access the Player Warps API by getting the instance. If the plugin hasn't fully loaded the instance will return null, you can use a callback to access the API when its ready.

```java
/* 
Accessing the instance, can return null if not loaded.

This instance can also change when a plugin reload has 
happened, so its not advisted to use this
*/ 
PlayerWarpsAPI api = PlayerWarpsAPI.getInstance(); 

PlayerWarpsAPI.getInstance(api -> { // accessing the instance when its ready.

});
```

## Some examples

Here is an example on how to create a player warp.

```java
PlayerWarpsAPI.getInstance(api -> {
        Location loc = new Location(Bukkit.getWorld("world"), 0, 64, 0);
        WPlayer owner = api.getWarpPlayer(UUID.randomUUID());
        api.createPlayerWarp("Warp",
        api.createWarpLocation(loc),
        owner,
        WarpType.NORMAL,
        Bukkit.getConsoleSender(),
        warp -> {
        // the warp instance.
        });
});
```

Here is an example on how to access a player warp by its name.

```java
PlayerWarpsAPI.getInstance(api -> {
    Warp warp = api.getPlayerWarp("Warp");
    if (warp == null) return; // warp doesn't exist.
    
    warp.setWarpName("Warp2"); // set the name from "Warp" to "Warp2"
});
```

Here is an example on how to access a warp player by their UUID.

```java
PlayerWarpsAPI.getInstance(api -> {
    WPlayer player = api.getWarpPlayer(UUID.randomUUID());
    // set all the players warps as locked.
    player.getWarps(false).forEach(warp -> warp.setWarpLocked(true)); 
});
```


# Creating expansions

Here you can view examples and details on how the expansion system works in Player Warps.

In Player Warps you can create expansions that will hook into the plugin to either add more functionality or to modify how the plugin works.

## Registering Expansions

There are two types of ways how you can register the expansions, you can either have it external or internal.

### External

Internal expansion is where you register the expansion in a plugin of your own. You can extend the necessary expansion type in a class and then using the [ExpansionRegistry](https://javadocs.olziedev.com/playerwarps/com/olziedev/playerwarps/api/expansion/ExpansionRegistry.html) to register your expansion.

Here is an example to register your expansion internally, instance is your expansions' instance.

```java
PlayerWarpsAPI.getInstance().getExpansionRegistry().registerExpansion(instance);
```

### Integrated

External expansions is where you can create a jar file that contains a class extending a necessary expansion type and the plugin will automatically find it as long as you put it into the expansions folder of the plugin. Make sure you do not have any constructors.

## Examples

Here is an example of an expansion class, this is a plain expansion and will do nothing in functionality unless you program it to. If you wish to add actual functionality within the plugin that's already been programmed then you can look at [next ](/projects/playerwarps/api/expansions/warp)expansions type.

```java
import com.olziedev.playerwarps.api.expansion.Expansion;

public class ExampleExpansion extends Expansion {

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

    @Override
    public String getName() {
        return "Example Expansion";
    }

    @Override
    public void onLoad() {

    }
}
```

You will need to make sure that you provide an expansion name, this isn't really used much anywhere apart from just a unique identifier and used in console.

If isEnabled returns false then the onLoad method will not be called and the expansion will not be loaded into memory.

The expansion class actually contains a view public fields that you can use:

* `plugin` - This is the instance of the Player Warps plugin, this may be used to register events etc.
* `api` - This is the API instance of Player Warps.
* `registry` - This is the Expansion Registry instance of Player Warps.
* `expansionConfig` - This is the expansion configuration that you can use to grab options from the `expansions.yml`.
* `config` - This is the main configuration that you can also use to grab options from the `config.yml`


# Warp Addon

Here you can view details on how to create a warp addon using the Expansions Plugin API.

In Player Warps you can create a warp addon that will essentially decide if a player can set a warp in a specific location or create a warp on a certain event.

## Registering

You can go [here](/projects/playerwarps/api/expansions#registering-expansions) to learn on how to register an expansion.

## Examples

Here is an example of a warp addon class, this will let you be able to decide if a player can set a warp at that specific location or not. You may also add events and what no as well in this as well.

```java
import com.olziedev.playerwarps.api.expansion.WAddon;
import org.bukkit.entity.Player;

public class ExampleWarpExpansion extends WAddon {

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

    @Override
    public String getName() {
        return "Example Expansion";
    }

    @Override
    public void onLoad() {

    }

    @Override
    public Runnable isAuthorized(Player player) {
        if (player.getLocation().getY() < 5) {
            return () -> player.sendMessage("You are not authorized to use this command!");
        }
        return null;
    }
}
```

When using the isAuthorized method, you can return null if you want them to be able to set a warp at that location.

If you do not want them to set a warp, you can return a runnable interface and whatever is in that code will be executed. If you're wondering why its a runnable, its so then the plugin will not execute every single addons' runnable at once when setting a warp.


# Warp Map Addon

Here you can view details on how to create a warp map addon using the Expansions Plugin API.

In Player Warps you can create a warp map addon that will allow add/remove/edit markers on the map plugin.

## Registering

You can go [here](/projects/playerwarps/api/expansions#registering-expansions) to learn on how to register an expansion.

## Examples

Here is an example of a warp map addon class, this will let you be able to add/remove/edit markers on the map plugin.

```java
import com.olziedev.playerwarps.api.expansion.WMapAddon;
import com.olziedev.playerwarps.api.warp.Warp;

public class ExampleMapExpansion extends WMapAddon {

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

    @Override
    public String getName() {
        return "Example Expansion";
    }

    @Override
    public void onLoad() {

    }

    @Override
    public void addMarker(Warp warp) {

    }

    @Override
    public void removeMarker(Warp warp) {

    }

    @Override
    public void updateMarker(Warp warp) {

    }

    @Override
    public void addNewWarps() {

    }
}
```

When using the addMarker, removeMarker, and updateMarker methods, you can use the warp object to get the location of the warp and what not.

The addNewWarps method is called when the plugin is enabled, this is so then the plugin can add all the warps to the map plugin when the server starts up.


# Warp Converter

Here you can view details on how to create a converter warp addon using the Expansions Plugin API.

In Player Warps you can create a warp converter addon that will essentially convert a warp from one plugin to another.

## Registering

You can go [here](/projects/playerwarps/api/expansions#registering-expansions) to learn on how to register an expansion.

## Examples

Here is an example of a warp converter addon class, this will let you be able to convert a warp from one plugin to another.

```java
import com.olziedev.playerwarps.api.expansion.WConverter;

public class ExampleConverter extends WConverter {

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

    @Override
    public String getName() {
        return "Example Expansion";
    }

    @Override
    public void onLoad() {

    }
}
```

Right now there isn't any methods to actually convert a warp, but there will be in the future hopefully.

You will just have to grab the warp from the old plugin and then create a new warp in Player Warps.


# Warp Currency

Here you can view details on how to create a currency addon using the Expansions Plugin API.

In Player Warps you can create a currency addon that will allow you to create a new currency type. This will allow you to create a new currency type that will be able to be used anywhere in the plugin.

## Registering

You can go [here](/projects/playerwarps/api/expansions#registering-expansions) to learn on how to register an expansion.

## Examples

Here is an example of a currency addon class, this will let you be able to create a new currency type.

```java
import com.olziedev.playerwarps.api.expansion.WCurrency;
import com.olziedev.playerwarps.api.player.WPlayer;

import java.util.function.Consumer;

public class CurrencyExample extends WCurrency {

    @Override
    public String getCurrencyName() {
        return "";
    }

    @Override
    public String getCurrencyPrefix(String internalCurrency) {
        return "";
    }

    @Override
    public void getBalance(WPlayer wPlayer, String internalCurrency, Consumer<Double> balanceConsumer) {

    }

    @Override
    public void deposit(WPlayer wPlayer, double amount, String internalCurrency, Consumer<Boolean> response) {

    }

    @Override
    public void withdraw(WPlayer wPlayer, double amount, String internalCurrency, Consumer<Boolean> response) {

    }

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

    @Override
    public String getName() {
        return "Example Currency";
    }

    @Override
    public void onLoad() {

    }
}
```

The above example is a currency addon that will allow you to create a new currency type. You can use this to create a new currency type that will be able to be used anywhere in the plugin.


# Creating Commands

Here you can view details on how to create sub commands using the Commands Plugin API.

## Creating Commands

In Player Warps you can create a sub command that will allow you to create sub commands.

## Registering

You can register the commands using the [CommandRegistry](https://javadocs.olziedev.com/playerwarps/com/olziedev/playerwarps/api/warp/command/CommandRegistry.html) to register your command.

Here is an example to register your command, instance is your expansions' instance.

```java
PlayerWarpsAPI.getInstance().getCommandRegistry().addSubCommand(instance);
```

## Examples

Here is an example of a sub command class, this will let you be able to create sub commands.

```java
import com.olziedev.playerwarps.api.warp.command.WCommand;
import org.bukkit.command.CommandSender;

import java.util.List;

public class ExampleCommand extends WCommand {

    public ExampleCommand() {
        super("example");
        this.executorType = ExecutorType.PLAYER_ONLY;
    }

    @Override
    public void execute(CommandSender sender, String[] arguments) {
        
    }

    @Override
    public List<String> onTabComplete(CommandSender sender, String[] arguments) {
        return super.onTabComplete(sender, arguments);
    }
}
```

The executor type is the type of executor that can execute the command, you can set it to PLAYER\_ONLY, CONSOLE\_ONLY, or null for both.

The onTabComplete method is a optional the method that will show a list of strings that will be shown to the player.


# Using Events

Here you can view details on how to listen to events using the Plugin API.

In Player Warps you can listen to events using the API, this will allow you to listen to events that happen in the plugin. It uses the Bukkit event system so you should be familiar with that.

## Examples

Here is an example of a listener class, this will let you be able to listen to events that happen in the plugin. Here is a list of events you can listen [here](https://javadocs.olziedev.com/playerwarps/com/olziedev/playerwarps/api/events/package-summary.html).

```java
import com.olziedev.playerwarps.api.events.warp.PlayerWarpCreateEvent;
import com.olziedev.playerwarps.api.warp.Warp;
import org.bukkit.command.CommandSender;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class ExampleEvents implements Listener {
    
    @EventHandler
    public void onWarpCreate(PlayerWarpCreateEvent event) {
        Warp warp = event.getPlayerWarp();
        CommandSender creator = event.getCreator();
    }
}
```


# Rest API

Here you can view the endpoints and how to access/use the Player Warps Rest API.

The Player Warps REST API extends the capabilities of the Player Warps plugin, allowing interaction with plugin objects and events from outside the Minecraft server environment. This documentation provides a comprehensive guide to using the API, including its endpoints, WebSocket functionality, and authentication mechanisms.

The base URL for the Player Warps REST API is determined by the server administrator. Please remember to include the base URL of the server where the Player Warps API is hosted, which can probably be found on the servers documentation.

## Authentication

To interact with the **Player Warps REST API** or **WebSocket**, authentication is required to ensure secure access. We use **Basic Authentication**, where:

* **Username**: Your **Minecraft UUID** (You can find your **FULL UUID** [here](https://mcuuid.net/?q=ForgotUrPassword)).
* **Password**: Your **API Key** (a unique token generated for your account to interact with the API).

#### Generating an API Key

To generate an API token, use the command:

```bash
/pw apitokens generate
```

This will create a new API token for your account, which can then be used for authentication in your API requests. **Do not share your API token with anyone else, as it provides access to your account and data.**

#### API Key Limitations

* You can only have **one active API token** at a time.
* If you generate a new API token using `/pw apitokens generate`, it will **replace** your existing API token. The previous token will no longer be valid.
* If you wish to delete your API token without generating a new one, use the following command:

  ```arduino
  /pw apitokens delete
  ```

  This will delete your existing API token, but **will not generate a new one**. You will need to generate a new token manually if required.

#### Example API Request

Here’s how to authenticate API requests using your Minecraft UUID and API token:

**Request Header**:

```http
Authorization: Basic {Base64 encoded string of 'UUID:API_KEY'}
```

In this case, the base64 encoded string would be a combination of your Minecraft UUID and API Key (separated by a colon). You can use your program to easily generate the base64 encoding.

## Endpoints

You will find a comprehensive list of all the available API endpoints for interacting with the Player Warps plugin. Each endpoint includes detailed descriptions, request methods, parameters, and responses.

To view the available endpoints, go to the [Endpoints](/projects/playerwarps/restapi/endpoints) page.

## Events

The Player Warps API also supports real-time event handling through WebSockets. This section covers connecting, subscribing, and receiving events like warp creation or deletion.

Go to the [Events](/projects/playerwarps/restapi/events) page for details on subscribing to and receiving WebSocket events.

## Errors

The Player Warps API can throw errors, and you will need to catch them! You can view them [here](/projects/playerwarps/restapi/errors).


# Endpoints

Here you can view all available endpoints in the Player Warps REST API, allowing you to manage and retrieve warp data. Each endpoint is described with its path, parameters, and response format.

This section documents all the available endpoints in the Player Warps REST API. These endpoints allow you to interact with player warps, manage warp data and retrieve player-specific information. Each endpoint is designed to be easily accessible, with clear paths for retrieving and modifying warp data based on warp names, IDs, and player UUIDs.

**Note:**\
Currently, there are no endpoints for creating or editing data (i.e., no POST or PUT endpoints).

**Authentication:**\
Authentication is required to access the API, as detailed in the [Authentication](/projects/playerwarps/restapi#authentication) section.

**Warp Ownership:**\
Depending on the server settings, you may not be able to retrieve warp information if you do not own the warp.

## Endpoints

* [GET /api/playerwarps/getPlayerWarpByName/{warpname}](/projects/playerwarps/restapi/endpoints/get/getplayerwarpbyname)
* [GET /api/playerwarps/getPlayerWarpByID/{id}](/projects/playerwarps/restapi/endpoints/get/getplayerwarpbyid)
* [GET /api/playerwarps/getSponsorWarpByID/{id}](/projects/playerwarps/restapi/endpoints/get/getsponsorwarpbyid)
* [GET /api/playerwarps/getPlayerWarps/{page}](/projects/playerwarps/restapi/endpoints/get/getplayerwarps)
* [GET /api/playerwarps/getWarpCategoryByName/{categoryname}](/projects/playerwarps/restapi/endpoints/get/getwarpcategorybyname)
* [GET /api/playerwarps/getWarpCategories/{page}](/projects/playerwarps/restapi/endpoints/get/getwarpcategories)
* [GET /api/playerwarps/getWarpPlayerByUUID/{uuid}](/projects/playerwarps/restapi/endpoints/get/getwarpplayerbyuuid)
* [DELETE /api/playerwarps/deletePlayerWarpByName/{warpname}](/projects/playerwarps/restapi/endpoints/delete/deleteplayerwarpbyname)
* [DELETE /api/playerwarps/deletePlayerWarpByID/{id}](/projects/playerwarps/restapi/endpoints/delete/deleteplayerwarpbyid)

Each endpoint is designed to help you manage and retrieve warp data efficiently.


# GET

This section documents all the available GET endpoints in the Player Warps REST API. These endpoints allow you to retrieve warp data and player-specific information.

## Endpoints

* [GET /api/playerwarps/getPlayerWarpByName/{warpname}](/projects/playerwarps/restapi/endpoints/get/getplayerwarpbyname)
* [GET /api/playerwarps/getPlayerWarpByID/{id}](/projects/playerwarps/restapi/endpoints/get/getplayerwarpbyid)
* [GET /api/playerwarps/getSponsorWarpByID/{id}](/projects/playerwarps/restapi/endpoints/get/getsponsorwarpbyid)
* [GET /api/playerwarps/getPlayerWarps/{page}](/projects/playerwarps/restapi/endpoints/get/getplayerwarps)
* [GET /api/playerwarps/getWarpCategoryByName/{categoryname}](/projects/playerwarps/restapi/endpoints/get/getwarpcategorybyname)
* [GET /api/playerwarps/getWarpCategories/{page}](/projects/playerwarps/restapi/endpoints/get/getwarpcategories)
* [GET /api/playerwarps/getWarpPlayerByUUID/{uuid}](/projects/playerwarps/restapi/endpoints/get/getwarpplayerbyuuid)


# /api/playerwarps/getPlayerWarpByName/{warpname}

Retrieve a warp's information by the warp name.

* **Parameters:**
  * `warpname`: The name of the warp to retrieve.
* **Response:**

  The response will return a JSON object with the following structure:

  ```json
  {
    "id": 1,
    "warpName": "testing",
    "warpLocation": {
      "world": "world",
      "x": -1846.9302338464981,
      "y": 69.0,
      "z": 83.01201806289632,
      "yaw": 112.37841,
      "pitch": 17.999645,
      "locationSafe": true,
      "warpServer": "N/A",
      "properLocation": {
        "world": "world",
        "x": -1846.9302338464981,
        "y": 69.0,
        "z": 83.01201806289632,
        "yaw": 112.37841,
        "pitch": 17.999645
      },
      "worldType": "world"
    },
    "warpRate": {
      "earnedRateRewards": [],
      "rates": {},
      "rateAverage": 0.0,
      "totalRates": 0,
      "playersRatedAmount": 0
    },
    "warpCategory": [{
      "name": "other",
      "teleportPrice": -1.0,
      "purgeTime": -1,
      "permission": "",
      "removeDaysTime": -1,
      "all": false,
      "icon": {
        "type": "PAPER",
        "meta": {
          "display-name": "{\"text\":\"\",\"extra\":[{\"text\":\"Other Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
          "lore": ["{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the other warps.\",\"color\":\"aqua\"}],\"italic\":false}"]
        }
      },
      "displayName": "Other"
    }],
    "warpIcon": {
      "warpIcon": null
    },
    "warpRent": {
      "warpLastRent": 1735075589283,
      "warpNewRent": 1735161989283
    },
    "warpVisit": {
      "warpVisits": 0,
      "purgedWarpVisits": 0,
      "warpVisitedBoosted": [],
      "warpVisited": []
    },
    "warpDate": 1735075589283,
    "warpType": "NORMAL",
    "warpCost": null,
    "paid": [],
    "banned": [],
    "whitelisted": [],
    "managers": [],
    "whitelistEnabled": false,
    "warpLocked": false,
    "warpPassword": null,
    "sponsorWarp": null,
    "sponsorCooldown": null,
    "randomSort": 3,
    "warpPlayer": {
      "uuid": "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "name": "ForgotUrPassword",
      "language": "en_gb"
    },
    "favoriteCount": 0,
    "warpDisplayName": "testing"
  }
  ```

**Fields:**

* **id** (Number): The ID of the warp.
* **warpName** (String): The name of the warp.
* **warpLocation** (Object):
  * **world** (String): The world of the warp.
  * **x** (Number): The X coordinate.
  * **y** (Number): The Y coordinate.
  * **z** (Number): The Z coordinate.
  * **yaw** (Number): The yaw of the location.
  * **pitch** (Number): The pitch of the location.
  * **locationSafe** (Boolean): Whether the location is safe.
  * **warpServer** (String): The server of the warp (if applicable).
  * **properLocation** (Object):
    * **world** (String): The world of the warp.
    * **x** (Number): The X coordinate.
    * **y** (Number): The Y coordinate.
    * **z** (Number): The Z coordinate.
    * **yaw** (Number): The yaw of the location.
    * **pitch** (Number): The pitch of the location.
  * **worldType** (String): The type of the world.
* **warpRate** (Object):
  * **earnedRateRewards** (Array): List of rewards earned.
  * **rates** (Object): Contains rate information.
  * **rateAverage** (Number): The average rating.
  * **totalRates** (Number): Total number of ratings.
  * **playersRatedAmount** (Number): Number of players who rated.
* **warpCategory** (Array of Objects):
  * **name** (String): Category name.
  * **teleportPrice** (Number): Price to teleport.
  * **purgeTime** (Number): Time until purge.
  * **permission** (String): Required permission.
  * **removeDaysTime** (Number): Time until removal.
  * **all** (Boolean): Whether it includes all warps.
  * **icon** (Object):
    * **type** (String): The type of the icon.
    * **meta** (Object):
      * **display-name** (String): The display name of the icon.
      * **lore** (Array of Strings): Lore description.
      * **PublicBukkitValues** (String): Custom Bukkit metadata.
  * **displayName** (String): Display name of the category.
* **warpIcon** (Object): Warp icon details.
* **warpRent** (Object):
  * **warpLastRent** (Number): Last rent timestamp.
  * **warpNewRent** (Number): New rent timestamp.
* **warpVisit** (Object):
  * **warpVisits** (Number): Number of visits.
  * **purgedWarpVisits** (Number): Visits purged.
  * **warpVisitedBoosted** (Array): List of boosted visits.
  * **warpVisited** (Array): List of visits.
* **warpDate** (Number): Warp creation date.
* **warpType** (String): Type of the warp.
* **warpCost** (Object): Cost details (if applicable).
* **paid** (Array): List of paid players.
* **banned** (Array): List of banned players.
* **whitelisted** (Array): List of whitelisted players.
* **managers** (Array): List of managers.
* **whitelistEnabled** (Boolean): Whether whitelist is enabled.
* **warpLocked** (Boolean): Whether the warp is locked.
* **warpPassword** (String): Password for the warp (if applicable).
* **sponsorWarp** (Object): Sponsor warp details.
* **sponsorCooldown** (Object): Sponsor cooldown details.
* **randomSort** (Number): Random sort value.
* **warpPlayer** (Object):
  * **uuid** (String): Player's UUID.
  * **messages** (Array): Messages for the player.
  * **sponsorCooldown** (Object): Sponsor cooldown details.
  * **staticWarps** (Number): Number of static warps.
  * **logs** (Array): Logs related to the warp.
  * **earnedRateRewards** (Array): Rewards earned.
  * **lastPlayed** (Number): Last played timestamp.
  * **pendingWarp** (Object): Pending warp details.
  * **maxWarpCostPrice** (Number): Maximum cost for warp.
  * **minWarpCostPrice** (Number): Minimum cost for warp.
  * **priceFreeLimit** (Number): Free price limit.
  * **waitTeleportTime** (Number): Wait time for teleport.
  * **maximumWarps** (Number): Maximum number of warps.
  * **prettyMaximumWarps** (String): Human-readable maximum warps.
  * **name** (String): Player's name.
  * **language** (String): Player's language.
* **favoriteCount** (Number): Number of favorites.
* **warpDisplayName** (String): Display name of the warp.

**Note:**

* [**Authentication**](/projects/playerwarps/restapi#authentication) is required to access this endpoint.
* Based on server settings, you may not be able to access warp information if you do not own the warp.


# /api/playerwarps/getSponsorWarp/{id}

Retrieve a sponsor warp by its warp ID.

* **Parameters:**
  * `id`: The ID of the sponsor warp.
* **Response:**

  The response will return a JSON object with the following structure:

  ```json
  {
    "id": 1,
    "warpName": "testing",
    "warpLocation": {
      "world": "world",
      "x": -1846.9302338464981,
      "y": 69.0,
      "z": 83.01201806289632,
      "yaw": 112.37841,
      "pitch": 17.999645,
      "locationSafe": true,
      "warpServer": "N/A",
      "properLocation": {
        "world": "world",
        "x": -1846.9302338464981,
        "y": 69.0,
        "z": 83.01201806289632,
        "yaw": 112.37841,
        "pitch": 17.999645
      },
      "worldType": "world"
    },
    "warpRate": {
      "earnedRateRewards": [],
      "rates": {},
      "rateAverage": 0.0,
      "totalRates": 0,
      "playersRatedAmount": 0
    },
    "warpCategory": [{
      "name": "other",
      "teleportPrice": -1.0,
      "purgeTime": -1,
      "permission": "",
      "removeDaysTime": -1,
      "all": false,
      "icon": {
        "type": "PAPER",
        "meta": {
          "display-name": "{\"text\":\"\",\"extra\":[{\"text\":\"Other Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
          "lore": ["{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the other warps.\",\"color\":\"aqua\"}],\"italic\":false}"]
        }
      },
      "displayName": "Other"
    }],
    "warpIcon": {
      "warpIcon": null
    },
    "warpRent": {
      "warpLastRent": 1735075589283,
      "warpNewRent": 1735161989283
    },
    "warpVisit": {
      "warpVisits": 0,
      "purgedWarpVisits": 0,
      "warpVisitedBoosted": [],
      "warpVisited": []
    },
    "warpDate": 1735075589283,
    "warpType": "NORMAL",
    "warpCost": null,
    "paid": [],
    "banned": [],
    "whitelisted": [],
    "managers": [],
    "whitelistEnabled": false,
    "warpLocked": false,
    "warpPassword": null,
    "sponsorWarp" : {
      "id" : "1",
      "time" : 1735767860362,
      "lastRepeatingTime" : 1735595060362,
      "timeLeft" : 172690918,
      "repeatingTime" : 86400000,
      "automatic" : false
    },
    "sponsorCooldown": null,
    "randomSort": 3,
    "warpPlayer": {
      "uuid": "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "name": "ForgotUrPassword",
      "language": "en_gb"
    },
    "favoriteCount": 0,
    "warpDisplayName": "testing"
  }
  ```

**Fields:**

* **id** (Number): The ID of the warp.
* **warpName** (String): The name of the warp.
* **warpLocation** (Object):
  * **world** (String): The world of the warp.
  * **x** (Number): The X coordinate.
  * **y** (Number): The Y coordinate.
  * **z** (Number): The Z coordinate.
  * **yaw** (Number): The yaw of the location.
  * **pitch** (Number): The pitch of the location.
  * **locationSafe** (Boolean): Whether the location is safe.
  * **warpServer** (String): The server of the warp (if applicable).
  * **properLocation** (Object):
    * **world** (String): The world of the warp.
    * **x** (Number): The X coordinate.
    * **y** (Number): The Y coordinate.
    * **z** (Number): The Z coordinate.
    * **yaw** (Number): The yaw of the location.
    * **pitch** (Number): The pitch of the location.
  * **worldType** (String): The type of the world.
* **warpRate** (Object):
  * **earnedRateRewards** (Array): List of rewards earned.
  * **rates** (Object): Contains rate information.
  * **rateAverage** (Number): The average rating.
  * **totalRates** (Number): Total number of ratings.
  * **playersRatedAmount** (Number): Number of players who rated.
* **warpCategory** (Array of Objects):
  * **name** (String): Category name.
  * **teleportPrice** (Number): Price to teleport.
  * **purgeTime** (Number): Time until purge.
  * **permission** (String): Required permission.
  * **removeDaysTime** (Number): Time until removal.
  * **all** (Boolean): Whether it includes all warps.
  * **icon** (Object):
    * **type** (String): The type of the icon.
    * **meta** (Object):
      * **display-name** (String): The display name of the icon.
      * **lore** (Array of Strings): Lore description.
      * **PublicBukkitValues** (String): Custom Bukkit metadata.
  * **displayName** (String): Display name of the category.
* **warpIcon** (Object): Warp icon details.
* **warpRent** (Object):
  * **warpLastRent** (Number): Last rent timestamp.
  * **warpNewRent** (Number): New rent timestamp.
* **warpVisit** (Object):
  * **warpVisits** (Number): Number of visits.
  * **purgedWarpVisits** (Number): Visits purged.
  * **warpVisitedBoosted** (Array): List of boosted visits.
  * **warpVisited** (Array): List of visits.
* **warpDate** (Number): Warp creation date.
* **warpType** (String): Type of the warp.
* **warpCost** (Object): Cost details (if applicable).
* **paid** (Array): List of paid players.
* **banned** (Array): List of banned players.
* **whitelisted** (Array): List of whitelisted players.
* **managers** (Array): List of managers.
* **whitelistEnabled** (Boolean): Whether whitelist is enabled.
* **warpLocked** (Boolean): Whether the warp is locked.
* **warpPassword** (String): Password for the warp (if applicable).
* **sponsorWarp** (Object):
  * **id** (String): Sponsor ID.
  * **time** (Number): Sponsorship time.
  * **lastRepeatingTime** (Number): Last repeating time.
  * **timeLeft** (Number): Time left for sponsorship.
  * **repeatingTime** (Number): Repeating sponsorship interval.
  * **automatic** (Boolean): Whether sponsorship is automatic.
* **randomSort** (Number): Random sort value.
* **warpPlayer** (Object):
  * **uuid** (String): Player's UUID.
  * **messages** (Array): Messages for the player.
  * **sponsorCooldown** (Object): Sponsor cooldown details.
  * **staticWarps** (Number): Number of static warps.
  * **logs** (Array): Logs related to the warp.
  * **earnedRateRewards** (Array): Rewards earned.
  * **lastPlayed** (Number): Last played timestamp.
  * **pendingWarp** (Object): Pending warp details.
  * **maxWarpCostPrice** (Number): Maximum cost for warp.
  * **minWarpCostPrice** (Number): Minimum cost for warp.
  * **priceFreeLimit** (Number): Free price limit.
  * **waitTeleportTime** (Number): Wait time for teleport.
  * **maximumWarps** (Number): Maximum number of warps.
  * **prettyMaximumWarps** (String): Human-readable maximum warps.
  * **name** (String): Player's name.
  * **language** (String): Player's language.
* **favoriteCount** (Number): Number of favorites.
* **warpDisplayName** (String): Display name of the warp.

**Note:**

* [**Authentication**](/projects/playerwarps/restapi#authentication) is required to access this endpoint.
* Based on server settings, you may not be able to access warp information if you do not own the warp.


# /api/playerwarps/getPlayerWarpByID/{id}

Retrieve a warp's information by its warp ID.

* **Parameters:**
  * `id`: The ID of the warp to retrieve.
* **Response:**

  The response will return a JSON object with the following structure:

  ```json
  {
    "id": 1,
    "warpName": "testing",
    "warpLocation": {
      "world": "world",
      "x": -1846.9302338464981,
      "y": 69.0,
      "z": 83.01201806289632,
      "yaw": 112.37841,
      "pitch": 17.999645,
      "locationSafe": true,
      "warpServer": "N/A",
      "properLocation": {
        "world": "world",
        "x": -1846.9302338464981,
        "y": 69.0,
        "z": 83.01201806289632,
        "yaw": 112.37841,
        "pitch": 17.999645
      },
      "worldType": "world"
    },
    "warpRate": {
      "earnedRateRewards": [],
      "rates": {},
      "rateAverage": 0.0,
      "totalRates": 0,
      "playersRatedAmount": 0
    },
    "warpCategory": [{
      "name": "other",
      "teleportPrice": -1.0,
      "purgeTime": -1,
      "permission": "",
      "removeDaysTime": -1,
      "all": false,
      "icon": {
        "type": "PAPER",
        "meta": {
          "display-name": "{\"text\":\"\",\"extra\":[{\"text\":\"Other Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
          "lore": ["{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the other warps.\",\"color\":\"aqua\"}],\"italic\":false}"]
        }
      },
      "displayName": "Other"
    }],
    "warpIcon": {
      "warpIcon": null
    },
    "warpRent": {
      "warpLastRent": 1735075589283,
      "warpNewRent": 1735161989283
    },
    "warpVisit": {
      "warpVisits": 0,
      "purgedWarpVisits": 0,
      "warpVisitedBoosted": [],
      "warpVisited": []
    },
    "warpDate": 1735075589283,
    "warpType": "NORMAL",
    "warpCost": null,
    "paid": [],
    "banned": [],
    "whitelisted": [],
    "managers": [],
    "whitelistEnabled": false,
    "warpLocked": false,
    "warpPassword": null,
    "sponsorWarp": null,
    "sponsorCooldown": null,
    "randomSort": 3,
    "warpPlayer": {
      "uuid": "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "name": "ForgotUrPassword",
      "language": "en_gb"
    },
    "favoriteCount": 0,
    "warpDisplayName": "testing"
  }
  ```

**Fields:**

* **id** (Number): The ID of the warp.
* **warpName** (String): The name of the warp.
* **warpLocation** (Object):
  * **world** (String): The world of the warp.
  * **x** (Number): The X coordinate.
  * **y** (Number): The Y coordinate.
  * **z** (Number): The Z coordinate.
  * **yaw** (Number): The yaw of the location.
  * **pitch** (Number): The pitch of the location.
  * **locationSafe** (Boolean): Whether the location is safe.
  * **warpServer** (String): The server of the warp (if applicable).
  * **properLocation** (Object):
    * **world** (String): The world of the warp.
    * **x** (Number): The X coordinate.
    * **y** (Number): The Y coordinate.
    * **z** (Number): The Z coordinate.
    * **yaw** (Number): The yaw of the location.
    * **pitch** (Number): The pitch of the location.
  * **worldType** (String): The type of the world.
* **warpRate** (Object):
  * **earnedRateRewards** (Array): List of rewards earned.
  * **rates** (Object): Contains rate information.
  * **rateAverage** (Number): The average rating.
  * **totalRates** (Number): Total number of ratings.
  * **playersRatedAmount** (Number): Number of players who rated.
* **warpCategory** (Array of Objects):
  * **name** (String): Category name.
  * **teleportPrice** (Number): Price to teleport.
  * **purgeTime** (Number): Time until purge.
  * **permission** (String): Required permission.
  * **removeDaysTime** (Number): Time until removal.
  * **all** (Boolean): Whether it includes all warps.
  * **icon** (Object):
    * **type** (String): The type of the icon.
    * **meta** (Object):
      * **display-name** (String): The display name of the icon.
      * **lore** (Array of Strings): Lore description.
      * **PublicBukkitValues** (String): Custom Bukkit metadata.
  * **displayName** (String): Display name of the category.
* **warpIcon** (Object): Warp icon details.
* **warpRent** (Object):
  * **warpLastRent** (Number): Last rent timestamp.
  * **warpNewRent** (Number): New rent timestamp.
* **warpVisit** (Object):
  * **warpVisits** (Number): Number of visits.
  * **purgedWarpVisits** (Number): Visits purged.
  * **warpVisitedBoosted** (Array): List of boosted visits.
  * **warpVisited** (Array): List of visits.
* **warpDate** (Number): Warp creation date.
* **warpType** (String): Type of the warp.
* **warpCost** (Object): Cost details (if applicable).
* **paid** (Array): List of paid players.
* **banned** (Array): List of banned players.
* **whitelisted** (Array): List of whitelisted players.
* **managers** (Array): List of managers.
* **whitelistEnabled** (Boolean): Whether whitelist is enabled.
* **warpLocked** (Boolean): Whether the warp is locked.
* **warpPassword** (String): Password for the warp (if applicable).
* **sponsorWarp** (Object): Sponsor warp details.
* **sponsorCooldown** (Object): Sponsor cooldown details.
* **randomSort** (Number): Random sort value.
* **warpPlayer** (Object):
  * **uuid** (String): Player's UUID.
  * **messages** (Array): Messages for the player.
  * **sponsorCooldown** (Object): Sponsor cooldown details.
  * **staticWarps** (Number): Number of static warps.
  * **logs** (Array): Logs related to the warp.
  * **earnedRateRewards** (Array): Rewards earned.
  * **lastPlayed** (Number): Last played timestamp.
  * **pendingWarp** (Object): Pending warp details.
  * **maxWarpCostPrice** (Number): Maximum cost for warp.
  * **minWarpCostPrice** (Number): Minimum cost for warp.
  * **priceFreeLimit** (Number): Free price limit.
  * **waitTeleportTime** (Number): Wait time for teleport.
  * **maximumWarps** (Number): Maximum number of warps.
  * **prettyMaximumWarps** (String): Human-readable maximum warps.
  * **name** (String): Player's name.
  * **language** (String): Player's language.
* **favoriteCount** (Number): Number of favorites.
* **warpDisplayName** (String): Display name of the warp.

**Note:**

* [**Authentication**](/projects/playerwarps/restapi#authentication) is required to access this endpoint.
* Based on server settings, you may not be able to access warp information if you do not own the warp.


# /api/playerwarps/getPlayerWarps/{page}

Retrieve a paginated list of player warps.

* **Parameters:**
  * `page`: The page number to retrieve (for pagination).
  * `locked`: Optional query parameter (`true/false`) to filter by locked warps. (Default false)
* **Response:**

  The response will return a JSON object with the following structure:

  ```json
  {
    "warps" : [ {
      "id" : 50,
      "warpName" : "testing",
      "warpLocation" : {
        "world" : "world",
        "x" : -1704.254518797315,
        "y" : 81.79549733866219,
        "z" : -90.22482751188485,
        "yaw" : -22.475004,
        "pitch" : 43.49976,
        "locationSafe" : false,
        "warpServer" : "N/A",
        "properLocation" : {
          "world" : "world",
          "x" : -1704.254518797315,
          "y" : 81.79549733866219,
          "z" : -90.22482751188485,
          "yaw" : -22.475004,
          "pitch" : 43.49976
        },
        "worldType" : "world"
      },
      "warpRate" : {
        "earnedRateRewards" : [ ],
        "rates" : { },
        "rateAverage" : 0.0,
        "totalRates" : 0,
        "playersRatedAmount" : 0
      },
      "warpCategory" : [ {
        "name" : "other",
        "teleportPrice" : -1.0,
        "purgeTime" : -1,
        "permission" : "",
        "removeDaysTime" : -1,
        "all" : false,
        "icon" : {
          "type" : "PAPER",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Other Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the other warps.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "PublicBukkitValues" : "{\n    \"playerwarps:itemtag_item\": \"1\"\n}"
          }
        },
        "displayName" : "Other"
      } ],
      "warpIcon" : {
        "warpIcon" : null
      },
      "warpRent" : {
        "warpLastRent" : 1735593109313,
        "warpNewRent" : 1735679509313
      },
      "warpVisit" : {
        "warpVisits" : 0,
        "purgedWarpVisits" : 0,
        "warpVisitedBoosted" : [ ],
        "warpVisited" : [ ]
      },
      "warpDate" : 1735593109313,
      "warpType" : "NORMAL",
      "warpCost" : null,
      "paid" : [ ],
      "banned" : [ ],
      "whitelisted" : [ ],
      "managers" : [ ],
      "whitelistEnabled" : false,
      "warpLocked" : false,
      "warpPassword" : null,
      "sponsorWarp" : null,
      "sponsorCooldown" : null,
      "randomSort" : 0,
      "warpPlayer" : {
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "sponsorCooldown" : null,
        "staticWarps" : 0,
        "logs" : [ ],
        "earnedRateRewards" : [ ],
        "lastPlayed" : 1735593166487,
        "pendingWarp" : null,
        "maxWarpCostPrice" : 500.0,
        "minWarpCostPrice" : -1.0,
        "priceFreeLimit" : -1,
        "waitTeleportTime" : 3,
        "maximumWarps" : 9223372036854775807,
        "prettyMaximumWarps" : "Unlimited",
        "name" : "ForgotUrPassword",
        "language" : "en_gb"
      },
      "favoriteCount" : 0,
      "warpDisplayName" : "testing"
    }, {
      "id" : 51,
      "warpName" : "testing2",
      "warpLocation" : {
        "world" : "world",
        "x" : -1696.604230492617,
        "y" : 85.53986305993527,
        "z" : -71.72780318647382,
        "yaw" : -22.475004,
        "pitch" : 43.49976,
        "locationSafe" : false,
        "warpServer" : "N/A",
        "properLocation" : {
          "world" : "world",
          "x" : -1696.604230492617,
          "y" : 85.53986305993527,
          "z" : -71.72780318647382,
          "yaw" : -22.475004,
          "pitch" : 43.49976
        },
        "worldType" : "world"
      },
      "warpRate" : {
        "earnedRateRewards" : [ ],
        "rates" : { },
        "rateAverage" : 0.0,
        "totalRates" : 0,
        "playersRatedAmount" : 0
      },
      "warpCategory" : [ {
        "name" : "other",
        "teleportPrice" : -1.0,
        "purgeTime" : -1,
        "permission" : "",
        "removeDaysTime" : -1,
        "all" : false,
        "icon" : {
          "type" : "PAPER",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Other Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the other warps.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "PublicBukkitValues" : "{\n    \"playerwarps:itemtag_item\": \"1\"\n}"
          }
        },
        "displayName" : "Other"
      } ],
      "warpIcon" : {
        "warpIcon" : null
      },
      "warpRent" : {
        "warpLastRent" : 1735593112612,
        "warpNewRent" : 1735679512612
      },
      "warpVisit" : {
        "warpVisits" : 0,
        "purgedWarpVisits" : 0,
        "warpVisitedBoosted" : [ ],
        "warpVisited" : [ ]
      },
      "warpDate" : 1735593112612,
      "warpType" : "NORMAL",
      "warpCost" : null,
      "paid" : [ ],
      "banned" : [ ],
      "whitelisted" : [ ],
      "managers" : [ ],
      "whitelistEnabled" : false,
      "warpLocked" : false,
      "warpPassword" : null,
      "sponsorWarp" : null,
      "sponsorCooldown" : null,
      "randomSort" : 0,
      "warpPlayer" : {
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "sponsorCooldown" : null,
        "staticWarps" : 0,
        "logs" : [ ],
        "earnedRateRewards" : [ ],
        "lastPlayed" : 1735593166489,
        "pendingWarp" : null,
        "maxWarpCostPrice" : 500.0,
        "minWarpCostPrice" : -1.0,
        "priceFreeLimit" : -1,
        "waitTeleportTime" : 3,
        "maximumWarps" : 9223372036854775807,
        "prettyMaximumWarps" : "Unlimited",
        "name" : "ForgotUrPassword",
        "language" : "en_gb"
      },
      "favoriteCount" : 0,
      "warpDisplayName" : "testing2"
    }, {
      "id" : 52,
      "warpName" : "testing3",
      "warpLocation" : {
        "world" : "world",
        "x" : -1694.8984907026872,
        "y" : 86.65745599778442,
        "z" : -67.60435649154357,
        "yaw" : -22.475004,
        "pitch" : 43.49976,
        "locationSafe" : false,
        "warpServer" : "N/A",
        "properLocation" : {
          "world" : "world",
          "x" : -1694.8984907026872,
          "y" : 86.65745599778442,
          "z" : -67.60435649154357,
          "yaw" : -22.475004,
          "pitch" : 43.49976
        },
        "worldType" : "world"
      },
      "warpRate" : {
        "earnedRateRewards" : [ ],
        "rates" : { },
        "rateAverage" : 0.0,
        "totalRates" : 0,
        "playersRatedAmount" : 0
      },
      "warpCategory" : [ {
        "name" : "other",
        "teleportPrice" : -1.0,
        "purgeTime" : -1,
        "permission" : "",
        "removeDaysTime" : -1,
        "all" : false,
        "icon" : {
          "type" : "PAPER",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Other Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the other warps.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "PublicBukkitValues" : "{\n    \"playerwarps:itemtag_item\": \"1\"\n}"
          }
        },
        "displayName" : "Other"
      } ],
      "warpIcon" : {
        "warpIcon" : null
      },
      "warpRent" : {
        "warpLastRent" : 1735593113763,
        "warpNewRent" : 1735679513763
      },
      "warpVisit" : {
        "warpVisits" : 0,
        "purgedWarpVisits" : 0,
        "warpVisitedBoosted" : [ ],
        "warpVisited" : [ ]
      },
      "warpDate" : 1735593113763,
      "warpType" : "NORMAL",
      "warpCost" : null,
      "paid" : [ ],
      "banned" : [ ],
      "whitelisted" : [ ],
      "managers" : [ ],
      "whitelistEnabled" : false,
      "warpLocked" : false,
      "warpPassword" : null,
      "sponsorWarp" : null,
      "sponsorCooldown" : null,
      "randomSort" : 0,
      "warpPlayer" : {
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "sponsorCooldown" : null,
        "staticWarps" : 0,
        "logs" : [ ],
        "earnedRateRewards" : [ ],
        "lastPlayed" : 1735593166491,
        "pendingWarp" : null,
        "maxWarpCostPrice" : 500.0,
        "minWarpCostPrice" : -1.0,
        "priceFreeLimit" : -1,
        "waitTeleportTime" : 3,
        "maximumWarps" : 9223372036854775807,
        "prettyMaximumWarps" : "Unlimited",
        "name" : "ForgotUrPassword",
        "language" : "en_gb"
      },
      "favoriteCount" : 0,
      "warpDisplayName" : "testing3"
    } ],
    "totalPages" : 1,
    "currentPage" : 1,
    "totalWarps" : 3
  }
  ```

**Fields:**

* **warps** (Array of Warp objects):
  * **id** (Number): The ID of the warp.
  * **warpName** (String): The name of the warp.
  * **warpLocation** (Object):
    * **world** (String): The world of the warp.
    * **x** (Number): The X coordinate.
    * **y** (Number): The Y coordinate.
    * **z** (Number): The Z coordinate.
    * **yaw** (Number): The yaw of the location.
    * **pitch** (Number): The pitch of the location.
    * **locationSafe** (Boolean): Whether the location is safe.
    * **warpServer** (String): The server of the warp (if applicable).
    * **properLocation** (Object):
      * **world** (String): The world of the warp.
      * **x** (Number): The X coordinate.
      * **y** (Number): The Y coordinate.
      * **z** (Number): The Z coordinate.
      * **yaw** (Number): The yaw of the location.
      * **pitch** (Number): The pitch of the location.
    * **worldType** (String): The type of the world.
  * **warpRate** (Object):
    * **earnedRateRewards** (Array): List of rewards earned.
    * **rates** (Object): Contains rate information.
    * **rateAverage** (Number): The average rating.
    * **totalRates** (Number): Total number of ratings.
    * **playersRatedAmount** (Number): Number of players who rated.
  * **warpCategory** (Array of Objects):
    * **name** (String): Category name.
    * **teleportPrice** (Number): Price to teleport.
    * **purgeTime** (Number): Time until purge.
    * **permission** (String): Required permission.
    * **removeDaysTime** (Number): Time until removal.
    * **all** (Boolean): Whether it includes all warps.
    * **icon** (Object):
      * **type** (String): The type of the icon.
      * **meta** (Object):
        * **display-name** (String): The display name of the icon.
        * **lore** (Array of Strings): Lore description.
        * **PublicBukkitValues** (String): Custom Bukkit metadata.
    * **displayName** (String): Display name of the category.
  * **warpIcon** (Object): Warp icon details.
  * **warpRent** (Object):
    * **warpLastRent** (Number): Last rent timestamp.
    * **warpNewRent** (Number): New rent timestamp.
  * **warpVisit** (Object):
    * **warpVisits** (Number): Number of visits.
    * **purgedWarpVisits** (Number): Visits purged.
    * **warpVisitedBoosted** (Array): List of boosted visits.
    * **warpVisited** (Array): List of visits.
  * **warpDate** (Number): Warp creation date.
  * **warpType** (String): Type of the warp.
  * **warpCost** (Object): Cost details (if applicable).
  * **paid** (Array): List of paid players.
  * **banned** (Array): List of banned players.
  * **whitelisted** (Array): List of whitelisted players.
  * **managers** (Array): List of managers.
  * **whitelistEnabled** (Boolean): Whether whitelist is enabled.
  * **warpLocked** (Boolean): Whether the warp is locked.
  * **warpPassword** (String): Password for the warp (if applicable).
  * **sponsorWarp** (Object): Sponsor warp details.
  * **sponsorCooldown** (Object): Sponsor cooldown details.
  * **randomSort** (Number): Random sort value.
  * **warpPlayer** (Object):
    * **uuid** (String): Player's UUID.
    * **messages** (Array): Messages for the player.
    * **sponsorCooldown** (Object): Sponsor cooldown details.
    * **staticWarps** (Number): Number of static warps.
    * **logs** (Array): Logs related to the warp.
    * **earnedRateRewards** (Array): Rewards earned.
    * **lastPlayed** (Number): Last played timestamp.
    * **pendingWarp** (Object): Pending warp details.
    * **maxWarpCostPrice** (Number): Maximum cost for warp.
    * **minWarpCostPrice** (Number): Minimum cost for warp.
    * **priceFreeLimit** (Number): Free price limit.
    * **waitTeleportTime** (Number): Wait time for teleport.
    * **maximumWarps** (Number): Maximum number of warps.
    * **prettyMaximumWarps** (String): Human-readable maximum warps.
    * **name** (String): Player's name.
    * **language** (String): Player's language.
  * **favoriteCount** (Number): Number of favorites.
  * **warpDisplayName** (String): Display name of the warp.
  * **totalPages** (Number): Number of pages.
  * **currentPage** (Number): Current page.
  * **totalWarps** (Number): Total amount of warps on the server.

**Note:**

* [**Authentication**](/projects/playerwarps/restapi#authentication) is required to access this endpoint.
* Based on server settings, you may not be able to access warp information if you do not own the warp.


# /api/playerwarps/getWarpCategoryByName/{categoryname}

Retrieve warp category information by the category name.

* **Parameters:**
  * `categoryname`: The name of the category to retrieve.
* **Response:**

  The response will return a JSON object with the following structure:

  ```json
  {
    "name": "other",
    "teleportPrice": -1,
    "purgeTime": -1,
    "permission": "",
    "removeDaysTime": -1,
    "all": false,
    "icon": {
      "type": "PAPER",
      "meta": {
        "display-name": "{\"text\":\"\",\"extra\":[{\"text\":\"Other Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
        "lore": [
          "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the other warps.\",\"color\":\"aqua\"}],\"italic\":false}"
        ],
        "PublicBukkitValues": "{\n    \"playerwarps:itemtag_item\": \"1\"\n}"
      }
    },
    "displayName": "Other"
  }
  ```

**Fields:**

* **name** (String): Category name.
* **teleportPrice** (Number): Price to teleport.
* **purgeTime** (Number): Time until purge.
* **permission** (String): Required permission.
* **removeDaysTime** (Number): Time until removal.
* **all** (Boolean): Whether it includes all warps.
* **icon** (Object):
  * **type** (String): The type of the icon.
  * **meta** (Object):
  * **display-name** (String): The display name of the icon.
  * **lore** (Array of Strings): Lore description.
  * **PublicBukkitValues** (String): Custom Bukkit metadata.
* **displayName** (String): Display name of the category.

**Note:**

* [**Authentication**](/projects/playerwarps/restapi#authentication) is required to access this endpoint.
* Based on server settings, you may not be able to access warp information if you do not own the warp.


# /api/playerwarps/getWarpCategories/{page}

Retrieve a paginated list of warp categories.

* **Parameters:**
  * `page`: The page number to retrieve (for pagination).
* **Response:**

  The response will return a JSON object with the following structure:

  ```json
  {
      "categories": [
          {
              "teleportPrice": -1.0,
              "purgeTime": -1,
              "removeDaysTime": -1,
              "all": true,
              "icon": {
                  "type": "BOOK",
                  "meta": {
                      "display-name": "{\"text\":\"\",\"extra\":[{\"text\":\"All Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
                      "lore": [
                          "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the warps.\",\"color\":\"aqua\"}],\"italic\":false}"
                      ],
                      "PublicBukkitValues": "{\n    \"playerwarps:itemtag_item\": \"1\"\n}"
                  }
              },
              "name": "all",
              "permission": "",
              "displayName": "All"
          },
          {
              "teleportPrice": -1.0,
              "purgeTime": -1,
              "removeDaysTime": -1,
              "all": false,
              "icon": {
                  "type": "OAK_PLANKS",
                  "meta": {
                      "display-name": "{\"text\":\"\",\"extra\":[{\"text\":\"House Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
                      "lore": [
                          "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the house warps.\",\"color\":\"aqua\"}],\"italic\":false}"
                      ],
                      "PublicBukkitValues": "{\n    \"playerwarps:itemtag_item\": \"1\"\n}"
                  }
              },
              "name": "houses",
              "permission": "",
              "displayName": "Houses"
          },
          {
              "teleportPrice": -1.0,
              "purgeTime": 40,
              "removeDaysTime": 40,
              "all": false,
              "icon": {
                  "type": "CHEST",
                  "meta": {
                      "display-name": "{\"text\":\"\",\"extra\":[{\"text\":\"Shop Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
                      "lore": [
                          "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the shop warps.\",\"color\":\"aqua\"}],\"italic\":false}"
                      ],
                      "PublicBukkitValues": "{\n    \"playerwarps:itemtag_item\": \"1\"\n}",
                      "blockMaterial": "CHEST"
                  }
              },
              "name": "shops",
              "permission": "pw.view.shop",
              "displayName": "Shops"
          },
          {
              "teleportPrice": -1.0,
              "purgeTime": -1,
              "removeDaysTime": -1,
              "all": false,
              "icon": {
                  "type": "DIAMOND_HOE",
                  "meta": {
                      "display-name": "{\"text\":\"\",\"extra\":[{\"text\":\"Farm Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
                      "lore": [
                          "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the farm warps.\",\"color\":\"aqua\"}],\"italic\":false}"
                      ],
                      "PublicBukkitValues": "{\n    \"playerwarps:itemtag_item\": \"1\"\n}"
                  }
              },
              "name": "farms",
              "permission": "",
              "displayName": "Farms"
          },
          {
              "teleportPrice": -1.0,
              "purgeTime": -1,
              "removeDaysTime": -1,
              "all": false,
              "icon": {
                  "type": "DIAMOND_SWORD",
                  "meta": {
                      "display-name": "{\"text\":\"\",\"extra\":[{\"text\":\"PvP Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
                      "lore": [
                          "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the pvp warps.\",\"color\":\"aqua\"}],\"italic\":false}"
                      ],
                      "PublicBukkitValues": "{\n    \"playerwarps:itemtag_item\": \"1\"\n}"
                  }
              },
              "name": "pvp",
              "permission": "",
              "displayName": "PvP"
          },
          {
              "teleportPrice": -1.0,
              "purgeTime": -1,
              "removeDaysTime": -1,
              "all": false,
              "icon": {
                  "type": "PAPER",
                  "meta": {
                      "display-name": "{\"text\":\"\",\"extra\":[{\"text\":\"Other Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
                      "lore": [
                          "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the other warps.\",\"color\":\"aqua\"}],\"italic\":false}"
                      ],
                      "PublicBukkitValues": "{\n    \"playerwarps:itemtag_item\": \"1\"\n}"
                  }
              },
              "name": "other",
              "permission": "",
              "displayName": "Other"
          }
      ],
      "totalPages": 1,
      "currentPage": 1,
      "totalCategories": 6
  }
  ```

**Fields:**

* **categories** (Array of Warp objects):
  * **name** (String): Category name.
  * **teleportPrice** (Number): Price to teleport.
  * **purgeTime** (Number): Time until purge.
  * **permission** (String): Required permission.
  * **removeDaysTime** (Number): Time until removal.
  * **all** (Boolean): Whether it includes all warps.
  * **icon** (Object):
    * **type** (String): The type of the icon.
    * **meta** (Object):
    * **display-name** (String): The display name of the icon.
    * **lore** (Array of Strings): Lore description.
    * **PublicBukkitValues** (String): Custom Bukkit metadata.
  * **totalPages** (Number): Number of pages.
  * **currentPage** (Number): Current page.
  * **totalCategories** (Number): Total amount of categories on the server.

**Note:**

* [**Authentication**](/projects/playerwarps/restapi#authentication) is required to access this endpoint.
* Based on server settings, you may not be able to access warp information if you do not own the warp.


# /api/playerwarps/getWarpPlayerByUUID/{uuid}

Retrieve a player's information associated with a specific UUID.

* **Parameters:**
  * `uuid`: The UUID of the player.
* **Response:**

  The response will return a JSON object with the following structure:

  ```json
  {
    "uuid": "5ca251ab-589d-4f04-8f0c-28404d0686b0",
    "messages": [],
    "sponsorCooldown": null,
    "staticWarps": 0,
    "logs": [],
    "earnedRateRewards": [],
    "lastPlayed": 1735595807797,
    "pendingWarp": null,
    "maxWarpCostPrice": 500.0,
    "minWarpCostPrice": -1.0,
    "priceFreeLimit": -1,
    "waitTeleportTime": 3,
    "maximumWarps": 9223372036854775807,
    "prettyMaximumWarps": "Unlimited",
    "name": "ForgotUrPassword",
    "language": "en_gb"
  }
  ```

**Fields:**

* **uuid** (String): The UUID of the player.
* **messages** (Array): Messages related to the player.
* **sponsorCooldown** (Object|null): Sponsor cooldown details.
* **staticWarps** (Number): Number of static warps owned by the player.
* **logs** (Array): Logs associated with the player.
* **earnedRateRewards** (Array): Rewards earned by the player.
* **lastPlayed** (Number): The last played timestamp (in milliseconds).
* **pendingWarp** (Object|null): Pending warp details.
* **maxWarpCostPrice** (Number): Maximum cost for creating a warp.
* **minWarpCostPrice** (Number): Minimum cost for creating a warp.
* **priceFreeLimit** (Number): Limit for free warps (-1 if unlimited).
* **waitTeleportTime** (Number): Time in seconds to wait before teleporting.
* **maximumWarps** (Number): The maximum number of warps allowed.
* **prettyMaximumWarps** (String): A human-readable representation of maximum warps (e.g., "Unlimited").
* **name** (String): The player's name.
* **language** (String): The player's language (locale).

**Note:**

* [**Authentication**](/projects/playerwarps/restapi#authentication) is required to access this endpoint.
* Based on server settings, you may not be able to access warp information if you do not own the warp.


# DELETE

This section documents all the available DELETE endpoints in the Player Warps REST API. These endpoints allow you to delete warp data.

## Endpoints

* [DELETE /api/playerwarps/deletePlayerWarpByName/{warpname}](/projects/playerwarps/restapi/endpoints/delete/deleteplayerwarpbyname)
* [DELETE /api/playerwarps/deletePlayerWarpByID/{id}](/projects/playerwarps/restapi/endpoints/delete/deleteplayerwarpbyid)


# /api/playerwarps/deletePlayerWarpByName/{warpname}

Delete a player’s warp by a warp name.

* **Parameters:**
  * `warpname`: The name of the warp to delete.
* **Response:**

  The response will return a JSON object with the following structure:

  ```json
  {
    "success": true,
    "message": "Warp removed."
  }
  ```

  **Note:**

  * [**Authentication**](/projects/playerwarps/restapi#authentication) is required to access this endpoint.


# /api/playerwarps/deletePlayerWarpByID/{id}

Delete a player’s warp by a warp ID.

* **Parameters:**
  * `id`: The ID of the warp to delete.
* **Response:**

  The response will return a JSON object with the following structure:

  ```json
  {
    "success": true,
    "message": "Warp removed."
  }
  ```

  **Note:**

  * [**Authentication**](/projects/playerwarps/restapi#authentication) is required to access this endpoint.


# Events

Here you can view the events and how to listen to them in the Player Warps REST API.

The Player Warps REST API provides real-time interactions through events, allowing you to receive updates, notifications, and other important information dynamically. You can connect to these events using a WebSocket with basic authentication. Once connected, you will be able to listen to the events and receive the necessary information.

## Connecting

You can connect to the websocket just using the base URL of the API (Found in your servers documentation), and your server documentation should tell you if you need to connect with `wss` or `ws` (Secure or not secure). The socket will automatically listen to all events, and you can filter them on your end.

## Examples

You can view an example on how to connect to the websocket using Java and The [**Java-Websocket**](https://github.com/TooTallNate/Java-WebSocket) library [here](https://haste.olziedev.com/weyoyodaxi.csharp)

## Events

These events are sent through the WebSocket and can be listened to, these events are also referenced in the Plugin API as well. You can view an example of the event structure below that is sent through the WebSocket.

```json
{
  "type" : "EVENT_TRIGGERED",
  "name" : "PlayerWarpCreateEvent",
  "event" : {}
}
```

* [PlayerWarpCreateEvent](/projects/playerwarps/restapi/events/playerwarpcreateevent)
* [WarpPlayerUpdateEvent](/projects/playerwarps/restapi/events/warpplayerupdateevent)
* [PlayerWarpTeleportEvent](/projects/playerwarps/restapi/events/playerwarpteleportevent)
* [PlayerWarpUpdateEvent](/projects/playerwarps/restapi/events/playerwarpupdateevent)
* [PlayerWarpRentEvent](/projects/playerwarps/restapi/events/playerwarprentevent)
* [PlayerWarpSponsorEvent](/projects/playerwarps/restapi/events/playerwarpsponsorevent)
* [PlayerWarpRemoveEvent](/projects/playerwarps/restapi/events/playerwarpremoveevent)


# PlayerWarpTeleportEvent

This event is called when a player teleports to a warp, you can view the JavaDocs for this event [here](https://javadocs.olziedev.com/playerwarps/com/olziedev/playerwarps/api/events/warp/PlayerWarpTeleportEvent.html).

## **Received Data**

Once the event is triggered, you will receive a JSON object containing the data below:

```json
{
  "type" : "EVENT_TRIGGERED",
  "name" : "PlayerWarpTeleportEvent",
  "event" : {
    "cancelled" : false,
    "playerWarp" : {
      "id" : 51,
      "warpName" : "testing2",
      "warpLocation" : {
        "world" : "world",
        "x" : -1696.604230492617,
        "y" : 85.53986305993527,
        "z" : -71.72780318647382,
        "yaw" : -22.475004,
        "pitch" : 43.49976,
        "locationSafe" : false,
        "warpServer" : "N/A",
        "properLocation" : {
          "world" : "world",
          "x" : -1696.604230492617,
          "y" : 85.53986305993527,
          "z" : -71.72780318647382,
          "yaw" : -22.475004,
          "pitch" : 43.49976
        },
        "worldType" : "world"
      },
      "warpRate" : {
        "earnedRateRewards" : [ ],
        "rates" : { },
        "rateAverage" : 0.0,
        "totalRates" : 0,
        "playersRatedAmount" : 0
      },
      "warpCategory" : [ {
        "name" : "other",
        "teleportPrice" : -1.0,
        "purgeTime" : -1,
        "permission" : "",
        "removeDaysTime" : -1,
        "all" : false,
        "icon" : {
          "type" : "PAPER",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Other Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the other warps.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "PublicBukkitValues" : "{\n    \"playerwarps:itemtag_item\": \"1\"\n}"
          }
        },
        "displayName" : "Other"
      } ],
      "warpIcon" : {
        "warpIcon" : null
      },
      "warpRent" : {
        "warpLastRent" : 1735593112612,
        "warpNewRent" : 1735679512612
      },
      "warpVisit" : {
        "warpVisits" : 0,
        "purgedWarpVisits" : 0,
        "warpVisitedBoosted" : [ ],
        "warpVisited" : [ ]
      },
      "warpDate" : 1735593112612,
      "warpType" : "NORMAL",
      "warpCost" : null,
      "paid" : [ ],
      "banned" : [ ],
      "whitelisted" : [ ],
      "managers" : [ ],
      "whitelistEnabled" : false,
      "warpLocked" : false,
      "warpPassword" : null,
      "sponsorWarp" : null,
      "sponsorCooldown" : null,
      "randomSort" : 3,
      "warpPlayer" : {
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "sponsorCooldown" : null,
        "staticWarps" : 0,
        "logs" : [ ],
        "earnedRateRewards" : [ ],
        "lastPlayed" : 1735602936598,
        "pendingWarp" : null,
        "maxWarpCostPrice" : 500.0,
        "minWarpCostPrice" : -1.0,
        "priceFreeLimit" : -1,
        "waitTeleportTime" : 3,
        "maximumWarps" : 9223372036854775807,
        "prettyMaximumWarps" : "Unlimited",
        "name" : "ForgotUrPassword",
        "language" : "en_gb"
      },
      "favoriteCount" : 0,
      "warpDisplayName" : "testing2"
    },
    "teleporter" : {
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "name" : "ForgotUrPassword"
    },
    "cause" : "TELEPORT_COMMAND",
    "asynchronous" : true
  }
}
```


# PlayerWarpSponsorEvent

This event is called when a player sponsors a warp, you can view the JavaDocs for this event [here](https://javadocs.olziedev.com/playerwarps/com/olziedev/playerwarps/api/events/warp/PlayerWarpSponsorEvent.html).

## **Received Data**

Once the event is triggered, you will receive a JSON object containing the data below:

```json
{
  "type" : "EVENT_TRIGGERED",
  "name" : "PlayerWarpSponsorEvent",
  "event" : {
    "cancelled" : false,
    "playerWarp" : {
      "id" : 50,
      "warpName" : "testing",
      "warpLocation" : {
        "world" : "world",
        "x" : -1704.254518797315,
        "y" : 81.79549733866219,
        "z" : -90.22482751188485,
        "yaw" : -22.475004,
        "pitch" : 43.49976,
        "locationSafe" : false,
        "warpServer" : "N/A",
        "properLocation" : {
          "world" : "world",
          "x" : -1704.254518797315,
          "y" : 81.79549733866219,
          "z" : -90.22482751188485,
          "yaw" : -22.475004,
          "pitch" : 43.49976
        },
        "worldType" : "world"
      },
      "warpRate" : {
        "earnedRateRewards" : [ ],
        "rates" : { },
        "rateAverage" : 0.0,
        "totalRates" : 0,
        "playersRatedAmount" : 0
      },
      "warpCategory" : [ {
        "name" : "other",
        "teleportPrice" : -1.0,
        "purgeTime" : -1,
        "permission" : "",
        "removeDaysTime" : -1,
        "all" : false,
        "icon" : {
          "type" : "PAPER",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Other Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the other warps.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "PublicBukkitValues" : "{\n    \"playerwarps:itemtag_item\": \"1\"\n}"
          }
        },
        "displayName" : "Other"
      } ],
      "warpIcon" : {
        "warpIcon" : null
      },
      "warpRent" : {
        "warpLastRent" : 1735593109313,
        "warpNewRent" : 1735679509313
      },
      "warpVisit" : {
        "warpVisits" : 0,
        "purgedWarpVisits" : 0,
        "warpVisitedBoosted" : [ ],
        "warpVisited" : [ ]
      },
      "warpDate" : 1735593109313,
      "warpType" : "NORMAL",
      "warpCost" : null,
      "paid" : [ ],
      "banned" : [ ],
      "whitelisted" : [ ],
      "managers" : [ ],
      "whitelistEnabled" : false,
      "warpLocked" : false,
      "warpPassword" : null,
      "sponsorWarp" : null,
      "sponsorCooldown" : null,
      "randomSort" : 0,
      "warpPlayer" : {
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "sponsorCooldown" : null,
        "staticWarps" : 0,
        "logs" : [ ],
        "earnedRateRewards" : [ ],
        "lastPlayed" : 1735602841916,
        "pendingWarp" : null,
        "maxWarpCostPrice" : 500.0,
        "minWarpCostPrice" : -1.0,
        "priceFreeLimit" : -1,
        "waitTeleportTime" : 3,
        "maximumWarps" : 9223372036854775807,
        "prettyMaximumWarps" : "Unlimited",
        "name" : "ForgotUrPassword",
        "language" : "en_gb"
      },
      "favoriteCount" : 0,
      "warpDisplayName" : "testing"
    },
    "sponsorID" : "1",
    "player" : {
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "name" : "ForgotUrPassword"
    },
    "price" : 100000.0,
    "itemStack" : null,
    "asynchronous" : true
  }
}
```


# PlayerWarpRentEvent

This event is called when a player rents a warp, you can view the JavaDocs for this event [here](https://javadocs.olziedev.com/playerwarps/com/olziedev/playerwarps/api/events/warp/PlayerWarpRentEvent.html).

## **Received Data**

Once the event is triggered, you will receive a JSON object containing the data below:

```json
{
  "type" : "EVENT_TRIGGERED",
  "name" : "PlayerWarpRentEvent",
  "event" : {
    "cancelled" : false,
    "playerWarp" : {
      "id" : 51,
      "warpName" : "testing2",
      "warpLocation" : {
        "world" : "world",
        "x" : -1696.604230492617,
        "y" : 85.53986305993527,
        "z" : -71.72780318647382,
        "yaw" : -22.475004,
        "pitch" : 43.49976,
        "locationSafe" : false,
        "warpServer" : "N/A",
        "properLocation" : {
          "world" : "world",
          "x" : -1696.604230492617,
          "y" : 85.53986305993527,
          "z" : -71.72780318647382,
          "yaw" : -22.475004,
          "pitch" : 43.49976
        },
        "worldType" : "world"
      },
      "warpRate" : {
        "earnedRateRewards" : [ ],
        "rates" : { },
        "rateAverage" : 0.0,
        "totalRates" : 0,
        "playersRatedAmount" : 0
      },
      "warpCategory" : [ {
        "name" : "shops",
        "teleportPrice" : -1.0,
        "purgeTime" : 40,
        "permission" : "pw.view.shop",
        "removeDaysTime" : 40,
        "all" : false,
        "icon" : {
          "type" : "CHEST",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Shop Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the shop warps.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "PublicBukkitValues" : "{\n    \"playerwarps:itemtag_item\": \"1\"\n}",
            "blockMaterial" : "CHEST"
          }
        },
        "displayName" : "Shops"
      } ],
      "warpIcon" : {
        "warpIcon" : null
      },
      "warpRent" : {
        "warpLastRent" : 0,
        "warpNewRent" : 86400000
      },
      "warpVisit" : {
        "warpVisits" : 0,
        "purgedWarpVisits" : 0,
        "warpVisitedBoosted" : [ ],
        "warpVisited" : [ ]
      },
      "warpDate" : 0,
      "warpType" : "NORMAL",
      "warpCost" : null,
      "paid" : [ ],
      "banned" : [ ],
      "whitelisted" : [ ],
      "managers" : [ ],
      "whitelistEnabled" : false,
      "warpLocked" : false,
      "warpPassword" : null,
      "sponsorWarp" : null,
      "sponsorCooldown" : null,
      "randomSort" : 3,
      "warpPlayer" : {
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "sponsorCooldown" : null,
        "staticWarps" : 0,
        "logs" : [ ],
        "earnedRateRewards" : [ ],
        "lastPlayed" : 1735604687662,
        "pendingWarp" : null,
        "maxWarpCostPrice" : 500.0,
        "minWarpCostPrice" : -1.0,
        "priceFreeLimit" : -1,
        "waitTeleportTime" : 3,
        "maximumWarps" : 9223372036854775807,
        "prettyMaximumWarps" : "Unlimited",
        "name" : "ForgotUrPassword",
        "language" : "en_gb"
      },
      "favoriteCount" : 0,
      "warpDisplayName" : "testing2"
    },
    "rentType" : "SUCCESS",
    "price" : 500.0,
    "asynchronous" : true
  }
}
```


# PlayerWarpRemoveEvent

This event is called when a player removes a warp, you can view the JavaDocs for this event [here](https://javadocs.olziedev.com/playerwarps/com/olziedev/playerwarps/api/events/warp/PlayerWarpRemoveEvent.html). Please note that this event will only be triggered for the creator of the warp if the server has setup like that.

## **Received Data**

Once the event is triggered, you will receive a JSON object containing the data below:

```json
{
  "type" : "EVENT_TRIGGERED",
  "name" : "PlayerWarpRemoveEvent",
  "event" : {
    "cancelled" : false,
    "playerWarp" : {
      "id" : 53,
      "warpName" : "testing222",
      "warpLocation" : {
        "world" : "world",
        "x" : -1773.6717602821175,
        "y" : 87.36813547579965,
        "z" : -109.20433809076945,
        "yaw" : -9.571564,
        "pitch" : 38.9997,
        "locationSafe" : false,
        "warpServer" : "N/A",
        "properLocation" : {
          "world" : "world",
          "x" : -1773.6717602821175,
          "y" : 87.36813547579965,
          "z" : -109.20433809076945,
          "yaw" : -9.571564,
          "pitch" : 38.9997
        },
        "worldType" : "world"
      },
      "warpRate" : {
        "earnedRateRewards" : [ ],
        "rates" : { },
        "rateAverage" : 0.0,
        "totalRates" : 0,
        "playersRatedAmount" : 0
      },
      "warpCategory" : [ {
        "name" : "other",
        "teleportPrice" : -1.0,
        "purgeTime" : -1,
        "permission" : "",
        "removeDaysTime" : -1,
        "all" : false,
        "icon" : {
          "type" : "PAPER",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Other Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the other warps.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "PublicBukkitValues" : "{\n    \"playerwarps:itemtag_item\": \"1\"\n}"
          }
        },
        "displayName" : "Other"
      } ],
      "warpIcon" : {
        "warpIcon" : null
      },
      "warpRent" : {
        "warpLastRent" : 1735599381812,
        "warpNewRent" : 1735685781812
      },
      "warpVisit" : {
        "warpVisits" : 0,
        "purgedWarpVisits" : 0,
        "warpVisitedBoosted" : [ ],
        "warpVisited" : [ ]
      },
      "warpDate" : 1735599381812,
      "warpType" : "NORMAL",
      "warpCost" : null,
      "paid" : [ ],
      "banned" : [ ],
      "whitelisted" : [ ],
      "managers" : [ ],
      "whitelistEnabled" : false,
      "warpLocked" : false,
      "warpPassword" : null,
      "sponsorWarp" : null,
      "sponsorCooldown" : null,
      "randomSort" : 0,
      "warpPlayer" : {
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "sponsorCooldown" : null,
        "staticWarps" : 0,
        "logs" : [ ],
        "earnedRateRewards" : [ ],
        "lastPlayed" : 1735602802421,
        "pendingWarp" : null,
        "maxWarpCostPrice" : 500.0,
        "minWarpCostPrice" : -1.0,
        "priceFreeLimit" : -1,
        "waitTeleportTime" : 3,
        "maximumWarps" : 9223372036854775807,
        "prettyMaximumWarps" : "Unlimited",
        "name" : "ForgotUrPassword",
        "language" : "en_gb"
      },
      "favoriteCount" : 0,
      "warpDisplayName" : "testing222"
    },
    "remover" : {
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "name" : "ForgotUrPassword"
    },
    "asynchronous" : false
  }
}
```


# PlayerWarpCreateEvent

This event is called when a player creates a warp, you can view the JavaDocs for this event [here](https://javadocs.olziedev.com/playerwarps/com/olziedev/playerwarps/api/events/warp/PlayerWarpCreateEvent.html). Please note that this event will only be triggered for the creator of the warp if the server has setup like that.

## **Received Data**

Once the event is triggered, you will receive a JSON object containing the data below:

```json
{
  "type" : "EVENT_TRIGGERED",
  "name" : "PlayerWarpCreateEvent",
  "event" : {
    "cancelled" : false,
    "playerWarp" : {
      "id" : 53,
      "warpName" : "testing",
      "warpLocation" : {
        "world" : "world",
        "x" : -1773.6717602821175,
        "y" : 87.36813547579965,
        "z" : -109.20433809076945,
        "yaw" : -9.571564,
        "pitch" : 38.9997,
        "locationSafe" : false,
        "warpServer" : "N/A",
        "properLocation" : {
          "world" : "world",
          "x" : -1773.6717602821175,
          "y" : 87.36813547579965,
          "z" : -109.20433809076945,
          "yaw" : -9.571564,
          "pitch" : 38.9997
        },
        "worldType" : "world"
      },
      "warpRate" : {
        "earnedRateRewards" : [ ],
        "rates" : { },
        "rateAverage" : 0.0,
        "totalRates" : 0,
        "playersRatedAmount" : 0
      },
      "warpCategory" : [ {
        "name" : "other",
        "teleportPrice" : -1.0,
        "purgeTime" : -1,
        "permission" : "",
        "removeDaysTime" : -1,
        "all" : false,
        "icon" : {
          "type" : "PAPER",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Other Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the other warps.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "PublicBukkitValues" : "{\n    \"playerwarps:itemtag_item\": \"1\"\n}"
          }
        },
        "displayName" : "Other"
      } ],
      "warpIcon" : {
        "warpIcon" : null
      },
      "warpRent" : {
        "warpLastRent" : 1735599381812,
        "warpNewRent" : 1735685781812
      },
      "warpVisit" : {
        "warpVisits" : 0,
        "purgedWarpVisits" : 0,
        "warpVisitedBoosted" : [ ],
        "warpVisited" : [ ]
      },
      "warpDate" : 1735599381812,
      "warpType" : "NORMAL",
      "warpCost" : null,
      "paid" : [ ],
      "banned" : [ ],
      "whitelisted" : [ ],
      "managers" : [ ],
      "whitelistEnabled" : false,
      "warpLocked" : false,
      "warpPassword" : null,
      "sponsorWarp" : null,
      "sponsorCooldown" : null,
      "randomSort" : 0,
      "warpPlayer" : {
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "sponsorCooldown" : null,
        "staticWarps" : 0,
        "logs" : [ ],
        "earnedRateRewards" : [ ],
        "lastPlayed" : 1735599381953,
        "pendingWarp" : null,
        "maxWarpCostPrice" : 500.0,
        "minWarpCostPrice" : -1.0,
        "priceFreeLimit" : -1,
        "waitTeleportTime" : 3,
        "maximumWarps" : 9223372036854775807,
        "prettyMaximumWarps" : "Unlimited",
        "name" : "ForgotUrPassword",
        "language" : "en_gb"
      },
      "favoriteCount" : 0,
      "warpDisplayName" : "testing222"
    },
    "creator" : {
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "name" : "ForgotUrPassword"
    },
    "asynchronous" : true
  }
}
```


# WarpPlayerUpdateEvent

This event is called when a warp player is updated you can view the JavaDocs for this event [here](https://javadocs.olziedev.com/playerwarps/com/olziedev/playerwarps/api/events/update/WarpPlayerUpdateEvent.html).

## **Received Data**

Once the event is triggered, you will receive a JSON object containing the data below:

```json
{
  "type" : "EVENT_TRIGGERED",
  "name" : "WarpPlayerUpdateEvent",
  "event" : {
    "cancelled" : false,
    "updatedValue" : {
      "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
      "messages" : [ ],
      "sponsorCooldown" : null,
      "staticWarps" : 0,
      "logs" : [ ],
      "earnedRateRewards" : [ ],
      "lastPlayed" : 1735602936603,
      "pendingWarp" : null,
      "maxWarpCostPrice" : 500.0,
      "minWarpCostPrice" : -1.0,
      "priceFreeLimit" : -1,
      "waitTeleportTime" : 3,
      "maximumWarps" : 9223372036854775807,
      "prettyMaximumWarps" : "Unlimited",
      "name" : "ForgotUrPassword",
      "language" : "en_gb"
    },
    "type" : "VISITED_WARPS_UPDATE",
    "asynchronous" : true
  }
}
```


# PlayerWarpUpdateEvent

This event is called when a warp is updated, you can view the JavaDocs for this event [here](https://javadocs.olziedev.com/playerwarps/com/olziedev/playerwarps/api/events/update/PlayerWarpUpdateEvent.html).

## **Received Data**

Once the event is triggered, you will receive a JSON object containing the data below:

```json
{
  "type" : "EVENT_TRIGGERED",
  "name" : "PlayerWarpUpdateEvent",
  "event" : {
    "cancelled" : false,
    "updatedValue" : {
      "id" : 51,
      "warpName" : "testing2",
      "warpLocation" : {
        "world" : "world",
        "x" : -1696.604230492617,
        "y" : 85.53986305993527,
        "z" : -71.72780318647382,
        "yaw" : -22.475004,
        "pitch" : 43.49976,
        "locationSafe" : false,
        "warpServer" : "N/A",
        "properLocation" : {
          "world" : "world",
          "x" : -1696.604230492617,
          "y" : 85.53986305993527,
          "z" : -71.72780318647382,
          "yaw" : -22.475004,
          "pitch" : 43.49976
        },
        "worldType" : "world"
      },
      "warpRate" : {
        "earnedRateRewards" : [ ],
        "rates" : { },
        "rateAverage" : 0.0,
        "totalRates" : 0,
        "playersRatedAmount" : 0
      },
      "warpCategory" : [ {
        "name" : "shops",
        "teleportPrice" : -1.0,
        "purgeTime" : 40,
        "permission" : "pw.view.shop",
        "removeDaysTime" : 40,
        "all" : false,
        "icon" : {
          "type" : "CHEST",
          "meta" : {
            "display-name" : "{\"text\":\"\",\"extra\":[{\"text\":\"Shop Warps\",\"obfuscated\":false,\"italic\":false,\"underlined\":false,\"strikethrough\":false,\"color\":\"aqua\",\"bold\":false}]}",
            "lore" : [ "{\"text\":\"\",\"extra\":[{\"text\":\"Click\",\"color\":\"light_purple\"},{\"text\":\" to view all the shop warps.\",\"color\":\"aqua\"}],\"italic\":false}" ],
            "PublicBukkitValues" : "{\n    \"playerwarps:itemtag_item\": \"1\"\n}",
            "blockMaterial" : "CHEST"
          }
        },
        "displayName" : "Shops"
      } ],
      "warpIcon" : {
        "warpIcon" : null
      },
      "warpRent" : {
        "warpLastRent" : 1735593112612,
        "warpNewRent" : 1735679512612
      },
      "warpVisit" : {
        "warpVisits" : 0,
        "purgedWarpVisits" : 0,
        "warpVisitedBoosted" : [ ],
        "warpVisited" : [ ]
      },
      "warpDate" : 1735593112612,
      "warpType" : "NORMAL",
      "warpCost" : null,
      "paid" : [ ],
      "banned" : [ ],
      "whitelisted" : [ ],
      "managers" : [ ],
      "whitelistEnabled" : false,
      "warpLocked" : false,
      "warpPassword" : null,
      "sponsorWarp" : null,
      "sponsorCooldown" : null,
      "randomSort" : 3,
      "warpPlayer" : {
        "uuid" : "5ca251ab-589d-4f04-8f0c-28404d0686b0",
        "messages" : [ ],
        "sponsorCooldown" : null,
        "staticWarps" : 0,
        "logs" : [ ],
        "earnedRateRewards" : [ ],
        "lastPlayed" : 1735603045901,
        "pendingWarp" : null,
        "maxWarpCostPrice" : 500.0,
        "minWarpCostPrice" : -1.0,
        "priceFreeLimit" : -1,
        "waitTeleportTime" : 3,
        "maximumWarps" : 9223372036854775807,
        "prettyMaximumWarps" : "Unlimited",
        "name" : "ForgotUrPassword",
        "language" : "en_gb"
      },
      "favoriteCount" : 0,
      "warpDisplayName" : "testing2"
    },
    "type" : "WARP_CATEGORY",
    "asynchronous" : true
  }
}
```


# Errors

Here you can view the error codes and on the Player Warps Rest API.

## **Error Codes and Messages**

This section contains a list of common error responses by their error codes. Here is an example of what a response might look like:

```json
{
  "error": {
    "code": 401,
    "message": "You are no longer authorized, did you change your API token?"
  }
}
```

## **401 Unauthorized (API Key Error)**

**Error Code**: 401\
**Message**: "You are no longer authorized, did you change your API token?"

***

## **401 Unauthorized (Basic Authentication Required)**

**Error Code**: 401\
**Message**: "You are not authorized, did you provide the correct credentials?"

***

## **404 Cannot Find**

**Error Code**: 404\
**Message**: "Cannot find \<requested resource>"

***

## **403 Forbidden to View Warp**

**Error Code**: 403\
**Message**: "Forbidden, you cannot view this warp"

***

## **403 Forbidden to Delete Warp**

**Error Code**: 403\
**Message**: "Forbidden, you cannot delete this warp!"

***

## **404 Warp Not Found**

**Error Code**: 404\
**Message**: "The warp you are looking for does not exist!"

***

## **403 Unauthorized to View Player**

**Error Code**: 403\
**Message**: "Forbidden, you cannot view this player!"


# Player Businesses

Let your players create businesses!

## **What does it do?**

Player Businesses brings player owned businesses to your server, allowing you to create a new way for players to make money. Experience the thrill of owning a business and making money from it.

## **Plugin Requirements**

None

## **Features**

Player Businesses contains loads of commands and other cool features you'll never find anywhere else! You can check a more detailed description of each feature for Player Businesses [here](https://docs.olziedev.com/projects/playerbusinesses/features).

## **Supported Plugins**

You can view the supported plugins Player Businesses supports [here](/projects/playerbusinesses/plugins), this will give you PlaceholderAPI placeholders and way more other plugins that are supported.

{% hint style="info" %}
**Want to request a feature?**

You can request a feature in our [discord](https://olziedev.com/support) and we will be more than happy to implement it!
{% endhint %}


# Commands & Permissions

Here you can view all the available commands and permissions for Player Businesses.

### Player Commands

| Command                                                                 | Description                                         | Permission                                        |
| ----------------------------------------------------------------------- | --------------------------------------------------- | ------------------------------------------------- |
| /pb pay \<firm> \<player> \<amount>                                     | Pay a user from a specified firm.                   | playerbusinesses.use & playerbusinesses.limit.<#> |
| /pb staff createrole \<firm> \<name>                                    | Create a role for the specified firm.               | playerbusinesses.staff.createrole                 |
| /pb transactions \<firm> \[page]                                        | Shows transaction list for the specified firm.      | playerbusinesses.transactions.use                 |
| /pb transactions export \<firm>                                         | Exports transactions list of specified firm.        | playerbusinesses.sales.transactions               |
| /pb offer \<firm> \<user>                                               | Offer a user a job.                                 | playerbusinesses.user.offer                       |
| /pb disband \<firm>                                                     | Disband a firm.                                     | playerbusinesses.user.disband                     |
| /pb fire \<firm> \<user>                                                | Removes specified user from specified firm you own. | playerbusinesses.user.fire                        |
| /pb staff editrole add \<firm> \<name> \<permission>                    | Allows you to add permissions to a role.            | playerbusinesses.user.role.edit.add               |
| /pb staff editrole remove \<firm> \<name> \<permission>                 | Allows you to remove permissions from a role.       | playerbusinesses.user.role.edit.remove            |
| /pb staff list \<firm>                                                  | Shows a list of all staff members.                  | playerbusinesses.use                              |
| /pb staff demote \<firm> \<user>                                        | Demote a player from a role.                        | playerbusinesses.user.staff.demote                |
| /pb staff removerole \<firm> \<name>                                    | Remove a role from the specified firm.              | playerbusinesses.staff.removerole                 |
| /pb staff promote \<firm> \<user>                                       | Promote a player to a role.                         | playerbusinesses.user.staff.promote               |
| /pb list \<user>                                                        | List firms for the specified user.                  | playerbusinesses.user.list                        |
| /pb amount                                                              | Check how many businesses you have.                 | playerbusinesses.user.amount                      |
| /pb deposit \<firm> \<money> \[reason]                                  | Puts money from player balance into a firm balance. | playerbusinesses.use                              |
| /pb set hq \<firm> \<plot>                                              | Set the HQ for a firm.                              | playerbusinesses.user.set.hq                      |
| /pb set discord \<firm> \<discord>                                      | Set the discord for the specified firm.             | playerbusinesses.user.set.discord                 |
| /pb withdraw \<firm> \<money> \[reason]                                 | Takes money from the specified firm.                | playerbusinesses.use                              |
| /pb accept \<firm>                                                      | Accepts pending job offer from specified firm.      | playerbusinesses.user.offer.accept                |
| /pb deny \<firm>                                                        | Denies pending job offer from specified firm.       | playerbusinesses.user.offer.deny                  |
| /pb info \<firm>                                                        | Shows information about the specified firm.         | playerbusinesses.user.information                 |
| /pb primary \<firm>                                                     | Setup your primary firm.                            | playerbusinesses.user.primary                     |
| /pb list all \[page]                                                    | List all firms.                                     | playerbusinesses.user.list.all                    |
| /pb create \<firm>                                                      | Creates a firm.                                     | playerbusinesses.user.create                      |
| /pb sales \<firm> \[page]                                               | Shows sales list of specified firm.                 | playerbusinesses.sales.use                        |
| /pb sales toggle \<firm>                                                | Toggles sale notifications for a firm.              | playerbusinesses.sales.toggle                     |
| /pb sales export \<firm> \<days>                                        | Exports sales list of specified firm.               | playerbusinesses.sales.export                     |
| /pb resign \<firm>                                                      | Resigns from specified firm.                        | playerbusinesses.user.resign                      |
| /pb transferproprietorship \<firm> \<user>                              | Change firm proprietorship.                         | playerbusinesses.user.transferproprietorship      |
| /pb menu \<firm>                                                        | Open the menu.                                      | playerbusinesses.use                              |
| /pb stocks commodity \<item> \<item>                                    | Shows the commodity information.                    | playerbusinesses.stocks.commodity                 |
| /pb stocks delist \<firm/ticker>                                        | Delist a company from the stock market.             | playerbusinesses.stocks.delist                    |
| /pb stocks dividend \<firm/ticker> \<dividend type> \<amount per share> | Put a dividend on your stocks.                      | playerbusinesses.stocks.dividend                  |
| /pb stocks ipo \<firm> \<ticker> \<number of shares>                    | Enable stocks for a firm.                           | playerbusinesses.stocks.enable                    |
| /pb stocks sell \<firm/ticker> \<shares> \<price>                       | Sell stocks from your firm.                         | playerbusinesses.stocks.sell                      |
| /pb stocks market                                                       | List all companies stocks.                          | playerbusinesses.stocks.market                    |
| /pb stocks profile \<firm/ticker>                                       | Show the biggest seller information.                | playerbusinesses.stocks.profile                   |
| /pb stocks portfolio                                                    | Show your information.                              | playerbusinesses.stocks.portfolio                 |

### Admin Commands

| Command                               | Description                                  | Permission                           |
| ------------------------------------- | -------------------------------------------- | ------------------------------------ |
| /pb reload                            | Reloads all the config files.                | playerbusinesses.admin.reload        |
| /pb addbusinesses \<player> \<amount> | Add more businesses to a player via command. | playerbusinesses.admin.addbusinesses |

## Rest API Commands

| Command                          | Description               | Permission                          |
| -------------------------------- | ------------------------- | ----------------------------------- |
| /pb apitokens                    | Shows the help menu.      | playerbusinesses.apitokens          |
| /pb apitokens delete \[player]   | Delete your API token.    | playerbusinesses.apitokens.delete   |
| /pb apitokens generate \[player] | Generate a new API token. | playerbusinesses.apitokens.generate |

{% hint style="info" %}
**Permissions not working?**

The <> in some permissions are placeholders, you will need to replace them with a valid value like requested.
{% endhint %}

## Admin Permissions

| Permission                                          | Description                                                              |
| --------------------------------------------------- | ------------------------------------------------------------------------ |
| playerbusinesses.admin.update                       | When a player joins they receive update notifications.                   |
| playerbusinesses.user.fire.others                   | Allows the player to fire any staff member from any business.            |
| playerbusinesses.user.transferproprietorship.others | Allows the player to transfer the proprietorship of any business.        |
| playerbusinesses.admin                              | Allows the player to interact with other businesses without owning them. |
| playerbusinesses.transactions.export.other          | Allows players to export transactions to businesses they don't own.      |
| playerbusinesses.sales.export.other                 | Allows players to export sales to businesses they don't own.             |
| playerbusinesses.admin.apitokens                    | Remove/Generate other players' API tokens.                               |


# Configuration

Here you can view all the configuration and options for Player Businesses.

## **Plugin Files**

Here are the latest plugin files, the plugin should automatically generate/update the files. If the plugin hasn't generated them make sure you've got the plugin requirements listed [here](/projects/playerbusinesses#plugin-requirements). If you want to test your YAML syntax you can test it [here](https://yaml-online-parser.appspot.com).

Your plugin will automatically update when there is a needed configuration update, you cannot turn this off and is added to prevent errors on your plugin if you have any missing configuration options.

The plugin connects to my webserver, if this webserver is offline or your plugin cannot access it, then the configuration files may not be updated or downloaded.

{% hint style="info" %}
[**config.yml - Change all the plugin options**](https://cdn.olziedev.com/playerbusinesses/configuration/config.yml)
{% endhint %}

{% hint style="info" %}
[**lang/ - Change all the plugin messages**](https://cdn.olziedev.com/playerbusinesses/configuration/lang/)
{% endhint %}

{% hint style="info" %}
[**menu.yml - Change all the menu options/design**](https://cdn.olziedev.com/playerbusinesses/configuration/menu.yml)
{% endhint %}

### Command Actions

Command actions are an easy way you to customize and execute all sorts of functions when an event is triggered, here are the latest command actions for Player Businesses.

| Action          | Description                                                                                            | Example                                                                                                                                                                                                                                                           |
| --------------- | ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| player          | Execute a command as the player.                                                                       | \[player] spawn                                                                                                                                                                                                                                                   |
| message         | Send a message to the player.                                                                          | \[message] \&aHello!                                                                                                                                                                                                                                              |
| broadcast       | Send a message to all online players.                                                                  | \[broadcast] \&aHello World!                                                                                                                                                                                                                                      |
| perm\_broadcast | <p>Broadcast a message to</p><p>players with the permission.</p>                                       | \[perm\_broadcast] message.view \&aHello!                                                                                                                                                                                                                         |
| title           | Send a title to the player.                                                                            | \[title] 20 60 20 \&aHello\n\&aWorld!                                                                                                                                                                                                                             |
| action\_bar     | Send an action bar message to the player.                                                              | \[action\_bar] \&aHello!                                                                                                                                                                                                                                          |
| player\_loop    | Loop through all online players and execute an action.                                                 | \[player\_loop] \[player] spawn                                                                                                                                                                                                                                   |
| server          | Execute a command as the server.                                                                       | \[server] spawn %player%                                                                                                                                                                                                                                          |
| command\_event  | Execute a unregistered command as the player.                                                          | \[command\_event] menu                                                                                                                                                                                                                                            |
| chat\_wait      | Wait for the user to enter a value in chat.                                                            | \[chat\_wait] \&aEnter a number:\[message] \&aYou said %value%                                                                                                                                                                                                    |
| chat\_wait      | Wait for the user to enter a value in chat, but removes the color from the chat input with **!color**. | \[chat\_wait] \&aEnter a number:\[message] **!color** \&aYou said %value%                                                                                                                                                                                         |
| add\_money      | Give a player money.                                                                                   | \[add\_money] 500                                                                                                                                                                                                                                                 |
| take\_money     | Take money from a player.                                                                              | \[take\_money] 500                                                                                                                                                                                                                                                |
| take\_perm      | Take a permission away from a player.                                                                  | \[take\_perm] message.view                                                                                                                                                                                                                                        |
| give\_perm      | Give a permission to a player                                                                          | \[give\_perm] message.view                                                                                                                                                                                                                                        |
| sound           | Play a sound to the player.                                                                            | <p>\[sound] <a href="https://javadocs.olziedev.com/spigot/latest/org/bukkit/Sound.html#AMBIENT_CAVE">AMBIENT\_CAVE</a></p><p>\[sound] <a href="https://javadocs.olziedev.com/spigot/latest/org/bukkit/Sound.html#AMBIENT_CAVE">AMBIENT\_CAVE </a>volume pitch</p> |
| close           | Close the inventory of the player.                                                                     | \[close]                                                                                                                                                                                                                                                          |

#### Action Tags

You can also add action tags that modify how the action is executed, you can use it in your command action like this `[ACTION<TAG=value>]`.

| Tag        | Description                                           | Example                                                                                                            |
| ---------- | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| delay      | Execute the action later in ticks.                    | \[broadcast\<delay=20>] \&aHello World                                                                             |
| permission | Execute the action only if the player has permission. | \[add\_money\<permission=pa.donator>] 1000                                                                         |
| condition  | Execute the action only if the value matches.         | <p>\[add\_money\<condition=%player\_name%=Notch>] 1000<br>\[add\_money\<condition=%player\_name%!=Notch>] 1000</p> |
| vanished   | Execute the action if the player is in vanish or not. | \[broadcast\<vanished=false>] This player is not in vanish!                                                        |

### Color & Hex Color

Player Businesses supports color codes that you can use literally everywhere possible that is displayed to the player. If you don't know the color codes off by heart, you can view them [here](https://htmlcolorcodes.com/bukkit-color-codes/).

Player Businesses also supports the 1.16+ hex colors, with the current format `{#HEX_CODE}` with the following example `{#f5a142}` This shows a nice orange color. You can also use this [here](https://g.co/kgs/h4CeKb), to get your hex colors.

### External Sources

You may want to use some external links to help you when configurating Player Businesses.

#### Material Types

Here is a list of all the valid materials that you can use to create items in Player Businesses for each version of Minecraft.

* [1.8.8](https://javadocs.olziedev.com/spigot/1.8.8/org/bukkit/Material.html)
* [1.9.4](https://javadocs.olziedev.com/spigot/1.9.4/org/bukkit/Material.html)
* [1.10.2](https://javadocs.olziedev.com/spigot/1.10.2/org/bukkit/Material.html)
* [1.11.2](https://javadocs.olziedev.com/spigot/1.11.2/org/bukkit/Material.html)
* [1.12.2](https://javadocs.olziedev.com/spigot/1.12.2/org/bukkit/Material.html)
* [1.13.2](https://javadocs.olziedev.com/spigot/1.13.2/org/bukkit/Material.html)
* [1.14.4](https://javadocs.olziedev.com/spigot/1.14.4/org/bukkit/Material.html)
* [1.15.2](https://javadocs.olziedev.com/spigot/1.15.2/org/bukkit/Material.html)
* [1.16.5](https://javadocs.olziedev.com/spigot/1.16.5/org/bukkit/Material.html)
* [1.17.1](https://javadocs.olziedev.com/spigot/1.17.1/org/bukkit/Material.html)
* [1.18.2](https://javadocs.olziedev.com/spigot/1.18.2/org/bukkit/Material.html)
* [1.19.4](https://javadocs.olziedev.com/spigot/1.19.4/org/bukkit/Material.html)
* [1.20.6](https://javadocs.olziedev.com/spigot/1.20.6/org/bukkit/Material.html)
* [1.21.4](https://javadocs.olziedev.com/spigot/1.21.4/org/bukkit/Material.html)
* [Latest](https://javadocs.olziedev.com/spigot/latest/org/bukkit/Material.html)

#### Sound Types

Here is a list of all the valid sound types that you can use to create cool sound effects in Player Businesses for each version of Minecraft.

* [1.8.8](https://javadocs.olziedev.com/spigot/1.8.8/org/bukkit/Sound.html)
* [1.9.4](https://javadocs.olziedev.com/spigot/1.9.4/org/bukkit/Sound.html)
* [1.10.2](https://javadocs.olziedev.com/spigot/1.10.2/org/bukkit/Sound.html)
* [1.11.2](https://javadocs.olziedev.com/spigot/1.11.2/org/bukkit/Sound.html)
* [1.12.2](https://javadocs.olziedev.com/spigot/1.12.2/org/bukkit/Sound.html)
* [1.13.2](https://javadocs.olziedev.com/spigot/1.13.2/org/bukkit/Sound.html)
* [1.14.4](https://javadocs.olziedev.com/spigot/1.14.4/org/bukkit/Sound.html)
* [1.15.2](https://javadocs.olziedev.com/spigot/1.15.2/org/bukkit/Sound.html)
* [1.16.5](https://javadocs.olziedev.com/spigot/1.16.5/org/bukkit/Sound.html)
* [1.17.1](https://javadocs.olziedev.com/spigot/1.17.1/org/bukkit/Sound.html)
* [1.18.2](https://javadocs.olziedev.com/spigot/1.18.2/org/bukkit/Sound.html)
* [1.19.4](ttps://javadocs.olziedev.com/spigot/1.19.4/org/bukkit/Sound.html)
* [1.20.6](https://javadocs.olziedev.com/spigot/1.20.6/org/bukkit/Sound.html)
* [1.21.4](https://javadocs.olziedev.com/spigot/1.21.4/org/bukkit/Sound.html)
* [Latest](https://javadocs.olziedev.com/spigot/latest/org/bukkit/Sound.html)

#### Item Flags

Here is a list of all the valid item flags that you can use on your items in Player Businesses for each version of Minecraft.

* [1.8.8](https://javadocs.olziedev.com/spigot/1.8.8/org/bukkit/inventory/ItemFlag.html)
* [1.9.4](https://javadocs.olziedev.com/spigot/1.9.4/org/bukkit/inventory/ItemFlag.html)
* [1.10.2](https://javadocs.olziedev.com/spigot/1.10.2/org/bukkit/inventory/ItemFlag.html)
* [1.11.2](https://javadocs.olziedev.com/spigot/1.11.2/org/bukkit/inventory/ItemFlag.html)
* [1.12.2](https://javadocs.olziedev.com/spigot/1.12.2/org/bukkit/inventory/ItemFlag.html)
* [1.13.2](https://javadocs.olziedev.com/spigot/1.13.2/org/bukkit/inventory/ItemFlag.html)
* [1.14.4](https://javadocs.olziedev.com/spigot/1.14.4/org/bukkit/inventory/ItemFlag.html)
* [1.15.2](https://javadocs.olziedev.com/spigot/1.15.2/org/bukkit/inventory/ItemFlag.html)
* [1.16.5](https://javadocs.olziedev.com/spigot/1.16.5/org/bukkit/inventory/ItemFlag.html)
* [1.17.1](https://javadocs.olziedev.com/spigot/1.17.1/org/bukkit/inventory/ItemFlag.html)
* [1.18.2](https://javadocs.olziedev.com/spigot/1.18.2/org/bukkit/inventory/ItemFlag.html)
* [1.19.4](https://javadocs.olziedev.com/spigot/1.19.4/org/bukkit/inventory/ItemFlag.html)
* [1.20.6](https://javadocs.olziedev.com/spigot/1.20.6/org/bukkit/inventory/ItemFlag.html)
* [1.21.4](https://javadocs.olziedev.com/spigot/1.21.4/org/bukkit/inventory/ItemFlag.html)
* [Latest](https://javadocs.olziedev.com/spigot/latest/org/bukkit/inventory/ItemFlag.html)

#### Enchantments

Here is a list of all the valid item enchantments that you can use on your items in Player Businesses for each version of Minecraft.

* [1.8.8](https://javadocs.olziedev.com/spigot/1.8.8/org/bukkit/enchantments/Enchantment.html)
* [1.9.4](https://javadocs.olziedev.com/spigot/1.9.4/org/bukkit/enchantments/Enchantment.html)
* [1.10.2](https://javadocs.olziedev.com/spigot/1.10.2/org/bukkit/enchantments/Enchantment.html)
* [1.11.2](https://javadocs.olziedev.com/spigot/1.11.2/org/bukkit/enchantments/Enchantment.html)
* [1.12.2](https://javadocs.olziedev.com/spigot/1.12.2/org/bukkit/enchantments/Enchantment.html)
* [1.13.2](https://javadocs.olziedev.com/spigot/1.13.2/org/bukkit/enchantments/Enchantment.html)
* [1.14.4](https://javadocs.olziedev.com/spigot/1.14.4/org/bukkit/enchantments/Enchantment.html)
* [1.15.2](https://javadocs.olziedev.com/spigot/1.15.2/org/bukkit/enchantments/Enchantment.html)
* [1.16.5](https://javadocs.olziedev.com/spigot/1.16.5/org/bukkit/enchantments/Enchantment.html)
* [1.17.1](https://javadocs.olziedev.com/spigot/1.17.1/org/bukkit/enchantments/Enchantment.html)
* [1.18.2](https://javadocs.olziedev.com/spigot/1.18.2/org/bukkit/enchantments/Enchantment.html)
* [1.19.4](https://javadocs.olziedev.com/spigot/1.19.4/org/bukkit/enchantments/Enchantment.html)
* [1.20.6](https://javadocs.olziedev.com/spigot/1.20.6/org/bukkit/enchantments/Enchantment.html)
* [1.21.4](https://javadocs.olziedev.com/spigot/1.21.4/org/bukkit/enchantments/Enchantment.html)
* [Latest](https://javadocs.olziedev.com/spigot/latest/org/bukkit/enchantments/Enchantment.html)




---

[Next Page](https://docs.olziedev.com/llms-full.txt/1)

