# Getting Started

Home of all the documentation for Zithium Plugins

{% hint style="danger" %}
Support is only given to verified buyers of our plugins. If you have an issue that can't be solved within this documentation please join our [Discord](https://discord.com/invite/DEUvU2vgnH) and verify to receive further support.
{% endhint %}


# Item Options

Here you can find all the various options our item builder supports for all of our plugins.

None of these are required our plugins only require the material option to be defined.


# Text Colors (RGB)

All Zithium plugins support RGB in nearly all of their messages.

Zithium Plugins use [MiniMessage](https://docs.advntr.dev/minimessage/) to support easy gradients and other cool features.

### Example:

Here you can find a simple example of how to do a RGB gradient using MiniMessage

```yaml
example-message: '<gradient:yellow:white:gold>Hello, This messages goes from Yellow -> White -> Gold</gradient>'
```

It's just that simple. Another example tag you could use is a rainbow<br>

```yaml
example: '<rainbow>This message will be a rainbow!</rainbow>'
```

There are a lot more cool features you can use you can read more about them on the official [MiniMessage Documentation](https://docs.advntr.dev/minimessage/format.html)


# FAQ

This page contains common questions and the answers to those questions.

Last Updated: `1/1/2025`

***

## How do I add custom heads?

All of our plugins support using Base64 heads for any configurable material. Below you will find an example of how to use them.

### Step 1: Obtain the code

To add a custom head you must first get the Base64 code you can do this by heading to [minecraft-heads.com](https://minecraft-heads.com/) and searching for the head you wish to display.

Once you are on the page scroll down to the bottom and under the "**For Developers:**"  section you will find a box labeled "Value" this is the Base64 code you will need.

<figure><img src="https://1380395952-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhne31Gy8WmBmQDlLmX1m%2Fuploads%2F8dFIb8NSi8SAujImclco%2Fimage.png?alt=media&amp;token=077ab0ec-2e78-4d65-b0de-eaa3a5dcc652" alt=""><figcaption></figcaption></figure>

### Step 2: Modify the configuration file of the plugin.

The next step is to head over to the configuration you wish to edit. For this example we will use an item from [ZithiumMobcoins](https://builtbybit.com/resources/zithium-mobcoins.29746/).

```yaml
    balance_item:
      # The material must be PLAYER_HEAD for the skull to display.
      material: PLAYER_HEAD
      # This is where you will ender the "value" that you copied.
      base64: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWYzODAwMDgxYWQ5OWQyOTkyZjQ4MzZmYzMyMmRiYmY4ZjAwY2Y1MzNiNGZiNzMxYWIxZWMwNmE0NDVmNjBkYiJ9fX0=
      display_name: "&e&lBalance"
      lore:
        - ""
        - "&7Souls: &e{BALANCE}"
      slot: 26
```

That is all there is to it. Any item can be displayed as a head if configured correctly.&#x20;

***


# ZithiumTags


# Menu Options

The menus in SaveTags are very flexible and have a lot of options to make changing them easier.


# ZithiumMobCoins


# Commands & Permissions

On this page you can find all the different commands & permissions included in the plugin.

{} = Required argument

\[] = Optional argument.

## Commands:

### &#x20;**Player Commands:**

* /`mobcoins`- The base command that opens up the gui. \[/transfer as an alias]
* `/mobcoins help` - Displays an in-game list of commands.
* `/mobcoins balance [username]` - Displays the balance of the user.
* `/mobcoins pay {username}` - Allows a user to pay mobcoins to another user.&#x20;
* `/mobcoins toggle actionbar` - Toggles the action bar notifications for the user.
* `/mobcoins toggle summary` - Toggles the chat summary for the user.

### &#x20;Admin Commands:

* `/mobcoins add {username} {amount}` - Gives a user the specified amount of mobcoins.
* `/mobcoins set {username} {amount}` - Sets the target user's coins to the specified amount.
* `/mobcoins take {username} {amount`} - Takes the specified amount of coins from the target user.
* `/mobcoins refresh {shop_name}` - Refreshes the inventory of a shop if it is a rotating shop.
* `/mobcoins reload` - Reloads the plugin and shops.

## Permissions:

### Player Permissions:

* `zithiummobcoins.command.pay` - Grants access to the pay command.
* `zithiummobcoins.command.balance` - Grants access to the balance command.
* `zithiummobcoins.command.toggle` - Grants access to the toggle commands.

**Admin Permissions:**

* `zithiummobcoins.admin` - Grants access to all admin related commands.


# Placeholders

Here you can find the various placeholders for PlaceholderAPI

## PlaceholderAPI Placeholders

* `%mobcoins_balance%` - Returns the raw mobcoin balance.
* `%mobcoins_balance_formatted%` - Returns a formatted balanced.
* `%mobcoins_refresh_time_<shop>%` - Returns time until next refresh of a rotating shop.


# Menu Options

Here you can find some examples for various options you can use in the menus to make them look good.

## Glowing Items:

To make an item glow just simply add the following line to the item.

```yaml
glow: true
```

Example:

```yaml
  '1':
    material: EMERALD
    display_name: "&a$5,000"
    glow: true
    lore:
      - ""
      - "&6Price: &f{COST} Coins"
      - ""
      - "&eLeft-Click for bulk buy"
      - "&eRight-Click for 1x item."
    cost: 25000
    commands:
      - "eco give {PLAYER} 5000"
```

***

## Disabling Bulk Purchases

To disable the bulk buy menu for an item simply add the following line to the item.

```yaml
bulk_buy: false
```

Example:

```yaml
  '1':
    material: EMERALD
    display_name: "&a$5,000"
    glow: true
    bulk_buy: false
    lore:
      - ""
      - "&6Price: &f{COST} Coins"
      - ""
      - "&eLeft-Click for bulk buy"
      - "&eRight-Click for 1x item."
    cost: 25000
    commands:
      - "eco give {PLAYER} 5000"
```


# DeluxeWithdraw Add-on

This add-on provides the ability to hook into DeluxeWithdraw below you can find out how.

**Download:** *Soon*

This add-on requires DeluxeWithdraw to be installed on the server to function it will disable without ZithiumMobCoins & DeluxeWithdraw both present.

## Installation:

To install this add-on simply drag the \`ZithiumMobCoinsDWBridge.jar\` to your server's `/plugins` folder and restart the server. *(It is not recommended to use `/reload` at any point for any reason always restart!)*

## **Configuration:**

Here we will show you how to configure DeluxeWithdraw to work with this addon.

```yaml
   mobcoin_default:
      item:
         name: '&6Coin Pouch'
         lore:
         - '&aValue: &f{0} Coins'
         - '&aCreated by: &f{1}'
         - '&eClick to redeem.'
         material: 'SUNFLOWER'
         materialData: 0
         customModelData: 0
         glow: true
         itemFlags:
         - 'HIDE_ATTRIBUTES'
         - 'HIDE_ENCHANTS'
         - 'HIDE_PLACED_ON'
         typeName: '&7&nDefault - MobCoins'
      settings:
         tax: 0
         provider: "ZITHIUMMOBCOINS"
```

Place the following in the `items.yml` file located in `/plugins/DeluxeWithdraw` make sure both ZithiumMobCoins, ZithiumMobCoinDWBridge, & DeluxeWithdraw are installed.

## Commands:

The commands to withdraw mobcoins can be found below.

* `/mcwithdraw {amount}`
* `/mobcoinwithdraw {amount}`


# ZithiumBuckets

An infinite bucket plugin to improve the player experience.


# Default Files

Here you can find the default configuration files encase you need to reference them.

**Default Configuration File:**

```yaml
settings:
  # Should buckets cost money to be used? Set the price per-bucket below. Requires Vault
  buckets-cost-to-use: false

  # Should the lava bucket be allowed to smelt infinitely. If disabled bucket can not be placed in furnace.
  lava-bucket-not-used-when-smelting: true

water-bucket:
  material: WATER_BUCKET # DO NOT CHANGE
  display_name: "<gradient:aqua:white:aqua><b>Infinite Water Bucket"
  glow: true
  lore:
    - "<dark_gray>Infinite Bucket"
    - ""
    - "<white>This bucket will never run out!"
    - ""
    - "<yellow>Click to use."
  price-per-use: 15

lava-bucket:
  material: LAVA_BUCKET # DO NOT CHANGE
  display_name: "<gradient:red:white:red><b>Infinite Lava Bucket"
  glow: true
  lore:
    - "<dark_gray>Infinite Bucket"
    - ""
    - "<white>This bucket will never run out!"
    - ""
    - "<yellow>Click to use."
  price-per-use: 10

messages:
  no-permission: '<red>You do not have permission to use this command!'
  not-enough-money: '<red>You do not have enough money to use this bucket. <gray>You need $%price%'
  reloaded: '<green>The plugin has been reloaded!'

  bucket-given-target: '<green>You have been given a %type% infinite bucket!'
  bucket-given-sender: '<green>You have given %target% a %type% infinite bucket!'

  bucket-used-cost: '<green>You''ve used an infinite bucket and have been charged $%price%'

  invalid-command: '<red>This command is invalid. Usage: <gray>/buckets give {username} {type}'
  invalid-player: '<red>That player is either offline or invalid. Usage: <gray>/buckets give {username} {type}'
  invalid-bucket-type: '<yellow>That bucket type is invalid. Types are: <white>Lava<yellow>,<white> Water'

  help:
    - '<reset>'
    - '<gradient:green:white:green><b>SaveBuckets</b>'
    - '<gray>By ItzSave'
    - '<reset>'
    - '<green>/buckets give {username} {type} <dark_gray>- <white>Gives a user a bucket.'
    - '<green>/buckets reload <dark_gray>- <white>Reloads the config'
    - '<reset>'
```


# Zithium Collectors


# Commands & Permissions

Here you can find all the commands and permissions for Zithium Collectors

***

### collectors.use

This permission grants basic access to the various functions of the plugin.

***

### collectors.admin

This permission grants admin permission to the plugin such as the reload command and the ability to remove collectors they do not own.

***


# Configuration

Here you can find the latest version of the config.yml

```yaml
# ZithiumCollectors
#
# Admin permission: collectors.admin
#
# Dependencies:
#  - A Shop plugin (see list below)
#  - Hologram Plugin (DecentHolograms [RECOMMENDED], HolographicDisplays, CMI)
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# | PLUGIN MESSAGES                          |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

# Which plugin should we use for prices?
# Valid options: Auto, CMI, EconomyShopGUI, Essentials, ExcellentShop, GUIShop, newtShop, QuantumShop, ShopGUIPlus, zShop.
prices_provider: Auto

messages:
  no_permission: "&cYou do not have permission to execute this command."
  reload: "&aThe plugin has been reloaded."
  help_message:
    - ""
    - " &b&lZithiumCollectors &7{VERSION}"
    - " &7&oBy Zithium Studios"
    - " &r"
    - " &7/collectors give <player> <type> [amount] &8- &fGive a player a collector"
    - " &7/collectors view &8- &fView your active collectors"
    - " &7/collectors reload &8- &fReload configuration"
    - ""

  list_collectors: "&7Registered Collector(s): &f{collectors}"
  error_chunk_taken: "&7This chunk is unavailable as it already contains a collector."
  error_collector_type_unavailable: "&7The collector type associated with this item is no longer available."
  error_no_access: "&cYou do not have access to this collector."
  error_no_collectors: "&cYou currently do not have any collectors!"
  error_collector_already_open: "&cSomeone is already accessing this collector!"
  error_owner_only: "&cOnly the owner of this collector can use this."
  error_inventory_full: "&cYour inventory is currently full!"
  error_world_disabled: "&cYou are not allowed to place collectors in this world!"

  given_collector: "&7You have given &f{PLAYER} &7x{AMOUNT} &a{TYPE} &7collector(s)."
  placed_collector: "&7You have successfully placed a &a{TYPE} &7collector!"
  player_removed_from_collector: "&7You have removed &f{PLAYER} &7from this collector."
  autosell_enable: "&aAutoSell mode has been enabled."
  autosell_disable: "&cAutoSell mode has been disabled."

  items_autosell_sold: "&e&lCollector AutoSell: &a&l+ ${AMOUNT}"
  items_sold: "&a&l+ ${AMOUNT}"
  items_withdrawn: "&aSuccessfully withdrawn {AMOUNT}x {MATERIAL}."

  invite_player_prompt: "&7Please enter the username of the player you would like to add or type 'cancel' to cancel."
  invite_cancelled: "&cCancelled!"
  invite_target_invalid: "&cThat player is invalid or offline - cancelled."
  invite_target_already_member: "&c{PLAYER} is already a member of this collector."
  invite_target_added: "&aYou have successfully added {PLAYER} to this collector."

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# | COLLECTORS CONFIGURATION                 |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

# Time for all collectors to autosell (in minutes)
autosell_task_period: 3

# Should the plugin print a message when the auto save task runs. THIS DOES NOT DISABLE THE TASK ITSELF
log_collector_saving: true

# Time for all collectors to auto save (in minutes)
autosave_task_period: 5

# Should collectors be logged when removed or placed down.
log_collector_movement: false

# How often should the hologram placeholder update. (in seconds)
hologram_update_delay: 15

# What worlds should collectors be not allowed to be placed in?
disabled-worlds:
  - example_world

collector_types:
  crop: # <-- NOTE: CHANGING ID ON LIVE SERVER WILL BREAK EXISTING COLLECTORS
    item:
      material: BEACON
      display_name: "&6&l* &e&lCROP HOPPER &6&l"
      lore:
        - "&7Place to activate."
    block: BEACON
    autosell: true
    hologram_y_offset: 1.5 # height of hologram above collector
    # Hologram Placeholders:
    # - {OWNER} - Returns the owner of the collector.
    # - {TOTAL_WORTH} - Returns the total value of all items in the collector.
    hologram:
      - '&6&l* &e&lCROP HOPPER &6&l*'
    collection_items:
      - WHEAT
      - POTATO
      - PUMPKIN
      - CARROT
      - SUGAR_CANE
      - MELON_SLICE
      - CACTUS
  mobs:
    item:
      material: BEACON
      display_name: "&3&l* &b&lMOB HOPPER &3&l*"
      lore:
        - "&7Place to activate."
    block: BEACON
    autosell: true
    hologram_y_offset: 1.5
    hologram:
      - '&3&l* &b&lMOB HOPPER &3&l*'
    collection_items:
      - ROTTEN_FLESH
      - BONE

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
# | MENUS CONFIGURATION                      |
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#

menus:
  all_collectors_gui:
    title: "All Collectors"
    rows: 5

    filler_items:
      glass:
        material: GRAY_STAINED_GLASS_PANE
        display_name: "&r"
        slots: [ 0-9, 17-18, 26-27, 36-44 ]

    items:
      sell_all_owned:
        material: NETHER_STAR
        display_name: "&e&lSell All &a(Owned)"
        lore:
          - "&6&l*&r &7Click to &e&l&nSELL ALL&r &7collectors."
        slot: 40

      sell_all_member:
        material: NETHER_STAR
        display_name: "&e&lSell All &7(Trusted)"
        lore:
          - '&fSell all the items from collectors you are trusted in.'
          - "&6&l*&r &7Click to &e&l&nSELL ALL&r &7collectors."
        slot: 43

      next_page:
        material: PAPER
        display_name: "&e&lNext Page"
        lore:
          - "&7Click to go to the next page."
        slot: 41

      previous_page:
        material: PAPER
        display_name: "&c&lPrevious Page"
        lore:
          - "&7Click to go to the previous page."
        slot: 39

      collector_item:
        display_name: "&eX: &f{X}&e, Y: &f{Y}&e, Z: &f{Z}"
        lore:
          - ''
          - '&6&l*&r &eOwner: &f{OWNER}'
          - ''
          - '&eClick to manage this hopper.'



  collector_gui:
    title: "Collector"
    rows: 5

    filler_items:
      glass:
        material: GRAY_STAINED_GLASS_PANE
        display_name: "&r"
        slots: [ 0-9, 15-18, 24-27, 33-44 ]

    items:
      manage_members:
        material: PLAYER_HEAD
        base64: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjc4NTZlNzNlZjZlNDA2ZTE4YTFlODRmMTM3ZTI3Y2RhYWQ3OTQyOWRhMGIwOGQxOTVhNmIyMjIyMjMxNDhkIn19fQ==
        display_name: "&e&lManage Members"
        lore:
          - "&7Click here to manage members."
        slot: 16
      remove_collector:
        material: BARRIER
        display_name: "&c&lRemove Collector"
        lore:
          - "&7Click here to remove your Collector."
        slot: 34
      sell_all:
        material: PAPER
        display_name: "&e&lSell All &7(x{AMOUNT})"
        lore:
          - ""
          - "&6Collector Worth: &f${TOTAL_WORTH}"
          - ""
          - "&6&l*&r &7Click to &esell all"
        slot: 24
      autosell_slot: 26
      autosell_enable:
        material: GRAY_DYE
        display_name: "&e&lAutoSell Toggle"
        lore:
          - ""
          - "&aClick to enable autosell"
      autosell_disable:
        material: LIME_DYE
        display_name: "&e&lAutoSell Toggle"
        lore:
          - ""
          - "&cClick to disable autosell"
      collection_item:
        display_name: "&e{MATERIAL} &7(x{AMOUNT})"
        lore:
          - ""
          - "&6Total Worth: &f${TOTAL_WORTH} &7[${WORTH}x{AMOUNT}]"
          - ""
          - "&6&l*&r &7Left click to &esell all"
          - "&6&l*&r &7Right click to &ewithdraw all"
      next_page:
        material: PAPER
        display_name: "&e&lNext Page"
        lore:
          - "&7Click to go to the next page."
        slot: 40
      previous_page:
        material: PAPER
        display_name: "&c&lPrevious Page"
        lore:
          - "&7Click to go to the previous page."
        slot: 38

  members_gui:
    title: "Member Management"
    rows: 5

    filler_items:
      glass:
        material: GRAY_STAINED_GLASS_PANE
        display_name: "&r"
        slots: [ 0-9, 15-18, 24-27, 33-44 ]

    items:
      invite_member:
        material: PLAYER_HEAD
        base64: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTdlZDY2ZjVhNzAyMDlkODIxMTY3ZDE1NmZkYmMwY2EzYmYxMWFkNTRlZDVkODZlNzVjMjY1ZjdlNTAyOWVjMSJ9fX0=
        display_name: "&6&lAdd Member"
        lore:
          - "&7Add a member to your collector"
        slot: 16
      go_back:
        material: PLAYER_HEAD
        base64: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzYyNTkwMmIzODllZDZjMTQ3NTc0ZTQyMmRhOGY4ZjM2MWM4ZWI1N2U3NjMxNjc2YTcyNzc3ZTdiMWQifX19
        display_name: "&c&lGo back"
        lore:
          - "&7Return to the main menu"
        slot: 34
      member:
        display_name: "&b{PLAYER}"
        lore:
          - "&6Amount Sold: &f${AMOUNT_SOLD}"
          - "&6Items Withdrawn: &f{ITEMS_WITHDRAWN}"
          - ""
          - "&cClick to remove this member (owner only)."

        display_name_owner: "&b{PLAYER} &7(Owner)"
        lore_owner:
          - "&6Amount Sold: &f${AMOUNT_SOLD}"
          - "&6Items Withdrawn: &f{ITEMS_WITHDRAWN}"
```


# Developer API

Developers can use our API to link into various functions of the plugin and modify them.

<https://github.com/itzsave/zithiumcollectorsapi>


# XLTournaments

Welcome to the documentation for XLTournaments.

<mark style="color:red;">**This documentation is in the process of being revamped and updated. Some information may be missing.**</mark>

<figure><img src="https://1380395952-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhne31Gy8WmBmQDlLmX1m%2Fuploads%2FISmB5YfIVdlHYGugwDet%2Fheader.png?alt=media&amp;token=5c4bcf4e-0586-4bdb-add4-49094ffbb6d9" alt=""><figcaption></figcaption></figure>

In this documentation you can find all the information needed to setup and configure XLTournaments to fit your server.


# Commands and Permissions

Here you can find all the XLTournaments commands and permissions

{% hint style="warning" %}
Args encased in { } are required for the command. Args encased in < > are optional.
{% endhint %}

{% hint style="info" %}
The base command for the plugin is /tournaments. However you can define aliases for the commands in the `config.yml`
{% endhint %}

{% hint style="info" %}
You can obtain the information for the `{tournament}` argument by tab completion.

Alternatively the name of the tournament's YAML file can be used.
{% endhint %}

***

## /tournament

This is the base command. It will open up the tournament menu for anyone who runs the command.

Permission: `This command has no permission`

***

## /tournament about

This command displays information about the plugin such as version, and who the plugin is registered to.

Permission: `This command has no permission`

***

## /tournament help

This command displays the help message in chat which lists off commands.

Permission: `tournaments.admin` or `tournaments.command.help`

***

## /tournaments reload

This command reloads the plugin and will reload the configuration files such as menu.yml, config.yml, messages.yml. It will also load any new tournaments.

Permission: `tournaments.admin` or `tournaments.command.reload`

***

## /tournaments list

This command will display a list of all the currently loaded tournaments regardless if they are active or not.

Permission: `tournaments.admin` or `tournaments.command.list`

***

## /tournaments info {tournament}

This command displays info about a specfic tournament.&#x20;

Permission: `tournaments.admin` or `tournaments.command.info`

***

## /tournaments update {tournament}

This command forces a tournament to update and will update data such as the leaderboard & scores.

Permission: `tournaments.admin` or `tournaments.command.update`

***

## /tournaments end {tournament}

This command will forcefully stop an on-going tournament.

Permission: `tournaments.admin` or `tournaments.command.end`

***

## /tournaments clear {tournament}

This command will clear all data for an on-going tournament and reset scores & leaderboards

Permission: `tournaments.admin` or `tournaments.command.clear`

***

## /tournaments clearplayer {player} {tournament}

This command will clear playerdata from an on-going tournament.

Permission: `tournaments.admin` or `tournaments.command.clearplayer`

***

## /tournaments forcejoin {player} {tournament}

This command will add a player to a tournament

Permission `tournaments.admin` or `tournaments.command.forcejoin`

***

## /tournaments forcejoin all {tournament}

This command will add all online players to a tournament.

Permission: `tournaments.admin` or `tournaments.command.forcejoin`

***


# Objective Types

XLTournaments has a bunch of objectives to make awesome tournaments with.

{% hint style="danger" %}
**WARNING ABOUT POTION BREWING**

As of version 3.13.5 the POTION\_BREW objective is highly experimental. There is a chance for exploits with it regarding tournament scores. This is just due to the way the method must be made as there is no easy way to track potion brewing via the API
{% endhint %}

## Internal Objectives (7)

These objectives require no external plugins to work. Simply install XLTournaments and you're done.

***

### BLOCK\_BREAK

This objective requires users to break blocks in order to score points in the tournament.

#### Optional Settings:

{% hint style="info" %}
These settings can be added to your tournament file to change the way the tournament behaves.
{% endhint %}

**Exclude Placed Blocks:**

This setting will prevent blocks placed by players from counting in the tournament.

Setting: `exclude_placed_blocks: true/false`

**Block Whitelist**

This setting allows you to define what blocks count in the tournament instead of every block counting.

Setting:

```yaml
block_whitelist:
 - GRASS_BLOCK
 - COBBLESTONE
```

***

* **BLOCK\_PLACE** - Place the most blocks.

  * ***OPTIONAL CONFIG SETTING:*** ***'***&#x62;lock\_whitelist' (only these blocks will be counted):
  * Example: `block_whitelist: [GRASS_BLOCK]`

* **ITEM\_CRAFT;\<ITEM>** - Craft a specific item.

  * Example: `objective: ITEM_CRAFT;BEACON`

* **MOB\_KILLS** - Kill the most mobs.

  * ***OPTIONAL CONFIG SETTING:*** `mob_whitelist`: (only these mob types will be counted):
  * Example: `mob_whitelist: [SHEEP, COW]`
  * ***OPTIONAL CONFIG SETTING:*** `player_kills_only: true/false` Requires all kills to be by a player only.

* **PLAYER\_FISH** - Capture the most fish.

* **PLAYER\_KILLS** - Kill the most players.

* **PLAYER\_CONSUME** - Consume the most food.

* **PLAYTIME** - Play on the server the longest.

* **POTION\_BREW** - Brew the most potions

***

## External Objectives

These objectives require an external plugin to be installed in order for them to work.

{% hint style="danger" %}
Objectives for plugins that have been removed off spigot have a chance of being removed from the plugin.&#x20;
{% endhint %}

***

### [BedWars1058](https://www.spigotmc.org/resources/bedwars1058-the-most-modern-bedwars-plugin-bungee-scalable-bungee-legacy-multi-arena-shared.50942/) (v21.2)

* **BEDWARS1058\_BED\_BREAK** - Break the most beds.
* **BEDWARS1058\_KILLS** - Kill the most players.
* **BEDWARS1058\_FINAL\_KILLS** - Get the most final kills.
* **BEDWARS1058\_LEVEL\_UP** - Level up your stats.
* **BEDWARS1058\_WINS** - Win the most bedwars games.

### [ChatReaction](https://www.spigotmc.org/resources/chatreaction.3748/) (v1.8.0)

* **CHATREACTION\_WINS** - Win the most chat reactions.

### [ClueScrolls](https://www.spigotmc.org/resources/%E2%AD%90-cluescrolls-%E2%AD%90-%E2%95%91-1-8-to-1-20-250-clue-types-new-default-config-rewards.30276/) (v4.0.0)

* **CLUESCROLLS\_CLUE\_COMPLETE** - Complete the most clues on any scroll.
* **CLUESCROLLS\_SCROLL\_COMPLETE** - Complete the most scrolls.

### [CrazyCrates](https://modrinth.com/plugin/crazycrates/)

* **CRAZYCRATES\_OPEN** - Open the most crazy crates.

### [CrazyEnvoy](https://modrinth.com/plugin/crazyenvoys)

* **CRAZYENVOY\_OPEN** - Open the most envoy crates.

### [EssentialsX](https://www.spigotmc.org/resources/essentialsx.9089/) (v2.18.2)

* **ESSENTIALS\_BALANCE\_RECEIVE** - Receive the most money (excluding /pay).
* **ESSENTIALS\_BALANCE\_SPEND** - Spend the most money (excluding /pay).

### [ExcellentCrates](https://www.spigotmc.org/resources/excellentcrates-advanced-custom-crates-milestones.48732/) (v4.4.2)

* **EXCELLENTCRATES\_OPEN** - Open the most crates.

### [MythicMobs](https://www.spigotmc.org/resources/%E2%9A%94-mythicmobs-free-version-%E2%96%BAthe-1-custom-mob-creator%E2%97%84.5702/) (v4.9.1)

* **MYTHICMOBS\_KILLS** - Kill the most mythic mobs.

### [ODailyQuests](https://www.spigotmc.org/resources/odailyquests-daily-quests-plugin-1-16-1-20.100990/) (v2.2.3)

* **ODAILYQUESTS\_COMPLETE** - Complete the most daily quests.

### [PlaceholderAPI ](https://www.spigotmc.org/resources/placeholderapi.6245/)(v2.10.9)

* **PLACEHOLDERAPI;\<placeholder without %>** - Use PlaceholderAPI placeholders (must resolve to integer placeholder). By using this objective, the current score value is replaced, not added.
  * Example: `PLACEHOLDERAPI;vault_eco_balance`


# PlaceholderAPI

Here you can find the internal placeholders for use with plugins that support [PlaceholderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/)

{% hint style="info" %}
The \<TOURNAMENT ID> is the name of the tournament's YAML file. For example: `block_break_tournament`
{% endhint %}

* `%xltournaments_<TOURNAMENT ID>_score%` - Returns player score in tournament.
* `%xltournaments_<TOURNAMENT ID>_position%` - Returns player position in tournament.
* `%xltournaments_<TOURNAMENT ID>_leader_name_<POSITION>%` - Returns player name in a specific position.
* `%xltournaments_<TOURNAMENT ID>_leader_score_<POSITION>%` - Returns player score in a specific position.
* `%xltournaments_<TOURNAMENT ID>_time_remaining%` - Returns time remaining for tournament.
* %xltournaments\_\<TOURNAMENT ID>\_start\_month% - Returns start month for tournament.
* `%xltournaments_<TOURNAMENT ID>_start_month_number%` - Returns start month number for tournament.
* `%xltournaments_<TOURNAMENT ID>_end_month%` - Returns end month for tournament.
* `%xltournaments_<TOURNAMENT ID>_end_month_number%` - Returns end month number for tournament.
* `%xltournaments_<TOURNAMENT ID>_start_day%` - Returns start day number for tournament.
* `%xltournaments_<TOURNAMENT ID>_end_day%` - Returns end day number for tournament


# Configuration Files

Default configuration files for XLTournaments

Here you can find copies of the default configuration files for reference.&#x20;

***

## General Configurations:

These are the basic configuration files such as for the tournament GUI and the messages file.

{% file src="/files/TYy4YQTybsepVenZXGCk" %}

{% file src="/files/ZVmxI8juxQfplpKjrsjI" %}

{% file src="/files/S9KdilhkbDQWd96qz4oz" %}

***

## Tournament Files

These are the default tournament configurations included in the plugin. You can delete these or add new ones as you please.

{% file src="/files/ntBh9XNykKVhdVCBpd0C" %}

{% file src="/files/PHZcTH0caKZIKijTld5e" %}

{% file src="/files/VHdVpXfdHQFx5bFVvKpp" %}


# Developer API


# Events

XLTournaments has a few events you can listen to in your plugin to execute certain actions.

* **TournamentStartEvent** - Called when a tournament has started.
* **TournamentEndEvent** - Called when a tournament has ended.
* **CompletedChallengeEvent** - Called when a player has completed a challenge tournament


# Custom Objectives

This guide will explain how to add your very own objective to XLTournaments.

Creating a custom objective is a fairly straight forward process. First of all, ensure you have the API dependency loaded into your project and set it as a depend in your plugin.yml file.

***

Create your objective class that extends `XLObjective`. In this example, I will create a class called `PlaceObjective` which will track block placement:

```java
public class PlaceObjective extends XLObjective {
}
```

You will need to create a constructor matching the super class. Your IDE may prompt you to do so. Inside the  `super(...);` you will add your objective identifier. In this case, it's called "BLOCK\_PLACE" and you'd use this in the tournament configuration.

```java
public class PlaceObjective extends XLObjective {

    public PlaceObjective() {
        super("BLOCK_PLACE");
    }
    
}
```

Next we'll need to add the `loadTournament` method, this will allow you to load any objective exclusive settings from each tournament configuration file:

```java
public class PlaceObjective extends XLObjective {

    public PlaceObjective() {
        super("BLOCK_PLACE");
    }
    
    @Override
    public boolean loadTournament(FileConfiguration config) {
        // Load optional or required values from config
        
        // Return true if successful load, otherwise false and the tournament being loaded will be disabled
        return true;
    }
    
}
```

Finally, we add our event listener (and method contents) to track block placement:

{% hint style="warning" %}
You do **not** need to register the events in this class as this is done by XLT internally in the super class.
{% endhint %}

```java
public class PlaceObjective extends XLObjective {

    public PlaceObjective() {
        super("BLOCK_PLACE");
    }

    @EventHandler(priority = EventPriority.HIGH)
    public void onBlockPlace(BlockPlaceEvent event) {
        Player player = event.getPlayer();
        
        for(Tournament tournament : getTournaments()) {
            if(canExecute(tournament, player)) {
                tournament.addScore(player.getUniqueId(), 1);
            }
        }
    }

}
```

We need to get all active tournaments which use the block place objective and using the `canExecute` method we if the user is a participant and has finished the challenge (if applicable) and if they are in a disabled world. We can then add the score directly to the tournament passing the UUID of the player and the amount of points to add. We add 1 point in this example as this is represents one block broken.

### Register the objective

Now we simply need to register the objective as shown below.

```java
// Accessing the API
XLTournamentsAPI api = (XLTournamentsAPI) Bukkit.getPluginManager().getPlugin("XLTournaments");

// Register (internal) objective
api.registerObjective(new PlaceObjective());
```

If your objective requires an external plugin (we will check if the plugin is enabled) then use:

```java
// Register objective requiring an external dependency
api.registerObjective(new PlaceObjective(), "RequiredPlugin");
```

{% hint style="danger" %}
Make sure XLTournaments has been added as a depend in your `plugin.yml` to ensure it loads correctly.
{% endhint %}


# Calendars

This page will explain how tournament calendars work.

{% hint style="danger" %}
As of version `v3.18.0-BETA`calendars are in BETA, meaning there may be issues or missing functions!
{% endhint %}

{% hint style="info" %}
Tournament calendars were added in version `v3.18.0`.
{% endhint %}

## Creating a Calendar

To create a calendar, create a new file in the calendar folder located at `/plugins/xltournaments/calendars/` .

There can be more than one calendar at a time so long as they have different names.

Example Calendar

```yaml
# How long should each tournament in this calendar run?
# Supported values: HOURLY, DAILY, WEEKLY, MONTHLY
timeline: WEEKLY

# Should the calendar loop back to the first tournament after the last one ends?
# If false when the last tournament is run it will stop.
loop: true

# Should the next tournament be picked randomly from the list?
# If set to false it runs the list in order.
randomize: false

# The ordered list of tournaments to cycle through.
# Each entry must match the filename (without .yml) of a tournament
tournaments:
  - block_break_tournament
  - item_craft_challenge_tournament
  - player_kills_tournament
```

## Calendar Options

Here we will explain what each option does.

### Timeline

The timeline option functions similarly to how it does for regular tournaments. It defines how long each tournament in the calendar will run for.

### Loop

This true/false option decides if the calendar should loop after all the tournaments are completed or just stop.

### Randomize

This true/false option decides if the tournaments should be played in a random order or if they should be played in the order they are listed in the calendar file.

### Tournaments

This is a list of tournaments that are cycled through in this calendar. For a tournament to be added, copy the name of its YAML file, ensuring you remove the `.yml` part from the end of it.

The tournament must have its Timeline set to `CALENDAR` to function correctly.


# XLAutoMiner


# DeluxeHub

Your all-in-one, essential and professional hub core

{% hint style="danger" %}
Documentation is currently being revamped; some information may be missing!
{% endhint %}

Welcome to the DeluxeHub Documentation. Here you can find all the documentation to configure and utilize DeluxeHub fully

GitHub Repository: <https://github.com/itzsave/deluxehub>

### Server Requirements <a href="#server-requirements" id="server-requirements"></a>

#### Server Software <a href="#server-software" id="server-software"></a>

{% hint style="danger" %}
Paper or a fork is highly recommended over any other server software!
{% endhint %}

You will need either **Spigot, Paper, or a similar fork** (of Spigot), which will ensure DeluxeHub runs smoothly on your server with no issues. Bukkit/CraftBukkit is not supported.

#### Server Version <a href="#server-version" id="server-version"></a>

DeluxeHub has been tested and supported on versions between **1.19 - 26.2**. Versions outside this range may not receive support. Most updates, however, are primarily tested on the latest Spigot version.

### Installation Process <a href="#installation-process" id="installation-process"></a>

#### Downloading the Latest Build <a href="#downloading-the-latest-build" id="downloading-the-latest-build"></a>

Download the latest build of DeluxeHub via the resource page [here](https://modrinth.com/plugin/deluxehub/versions) and put the file into the `\plugins` directory of your server. Ensure your server is offline before proceeding.

#### Loading DeluxeHub <a href="#loading-deluxehub" id="loading-deluxehub"></a>

Start your server and, once fully loaded, a new folder named DeluxeHub should have been created in your `\plugins` directory. If you don't see a folder, make sure you installed the plugin correctly by checking your console for errors.

Once installed, you can navigate to the DeluxeHub folder (in your plugins folder), where you will find multiple files that you can edit to configure the plugin to your liking. All the default files are&#x20;

#### Reloading the Plugin <a href="#reloading-the-plugin" id="reloading-the-plugin"></a>

Simply do `/deluxehub reload` after you have made changes to the configuration files, ensure that the file has also been saved. This will load any new changes made to the files into the plugin.

{% hint style="info" %}
If you receive any errors upon reloading, you most likely have a configuration error. This can be from invalid material names to having invalid YAML syntax. Please try to solve these issues before contacting us, this is a problem with your modifications. You can use this[^1] site to parse your configuration for YAML errors.
{% endhint %}

[^1]:


# Commands & Permissions

Information about commands and permissions.

Use `deluxehub.*` to grant access to all permissions.

{% tabs %}
{% tab title="General Commands" %}

| Command                 | Description                         | Permission                   |
| ----------------------- | ----------------------------------- | ---------------------------- |
| /deluxehub              | Help Message                        | deluxehub.command.help       |
| /deluxehub info         | Displays debug information          | deluxehub.command.help       |
| /deluxehub reload       | Reloads the configuration files.    | deluxehub.command.reload     |
| /deluxehub scoreboard   | Toggles the scoreboard (if enabled) | deluxehub.command.scoreboard |
| /deluxehub open \<menu> | Opens a custom menu.                | deluxehub.command.open       |
| {% endtab %}            |                                     |                              |

{% tab title="Hologram Commands" %}

| Command                       | Description                                    | Permission                  |
| ----------------------------- | ---------------------------------------------- | --------------------------- |
| /deluxehub holo               | Displays a list of all hologram commands.      | deluxehub.commands.hologram |
| /deluxehun holo create {name} | Creates a new hologram with the name supplied. | deluxehub.commands.hologram |
|                               |                                                |                             |
| {% endtab %}                  |                                                |                             |

{% tab title="Gamemode Commands" %}

| Command      | Description | Permission |
| ------------ | ----------- | ---------- |
|              |             |            |
|              |             |            |
|              |             |            |
| {% endtab %} |             |            |

{% tab title="Misc Commands" %}

| Command       | Description | Permission |
| ------------- | ----------- | ---------- |
|               |             |            |
|               |             |            |
|               |             |            |
| {% endtab %}  |             |            |
| {% endtabs %} |             |            |

{% hint style="info" %}
**Legend:** \[] = Optional Arguments, <> = Required Arguments
{% endhint %}


# SponsoredSlots


# DeluxeCoinflip

Here you can find all the relevant information for the DeluxeCoinflip plugin.

<figure><img src="https://1380395952-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fhne31Gy8WmBmQDlLmX1m%2Fuploads%2FFNNKl3jrWV10BfKLPpMl%2Fheader.png?alt=media&amp;token=a148242f-931b-4f30-bc0f-0ba874c13aa4" alt=""><figcaption></figcaption></figure>

Welcome to the DeluxeCoinflip documentation. Here you can find all the information to fully configure and utilize the plugin.‌

***

## Installation Process

The first step is to download the latest version of the plugin via the resource page and put the file into your `\plugins` directory of your server. Make sure your server has been stopped before doing this.

***

### Configuring the plugin

Once installed correctly, you can navigate to the DeluxeCoinflip folder where you will find multiple files of which you can edit to configure the plugin to your liking.

***

### Reloading the plugin

Simply do `/coinflip reload` after you have made your changes to the relavant file and ensured it has been saved. This will load any new changes made to the files into the plugin.

{% hint style="danger" %}
If you receive any errors upon reloading, you may have a configuration issue related to your config. This can be from invalid material names to having invalid YAML formatting. Please try to solve these issues before contacting us, this is a problem with your changes, not ours.
{% endhint %}


# Configuration

Here you can find the latest version of the default configuration file.

```yaml
# DeluxeCoinflip - Configuration
# Author: Zithium Studios
# Copyright Zithium Studios 2021 - 2025. All rights reserved.
#
# Developer API
#   https://github.com/itzsave/DeluxeCoinflipAPI

# Should the plugin report stats to https://bstats.org/
# All usage statistics are anonymous and has zero impact on performance.
metrics: true

storage:
  # Types available:
  # - SQLITE
  type: SQLITE

settings:
  # Min/max must be between 0 and 9,223,372,036,854,775,808
  minimum-bet: 1000
  maximum-bet: 1000000

  # Aliases to the '/coinflip' command
  command_aliases:
    - cf

  # Should we broadcast when a coinflip is created?
  broadcast-coinflip-creation: false

  # How much needs to be won to broadcast to everyone? Set to 0 to broadcast all winnings.
  minimum-broadcast-winnings: 1000

  tax:
    enabled: true
    rate: 5.0 # 5% tax

  # Economy providers
  #   If you are using custom provider (from our API),
  #   ensure to add the section with the provider identifier
  #   being the main key (e.g., VAULT).
  providers:
    # This economy provider will be used if the player does /cf create <amount>
    # without specifying a currency provider after the amount to use if multiple
    # providers are enabled.
    default_provider: "VAULT"

    # Vault Economy (requires Vault + economy plugin)
    # https://dev.bukkit.org/projects/vault
    VAULT:
      enabled: true
      display_currency_name: "Money"

    # TokenEnchant Economy (requires TokenEnchant plugin)
    # https://polymart.org/resource/155
    TOKENENCHANT:
      enabled: true
      display_currency_name: "TokenEnchant"

    # PlayerPoints Economy (requires PlayerPoints plugin)
    # https://www.spigotmc.org/resources/playerpoints.80745/
    PLAYERPOINTS:
      enabled: false
      display_currency_name: "PlayerPoints"

    # TokenManager Economy (requires TokenManager plugin)
    # https://www.spigotmc.org/resources/8610/
    TOKENMANAGER:
      enabled: true
      display_currency_name: "TokenManager"

    # ZithiumMobcoins integration (requires ZithiumMobcoins plugin)
    # https://www.spigotmc.org/resources/113153/
    ZITHIUMMOBCOINS:
      enabled: true
      display_currency_name: "Mobcoins"

    # BeastTokens Economy (requires BeastTokens plugin)
    # https://www.spigotmc.org/resources/20806/
    BEASTTOKENS:
      enabled: true
      display_currency_name: "Tokens"

    CUSTOM_CURRENCY:
      # Should the custom currency be enabled?
      enabled: true
      display_currency_name: "Custom"
      # This is used to check the balance of the user. BE SURE THIS DOES NOT FORMAT THE BALANCE
      raw_balance_placeholder: '%vault_eco_balance%'
      # These are the commands used to withdraw and deposit winnings to the user. They are ran by console.
      commands:
        withdraw: 'eco take {player} {amount}'
        deposit: 'eco give {player} {amount}'

# Available Placeholders
# %amount% - The amount of money won
# %winner% - The name of the winner
# %loser%  - The name of the loser
discord:
  debug: false # prints the payloads sent
  bot: # Bot will take priority over if both are enabled
    enabled: false
    token: "YOUR DISCORD TOKEN"
    channel: "channelID"
  webhook:
    enabled: false
    url: "https://discord.com/api/webhooks/ID/TOKEN"
    username: "Coin Flip"
    avatar: ""
  message:
    content: "" # this is the normal message content
    embed:
      enabled: true
      title: "%amount% %currency%"
      description: "%winner% (Winner) VS %loser%"
      color:
        r: 0
        g: 0
        b: 0
      timestamp: true

coinflip-gui:
  title: "&lFLIPPING COIN..."
  # There can only be two items here. Both must be present!
  animation:
    1:
      material: YELLOW_STAINED_GLASS_PANE
      display_name: '&r'
    2:
      material: GRAY_STAINED_GLASS_PANE
      display_name: '&r'

games-gui:
  title: "&lCOINFLIP GAMES"
  rows: 4

  # You can add more items here
  filler-items:
    border:
      material: GRAY_STAINED_GLASS_PANE
      display_name: "&r"
      slots: [ 27, 28, 29, 33, 34 ]
    stats:
      slot: 31
      material: BOOK
      display_name: "&6&l&nSTATISTICS"
      lore:
        - ""
        - "&fHere you can view your statistics"
        - "&ffrom all your Coinflip games."
        - ""
        - " &ePlayer: &f{PLAYER}"
        - ""
        - " &eWins: &f{WINS}"
        - " &eLosses: &f{LOSSES}"
        - " &eProfit: &f${PROFIT}"
        - " &eTotal Lost: &f${TOTAL_LOSSES}"
        - " &eTotal Gambled: &f${TOTAL_GAMBLED}"
        - " &eWin Percentage: &f{WIN_PERCENTAGE}%"

  # Items below here are fixed, and the ID should not be removed/changed.
  create-new-game:
    # Set false to disable the game builder gui
    enabled: true
    slot: 35
    material: NETHER_STAR
    display_name: "&a&lCreate Game"
    lore:
      - "&7Click here to create a new game!"
  coinflip-game:
    display_name: "&e{PLAYER}"
    material: PLAYER_HEAD
    lore:
      - ""
      - "&e&lWager"
      - "  &f{AMOUNT}"
      - ""
      - "&e&lCurrency"
      - "  &f{CURRENCY}"
      - ""
      - "&7&oClick here to start a Coinflip game"
  no-games:
    slot: 13
    material: BARRIER
    display_name: "&cNo games found!"
    lore:
      - ""
      - "&fThere are no active coinflip games."
      - "&fStart one with &e/coinflip create <amount>"
  error-no-funds:
    material: BARRIER
    display_name: "&cInsufficient funds!"
    lore:
      - ""
      - "&fYou do not have enough funds to play this coinflip"
  next-page:
    slot: 32
    material: PAPER
    display_name: "&2&lNext Page"
    lore:
      - "&7Click to go to the next page."
  previous-page:
    slot: 30
    material: PAPER
    display_name: "&c&lPrevious Page"
    lore:
      - "&7Click to go to the previous page."

gamebuilder-gui:
  title: "&lGAME BUILDER"
  rows: 3

  filler-items:
    border:
      material: GRAY_STAINED_GLASS_PANE
      display_name: "&r"
      slots: [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 17, 19, 20, 21, 22, 23, 24, 25 ]

  amount-items:
    plus_100:
      slot: 14
      material: PLAYER_HEAD
      base64: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWZmMzE0MzFkNjQ1ODdmZjZlZjk4YzA2NzU4MTA2ODFmOGMxM2JmOTZmNTFkOWNiMDdlZDc4NTJiMmZmZDEifX19
      display_name: '&a&l+100'
      set_amount: '+100'
    plus_500:
      slot: 15
      material: PLAYER_HEAD
      base64: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWZmMzE0MzFkNjQ1ODdmZjZlZjk4YzA2NzU4MTA2ODFmOGMxM2JmOTZmNTFkOWNiMDdlZDc4NTJiMmZmZDEifX19
      display_name: '&a&l+500'
      set_amount: '+500'
    plus_1000:
      slot: 16
      material: PLAYER_HEAD
      base64: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNWZmMzE0MzFkNjQ1ODdmZjZlZjk4YzA2NzU4MTA2ODFmOGMxM2JmOTZmNTFkOWNiMDdlZDc4NTJiMmZmZDEifX19
      display_name: '&a&l+1,000'
      set_amount: '+1000'
    minus_1000:
      slot: 10
      material: PLAYER_HEAD
      base64: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGU0YjhiOGQyMzYyYzg2NGUwNjIzMDE0ODdkOTRkMzI3MmE2YjU3MGFmYmY4MGMyYzViMTQ4Yzk1NDU3OWQ0NiJ9fX0=
      display_name: '&c&l-1,000'
      set_amount: '-1000'
    minus_500:
      slot: 11
      material: PLAYER_HEAD
      base64: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGU0YjhiOGQyMzYyYzg2NGUwNjIzMDE0ODdkOTRkMzI3MmE2YjU3MGFmYmY4MGMyYzViMTQ4Yzk1NDU3OWQ0NiJ9fX0=
      display_name: '&c&l-500'
      set_amount: '-500'
    minus_100:
      slot: 12
      material: PLAYER_HEAD
      base64: eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGU0YjhiOGQyMzYyYzg2NGUwNjIzMDE0ODdkOTRkMzI3MmE2YjU3MGFmYmY4MGMyYzViMTQ4Yzk1NDU3OWQ0NiJ9fX0=
      display_name: '&c&l-100'
      set_amount: '-100'

  currency-select:
    slot: 13
    enabled: false
    material: OAK_SIGN
    display_name: "&f&lCurrency"
    lore-header:
      - "&r"
      - "&7Amount Bet: &f{BET_AMOUNT}"
      - "&r"
      - "&eSelected Currency"
    currency_lore_selected: "&a&l{CURRENCY}"
    currency_lore_unselected: "&7{CURRENCY}"
    lore-footer:
      - "&r"
  custom-amount:
    slot: 18
    material: ANVIL
    display_name: "&6&lSet Custom Amount"
    lore:
      - "&7Click to enter a value in chat!"
  create-game:
    slot: 26
    material: LIME_DYE
    display_name: "&a&lCreate Game"
    lore:
      - "&7Click to create your game"
  error-limits:
    material: BARRIER
    display_name: "&cOut of betting limits!"
    lore:
      - ""
      - "&fYou must keep between the minimum"
      - "&fand maximum betting limits."
  error-game-exists:
    material: BARRIER
    display_name: "&cYou already have a game active!"
    lore:
      - ""
      - "&fYou must &l/cf delete &fyour current"
      - "&fgame before creating a new one."
  error-no-funds:
    material: BARRIER
    display_name: "&cInsufficient funds!"
    lore:
      - ""
      - "&fYou do not have enough to create this game"
```


# Developer API

Here you can find all the information on how to use our API to add custom economies.

Creating a custom economy provider is a fairly straight forward process. First of all, ensure you have the API dependency loaded into your project and set it as a depend in your plugin.yml file.

***

To being with we need to create a class and have it extend `EconomyProvider` some IDEs will then prompt you to add the missing values. In this example we will call our class `CustomEconomy`

```java
public class CustomEconomy extends EconomyProvider {
}

```

***

After that is finished if your IDE does not prompt you to add in the missing values you must do so manually here you can find how they should look.

```java
public class CustomEconomy extends EconomyProvider {

    public CustomEconomy(String identifier) {
        super("CUSTOM_ECONOMY");
    }

    @Override
    public void onEnable() {

    }

    @Override
    public double getBalance(OfflinePlayer player) {
        return 0;
    }

    @Override
    public void withdraw(OfflinePlayer player, double amount) {

    }

    @Override
    public void deposit(OfflinePlayer player, double amount) {

    }
}
```

Now all you must do is update each method with the relevant code to work with your plugin. It is recommended to define the API in the `onEnable` method. Below we will provide an example using the TokenManager plugin

```java
    @Override
    public void onEnable() {
        tokenManager = (TokenManager) Bukkit.getServer().getPluginManager().getPlugin("TokenManager");
    }

```

***

Now all we must do is register the objective an example of this can be seen below.

```java
// Accessing the API
DeluxeCoinflipAPI api = (DeluxeCoinflipAPI) Bukkit.getPluginManager().getPlugin("DeluxeCoinflip");

// Register the custom economy. 
// Be sure to replace YOUR_PLUGIN with the name of your plugin for it to be registered correctly.
api.registerEconomyProvider(new CustomProvider, "YOUR_PLUGIN");
```

{% hint style="danger" %}
Make sure DeluxeCoinflip has been added as a depend in your `plugin.yml` to ensure it loads correctly.
{% endhint %}


# Placeholders

Here is a list of placeholders you can use with PlaceholderAPI

* `%deluxecoinflip_games_played%` - Total number of games played.
* `%deluxecoinflip_wins%` - Number of games won.
* `%deluxecoinflip_losses%` - Number of games lost.
* `%deluxecoinflip_win_percentage%` - Win to loss ratio as a percentage.
* `%deluxecoinflip_profit%` - Total profit earned from wins.
* `%deluxecoinflip_profit_formatted%` - Formatted total profit earned from wins (e.g. 3,000,000).
* `%deluxecoinflip_display_broadcast_messages%` - Returns a true or false if the user has broadcasts enabled.


# Custom Currency

You can easily add custom currencies to DeluxeCoinflip via the use of commands and placeholders!

{% hint style="danger" %}
There can only be one custom currency at this point!
{% endhint %}

Example:

```yaml
    CUSTOM_CURRENCY:
      # Should the custom currency be enabled.
      enabled: true
      display_currency_name: "Custom"
      # This is used to check the balance of the user. BE SURE THIS DOES NOT FORMAT THE BALANCE
      raw_balance_placeholder: '%vault_eco_balance%'
      # These are the commands used to withdraw and deposit winnings to the user. They are ran by console.
      commands:
        withdraw: 'eco take {player} {amount}'
        deposit: 'eco give {player} {amount}'
```


