# Welcome to BG-Software

Here you can find useful information regarding all of our products, tutorials and more!


# Overview

WildInspect is an alternative for CoreProtect's inspect-mode. You can set required role for factions and it can be used only inside player's territories.

The plugin hooks into CoreProtect's database and retreives data from it. This way, it can alter the results as needed, and give more options than CoreProtect's inspect command. Once your players use the inspect command of WildInspect, it will act as similar as possible to CoreProtect's inspect actions, and will show data about blocks in the claims of the players.

#### Left Click

By left-clicking you can see changes made on blocks - their history of breaking and placing, who made the action and when did it happen.

#### Right Click

By right-clicking on an existing block you can see all the interactions that were made with it - opening doors, chests, etc. By right-clicking on a container, you can see all the items that were added or removed to/from it, who did it and when it happened. At last, you can also place blocks and get changes made to the placed-block's location, similar to left-clicking on it.

## Table of Contents

* [Overview](https://wiki.bg-software.com/wildinspect/overview)
  * [Supported Plugins](https://wiki.bg-software.com/wildinspect/overview#supported-plugins)

## Supported Plugins

The plugin aims to let players only view changes in their claims. The plugin currently supports the following plugins and respect their claims:

* [AcidIsland](https://www.spigotmc.org/resources/581/)
* [ASkyBlock](https://www.spigotmc.org/resources/1220/)
* [BentoBox](https://github.com/BentoBoxWorld/BentoBox/)
* [FactionsUUID](https://www.spigotmc.org/resources/1035/)
* [FactionsX](https://www.spigotmc.org/resources/83459/)
* [GriefDefender](https://www.spigotmc.org/resources/68900/)
* [GriefPrevention](https://www.spigotmc.org/resources/1884/)
* [Lands](https://www.spigotmc.org/resources/53313/)
* [Lazarus](https://www.mc-market.org/resources/11362/)
* [MassiveCore Factions](https://www.spigotmc.org/resources/1900/)
* [PlotSquared](https://www.spigotmc.org/resources/77506/)
* [SuperiorSkyblock](https://www.spigotmc.org/resources/63905/)
* [Towny](https://github.com/TownyAdvanced/Towny/)
* [Villages](https://www.spigotmc.org/resources/67871/)

Are you using a plugin that is not listed above? Make sure you request the plugin to be added on our discord server!


# Overview

WildBuster brings a new block to the game called "Chunk-Buster". This block can bust entire chunks in a moment without causing any lag to the server!

{% embed url="<https://www.youtube.com/watch?v=88uKxvmTAj8>" %}
Diamondxr showcasing the plugin
{% endembed %}

The plugin uses highly optimized technics to break blocks from the world, giving the best game expericense for your players without causing massive lags when deleting chunks. Players can place chunk busters in their claims to remove all blocks from it in a few moments. If the buster was placed by a mistake, they can reverse the operation using the cancel command!

## Table of Contents

* [Overview](https://wiki.bg-software.com/wildbuster/overview)
  * [Supported Plugins](https://wiki.bg-software.com/wildbuster/overview#supported-plugins)
* [Commands and Permissions](https://wiki.bg-software.com/wildbuster/overview/commands-and-permissions)
  * [Commands](https://wiki.bg-software.com/wildbuster/overview/commands-and-permissions#commands)
  * [Permissions](https://wiki.bg-software.com/wildbuster/overview/commands-and-permissions#permissions)

## Supported Plugins

The plugin can respect player claims provided by other plugins. The plugin currently supports the following plugins:

* [FactionsUUID](https://www.spigotmc.org/resources/1035/)
* [FactionsX](https://www.spigotmc.org/resources/83459/)
* [GriefPrevention](https://www.spigotmc.org/resources/1884/)
* [Lands](https://www.spigotmc.org/resources/53313/)
* [MassiveCore Factions](https://www.spigotmc.org/resources/1900/)
* [RedProtect](https://www.spigotmc.org/resources/15841/)
* [WorldGuard](https://dev.bukkit.org/projects/worldguard)


# Commands and Permissions

The plugin provides a few commands that can be used by your players.

## Commands

{% hint style="info" %}
Parameters inside `<>` are required, unlike parameters in `[]` which are optional.
{% endhint %}

### /buster cancel \[\<player-name> / \<chunk> ]

Cancel yours or others active chunk busters.

#### Parameters

*player-name:* The name of the player to cancel a buster for.\
The buster that will be cancelled is the buster that the player gets notification about.

*chunk:* The chunk to cancel from being busted.\
The format for the chunk is `<world-name>,<x>,<z>`.&#x20;

#### Permission

The permission to use the command is `wildbuster.cancel` for letting players to cancel their own chunk busters. In order to cancel others' busters, use `wildbuster.cancel.other`.

### /buster give \<player-name> \<buster-name> \[amount]

Give a chunk buster to a player.

#### Parameters

*player-name:* The name of the player to give the chunk buster to.

*buster-name:* The name of the buster to give.\
The name must be identical to the one from the config file.

*amount:* The amount of chunk busters to give to the player.

#### Permission

The permission to use the command is `wildbuster.give` for letting players give themselves chunk busters. In order to give to other players, use `wildbuster.give.other`.

### /buster reload&#x20;

Reload the configuration files.

#### Permission

The permission to use the command is `wildbuster.reload`.

### /buster save

Save all active chunk busters to disk.

Permission

The permission to use the command is `wildbuster.save`

## Permissions

### wildbuster.\*

Gives access to all commands and actions of the plugin.

{% hint style="danger" %}
This gives access to reload the plugin and save commands!
{% endhint %}

### wildbuster.use

Gives access for players to use chunk busters.

{% hint style="warning" %}
Without this permission, players will not be able to place chunk busters.
{% endhint %}


# Overview

WildStacker is suitable for servers with a lot of entities and drops which want to reduce the server-lag that they cause without changing the game experience.

{% embed url="<https://www.youtube.com/watch?v=Txh3rim3s-I>" %}
Diamondxr showcasing the plugin
{% endembed %}

The plugin can stack entities, items, spawners, blocks, buckets and stews - all in one plugin. It uses asynchronous tasks to ensure the best experience with least amount of lag possible. The plugin has algorithms for stacking entities that no other plugin has to prevent lag from entities.

## Table of Contents

* [Overview](https://wiki.bg-software.com/wildstacker/overview)
  * [Supported Plugins](https://wiki.bg-software.com/wildstacker/overview#supported-plugins)
    * [Custom Entities](https://wiki.bg-software.com/wildstacker/overview#custom-entities)
    * [Custom Spawners](https://wiki.bg-software.com/wildstacker/overview#custom-spawners)
    * [Additional Plugins](https://wiki.bg-software.com/wildstacker/overview#additional-plugins)
* [Commands and Permissions](https://wiki.bg-software.com/wildstacker/overview/commands-and-permissions)
  * [Commands](https://wiki.bg-software.com/wildstacker/overview/commands-and-permissions#commands)
  * [Permissions](https://wiki.bg-software.com/wildstacker/overview/commands-and-permissions#permissions)
* [Items Stacker](https://wiki.bg-software.com/wildstacker/overview/items-stacker)
  * [Stacking Algorithm](https://wiki.bg-software.com/wildstacker/overview/items-stacker#stacking-algorithm)
  * [Stacking Triggers](https://wiki.bg-software.com/wildstacker/overview/items-stacker#stacking-triggers)
* [Entities Stacker](https://wiki.bg-software.com/wildstacker/overview/entities-stacker)
  * [Stacking Algorithm](https://wiki.bg-software.com/wildstacker/overview/entities-stacker#stacking-algorithm)
  * [Stacking Triggers](https://wiki.bg-software.com/wildstacker/overview/entities-stacker#stacking-triggers)
  * [Stacking Checks](https://wiki.bg-software.com/wildstacker/overview/entities-stacker#stacking-checks)
  * [Loot Tables](https://wiki.bg-software.com/wildstacker/overview/entities-stacker/loot-tables)
    * [Loot Tables](https://wiki.bg-software.com/wildstacker/overview/entities-stacker/loot-tables#loot-tables)
    * [Loot Pairs](https://wiki.bg-software.com/wildstacker/overview/entities-stacker/loot-tables#loot-pairs)
    * [Loot Items](https://wiki.bg-software.com/wildstacker/overview/entities-stacker/loot-tables#loot-items)
    * [Loot Commands](https://wiki.bg-software.com/wildstacker/overview/entities-stacker/loot-tables#loot-commands)
  * [Linked Entities](https://wiki.bg-software.com/wildstacker/overview/entities-stacker/linked-entities)
    * [Stacking Algorithm](https://wiki.bg-software.com/wildstacker/overview/entities-stacker/linked-entities#linked-entities-stacking-algorithm)
* [Spawners Stacker](https://wiki.bg-software.com/wildstacker/overview/spawners-stacker)
  * [Spawners Override](https://wiki.bg-software.com/wildstacker/overview/spawners-stacker/spawners-override)
    * [Optimizations](https://wiki.bg-software.com/wildstacker/overview/spawners-stacker/spawners-override#optimizations)
    * [Spawn Conditions](https://wiki.bg-software.com/wildstacker/overview/spawners-stacker/spawners-override/spawn-conditions)
  * [Spawner Upgrades](https://wiki.bg-software.com/wildstacker/overview/spawners-stacker/spawner-upgrades)
    * [Spawner Settings](https://wiki.bg-software.com/wildstacker/overview/spawners-stacker/spawner-upgrades#spawner-settings)
    * [Upgrade Ladders](https://wiki.bg-software.com/wildstacker/overview/spawners-stacker/spawner-upgrades#upgrade-ladders)
    * [Custom Drops](https://wiki.bg-software.com/wildstacker/overview/spawners-stacker/spawner-upgrades#custom-drops)
* [Blocks Stacker](https://wiki.bg-software.com/wildstacker/overview/blocks-stacker)

## Supported Plugins

The plugin has support for many plugins to distinguish custom mobs from vanilla ones. The following plugins are supported:

### Custom Entities

* [Boss](https://www.mc-market.org/resources/21619/)
* [Citizens](https://www.spigotmc.org/resources/13811/)
* [EchoPet](https://dev.bukkit.org/projects/echopet)
* [EliteBosses](https://www.spigotmc.org/resources/89093/)
* [JetsMinions](https://www.spigotmc.org/resources/59972/)
* [LevelledMobs](https://www.spigotmc.org/resources/74304/)
* [MiniaturePets](https://www.spigotmc.org/resources/23991/)
* [MoreBosses](https://www.spigotmc.org/resources/69355/)
* [MyPet](https://www.spigotmc.org/resources/12725/)
* [MythicMobs](https://www.spigotmc.org/resources/5702/)
* [PinataParty](https://www.spigotmc.org/resources/59318/)

### Custom Spawners

* [MineableSpawners](https://www.spigotmc.org/resources/59921/)
* [SilkSpawners](https://www.spigotmc.org/resources/7811/)
* [EpicSpawners](https://songoda.com/marketplace/product/13)

### Additional Plugins

* [CoreProtect](https://www.spigotmc.org/resources/8631/)
* [Clearlagg](https://www.spigotmc.org/resources/68271/)
* [Jobs](https://www.spigotmc.org/resources/4216/)
* [mcMMO](https://www.spigotmc.org/resources/64348/)
* [CrazyEnchantments](https://www.spigotmc.org/resources/16470/)
* [Slimefun](https://github.com/Slimefun/Slimefun4)


# Commands and Permissions

The plugin provides a few commands that can be used by your players.

## Commands

{% hint style="info" %}
Parameters inside `<>` are required, unlike parameters in `[]` which are optional.
{% endhint %}

### /stacker give \<player-name> \<item> \<stack-type> \<stack-size>

Give a stacked spawner/spawn-egg/barrel to a player.

#### Parameters

*player-name*: The name of the player to give the item to.

*item*: The type of item to give to the player.\
Can be `spawner`, `egg` or `barrel`.

*stack-type*: The type of spawner, egg or a barrel to give to the player.\
If the item is `spawner` or `egg`, the `stack-type` should be an `entity-type`.\
If the item is a `barrel`, the `stack-type` should be a `block-type`.

*stack-size*: The stack-amount of the item.

#### Permission

The permission to use the command is `wildstacker.give`

### /stacker info

Shows information about a spawner you're looking at.

#### Permission

The permission to use the command is `wildstacker.info`

### /stacker inspect \<player-name> \[amount]

Give an inspect tool to a player.\
The inspect tool is used to get more information about a stacked entity or spawner.

#### Parameters

player-name: The name of the player to give the inspect tool.

amount: The amount of inspect tools to give to the player.

#### Permission

The permission to use the command is `wildstacker.inspect.give`

### /stacker kill \[radius=?] \[type=?] \[spawn=?] \[config\<true/false>]

Kill all the stacked mobs in the server.

#### Parameters

radius: The radius from player to kill entities.

type: The type of entities to kill.

spawn: The spawn-cause of the entities to kill.

config: Whether to respect kill limits from config or not.

{% hint style="warning" %}
Make sure you use the config parameter in caution.
{% endhint %}

#### Permission

The permission to use the command is `wildstacker.kill`

### /stacker reload

Reload the settings and the language files.

#### Permission

The permission to use the command is `wildstacker.reload`

/stacker save

Save cached data to disk.

#### Permission

The permission to use the command is `wildstacker.save`

### /stacker settings

Open the in-game config file editor.

#### Permission

The permission to use the command is `wildstacker.settings`

### /stacker simulate \<player-name> \[amount]

Give a simulate tool to a player.\
The simulate tool is used to check if two entities can stack together.

#### Parameters

player-name: The name of the player to give the simulate-tool to.

amount: The amount of simulate-tools to give to the player.

#### Permission

The permission to use the command is `wildstacker.simulate.give`

### /stacker stats

See all the cached data statistics of WildStacker.

#### Permission

The permission to use the command is `wildstacker.stats`

### /stacker test

Test the status of the stacking thread.\
If a stacking-thread is no longer active, this command will wake it up.

#### Permission

The permission to use the command is `wildstacker.test`

## Permissions

### wildstacker.\*

Gives access to all the commands of the plugin.

{% hint style="danger" %}
This gives access to reload the plugin and save command!
{% endhint %}

### wildstacker.silktouch

Gives access to mine spawners and get them dropped with silk-touch.

{% hint style="info" %}
Players must have this permission otherwise they will not get the dropped spawner after mining it with a silktouch pickaxe.
{% endhint %}

### wildstacker.nosilkdrop

Gives access to mine spawners and get them dropped without silk-touch.

{% hint style="info" %}
If you have drop-without-silk enabled in the config, players must have this permission otherwise they will not get the dropped spawner.
{% endhint %}

### wildstacker.place.\*

Gives access to place all spawner types.

{% hint style="info" %}
This permission will only work if you enabled placement-permission in the config.
{% endhint %}

### wildstacker.place.\<entity-type>

Gives access to place a specific spawner type.

{% hint style="info" %}
This permission will only work if you enabled placement-permission in the config.
{% endhint %}

### wildstacker.nextplace

Gives access to place spawners next to others.

{% hint style="info" %}
Players will only be able to place spawners next to each other if next-spawner-place is enabled in the config or they have this permission.
{% endhint %}

### wildstacker.charge.bypass

Gives the ability to bypass charging when placing or breaking spawners.


# Items Stacker

The plugin can stack similar items together and reduce the amount of items in your world and the lag caused by those items.

## Stacking Algorithm

The plugin uses a simple but efficient way of stacking items together:

#### Stacking Trigger occurs

There are plenty of triggers that will cause the plugin to attempt and stack two items together. This is the first step in the stacking process, and more about the triggers can be found below.

#### Nearby Items Check

The plugin will look for nearby items, and proceed to the next step. Only nearby items that meet range criteria will be potential items to be stacked. The plugin will cache the results for 5 seconds so items lookups can be more optimized.

#### Item Similar Check

The plugin will attempt to stack two items together only if they are similar in their item types, metadata and the only difference between the items is their amount.

#### Stacking Items

The last and most important step. The plugin will stack the two items together: it will take the amount of the first stack and add it to the second. Then it will remove the first one from the world, and play a nice partical.

## Stacking Triggers

The plugin will attempt to stack items when one of the following events occur:

* Item spawns into the world.
* Every cycle of the stack-task of items.
* Two entities are naturally merging (vanilla's mechanism of merging items)


# Entities Stacker

The plugin can stack similar entities together and reduce the amount of entities in your world and the lag caused by these entities.

## Stacking Algorithm

The plugin uses a simple but efficient way of stacking entities together:

#### Stacking Trigger occurs

There are plenty of triggers that will cause the plugin to attempt and stack two entities together. This is the first step in the stacking process, and more about the triggers can be found below.

#### Nearby Entities Check

In many cases, the plugin will attempt to stack the entity to a possible nearby entity, unlike some times where the plugin knows to which target to try and stack the entity. The plugin will look for nearby entities, and proceed to the next step. Only nearby entities that meet range criteria will be potential entities to be stacked. The plugin will cache the results for 5 seconds so entity lookups can be more optimized.

#### Entity Similar Check

The plugin will attempt to stack two entities together only if they are similar. If two entities are similar, then they can get stacked. There are plenty of different checks that the plugin does - more about them can be found below.&#x20;

#### Stacking Entities

The last and most important step. The plugin will stack the two entities together: it will take the amount of the first stack and add it to the second. Then it will remove the first one from the world, and play a nice partical.

## Stacking Triggers

The plugin will attempt to stack entities when one of the following events occur:

* Player dyes a sheep.
* Sheep grows wool.
* Player name tags an entity.
* Entities are bread and stack-after-breed is enabled.
* Entity leaves a vehicle.
* Entity spawns into the world.
* Player shears a sheep and the SHEEP\_SHEAR stack-split is enabled.
* Every cycle of the stack-task.
* Zombie villager is created after villager dies.
* Entity transfroms into another type of entity.
* When minimum-required-entities is enabled and an entity is stacked to another and they don't meet the minimum limit, if there are nearby entities and their total sum exceeds the minimum limit, they will all get stacked together.

## Stacking Checks

{% hint style="info" %}
&#x20;Most of the stack checks listed in this section can be disabled in the config file.

Stack checks with red color cannot be disabled.
{% endhint %}

The plugin will make sure two entities are similar before stacking them together. The following checks are done to ensure it:

* <mark style="color:red;">Entities stacking feature is enabled.</mark>
* <mark style="color:red;">Entities are in the whitelist if it's not empty.</mark>
* <mark style="color:red;">Entities are not in the blacklist.</mark>
* <mark style="color:red;">Entities are not in a disabled world.</mark>
* <mark style="color:red;">The amount of the two entities doesn't exceed the limit.</mark>
* <mark style="color:red;">The names of the entities are not blacklisted.</mark>
* <mark style="color:red;">Entities are alive.</mark>
* <mark style="color:red;">Entities don't have the "bypass-stacking" flag.</mark>
* Entities don't have a nametag.
* <mark style="color:red;">Entities are not corpses.</mark>
* Entities have the same upgrade level.
* Entities have the same nerfed status.
* Entities have the same spawn reason.
* Entities are not in disabled regions.

#### Ageable

* Entities both have the same adult status.
* Entities have the exact same age.

#### Tameable

* Entities have the same owner.
* Entities both have the same tamed status.

#### Animals

* Animals both have the same breeding status.
* Animals both have the same love status.

#### Axolotl

* Axolotls are of the same variant.
* Axolotls both have the same playing-dead status.

#### Bat

* Bats both have the same awake status.

#### Cat

* Cats have the same collar color.
* Cats are of the same type.

#### Creepers

* Creepers both have the same powered status.

#### Enderman

* Endermans carry the same block.

#### Glow Squid

* Glow squids have the same amount of dark ticks.

#### Goat

* Goats both have the same screaming status.

#### Guardian

* Guardians both are Elder Guardian.

#### Horse

* Horses both have the same carrying chest status.
* Horses have the same color.
* Horses have the same jumping strengh.
* Horses have the same max tame progress.
* Horses have the same style.
* Horses are both of the same variant.

#### Llama

* Llamas have the same color.
* Llama have the same strength.

#### Mooshroom

* Mooshrooms are both of the same type.

#### Ocelot

* Ocelots are both of the same type.

#### Parrot

* Parrtos are both of the same variant.

#### Phantom

* Phantoms have the same size.

#### Pig

* Pigs both have the same saddle status.

#### Pufferfish

* Pufferfish both are on the same state.

#### Rabbit

* Rabbits are both of the same type.

#### Sheep

* Sheep both have the same color.
* Sheep both have the same sheared status.

#### Skeleton

* Skeletons are both of the same type.

#### Slime

* Slimes both have the same size.

#### Tropical Fish

* Tropical Fish both have the same body color.
* Tropical Fish both have the same pattern.
* Tropical Fish both have the same color.

#### Villager / Zombie Villager

* Villagers are both in the same profession.

#### Wolf

* Wolves both have the same angry status.
* Wolves both have the same collar color.

#### Zombie

* Zombies both have the same baby status.

#### Zombie Pigman

* Zombie Pigmans both have the same angry status.

#### Mythic Mobs

* <mark style="color:red;">Entities are the same mob-type of MythicMobs.</mark>

#### LevelledMobs

* <mark style="color:red;">Entities have the same level.</mark>


# Loot Tables

Loot tables are used to store all the loot data of entities. Using this system, the plugin can calculate drops for large amount of mobs.

The plugin uses predefined loot tables in order to calculate drops for large amount of entities more easily. The plugin also lets you modify the values of the drops and alter the vanilla dropped items of mobs.

{% hint style="danger" %}
This system cannot be disabled, otherwise calculations of drops may be wrong and cause lag to your server.
{% endhint %}

## Loot Tables

Every file is represented as a "loot table". Loot tables contain global settings and pairs. Pairs contain the items, and can be manipulated differently to get different results.

#### Example

```yaml
{
  # We don't want equipment to be dropped.
  "dropEquipment": false,
  # We want a random exp value between 5 and 8.
  "exp": {
    "min": 5,
    "max": 8,
    # Should exp be dropped no matter how the entity was killed?
    "always-drop": true
  },
  # We want a maximum amount of 2 pairs, but at least 1 pair to be chosen.
  "min": 1,
  "max": 2,
  # All the pairs of items are going here
  "pairs": [
  ...
  ]
}
```

## Loot Pairs

Each loot-pair contains configuration about a group of items that will be dropped. When drops are calculated, the plugin chooses loot-pairs to drop, and then it chooses items from these loot-pairs, depend on the configuration of the loot-pairs.

#### Example

```yaml
{
  # All settings related to the table
  ...
  "pairs": [
    # First Pair
    {
      # This pair should always be chosen (100%)
      "chance": 100,
      # Chance is [base-chance] + ([looting-level] * [looting-chance])
      "lootingChance": 2.5,
      # A required permission for the pair to be chosen.
      "permission": "my.permission",
      # A list of items for this pair
      "items": [
        ...
      ]
    },
    # Second Pair
    {
      # This pair will be chosen only if the entity was killed by a player.
      "killedByPlayer": true,
      # This pair will be chosen only 50% of the times.
      "chance": 50,
      # A required spawn cause for the entity so the pair will be chosen.
      "spawn-cause": "SPAWNER",
      # A list of items for this pair
      "items": [
        ...
      ]
    },
    # Third Pair
    {
      # This pair will be chosen only if the entity was killed by an enderman.
      "killer": [
        "ENDERMAN"
      ],
      # This pair will be chosen only 50% of the times.
      "chance": 50,
      # A list of commands for this pair
      "commands": [
        ...
      ]
    }
  ]
}
```

### Advanced Filtering

You can create more complex filtering for loot pairs (as well as loot items) using the advanced filtering format. The format is very simple and doesn't require much from you. Instead of making `killer` as a list of strings, you should create it as a list of json objects with one required field, which is `type`. Then, you can add additional fields for filtering mobs by their attributes which you can get by using the `/data get entity` command.

Here's an example of a loot pair for magma cubes killed by frogs in 1.19:

```json
{
  "killer": [
    "FROG"
  ],
  "chance": 100,
  "items": [
    {
      "killer": [
        {
          "type": "FROG",
          "variant": "minecraft:warm"
        }
      ],
      "type": "PEARLESCENT_FROGLIGHT",
      "chance": 100
    },
    {
      "killer": [
        {
          "type": "FROG",
          "variant": "minecraft:cold"
        }
      ],
      "type": "VERDANT_FROGLIGHT",
      "chance": 100
    },
    {
      "killer": [
        {
          "type": "FROG",
          "variant": "minecraft:temperate"
        }
      ],
      "type": "OCHRE_FROGLIGHT",
      "chance": 100
    }
  ]
}
```

In the example above, magma cubes will drop different froglight blocks depending on the variant of the frog. The `variant` field name was taken directly from the `/data get entity` command, as well as the value of the field. In the background, the plugin does exactly the same - it takes the output of this command and compares it to your filters.

Besides that, you can use `!` to negate an entity from a filter. For example, the following filter will apply to all the mobs that are not blazes:

```json
"killer": [
  "!BLAZE"
]
```

The negate symbol works on entity types, spawn causes and death causes.

## Loot Items

Each loot-item represents an item that can be dropped from a mob. It contains configuration about the item itself (its type, name, lore, etc), the amount of the item to be dropped, chance of the item to be dropped and more.

#### Example

```yaml
{
  # All settings related to the table
  ...
  "pairs": [
    {
      # All settings related to the pair
      ...
      "items": [
        # First item
        {
          # The material type of the item
          "type": "DIAMOND_SWORD",
          # The data value of the item
          "data": 0,
          # A custom name for the item.
          "name": "&6Diamond Sword!!",
          # A custom lore for the item.
          "lore": [
            "&7First line!",
            "&4Second line!"
          ],
          # The chance of this item to be chosen.
          "chance": 50,
          # Minimum amount for the item
          "min": 1,
          # Maximun amount for the item
          "max": 1,
          # A list of enchantments that will be applied to the item.
          "enchants": {
            # First enchantment - Sharpness 5
            "DAMAGE_ALL": 5,
            # Second enchantment - Looting 3
            "LOOT_BONUS_MOBS": 3
          }
        },
        # Second item
        {
          # Values
          ...
          # Should the item amount be increased when using looting?
          # The formula to calculate the item amount is [random number between min and max] + [random number between 0 and the looting level]
          "looting": true,
          # The item will be glowing when dropped (no enchantments will be shown)
          "glow": true,
          # The item that will be dropped if the entity was killed by fire
          "burnable": {
            "type": "COOKED_BEEF",
            "data": 0
          }
        },
        # Third item
        {
          "type": "PLAYER_HEAD",
          # Values
          ...
          # The texture value of the skull.
          # These values can be taken from many sites, such as https://minecraft-heads.com/.
          # The head below will be shown as an orc head.
          "skull": "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODJkNmI2MjJmMDZkYmQzYjE5YmY3NjUzOGNhNzA0NzMzZWQwYjAyZTQ0MzhjOWQ4OTY4YTA0YmZiYjI4ZWY2MyJ9fX0=",
          # It is possible to add custom nbt tags to your items.
          "nbt-data": {
            "key1": "Value!",
            "key2": 2
          }
        }
      ]
    }
  ]
}
```

## Loot Commands

Loot commands are similar to items, however instead of dropping an item, you can have a command executed when a mob is killed.

#### Example

```yaml
{
  # All settings related to the table
  ...
  "pairs": [
    {
      # All settings related to the pair
      ...
      "commands": [
        # First command
        {
          # The chance of this command to be chosen
          "chance": 50,
          # Minimum amount for the placeholder
          "min": 1,
          # Maximun amount for the placeholder
          "max": 1,
          # A list of commands that will be ran
          "commands": [
            "give {player-name} diamond {number}",
            "give {player-name} dirt {number}"
          ]
        },
        # Second command
        {
          # The chance of this command to be chosen
          "chance": 50,
          # Minimum amount for the placeholder
          "min": 1,
          # Maximun amount for the placeholder
          "max": 64,
          # A list of commands that will be ran
          "commands": [
            "give {player-name} emerald {number}"
          ]
        }
      ]
    }
  ]
}
```


# Linked Entities

Linked entities is a feature for optimizing lookups of nearby entities when entities spawn by spawners.

When you have the feature enabled, each spawner will have a potential entity to try and stack its future spawning entities to. This means that the spawners on your world will most likely skip the nearby entities lookup, and instead try to stack their entities into a known one.

## Linked Entities Stacking Algorithm

The stacking algorithm when having linked-entities enabled is a bit different, and only affects entities spawned by a spawner.

#### Linked Entity Lookup

If a spawner has an entity already linked to it, it will try to stack the newly spawned entity to this entity first. The stacking will success only if the entity is still alive and it's in the range that was configured. If the stacking succeed, then the stacking process ends and the plugin skips the rest of the lookup. Otherwise, it continues to the next step.

#### Regular Stacking Process

In case of failing to stack into the linked entity, the plugin continues with the regular stacking algorithm, explained in details [here](https://wiki.bg-software.com/wildstacker/description/entities-stacker#stacking-algorithm).

#### Link Entity

If the entity was successfully stacked to another, the plugin will link the target entity to the spawner. If the entity wasn't stacked to any other entities, the plugin will link this entity to the spawner.

This way, every spawner will most likely have a valid linked entity, which should help with the amount of entity lookups that occur. The lookup task may be heavy (depends on your server version), and this system should help with reducing the amount of lookups that are needed to be performed.


# Spawners Stacker

The plugin can stack similar spawners together and reduce the amount of spawners in your world and the lag caused by these entities.

When a spawner is placed, the plugin will look for nearby spawners and try to stack the spawner to another similar one.

The plugin handles all aspects of spawners, and other plugins that try to do the same may conflict with it. Because of how the system works, the plugin provides features similar to other spawners plugins - upgrades, silk touch, explosions support and more.


# Spawners Override

The plugin has a feature to override spawners behavior. When enabled, the plugin will override the spawning mechanism of spawners and will add optimizations to the spawning mechanism of the game.

## Optimizations

The plugin aims to solve as many lag issues as possible from spawners, and by enabling the spawners-override feature, it can run more optimizations than usual on spawners by overriding the vanilla mechanism of spawning entities.

#### Vanilla Mechanism

The spawning mechanism of the vanilla is as follows:

1. The spawner creates an entity without spawning it to the world.
2. The spawner chooses a random location in its spawning range.\
   If it cannot spawn the entity in this location, it goes back to step 1.
3. The spawner checks for other spawning conditions, such as difficulty of the server, lights in the location and custom conditions for each entity.\
   If any of the conditions fails, it goes back to step 1.
4. The spawner looks for the amount of nearby entities and makes sure it's below the maximum allowed.
5. The spawner adds the entity to the world.

As you can see, some of the tasks can be skipped if we consider entity-stacking and linked-entity stacking. With that being said, WildStacker solves the problem:

#### WildStacker Mechanism

1. The spawner creates a entity without spawning it to the world.
2. The spawners checks for nearby entities in the spawning range.\
   WildStacker checks in this list if there's an entity that can get stacked. This check works as follows:\
   \- First, checking if the linked entity is valid. If it does, we have a match.\
   \- Secondly, checking if one of the nearby entities can be stacked.
3. WildStacker picks a random number between the spawner's stack size and the spawn count times the spawner's size. This number will be the amount of mobs to spawn and will always be:\
   \`\<spawner-stack-size> <= Random Number <= (\<spawner-stack-size> \* \<spawn-count>)\`\
   WildStacker uses an algorithm to pick a random number that will most likely be the middle between the edges, and have less chance to be close to the edges.
4. WildStacker will try to add the number that was picked to the target entity. If the new stack size of the target entity doesn't exceed the limit, then the task of spawning ends.
5. WildStacker will take the amount of entities left to spawn, and will try to spawn only one stacked entity instead of a few different ones - following vanilla's mechanism.

WildStacker's mechanism tries to predict the amount of entities to spawn before calculating locations for them, and tries to "add" them to the world by only changing other entities' stack sizes instead of actually spawning the entities. Both of these tasks make the spawning algorithm much more optimized and results can be seen in game.

## Custom Spawning Conditions

As described above, WildStacker overrides the spawning mechanism of entities. This means it can also ignore the vanilla spawning conditions of entities, and instead run its own conditions. The plugin lets you configure these conditions, and more about them can be read [here](https://app.gitbook.com/s/-MjGaELpevur-9lym3B_/~/changes/P6YYaP2zDN4S0zR7EzeD/wildstacker/description/spawners-stacker/spawners-override/spawn-conditions).&#x20;


# Spawn Conditions

Spawn Conditions are a way for you to override the vanilla conditions system, and configure conditions of your own.

To add a mob to override, simply create a list for a mob under the `spawn-conditions` option in the entities section of the config.yml. You can find a list of entities that correspond to the version of your server by [clicking here](https://bg-software.com/entities/).

#### Examples

```yaml
# Setting an empty list to a mob will remove all spawn conditions
spawn-conditions:
  COW: []

# This example will remove all other spawn conditions and only have NOT_PEACEFUL as a spawn condition for Zombie.
spawn-conditions:
  ZOMBIE:
  - NOT_PEACEFUL
```

## Conditions

This is a list of spawn-conditions available by default.

{% hint style="info" %}
Note that not all these conditions exist, depending on your server version. Be sure to check Mob Group!
{% endhint %}

| Condition                     | Description                                                                             | Mob Group                             |
| ----------------------------- | --------------------------------------------------------------------------------------- | ------------------------------------- |
| `ANIMAL_LIGHT`                | Checks for Light Level above 8                                                          | All Animals                           |
| `ANIMAL_LIGHT_AND_COLD`       | Checks for Light Level above 8, but also checks for a Cold Biome                        | Polar Bears                           |
| `BELOW_SEA_LEVEL`             | Checks for Below Sea Level                                                              | Dolphins                              |
| `DARK_BLOCK_LIGHT`            | Checks for Light Level below 8                                                          | Pillagers                             |
| `IN_LAVA_AND_AIR_ABOVE`       | Checks for Lava Block and Air above Spawn Location                                      | Striders                              |
| `IN_SEA_SURFACE`              | Checks if the Y-Level is the Sea Surface                                                | Turtles                               |
| `IN_SLIME_CHUNK_OR_SWAMP`     | Checks for Slime Chunk or Swamp Biome                                                   | Slimes                                |
| `IN_WATER_DEEP`               | Checks if Location is in Deep Water                                                     | All Fish                              |
| `MONSTER_LIGHT`               | Checks for Monster Light Restrictions, this has more conditions than `DARK_BLOCK_LIGHT` | All Monsters                          |
| `NOT_IN_OCEAN`                | Checks for Biomes that aren't Ocean                                                     | Dolphins                              |
| `NOT_IN_OCEAN_DEEP`           | Checks for Y-Level above 45, for not too Deep Oceans                                    | Dolphins                              |
| `NOT_ON_NETHER_WART_BLOCK`    | Checks for Blocks that are not on a Nether Wart Block                                   | Zombified Piglins                     |
| `NOT_PEACEFUL`                | Checks for Difficulty that is not Peaceful                                              | All Monsters                          |
| `ON_GRASS`                    | Checks for Grass Block                                                                  | All Animals                           |
| `ON_GRASS_OR_SAND_OR_SNOW`    | Checks for Grass Block, a Sand or Snow Block                                            | Rabbits                               |
| `ON_MYCELIUM`                 | Checks for Mycelium Block                                                               | Mooshroom                             |
| `ON_NETHER_WART_BLOCK`        | Checks for Nether Wart Block                                                            | Hoglins + Piglins                     |
| `ON_SAND`                     | Checks for Sand Block                                                                   | Turtles                               |
| `ON_TREE_OR_AIR`              | Checks for a Tree Log block or Air                                                      | Parrots                               |
| `ON_AXOLOTL_SPAWNABLE`        | Checks for axolotl spawnable blocks                                                     | Axolotls                              |
| `ON_FOX_SPAWNABLE`            | Checks for fox spawnable blocks                                                         | Foxes (1.18)                          |
| `ON_GOAT_SPAWNABLE`           | Checks for goat spawnable blocks                                                        | Goats (1.18)                          |
| `ON_RABBITS_SPAWNABLE`        | Checks for rabbits spawnable blocks                                                     | Rabbits (1.18)                        |
| `IN_FISH_WATER`               | Checks if location is in water, in the 13 top levels of the sea                         | Fish (1.18)                           |
| `IN_FISH_WATER_OR_LUSH_CAVES` | Similar to `IN_FISH_WATER` or in lush caves                                             | Tropical Fish (1.18)                  |
| `COMPLETE_DARKNESS`           | Check for light level of 0                                                              | All Monsters (1.18) / Axolotls (1.17) |
| `IN_RIVER`                    | Check for river or frozen river biomes                                                  | Dolphins                              |
| `IN_OCEAN_DEEP`               | Check for ocean and below level 30                                                      | Glow Squid                            |


# Spawner Upgrades

Besides the stacking system of spawners, the plugin also has spawners upgrading system which you can use. Entities that will be spawned by an upgraded spawner will have the same upgrade as well. \
This system gives you the ability to set custom spawner settings and custom drops to entities, and in this page we will cover all of that.

## Spawner Settings

As mentioned above, you can edit the settings of spawners using this system.\
&#x20;You can edit the settings of spawners for each upgrade, so you can make upgraded spawners faster with less spawning conditions. Each ladder has a default upgrade, which means that you can edit the spawner settings to spawners without making them upgradable.

All the spawner settings must go under the upgrade you want:

```yaml
spawner-upgrades:
  # Upgrade ladders
  ladders:
    '1':
      default:
        next-upgrade: coal
        required-player-range: 16
      coal:
        required-player-range: 32
```

In this example, all the spawners must have a player withing 16 blocks from them. However, the upgraded spawners (coal upgrade) have an expanded radius of 32 blocks instead of 16. You can play with this however you want, and there are no restrictions to this.

&#x20;**Available settings:**

| Setting                 | Description                                                              | Default Value |
| ----------------------- | ------------------------------------------------------------------------ | ------------- |
| `min-spawn-delay`       | The minimum spawn delay that can be set to spawners.                     | `200`         |
| `max-spawn-delay`       | The maximum spawn delay that can be set to spawners.                     | `800`         |
| `spawn-count`           | The maximum amount of entities that can be spawned in one spawn attempt. | `4`           |
| `max-nearby-entities`   | The maximum amount of entities that can be near the spwaner.             | `6`           |
| `required-player-range` | The radius to look for nearby players                                    | `16`          |
| `spawn-range`           | The spawning radius                                                      | `4`           |

## **Upgrade Ladders**

The upgrades system is based on ladders, and each spawner can be assoicated with one ladder at most.\
&#x20;This means that you can set different upgrade ladders for different spawners.

Let's start with a basic layout for the ladder:

```yaml
spawner-upgrades:
  # Upgrade ladders
  ladders:
    # The name of the ladder, must be unique.
    '1':
      # A list of mobs that will use this ladder. If non specified, all the spawners will use it.
      entities: []
      # Settings related to the default upgrade. This section is required, otherwise the ladder will not be registered.
      default:
        ...
      # Other upgrades of the ladder. These sections are optional, and you can remove them if you don't want spawners to be upgradable. 
      coal:
        ...
      iron:
        ...
      another-upgrade:
        ...
```

The layout of the ladders is pretty simple:\
&#x20;`entities` A list of entities that can use the ladder.\
&#x20;`default` The default upgrade that will be applied to all the spawners of the ladder.\
&#x20;`upgrades..` Other upgrades that can be added.

All the upgrades sections are the same (default and unique ones), and must have the following sections:\
&#x20;`id` A numerical id for the upgrade. This id must unique across all the upgrades in all the ladders. Default upgrades have a default id of 0 and cannot be changed.\
&#x20;`display` The display prefix/suffix for spawners and mobs. This string is attached to names of entities and spawners.\
&#x20;`cost` The required balance to upgrade into this upgrade. Default upgrades don't need a cost section.\
&#x20;`next-upgrade` The name of the next upgrade. This section is optional, and if it doesn't exist, the upgrade will be treated as the last one in the ladder.\
&#x20;`icon` A custom icon that will be displayed inside the upgrades menu. This section is optional, and if it doesn't exist the upgrades will have a default icon.<br>

That's it! Now you can start creating new upgrades for your spawners.

{% hint style="info" %}
You can find a fully and working example in the default config of the plugin.
{% endhint %}

## Custom Drops

You can restrict certain loot pairs and loot items to only be dropped if the entities have a specific upgrade.\
&#x20;You can restrict them by adding `upgrade` section to them with the name of the upgrade you want them to have.

For example, if I want zombies to drop x1 coal if they have the coal upgrade, I will add the following pair to their loot table:

```yaml
{
  "upgrade": "coal",
  "chance": 100,
  "items": [
    {
      "type": "COAL",
      "chance": 100,
      "min": 1,
      "max": 1
    }
  ]
}
```

{% hint style="info" %}
You can find more information about loot tables [here](/wildstacker/overview/entities-stacker/loot-tables)
{% endhint %}


# Blocks Stacker

The plugin can stack similar blocks together in form of "barrels". This is helpful mainly on Skyblock servers where players want as many valuable blocks on their island as possible.

When a block is placed, it will turn into a barrel. A barrel is a cauldron with an invisible armor stand inside it that holds on its head the type of block that was placed. This makes a beautiful illusion as a barrel that has the block inside it.

Barrels can hold infinite amount of blocks in them (unless configured otherwise), and they can be stacked together. Players can mine individual blocks from them, or break them as a whole in one action.&#x20;

It's important to say that not every placed block will turn into a barrel. Only blocks that can be stacked will turn into barrels - unless you configured it to only work if the players are in the right "mode": players can enable for themselves "stacking mode", which only in this mode their blocks will turn into barrels.

## Compatible Plugins

WildStacker changes the behavior of the cauldron blocks. This means, that plugins that want to support WildStacker's barrels must check if cauldron blocks are barrels, and if they are - treat them differently. Currently, the following plugins are known to work with WildStacker:

* FabledSkyblock
* SuperiorSkyblock


# Overview

WildTools brings the ability to create custom wands and tools that can be used by players. You can create Sell-Wands, Harvester Hoes, Trench Pickaxes and more!

{% embed url="<https://www.youtube.com/watch?v=703E9BzrZF4>" %}
Diamondxr showcasing the plugin
{% endembed %}

The plugin brings custom tools to your server with many different actions they can perform - breaking multiple blocks, placing blocks, sell contents in containers and more!

## Table of Contents

* [Overview](https://wiki.bg-software.com/wildtools/overview)
  * [Supported Plugins](https://wiki.bg-software.com/wildtools/overview#supported-plugins)
    * [Adding support for plugins](https://wiki.bg-software.com/wildtools/overview#adding-support-for-plugins)
    * [Built-in support](https://wiki.bg-software.com/wildtools/overview#built-in-support)
* [Commands and Permissions](https://wiki.bg-software.com/wildtools/overview/commands-and-permissions)
  * [Commands](https://wiki.bg-software.com/wildtools/overview/commands-and-permissions#commands)
  * [Permissions](https://wiki.bg-software.com/wildtools/overview/commands-and-permissions#permissions)
* [Configuring Tools](https://wiki.bg-software.com/wildtools/overview/configuring-tools)
  * [Tool Sections](https://wiki.bg-software.com/wildtools/overview/configuring-tools#tool-sections)
* [Builder Tool](https://wiki.bg-software.com/wildtools/overview/builder-tool)
  * [Required Sections](https://wiki.bg-software.com/wildtools/overview/builder-tool#required-sections)
  * [How to Use](https://wiki.bg-software.com/wildtools/overview/builder-tool#how-to-use)
* [Cannon Tool](https://wiki.bg-software.com/wildtools/overview/cannon-tool)
  * [Required Sections](https://wiki.bg-software.com/wildtools/overview/cannon-tool#required-sections)
  * [How to Use](https://wiki.bg-software.com/wildtools/overview/cannon-tool#how-to-use)
* [Crafting Tool](https://wiki.bg-software.com/wildtools/overview/crafting-tool)
  * [Required Sections](https://wiki.bg-software.com/wildtools/overview/crafting-tool#required-sections)
  * [How to Use](https://wiki.bg-software.com/wildtools/overview/crafting-tool#how-to-use)
* [Crowbar Tool](https://wiki.bg-software.com/wildtools/overview/crowbar-tool)
  * [Optional Sections](https://wiki.bg-software.com/wildtools/overview/crowbar-tool#optional-sections)
  * [How to Use](https://wiki.bg-software.com/wildtools/overview/crowbar-tool#how-to-use)
* [Cuboid Tool](https://wiki.bg-software.com/wildtools/overview/cuboid-tool)
  * [Required Sections](#custom-containers)
  * [How to Use](https://wiki.bg-software.com/wildtools/overview/cuboid-tool#how-to-use)
* [Drain Tool](https://wiki.bg-software.com/wildtools/overview/drain-tool)
  * [Required Sections](https://wiki.bg-software.com/wildtools/overview/drain-tool#required-sections)
  * [How to Use](https://wiki.bg-software.com/wildtools/overview/drain-tool#how-to-use)
* [Harvester Tool](https://wiki.bg-software.com/wildtools/overview/harvester-tool)
  * [Required Sections](https://wiki.bg-software.com/wildtools/overview/harvester-tool#required-sections)
  * [Optional Sections](https://wiki.bg-software.com/wildtools/overview/harvester-tool#optional-sections)
  * [How to Use](https://wiki.bg-software.com/wildtools/overview/harvester-tool#how-to-use)
    * [Sell Mode](https://wiki.bg-software.com/wildtools/overview/harvester-tool#sell-mode-enable-disable)
* [Ice Tool](https://wiki.bg-software.com/wildtools/overview/ice-tool)
  * [Required Sections](https://wiki.bg-software.com/wildtools/overview/ice-tool#required-sections)
  * [How to Use](https://wiki.bg-software.com/wildtools/overview/ice-tool#how-to-use)
* [Lightning Tool](https://wiki.bg-software.com/wildtools/overview/lightning-tool)
  * [How to Use](https://wiki.bg-software.com/wildtools/overview/lightning-tool#how-to-use)
* [Magnet Tool](https://wiki.bg-software.com/wildtools/overview/magnet-tool)
  * [Required Sections](https://wiki.bg-software.com/wildtools/overview/magnet-tool#required-sections)
  * [How to Use](#adding-support-for-plugins)
* [Pillar Tool](https://wiki.bg-software.com/wildtools/overview/pillar-tool)
  * [How to Use](https://wiki.bg-software.com/wildtools/overview/pillar-tool#how-to-use)
* [Sell Tool](https://wiki.bg-software.com/wildtools/overview/sell-tool)
  * [How to Use](https://wiki.bg-software.com/wildtools/overview/sell-tool#how-to-use)
* [Sort Tool](https://wiki.bg-software.com/wildtools/overview/sort-tool)
  * [How to Use](https://wiki.bg-software.com/wildtools/overview/sort-tool#how-to-use)

## Supported Plugins

The plugin handles the interactions of the tools and how they behave, and this may cause conflicts with other plugins. However, the plugin is packed with a smart system that supports every plugin in the world.

### Adding support for plugins

There are two different supports you can add - one, is for claiming plugins. If you have a plugin that prevents blocks from being broken by other plugins, WildTools should know it and respect their restrictions. If you have a plugin like that, simply add it to the `claiming-plugins` list in your config, and WildTools will do the job.

The second type of plugins is plugins that do something when a block is broken or placed. For example, giving rewards for breaking blocks. These plugins should know about the blocks that were broken or placed, and by adding them to the `other-plugins` list in your config, WildTools will make sure they are notified about these changes.

By filterring which plugins should be notified about actions made by WildTools, you can reduce the amount of lag caused by the amount of actions there are. Many plugins know how to handle breaking of one block at a time, however using tools of WildTools you can break multiple at once, which can drop performance due to other plugins.

### Built-in support

The plugin has a few plugins that are supported by default. Here's a list of them:

#### Custom Containers

* [WildChests](https://bg-software.com/wildchests/)

#### Custom Drops

* [MergedSpawner](https://polymart.org/resource/189)
* [RoseStacker](https://www.spigotmc.org/resources/82729/)
* [SilkSpawners](https://www.spigotmc.org/resources/7811/)
* [WildStacker](https://bg-software.com/wildstacker/)
* [mcMMO](https://www.spigotmc.org/resources/64348/)

#### Custom Prices

* [CMI](https://www.spigotmc.org/resources/3742/)
* [EconomyShopGUI](https://www.spigotmc.org/resources/69927/)
* [Essentials](https://www.spigotmc.org/resources/9089/)
* [GUIShop](https://www.spigotmc.org/resources/2451/)
* NewtShop
* [QuantumShop](https://www.spigotmc.org/resources/50696/)
* [ShopGUIPlus](https://www.spigotmc.org/resources/6515/)

#### Custom Claims

* [FactionsUUID](https://www.spigotmc.org/resources/1035/)
* [GriefPrevention](https://www.spigotmc.org/resources/1884/)
* [Lands](https://www.spigotmc.org/resources/53313/)
* [MassiveCore Factions](https://www.spigotmc.org/resources/1900/)
* [Residence](https://www.spigotmc.org/resources/11480/)
* [Towny](https://www.spigotmc.org/resources/72694/)
* [Villages](https://www.spigotmc.org/resources/88265/)


# Commands and Permissions

The plugin provides a few commands that can be used by your players.

## Commands

{% hint style="info" %}
Parameters inside `<>` are required, unlike parameters in `[]` which are optional.
{% endhint %}

### /tools give \<player-name> \<tool-name> \[amount] \[uses]

Gives a tool to a specific player.

#### Parameters

*player-name*: The name of the player to give the tool to.

*tool-name*: The name of the tool to give.\
Must be identical to the names in the config file.

*amount*: The amount of tools to give to the player.

*uses*: A predefined amount of uses for the given tool.

#### Permission

The permission to use the command is `wildtools.give`.

### /tools info \<tool-name>

Checks information about a tool.

#### Parameters

tool-name: The name of the tool to get information about.\
Must be identical to the names in the config file.

#### Permission

The permission to use the command is `wildtools.info`.

### /tools list

Get a list of all the available tools.

#### Permission

The permission to use the command is `wildtools.list`.

### /tools reload

Reload the settings and the language files.

#### Permission

The permission to use the command is `wildtools.reload`.

### /tools settings

Open in-game editor for tools.

#### Permission

The permission to use the command is `wildtools.settings`.

## Permissions

### wildtools.\*

Gives access to all the commands.

{% hint style="danger" %}
This gives access to reload the plugin and save command!
{% endhint %}

### wildtools.use

Gives access to use the custom tools.

{% hint style="info" %}
Players will not be able to use any of the tools without this permission.
{% endhint %}

### wildtools.sellmode

Gives access to use harvester sell mode.

{% hint style="info" %}
This is only required for the harvester-hoe's sell mode, and not sell wand themselves.
{% endhint %}


# Configuring Tools

You can add different tools to the plugin by adding them to the config file. In this tutorial you'll see how it's done, what fields can be added and which tools are available.

First thing to do is to give your tool a unique name. This name will later be used to give the tools to players with the give command. The name must be unique to your tool, and two tools cannot share the same name. After choosing one, add it to your config under the tools section:

```
tools:
  <tool-name>:
    ...
```

Second step is to choose the type of tool you want to create. There are plenty of different tools you can create, and each of them have a different action it can do:

#### BUILDER

The builder tool will place blocks for you upon clicking on a block in the same direction as the block's face you clicked on. The placed blocks will be taken from the player's inventory.\
Read more about it [here](/wildtools/overview/builder-tool).

#### CANNON

The cannon tool will fill every dispenser in a selected area with TNT from your inventory or your TNT bank (Factions).\
Read more about it [here](/wildtools/overview/cannon-tool).

#### CRAFTING

The crafting tool will craft items in a container upon clicking on it. You can configure which crafting recipes it can craft, and upon clicking a container - it will craft these items with the ingredients found in the container.\
Read more about it [here](/wildtools/overview/crafting-tool).

#### CROWBAR

The crowbar tool can break spawners and drop the spawner item on ground by right clicking on a spawner.\
Read more about it [here](/wildtools/overview/crowbar-tool).

#### CUBOID

The cuboid tool can break a cuboid shaped area with a single block-break. It will break all blocks in a configured range.\
Read more about it [here](/wildtools/overview/cuboid-tool).

#### DRAIN

The drain tool will remove any ice block in its range.\
Read more about it [here](/wildtools/overview/drain-tool).

#### HARVESTER

The harvester tool will harvest crops in range, plant them and even sell them automatically for the players.\
Read more about it [here](/wildtools/overview/harvester-tool).

#### ICE

The ice tool will remove any ice block in it's range and replace it with water source blocks.\
Read more about it [here](/wildtools/overview/ice-tool).

#### LIGHTNING

The lightning wand will strike a lightning on creepers and will make them powered.\
Read more about it [here](/wildtools/overview/lightning-tool).

#### MAGNET

The magnet tool will make nearby items fly towards the player so he can collect them easily.\
Read more about it [here](/wildtools/overview/magnet-tool).

#### PILLAR

The pillar tool will break blocks in a pillar shape, starting from the highest block to the bottom. It will only break blocks similar to the clicked block.\
Read more about it [here](/wildtools/overview/pillar-tool).

#### SELL

The sell tool will sell items in your containers.\
Read more about it [here](/wildtools/overview/sell-tool).

#### SORT

The sort tool will sort items in containers by their ids (similar order as in creative menu).\
Read more about it [here](/wildtools/overview/sort-tool).

Once you chose your tool, you can add it to the config under the `tool-mode` section:

```
tools:
  <tool-name>:
    tool-mode: <tool>
```

## Tool Sections

In order to properly have your tool registered, you must add the required sections for each tool (These can be found on each tool's page), alongside of a material type for the tool. The `type` section is used for this purpose, and you need to choose a valid material for the tool.

{% hint style="info" %}
You can find a list of materials for your minecraft version on this website:\
<https://bg-software.com/materials/>
{% endhint %}

Each tool can have optional sections besides the required ones, which can change the behavior of your tools. Here is the list of sections you can use:

### cooldown

Give a cooldown to your tool. Players can not use the tool while they are in cooldown.

#### Section Type

Long (Number, maximum of 9,223,372,036,854,775,807)

### auto-collect

When set, drops from tools will be auto-collected to the inventories of the players. If the players don't have enough space for the items, they will be dropped naturally on ground.

#### Section Type

Boolean (true/false)

### instant-break

When set, tools will instantly break blocks. The minecraft's breaking time will be instantly - similar to how stone blocks are broken using Haste II beacon.

#### Section Type

Boolean (true/false)

### silk-touch

When set, tools will act similar as they have a silk touch enchantment. In other words, this is an invinsible silk touch enchantment.

#### Section Type

Boolean (true/false)

### only-same-type

When set, tools will only be able to break the same type of block in a single mining.

#### Section Type

Boolean (true/false)

### only-inside-claim

When set, players will only be able to use tools inside their claims.\
Only supported claiming plugins will work.

#### Section Type

Boolean (true/false)

### unbreakable

When set, tools will not lose durability or uses.

#### Section Type

Boolean (true/false)

### vanilla-damage

When set, tools will lose damage when other vanilla actions cause it to take damage.\
For example, hitting a mob with a pickaxe will make the pickaxe lose damage.

#### Section Type

Boolean (true/false)

### uses

When set, tools will have a specific amount of uses instead of using vanilla's tool durability.

#### Section Type

Integer (Number, maximum of  2,147,483,647)

### keep-inventory

When set, tools will not dropped upon player's death.

#### Section Type

Boolean (true/false)

### name

The name of the tool's item.

#### Section Type

String

### lore

The lore of the tool's item.

#### Section Type

List

### glow

When set, the tool's item will glow as it is enchanted without any enchantments applied to it.

#### Section Type

Boolean (true/false)

### spigot-unbreakable

When set, spigot's unbreakable tag will be set to the tool's item.

#### Section Type

Boolean (true/false)

### custom-model

Custom model for the tool's item.\
Only available in 1.14+

{% hint style="info" %}
This type of data is used for custom textures on client-side resource packs.
{% endhint %}

#### Section Type

Integer (Number, maximum of 2,147,483,647)

### enchants

List of enchantments to be added to the tool's item.\
Each line represents an enchantment and level, split by `:`

{% hint style="info" %}
You can find a list of enchantments [on this website](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/enchantments/Enchantment.html).
{% endhint %}

#### Section Type

List

### blacklisted-blocks

List of blocks that cannot be broken by the tool.

#### Section Type

List

### whitelisted-blocks

List of blocks that the tool can break.

#### Section Type

List

### blacklisted-drops

List of drops that cannot be dropped by the tool.

#### Section Type

List

### whitelisted-drops

List of drops that the tool may drop.

#### Section Type

List

### multiplier

Set a multiplier for the outcome earnings from harvester tools and sell tools.

#### Section Type

Double (Decimal)

### omni-tool

When set, tools will change their type according to the blocks players try to break.

#### Section Type

Boolean (true/false)

### private

When set, tools can only be used by one player. The first player to use the tool will claim it and no other player will be able to use it.

#### Section Type

Boolean (true/false)

### uses-progress

When set, tools will have the vanilla's durability bar decreasing as they use the tool.\
It will reflect their uses percentage with the vanilla's durability bar.

#### Section Type

Boolean (true/false)

### anvil-combine-exp

The amount of exp required to combine this tool with another.

#### Section Type

Integer (Number, maximum of 2,147,483,647)

### anvil-combine-limit

The maximum uses a tool can have when combined in an anvil.

#### Section Type

Integer (Number, maximum of 2,147,483,647)

### blacklisted-worlds

List of worlds that the tool can not work inside.

#### Section Type

List

### whitelisted-worlds

List of worlds that the tool can only work inside.

#### Section Type

List

### notified-plugins

List of plugins that will get notified when using the tool.\
Similar to the `other-plugins` section in the config, just a custom list for the tool.

#### Section Type

List


# Builder Tool

The builder tool will place blocks when players right click on another block while holding it. It will place blocks in the same direction as the block's face they clicked on, and will take items from the inventories of the players. The tool will place the same type of block that was clicked on, up to a maximum amount of configurable blocks - or until it cannot place blocks anymore (due to not having enough blocks, or having a block on the way)

## Required Sections

There are some required sections to be added to the config in order to have the tool working properly.

### length

Maximum amount of blocks to be placed.

#### Section Type

Integer (Number, maximum of 2,147,483,647)

## How to Use

* Hold the builder tool in your hand
* Make sure you have enough items in your inventory
* Right click on a block


# Cannon Tool

The cannon tool will fill every dispenser in a selected area with TNT. It will take the TNT either from your inventory or your tnt bank (Factions only).&#x20;

## Required Sections

There are some required sections to be added to the config in order to have the tool working properly.

### tnt-amount

Maximum amount of tnt to fill in each dispenser.

#### Section Type

Integer (Number, maximum of 2,147,483,647)

## How to Use

* Hold the cannon tool in your hand.
* Right click one block to select one corner of the area.
* Left click on another block to select the other corner of the area.
* Stand inside the selected area.
* Click on the air (Right or left click, both work)


# Crafting Tool

The crafting tool will craft items in a container upon clicking on it. You can configure which crafting recipes it can craft, and upon clicking a container - it will craft these items with the ingredients found in the container.

## Required Sections

There are some required sections to be added to the config in order to have the tool working properly.

### craftings

List of recipes that the crafting tool can craft.

#### Section Type

List

## How to Use

* Hold the crafting tool in your hand.
* Have the required ingedients in a container for the recipes.
* Right click on the container with the tool.


# Crowbar Tool

The crowbar tool can break spawners and drop the spawner item on ground by right clicking on a spawner.

## Optional Sections

There are some optional sections that can be used with this tool.

### commands-on-use

List of commands to be executed when using a crowbar on a spawner.

You can use the following placeholders in your commands:\
`%player%` for the name of the player that broke the spawner.\
`%entity%` for the spawner's entity type.

#### Section Type

List

## How to Use

* Hold the tool in your hand.
* Right click on a spawner.


# Cuboid Tool

The cuboid tool can break a cuboid shaped area with a single block-break. It will break all blocks in a configured range, and drop all the items for these blocks.

## Required Sections

There are some required sections to be added to the config in order to have the tool working properly.

### break-level

The size of the breaking range.\
For example, if set to 3, a 3x3 area will be mined.

#### Section Type

Integer (Number, maximum of 2,147,483,647)

### How to Use

* Hold the tool in your hand.
* Mine a block using the tool.


# Drain Tool

The drain tool will remove any ice block in its range.

## Required Sections

There are some required sections to be added to the config in order to have the tool working properly.

### radius

The radius of blocks to remove ice from.

#### Section Type

Integer (Number, maximum of 2,147,483,647)

## How to Use

* Hold the tool in your hand.
* Right click on block or in the air.


# Harvester Tool

The harvester tool will harvest crops in range and plant them automatically for players. The tool can also sell automatically the drops of the crops, and farm lands for planting.

## Required Sections

There are some required sections to be added to the config in order to have the tool working properly.

### radius

The radius in which to harvest crops.&#x20;

#### Section Type

Integer (Number, maximum of 2,147,483,647)

## Optional Sections

There are some optional sections that can be used with this tool.

### active-action

Set the activation action for the tool.

#### Section Type

String (`"RIGHT_CLICK"` or `"LEFT_CLICK"` only.)

### farmland-radius

The radius in which to turn dirt into farmlands.

#### Section Type

Integer (Number, maximum of 2,147,483,647)

### one-layer-only

When set, the radius for planting and turning dirt to farmlands will only work on the same y-level of the clicked block.

#### Section Type

Boolean (true/false)

## How to Use

* Hold the tool in your hand.
* Right click or left click on a block (depends on your configuration)\
  By default, right-click should be used

### Sell Mode (Enable/Disable)

{% hint style="info" %}
You must have wildtools.sellmode in order for this to work.
{% endhint %}

* Hold the tool in your hand.
* Sneak (shift-click)
* Right click in the air


# Ice Tool

The ice tool will remove any ice block in it's range and replace it with water source blocks.

## Required Sections

There are some required sections to be added to the config in order to have the tool working properly.

### radius

The radius in which to remove ice from and replace it with water source blocks.

#### Section Type

Integer (Number, maximum of 2,147,483,647)

## How to Use

* Hold the tool in your hand.
* Right click on a block or in the air.


# Lightning Tool

The lightning wand will strike a lightning on creepers and will make them powered.

## How to Use

* Hold the tool in your hand.
* Look at a creeper
* Stay in a distance of 10 blocks from the creeper.
* Right click on a block or in the air

{% hint style="info" %}
If this doesn't work for you, make sure you look at the block the creeper is standing at.
{% endhint %}


# Magnet Tool

The magnet tool will make nearby items fly towards the player so he can collect them easily.

## Required Sections

There are some required sections to be added to the config in order to have the tool working properly.

### radius

The radius in which items needs to be collected.

#### Section Type

Integer (Number, maximum of 2,147,483,647)

## How to Use

* Hold the tool in your hand.
* Right click on block or in the air.


# Pillar Tool

The pillar tool will break blocks in a pillar shape, starting from the highest block to the bottom. It will only break blocks similar to the clicked block.

## How to Use

* Hold the tool in your hand.
* Right click on a block to be broken.


# Sell Tool

The sell tool will sell items in your containers.

## How to Use

* Hold the sell tool in your hand.
* Right click on a container.


# Sort Tool

The sort tool will sort items in containers by their ids (similar order as in creative menu).

## How to Use

* Hold the sort tool in your hand.
* Right click on a container.


# Overview

WildChests brings more chests into the game. Sell chests, auto-crafters, global ender chests, larger chests, phisical player vaults and many more!

{% embed url="<https://www.youtube.com/watch?v=pqKUuqRBfCM>" %}
Diamondxr showcasing the plugin
{% endembed %}

The plugin brings custom functionalities to the vanilla chests. Larger chests, automated selling chests, crafting chests and more are all possible with WildChests.

## Table of Contents

* [Overview](https://wiki.bg-software.com/wildchests/overview)
  * [Supported Plugins](https://wiki.bg-software.com/wildchests/overview#supported-plugins)
* [Commands and Permissions](https://wiki.bg-software.com/wildchests/overview/commands-and-permissions)
  * [Commands](https://wiki.bg-software.com/wildchests/overview/commands-and-permissions#commands)
  * [Permissions](https://wiki.bg-software.com/wildchests/overview/commands-and-permissions#permissions)
* [Configuring Chests](https://wiki.bg-software.com/wildchests/overview/configuring-chests)
  * [Chest Sections](https://wiki.bg-software.com/wildchests/overview/configuring-chests#chest-sections)
* [Linked Chests](https://wiki.bg-software.com/wildchests/overview/linked-chests)
  * [How to Use](https://wiki.bg-software.com/wildchests/overview/linked-chests#how-to-use)
* [Regular Chests](https://wiki.bg-software.com/wildchests/overview/regular-chests)
  * [Sell Chest](https://wiki.bg-software.com/wildchests/overview/regular-chests#sell-chest)
    * [Deposit Method](https://wiki.bg-software.com/wildchests/overview/regular-chests#deposit-method)
  * [Crafter Chest](https://wiki.bg-software.com/wildchests/overview/regular-chests#crafter-chest)
    * [Hopper Filter](https://wiki.bg-software.com/wildchests/overview/regular-chests#hopper-filter)
  * [Auto Suction (Auto Collectors)](https://wiki.bg-software.com/wildchests/overview/regular-chests#auto-suction-auto-collectors)
    * [Whitelist](https://wiki.bg-software.com/wildchests/overview/regular-chests#whitelist)
    * [Blacklist](https://wiki.bg-software.com/wildchests/overview/regular-chests#blacklist)
  * [Large Chest](https://wiki.bg-software.com/wildchests/overview/regular-chests#large-chest)
    * [How to Use](https://wiki.bg-software.com/wildchests/overview/regular-chests#how-to-use)
  * [Storage Units](https://wiki.bg-software.com/wildchests/overview/storage-units)
    * [Max Amount](https://wiki.bg-software.com/wildchests/overview/storage-units#max-amount)

## Supported Plugins

* [ChestShop](https://www.spigotmc.org/resources/51856/)
* [CMI](https://www.spigotmc.org/resources/3742/)
* [EconomyShopGUI](https://www.spigotmc.org/resources/69927/)
* [Essentials](https://www.spigotmc.org/resources/9089/)
* [QuantumShop](https://www.spigotmc.org/resources/50696/)
* [ShopGUIPlus](https://www.spigotmc.org/resources/6515/)
* [zShop](https://www.spigotmc.org/resources/74073/)<br>
* [SuperiorSkyblock](https://bg-software.com/superiorskyblock/)\
  The plugin will deposit money into the islands' banks of players!\
  You can use the chests' names in SuperiorSkyblock for giving them different worth values!
* [TransportPipes](https://www.spigotmc.org/resources/20873/)\
  Moving items in and out of custom chests will work!
* [WildStacker](https://bg-software.com/wildstacker/)\
  The plugin will dropped items as stacked items and will collect stacked items!


# Commands and Permissions

The plugin provides a few commands that can be used by your players.

## Commands

{% hint style="info" %}
Parameters inside `<>` are required, unlike parameters in `[]` which are optional.
{% endhint %}

### /chests give \<player-name> \<chest-name> \[amount]

Give a custom chest to a player.

#### Parameters

*player-name*: The name of the player to give the chest to.

*chest-name*: The name of the chest to give.\
Must be identical to the names from the config file.

*amount*: The amount of the chest to give.

#### Permission

The permission to use the command is `wildchests.give`

### /chests info \<chest-name>

Shows information about a chest.

#### Parameters

*chest-name*: The name of the chest to get info about.\
Must be identical to the names from the config file.

#### Permission

The permission to use the command is `wildchests.info`

### /chests link

Links a linked chest into another chest.

#### Permission

The permission to use the command is `wildchests.link`

{% hint style="info" %}
Without this permission, players will not be able to link chests.
{% endhint %}

### /chests reload

Reload the settings and the language files.

#### Permission

The permission to use the command is `wildchests.reload`

### /chests save

Save all cached data into disk.

#### Permission

The permission to use the command is `wildchests.save`

### /chests settings

Open an in-game editor for chests.

#### Permission

The permission to use the command is `wildchests.settings`

## Permissions

### wildchests.\*

Gives access to all the commands.

{% hint style="danger" %}
This gives access to reload the plugin and save command!
{% endhint %}


# Configuring Chests

You can add different chests to the plugin by adding them to the config file. In this tutorial you'll see how it's done, what fields can be added and which chests are available.

First thing to do is to give your chest a unique name. This name will later be used to give the chests to players with the give command. The name must be unique to your chest, and two chests cannot share the same name. After choosing one, add it to your config under the chests section:

```yaml
chests:
  <chest-name>:
    ...
```

Second step is to choose the type of chest you want to create. There are plenty of different chests you can create, and each of them have a different action it can do:

#### LINKED\_CHEST

The linked-chest mode used to link chests to other chests. All the linked chests will share the same inventory, and it can be opened by different chest blocks accross the world.\
Read more about it [here](/wildchests/overview/linked-chests).

#### CHEST

The chest mode used to make the chest functional as a vanilla chest. It can later be expanded to do different tasks, such as selling its contents, craft them or have different pages for the chest.\
Read more about it [here](/wildchests/overview/regular-chests).

#### STORAGE\_UNIT

The storage-unit mode makes the chest to be able to hold infinite amount of an item inside it. It has only one slot available, and it can hold only one item at a time without a limit to it.\
Read more about it [here](/wildchests/overview/storage-units).

Once you chose your chest, you can add it to the config under the `chest-mode` section:

```yaml
chests:
  <chest-name>:
    chest-mode: <chest>
```

## Chest Sections

In order to properly have your chests registered, you must add the required sections for each chest (These can be found on each chest's page), alongside of a name and a lore to the chest's item. The `item.name` and `item.lore` sections are used for this purpose:

```yaml
chests:
  <chest-name>:
    chest-mode: <chest>
    item:
      name: 'Example Name'
      lore:
      - 'Example Lore'
```

{% hint style="warning" %}
You must configure a name or a lore for each chest, otherwise they will not get registered.
{% endhint %}

Each chest can have optional sections besides the required ones, which can change the behavior of your chests. Here is the list of sections you can use:

### size

Set the amount of rows the chest will have.

#### Section Type

Integer (Number between 1 and 6)

### title

Give a custom title to the chest's inventory title.

#### Section Type

String

### multiplier

Set a sell multiplier for the chest.

#### Section Type

Double (Decimal Number)

### auto-collect

When set, instead of dropping the item on ground, it will be collected straight to the player's inventory.

#### Section Type

Boolean (true/false)

### particles

List of particles to around the chest on ground.

#### Section Type

List

{% hint style="info" %}
You can find a list of particles [on this website](https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Particle.html).
{% endhint %}


# Linked Chests

The linked-chest mode used to link chests to other chests. All the linked chests will share the same inventory, and it can be opened by different chest blocks accross the world.

Linked chests are similar to regular chests in terms of how they are configured and which sections can be added to them. The main difference as these chests can link to other chests in the world.

## How to Use

* Place two linked chests in the world
* Look at the first chest and type `/chests link`
* Look at the other chest and type `/chests link` again


# Regular Chests

The chest mode used to make the chest functional as a vanilla chest. It can later be expanded to do different tasks, such as selling its contents, craft them or have different pages for the chest.

All the different functionalities that chests can have are the followings:

## Sell Chest

The sell chests will automatically sell their contents and deposit the money to the player that placed them. The prices of the items are grabbed automatically from the supported shop plugins.

In order to set a chest as a sell chest, set the `sell-mode` section to true under the chest:

```yaml
chests:
  <chest-name>:
    chest-mode: CHEST
    sell-mode: true
    <other sections>
```

### Deposit Method

You can choose how the chest will deposit to money. It can deposit the money directly to the player's personal bank, or deposit to his island's bank (Supported only for SuperiorSkyblock). By default, the money will be deposited to his personal bank.

You can change this behavior by setting the `deposit-method` section for the chest to `"VAULT"` (Personal banks) or `"SUPERIORSKYBLOCK2"` (Island banks).

## Crafter Chest

The crafter chests will automatically use the contents in the chest to craft predefined recipes. You can configure a list of recipes that the chest will craft for the players. This list cannot be changed by the player, and you'll have to configure different chests that will have different recipes for this task.

You can configure the recipes list by adding a `crafter-chest` section that contains a list of recipes to craft:

```yaml
chests:
  <chest-name>:
    chest-mode: CHEST
    crafter-chest:
      - TNT
```

{% hint style="danger" %}
Avoid choosing two recipes that cause a cycle, as the results are undefined.\
For example, adding `"GOLD_INGOT"` and `"GOLD_BLOCK"` cause this cycle:\
Gold blocks can be crafted using gold ingots, and gold ingots can be crafted using gold blocks.
{% endhint %}

### Hopper Filter

You can configure it so hoppers will only take out items of the crafter chests if these items were crafted by the chest. It will make it so the ingredients for the recipes will not be taken out. You can enable this feature by setting the `hopper-filter` section to true under your chest.

## Auto Suction (Auto Collectors)

The auto suction chests (aka auto collectors) will pickup items in their range into the chest automatically. You can make a chest as an auto collector by adding the `auto-suction` section to it. The `auto-suction` section has two other sections to be configured:

*range*: The range in which items will be collected.

*chunk*: Whether the chest should collect items in the chunk instead of using the range.\
The range will still be used as an indicator to how many y levels to collect items from the chest.

```yaml
chests:
  <chest-name>:
    chest-mode: CHEST
    auto-suction:
      range: 5
      chunk: true
```

{% hint style="info" %}
The chest will pickup items in its chunk if the items are 5 blocks above or below it.
{% endhint %}

### Whitelist

You can configure a list of items that the chest can pickup. Items not in this list will not be picked up by the chest. You can enable it by adding `whitelist` to the chest with a list of items to collect:

```yaml
chests:
  <chest-name>:
    chest-mode: CHEST
    auto-suction:
      ...
    whitelist:
    - DIAMOND
    - IRON_INGOT
```

{% hint style="info" %}
The chest will pickup only diamond and iron ingots.
{% endhint %}

### Blacklist

You can configure a list of items that the chest will not pickup. Items in this list will not be picked up by the chest. You can enable it by adding `blacklist` to the chest with a list of items to filter out:

```yaml
chests:
  <chest-name>:
    chest-mode: CHEST
    auto-suction:
      ...
    blacklist:
    - DIRT
    - COBBLESTONE
```

{% hint style="info" %}
The chest will pickup any item besides dirt and cobblestone.
{% endhint %}

## Large Chest

You can configure more pages to chests and by that making them larger than usual. You can do that by adding a new section `pages` to your chest. The `pages` section should have sub-sections as indicators to the pages of the page. For example, to configure the second page, you'll add a section `'2'` under the `pages` section:

{% hint style="info" %}
The first page can be configured using default sections as mentioned [here](https://wiki.bg-software.com/wildchests/overview/configuring-chests#size).
{% endhint %}

```yaml
chests:
  <chest-name>:
    chest-mode: CHEST
    pages:
      '2':
        ...
      '3':
        ...
```

{% hint style="info" %}
The chest will have 3 pages in total.
{% endhint %}

Each section of page can have the following sections:

*title*: The title of the inventory of the chest in this page.\
This section is required and must be set to all pages.

*price*: The price for purchasing the page.\
This section is optional.

```yaml
chests:
  <chest-name>:
    chest-mode: CHEST
    pages:
      '2':
        price: 500000.0
        title: 'Chest #2'
      '3':
        price: 1000000.0
        title: 'Chest #3'
```

{% hint style="info" %}
The second page will cost $500,000 to upgrade and the third one will cost $1,000,000.
{% endhint %}

### How to Use

You can move between pages in the larger chests by right-clicking and left-clicking outside the inventory's window. Right click is to go to the next page and left clicking to the previous one.

In order to purchase a new page, simply go to your last page and right click as you'll open the next one. Instead of opening a new page, you'll get a message to confirm your purchase. You can either confirm or cancel the operation.


# Storage Units

The storage-unit mode makes the chest to be able to hold infinite amount of an item inside it. It has only one slot available, and it can hold only one item at a time without a limit to it.

{% hint style="warning" %}
Storage units can hold a lot of items. Once broken, all of these items will be dropped on ground. It's recommend to have a plugin that can stack items or a plugin that can limit items to avoid lag issues.
{% endhint %}

### Max Amount

You can limit the maximum amount of items a storage unit can hold. You can do that by setting the `max-amount` section with the maximum amount of items it can hold:

```yaml
chests:
  storage_unit:
    chest-mode: STORAGE_UNIT
    max-amount: 100000
```

{% hint style="info" %}
The storage unit will only be able to hold up to 100,000 items inside it.
{% endhint %}


# Overview

WildLoaders brings a new block to the game called "Chunk-Loader". This block can keep chunks loaded without alt accounts!

The plugin will automatically keep chunks loaded as a player is loading them. This is a great alternative for your players need to use alt-accounts to do this job for them. Keep in mind that this may cause lag due to more chunks being loaded by the chunk loaders!

## Table of Contents

* [Overview](https://wiki.bg-software.com/wildloaders/overview)
  * [Supported Plugins](https://wiki.bg-software.com/wildloaders/overview#supported-plugins)
* [Commands and Permissions](https://wiki.bg-software.com/wildloaders/overview/commands-and-permissions)
  * [Commands](https://wiki.bg-software.com/wildloaders/overview/commands-and-permissions#commands)
  * [Permissions](https://wiki.bg-software.com/wildloaders/overview/commands-and-permissions#permissions)

## Supported Plugins

* [EpicSpawners](https://songoda.com/marketplace/product/13)\
  Spawners of EpicSpawners will still work even if there are no players nearby.<br>
* [FactionsUUID](https://www.spigotmc.org/resources/1035/)
* [FactionsX](#features)
* [MassiveCore Factions](https://www.spigotmc.org/resources/1900/)
* [SuperiorSkyblock](https://bg-software.com/superiorskyblock/)\
  WildLoaders can keep all chunks in the territories of these plugins loaded at the same time.


# Commands and Permissions

The plugin provides a few commands that can be used by your players.

## Commands

{% hint style="info" %}
Parameters inside `<>` are required, unlike parameters in `[]` which are optional.
{% endhint %}

### /loader give \<player-name> \<loader-name> \[amount] \[time]

Gives a chunk loader to a specific player.

#### Parameters

*player-name*: The name of the player to give the loader to.

*loader-name*: The name of the loader to give.\
Must be identical to the names from the config file.

*amount*: The amount of loaders to give to the player.

*time*: The time left for the loader to work\
This arugment takes time in seconds. However, you can set one of the following chars after the amount to change it to other time units:\
`m` or `M` for minutes; `h` or `H` for hours; `d` or `D` for days.

{% hint style="info" %}
The argument `1d20h50m60` will give the loader a total time of 1 day, 20 hours, 50 minutes and 60 seconds.
{% endhint %}

#### Permission

The permission to use the command is `wildloaders.give`

### /loader list

Show all the available chunk loaders on the server.

#### Permission

The permission to use the command is `wildloaders.list`

## Permissions

### wildloaders.\*

Gives access to all the command.

### wildloaders.use

Gives access to place chunk-loaders.

{% hint style="info" %}
Without this permission, players will not be able to use chunk loaders.
{% endhint %}


# Overview

SuperiorSkyblock is a modern Skyblock core that brings many tweaks and changes to the old and lovely Skyblock game-mode.

{% embed url="<https://www.youtube.com/watch?v=5VB39heYjp0>" %}
SoulStiker showcasing the plugin
{% endembed %}

SupreiorSkyblock is an all in one plugin for your Skyblock server. Every aspect of the plugin is configurable, and it's packed with a rich API that can let you change the way it behaves however you want. The plugin is very well optimized to ensure your server can hold as many players as possible!

## Table of Contents

* [Overview](https://wiki.bg-software.com/superiorskyblock/overview)
  * [Supported Plugins](https://wiki.bg-software.com/superiorskyblock/overview#supported-plugins)
    * [Spawners Providers](https://wiki.bg-software.com/superiorskyblock/overview#spawners-providers)
    * [Skins Providers](#skins-providers)
    * [AFK Providers](#afk-providers)
    * [Vanish Providers](#vanish-providers)
    * [Permissions Providers](#permissions-providers)
    * [Placeholders Providers](#placeholders-providers)
    * [Stacked Blocks Providers](#stacked-blocks-providers)
    * [Prices Providers](#prices-providers)
    * [Additional Plugins](#general-plugins)
* [Commands and Permissions](https://wiki.bg-software.com/superiorskyblock/overview/commands-and-permissions)
  * [Player Commands](https://wiki.bg-software.com/superiorskyblock/overview/commands-and-permissions/player-commands)
  * [Admin Commands](https://wiki.bg-software.com/superiorskyblock/overview/commands-and-permissions/admin-commands)
  * [Permissions](https://wiki.bg-software.com/superiorskyblock/overview/commands-and-permissions/permissions)
* [Placeholders](https://wiki.bg-software.com/superiorskyblock/overview/placeholders)
  * [Global Placeholders](https://wiki.bg-software.com/superiorskyblock/overview/placeholders/global-placeholders)
  * [Island Placeholders](https://wiki.bg-software.com/superiorskyblock/overview/placeholders/island-placeholders)
  * [Player Placeholders](https://wiki.bg-software.com/superiorskyblock/overview/placeholders/player-placeholders)
  * [Chat Placeholders](https://wiki.bg-software.com/superiorskyblock/overview/placeholders/chat-placeholders)
* [Configuration Files](/superiorskyblock/overview/configuration-files)
  * [Directories Tree](/superiorskyblock/overview/configuration-files#directories-tree)
  * [Configuration Files](/superiorskyblock/overview/configuration-files#configuration-files)
* [Messages](https://wiki.bg-software.com/superiorskyblock/messages)
  * [Raw Messages](https://wiki.bg-software.com/superiorskyblock/messages#raw-messages)
  * [Complex Messages](https://wiki.bg-software.com/superiorskyblock/messages#complex-messages)
    * [Action Bars](https://wiki.bg-software.com/superiorskyblock/messages#action-bars)
    * [Titles](https://wiki.bg-software.com/superiorskyblock/messages#titles)
    * [Interactable Messages](https://wiki.bg-software.com/superiorskyblock/messages#interactable-messages)
  * [Custom language file](https://wiki.bg-software.com/superiorskyblock/messages#custom-language-file)
* [Island Flags](https://wiki.bg-software.com/superiorskyblock/island-flags)
  * [Built-in Flags](#table-of-contents)
  * [Create your own island flag](https://wiki.bg-software.com/superiorskyblock/overview/island-flags#create-your-own-island-flag)
* [Island Privileges](https://wiki.bg-software.com/superiorskyblock/overview/island-privileges)
  * [Built-in Privileges](https://wiki.bg-software.com/superiorskyblock/overview/island-privileges#built-in-privileges)
  * [Create your own island privilege](https://wiki.bg-software.com/superiorskyblock/overview/island-privileges#create-your-own-island-privilege)
* [Schematics](https://wiki.bg-software.com/superiorskyblock/overview/schematics)
  * [Creating your first schematic](https://wiki.bg-software.com/superiorskyblock/overview/schematics#creating-your-first-schematic)
  * [WorldEdit Schematics](https://wiki.bg-software.com/superiorskyblock/overview/schematics#worldedit-schematics)
  * [Adding your own schematic](https://wiki.bg-software.com/superiorskyblock/overview/schematics#adding-your-own-schematic)
* [Upgrades](https://wiki.bg-software.com/superiorskyblock/overview/upgrades)
  * [The Upgrades Module](https://wiki.bg-software.com/superiorskyblock/overview/upgrades#the-upgrades-module)
  * [Creating your first upgrade](https://wiki.bg-software.com/superiorskyblock/overview/upgrades#creating-your-first-upgrade)
  * [Level Fields](https://wiki.bg-software.com/superiorskyblock/overview/upgrades#level-fields)
    * [Required Checks](https://wiki.bg-software.com/superiorskyblock/overview/upgrades#required-checks)
  * [Island Values](https://wiki.bg-software.com/superiorskyblock/overview/upgrades#island-values)
  * [Price Types](https://wiki.bg-software.com/superiorskyblock/overview/upgrades#price-types)
    * [Example](https://wiki.bg-software.com/superiorskyblock/overview/upgrades#example)
  * [Island Multipliers](/superiorskyblock/overview/upgrades/island-multipliers)
    * [Crop Growth](https://wiki.bg-software.com/superiorskyblock/overview/upgrades/island-multipliers#crop-growth)
    * [Spawner Rates](https://wiki.bg-software.com/superiorskyblock/overview/upgrades/island-multipliers#spawner-rates)
    * [Mob Drops](https://wiki.bg-software.com/superiorskyblock/overview/upgrades/island-multipliers#mob-drops)
* [Menus](https://wiki.bg-software.com/superiorskyblock/overview/menus)
  * [Editing the menu's style](https://wiki.bg-software.com/superiorskyblock/overview/menus#editing-the-menus-style)
  * [Editing items in the menu](https://wiki.bg-software.com/superiorskyblock/overview/menus#editing-items-in-the-menu)
  * [Giving sounds to items](https://wiki.bg-software.com/superiorskyblock/overview/menus#giving-sounds-to-items)
  * [Running custom commands](https://wiki.bg-software.com/superiorskyblock/overview/menus#running-custom-commands)
  * [Permissions Section](https://wiki.bg-software.com/superiorskyblock/overview/menus#permissions-section)
  * [Creating custom menus](https://wiki.bg-software.com/superiorskyblock/overview/menus#creating-custom-menus)
* [Missions](https://wiki.bg-software.com/superiorskyblock/overview/missions)
  * [How do missions work?](https://wiki.bg-software.com/superiorskyblock/overview/missions#how-do-missions-work)
  * [Default mission jars](https://wiki.bg-software.com/superiorskyblock/overview/missions#default-mission-jars)
  * [Missions file-structure](https://wiki.bg-software.com/superiorskyblock/overview/missions#missions-files-structure)
  * [Create your first mission](https://wiki.bg-software.com/superiorskyblock/overview/missions#create-your-first-mission)
  * [Create your own mission jar](#table-of-contents)
  * [BlocksMissions](/superiorskyblock/overview/missions/blocksmissions)
  * [BrewingMissions](/superiorskyblock/overview/missions/brewingmissions)
  * [CraftingMissions](/superiorskyblock/overview/missions/craftingmissions)
  * [EnchantingMissions](/superiorskyblock/overview/missions/enchantingmissions)
  * [FarmingMissions](/superiorskyblock/overview/missions/farmingmissions)
  * [FishingMissions](/superiorskyblock/overview/missions/fishingmissions)
  * [IslandMissions](/superiorskyblock/overview/missions/islandmissions)
  * [ItemsMissions](/superiorskyblock/overview/missions/itemsmissions)
  * [KillsMissions](/superiorskyblock/overview/missions/killsmissions)
  * [StatisticsMissions](/superiorskyblock/overview/missions/statisticsmissions)
* [Javascript Engine](https://wiki.bg-software.com/superiorskyblock/overview/javascript-engine)
  * [How to install an external scripts engine?](https://wiki.bg-software.com/superiorskyblock/overview/javascript-engine#how-to-install-an-external-scripts-engine)
* [API](https://wiki.bg-software.com/superiorskyblock/overview/api)
  * [Basic Usage](https://wiki.bg-software.com/superiorskyblock/overview/api#basic-usage)
  * [Creating your own command](https://wiki.bg-software.com/superiorskyblock/overview/api#creating-your-own-command)
  * [Register your own block-keys](https://wiki.bg-software.com/superiorskyblock/overview/api#register-your-own-block-keys)
* [Addons](https://wiki.bg-software.com/superiorskyblock/overview/addons)
  * [OneBlock Addon](https://wiki.bg-software.com/superiorskyblock/overview/addons#oneblock-addon)
  * [AcidIslands Addon](https://wiki.bg-software.com/superiorskyblock/overview/addons#acidislands-addon)
  * [Custom Script-Engines Addons](https://wiki.bg-software.com/superiorskyblock/overview/addons#custom-script-engines-addons)
    * [Nashron Engine](https://wiki.bg-software.com/superiorskyblock/overview/addons#nashron-engine)
    * [Rhino Engine](https://wiki.bg-software.com/superiorskyblock/overview/addons#rhino-engine)
    * [GraalVM Engine](https://wiki.bg-software.com/superiorskyblock/overview/addons#graalvm-engine)

## Supported Plugins

### Spawners Providers

The plugins listed below will have their correct spawner-types calculated towards top value, as well respecting of stacked spawners.

* [AdvancedSpawners](https://www.spigotmc.org/resources/75458/)
* [EpicSpawners](https://songoda.com/marketplace/product/13)
* [MergedSpawner](https://polymart.org/resource/189)
* [RoseStacker](https://www.spigotmc.org/resources/82729/)
* [SilkSpawners](https://www.spigotmc.org/resources/7811/)
* [UltimateStacker](https://songoda.com/marketplace/product/16)
* [WildStacker](https://bg-software.com/wildstacker/)

### Skins Providers

The plugins listed below will be used to get skins of players for player heads inside menus.

* [ChangeSkin](https://www.spigotmc.org/resources/21469/)
* [SkinsRestorer](https://www.spigotmc.org/resources/2124/)

### AFK Providers

The plugins listed below will be used to indicate afk players.

* [CMI](https://www.spigotmc.org/resources/3742/)
* [Essentials](https://www.spigotmc.org/resources/9089/)

### Vanish Providers

The plugins listed below will be used to indicate vanished players. Vanished players will not be shown in online status, online placeholders, etc.

* [CMI](https://www.spigotmc.org/resources/3742/)
* [Essentials](https://www.spigotmc.org/resources/9089/)
* [SuperVanish](https://www.spigotmc.org/resources/1331/)
* [VanishNoPacket](https://dev.bukkit.org/projects/vanish/)

### Permissions Providers

The plugins listed below will have direct usage of their API when checking for permissions of players.

* [LuckPerms](https://www.spigotmc.org/resources/28140/)

### Placeholders Providers

The plugins listed below will have placeholders registered to them.

* [MVdWPlaceholderAPI](https://www.spigotmc.org/resources/11182/)
* [PlaceholderAPI](https://www.spigotmc.org/resources/6245/)

### Stacked Blocks Providers

The plugins listed below will have their stacked blocks calculated towards top value.

* [RoseStacker](https://www.spigotmc.org/resources/82729/)
* [WildStacker](https://bg-software.com/wildstacker/)

### Prices Providers

The plugins listed below can be synced for worth value of blocks.

* [ShopGUIPlus](https://www.spigotmc.org/resources/6515/)

### Additional Plugins

* [CoreProtect](https://www.spigotmc.org/resources/8631/)\
  Stacked blocks will be logged to CoreProtect.
* [JetsMinions](https://www.spigotmc.org/resources/59972/)\
  Minions breaking blocks will automatically get detected.
* [LeaderHeads](https://www.spigotmc.org/resources/2079/)\
  Islands data will be synced with LeaderHeads to display top islands using the plugin.
* [Slimefun](https://github.com/Slimefun/Slimefun4)\
  \- Islands will be protected when trying to access Slimefun machines.\
  \- Android miners will automatically get detected.\
  \- Slimefun machines will get cleared when deleting islands.\
  \- Block placers will automatically get detected.


# Commands and Permissions

The plugin provides commands that can be used by your players.

##


# Player Commands

{% hint style="info" %}
Parameters inside `<>` are required, unlike parameters in `[]` which are optional.
{% endhint %}

### /island accept \[player-name / island-name]

Accept an invitation to an island from a player.

#### Aliases

/island join \[player-name / island-name]

#### Parameters

*player-name*: The name of the player to accept invite from.

*island-name*: The name of the island to accept invite from.

#### Permission

The permission to use the command is `superior.island.accept`

### /island balance \[player-name / island-name]

Check the balance of an island.

#### Aliases

/island bal \[player-name / island-name]

/island money \[player-name / island-name]

#### Parameters

player-name: The name of the player to get balance of his island.

island-name: The name of the island to get balance of.

#### Permission

The permission to use the command is `superior.island.balance`

### /island ban \<player-name>

Ban a player from your island.

#### Parameters:

player-name: The name of the player to ban from the island.

#### Permission

The permission to use the command is `superior.island.ban`

### /island bank \[logs]

Open the island's bank.

#### Parameters

*logs*: Open the bank transaction logs menu.

#### Permission

The permission to use the command is `superior.island.bank`

### /island bans

Open the banned players menu.

#### Aliases

/island banlist

#### Permission

The permission to use the command is `superior.island.bans`

### /island biome

Change the biome of the island.

#### Aliases

/island setbiome

#### Permission

The permission to use the command is `superior.island.biome`

### /island border \[border-color]

Change the border color of islands.

#### Parameters

*border-color*: The color to set to the border. When omitted, the border color menu is opened.

#### Permission

The permission to use the command is `superior.island.border`

### /island chest \[page]

Open the island's chest.

#### Aliases

/is vault \[page]

#### Parameters

*page*: The page to open.

#### Permission

The permission to use the command is `superior.island.chest`

### /island close

Close the island to the public.

#### Aliases

/is lock

#### Permission

The permission to use the command is `superior.island.close`

### /island coop \<player-name>

Add a player as a co-op to your island.

#### Aliases

/island trust \<player-name>

#### Parameters

*player-name*: The name of the player to add as co-op to your island.

#### Permission

The permission to use the command is `superior.island.coop`

### /island coops

Open the coops menu.

#### Permission

The permission to use the command is `superior.island.coops`

### /island counts \[player-name / island-name]

See block counts in an island.

#### Aliases

/island blocks \[player-name / island-name]

#### Parameters

*player-name*: The name of the player to check block counts in this island.

*island-name*: The name of the island to check block counts for.

#### Permission

The permission to use the command is `superior.island.counts`

### /island create \[island-name]

Create a new island. The schematic is chosen through the island creation menu.

#### Parameters

*island-name*: The name to give to the new island. Required only when `island-names.required-for-creation` is enabled in the config.

#### Permission

The permission to use the command is `superior.island.create`

### /island delwarp \<warp-name...>

Delete an island warp.

#### Parameters

*warp-name*: The name of the warp to delete.

#### Permission

The permission to use the command is `superior.island.delwarp`

### /island demote \<player-name>

Demote a member in your island.

#### Parameters

*player-name*: The name of the player to demote.

#### Permission

The permission to use the command is `superior.island.demote`

### /island deposit \<amount>

Deposit money into the island's bank.

#### Parameters

*amount*: The amount of money to deposit.

#### Permission

The permission to use the command is `superior.island.deposit`

### /island disband

Disband your island permanently.

#### Aliases

/island reset

/island delete

#### Permission

The permission to use the command is `superior.island.disband`

### /island expel \<player-name>

Kick a visitor from your island.

#### Parameters

*player-name*: The name of the player to expel.

#### Permission

The permission to use the command is `superior.island.expel`

### /island fly

Toggle island fly.

#### Permission

The permission to use the command is `superior.island.fly`

The permission is also checked when players join the server or switch worlds - island fly is automatically disabled for players without it.

### /island help \[page]

List of all available commands.

#### Parameters

*page*: The page of commands to show.

#### Permission

The permission to use the command is `superior.island.help`

### /island invite \<player-name>

Invite a player to your island.

#### Aliases

/island add \<player-name>

#### Parameters

*player-name*: The name of the player to invite.

#### Permission

The permission to use the command is `superior.island.invite`

### /island kick \<player-name>

Kick a player from your island.

#### Aliases

/island remove \<player-name>

#### Parameters

*player-name*: The player to kick from the island.

#### Permission

The permission to use the command is `superior.island.kick`

### /island lang

Change your personal language.

#### Aliases

/island language

#### Permission

The permission to use the command is `superior.island.lang`

### /island leave

Leave your island.

#### Permission

The permission to use the command is `superior.island.leave`

### /island members

Open the members menu.

#### Permission

The permission to use the command is `superior.island.members`

### /island mission complete \<mission-name>

Complete a mission.

#### Aliases

/island challenge complete \<mission-name>

#### Parameters

*mission-name*: The name of the mission to complete.

#### Permission

The permission to use the command is `superior.island.mission`

### /island missions \[mission-category]

Open the missions menu.

#### Aliases

/island challenges \[mission-category]

#### Parameters

*mission-category*: The name of the missions category to open directly.

#### Permission

The permission to use the command is `superior.island.missions`

### /island name \<island-name>

Change the name of your island.

#### Aliases

/island setname \<island-name>

/island rename \<island-name>

#### Parameters

island-name: The new name of the island to set.

#### Permission

The permission to use the command is `superior.island.name`

### /island open

Open the island to the public.

#### Aliases

/island unlock

#### Permission

The permission to use the command is `superior.island.open`

### /island panel \[members/visitors] \[toggle]

Open island panel.

#### Aliases

/island manager \[members/visitors] \[toggle]

/island cp \[members/visitors] \[toggle]

#### Parameters

*members/visitors*: Whether to open the `members` menu or the `visitors` menu.

*toggle*: Whether to make `/is` open the panel menu.

#### Permission

The permission to use the command is `superior.island.panel`

Opening the `members` menu also requires `superior.island.members`, and the `visitors` menu also requires `superior.island.visitors`.

### /island pardon \<player-name>

Unban a player from your island.

#### Aliases

/island unban \<player-name>

#### Parameters

*player-name*: The name of the player to unban from the island.

#### Permission

The permission to use the command is `superior.island.pardon`

### /island permissions \[player-name] \[reset]

Get all permissions for an island role or a player.

#### Aliases

/island perms \[player-name] \[reset]

/island setpermission \[player-name] \[reset]

/island setperm \[player-name] \[reset]

#### Parameters

*player-name*: The name of the player to change permissions.

*reset*: Whether to reset permissions for the island-role or player.

#### Permission

The permission to use the command is `superior.island.permissions`

### /island promote \<player-name>

Promote a member in your island.

#### Parameters

*player-name*: The name of the player to promote.

#### Permission

The permission to use the command is `superior.island.promote`

### /island rankup \<upgrade-name>

Level up an upgrade.

#### Parameters

*upgrade-name*: The name of the upgrade to rankup.

#### Permission

The permission to use the command is `superior.island.rankup`

### /island rate \[player-name / island-name]

Rate an island.

#### Parameters

*player-name*: The name of the player to rate his island.

*island-name*: The name of the island to rate.

#### Permission

The permission to use the command is `superior.island.rate`

### /island ratings

Show all island ratings.

#### Permission

The permission to use the command is `superior.island.ratings`

### /island recalc

Re-calculates the island worth.

#### Aliases

/island recalculate

/island level

#### Permission

The permission to use the command is `superior.island.recalc`

### /island setdiscord \<discord-tag>

Set the discord of the island.

#### Parameters

*discord-tag*: The discord tag of the island.

#### Permission

The permission to use the command is `superior.island.setdiscord`

### /island setpaypal \<email>

Set the paypal email of the island.

#### Parameters

*email*: The paypal email of the island.

#### Permission

The permission to use the command is `superior.island.setpaypal`

### /island setrole \<player-name> \<island-role>

Change the role of a player in your island.

#### Parameters

*player-name*: The name of the player to change the role to.

*island-role*: The island role to give to the player.

#### Permission

The permission to use the command is `superior.island.setrole`

### /island setteleport

Change the teleport location of your island.

#### Aliases

/island settp

/island setgo

/island sethome

#### Permission

The permission to use the command is `superior.island.setteleport`

### /island settings \[reset]

Open the settings menu.

#### Parameters

*reset*: Reset all island settings to their defaults.

#### Permission

The permission to use the command is `superior.island.settings`

### /island setwarp \<warp-name> \[warp-category]

Create a new island warp.

#### Parameters

*warp-name*: The name of the warp to set.

*warp-category*: The name of the category of the warp.

#### Permission

The permission to use the command is `superior.island.setwarp`

### /island show \[player-name / island-name]

Get information about an island.

#### Aliases

/island info

#### Parameters

*player-name*: The name of the player to get information about his island.

*island-name*: The name of the island to get information about.

#### Permission

The permission to use the command is `superior.island.show`

### /island team \[player-name / island-name]

Get information about island members status.

#### Aliases

/island showteam \[player-name / island-name]

/island online \[player-name / island-name]

#### Parameters

*player-name*: The name of the player to check members status of his island.

*island-name*: The name of the island to check members.

#### Permission

The permission to use the command is `superior.island.team`

### /island teamchat \[message]

Toggle team chat mode.

#### Aliases

/island chat \[message]

/island tc \[message]

#### Parameters

*message*: The message to send in the island-chat.

#### Permission

The permission to use the command is `superior.island.teamchat`

### /island teleport

Teleport to your island.

#### Aliases

/island tp

/island go

/island home

#### Permission

The permission to use the command is `superior.island.teleport`

### /island toggle \<border/blocks>

Toggle island borders and stacked blocks placements.

#### Parameters

*border*: Toggle the island borders visiblility.

*blocks*: Toggle stacking of blocks.

#### Permission

The permission to use the command is `superior.island.toggle`

The permission to use the border toggle command is `superior.island.toggle.border`

The permission to use the blocks toggle command is `superior.island.toggle.blocks`

### /island top

Open top islands panel.

#### Permission

The permission to use the command is `superior.island.top`

### /island transfer \<player-name>

Transfer your island's leadership.

#### Aliases

/island leader \<player-name>

/island leadership \<player-name>

#### Parameters

*player-name*: The name of the player to transfer the leadership to.

#### Permission

The permission to use the command is `superior.island.transfer`

### /island uncoop \<player-name>

Remove a player from being a co-op in your island.

#### Aliases

/island untrust \<player-name>

#### Parameters

*player-name*: The name of the player to remove from being a co-op.

#### Permission

The permission to use the command is `superior.island.uncoop`

### /island upgrade

Open upgrades panel.

#### Aliases

/island upgrades

#### Permission

The permission to use the command is `superior.island.upgrade`

### /island value \[material]

Get the worth value of a block in your hand.

#### Parameters

*material*: Get the worth value of a specific material.

#### Permission

The permission to use the command is `superior.island.value`

### /island values \[player-name / island-name]

Open the values menu.

#### Parameters

*player-name*: The name of player to check values of blocks of his island.

*island-name*: The name of the island to check values of.

#### Permission

The permission to use the command is `superior.island.values`

### /island visit \<player-name / island-name>

Teleport to the visitors location of an island.

#### Parameters

*player-name*: The name of the player to visit his island.

*island-name*: The name of the island to visit.

#### Permission

The permission to use the command is `superior.island.visit`

### /island visitors

Open the visitors menu.

#### Permission

The permission to use the command is `superior.island.visitors`

### /island warp \[player-name / island-name] \[warp-name]

Warp to an island warp.

#### Parameters

*player-name*: The name of the player to warp to his island.

*island-name*: The name of the island to warp to.

*warp-name*: The name of warp to teleport to.

#### Permission

The permission to use the command is `superior.island.warp`

### /island warps

Open the warps menu.

#### Permission

The permission to use the command is `superior.island.warps`

### /island withdraw \<amount>

Withdraw money from your island's bank.

#### Parameters

amount: The amount of money to withdraw from your island bank.

#### Permission

The permission to use the command is `superior.island.withdraw`


# Admin Commands

{% hint style="info" %}
Parameters inside `<>` are required, unlike parameters in `[]` which are optional.
{% endhint %}

### /island admin

List all available admin commands.

#### Permission

The permission to use the command is `superior.admin`

### /island admin add \<player-name / island-name> \<target-name>

Add a player to an island.

#### Parameters

*player-name*: The name of the player to add the target to his island.

*island-name*: The name of the island to add the target to.

*target-name*: The name of the target player to add.

#### Permission

The permission to use the command is `superior.admin.add`

### /island admin addbanklimit \<player-name / island-name / \*> \<limit>

Add a bank limit to an existing bank limit of an island.

#### Parameters

*player-name*: The name of the player to add bank limit to his island.

*island-name*: The name of the island to add bank limit to.

*\**: Add bank limit to all islands on the server.

*limit*: The limit to add.

#### Permission

The permission to use the command is `superior.admin.addbanklimit`

### /island admin addblocklimit \<player-name / island-name / \*> \<material> \<limit>

Add a block limit to an existing block limit of an island.

#### Parameters

*player-name*: The name of the player to add block limit to his island.

*island-name*: The name of the island to add block limit to.

*\**: Add block limits to all islands on the server.

*material*: The material to add block limit to.

*limit*: The limit to give to the block limit.

#### Permission

The permission to use the command is `superior.admin.addblocklimit`

### /island admin addbonus \<player-name / island-name / \*> \<worth/level> \<amount>

Add a bonus to an existing bonus of an island.

#### Parameters

*player-name*: The name of the player to add bonus to his island.

*island-name*: The name of the island to add bonus to.

*\**: Add bonus to all islands on the server.

*worth*: Add bonus for the worth value of the island.

*level*: Add bonus for the level value of the island.

*amount*: The amount of bonus to add.

#### Permission

The permission to use the command is `superior.admin.addbonus`

### /island admin addcooplimit \<player-name / island-name / \*> \<limit>

Add a coop limit to an existing coop limit of an island.

#### Parameters

*player-name*: The name of the player to add coop limit to his island.

*island-name*: The name of the island to add coop limit to.

*\**: Add coop limit to all islands on the server.

*limit*: The limit to add.

#### Permission

The permission to use the command is `superior.admin.addcooplimit`

### /island admin addcropgrowth \<player-name / island-name / \*> \<multiplier>

Add a crop-growth multiplier to an island.

#### Parameters

*player-name*: The name of the player to add crop growth to his island.

*island-name*: The name of the island to add crop growth to.

*\**: Add crop growth to all islands on the server.

*multiplier*: The multiplier to add.

#### Permission

The permission to use the command is `superior.admin.addcropgrowth`

### /island admin adddisbands \<player-name> \<amount>

Add more disbands to a player.

#### Aliases

/island admin givedisbands \<player-name> \<amount>

#### Parameters

*player-name*: The name of the player to add disbands to.

*amount*: The amount of disbands to add.

#### Permission

The permission to use the command is `superior.admin.givedisbands`

### /island admin addeffect \<player-name / island-name / \*> \<effect> \<level>

Add an island effect to an existing effect level for an island.

#### Parameters

*player-name*: The name of the player to add island effect to his island.

*island-name*: The name of the island to add island effect to.

*\**: Add island effect to all islands on the server.

*effect*: The effect to add.

*level*: The level of the effect to add.

#### Permission

The permission to use the command is `superior.admin.addeffect`

### /island admin addentitylimit \<player-name / island-name / \*> \<entity> \<limit>

Add an entity limit to an existing entity limit of an island.

#### Parameters

*player-name*: The name of the player to add entity limit to his island.

*island-name*: The name of the island to add entity limit to.

*\**: Add entity limit to all islands on the server.

*entity*: The name of the entity type to add limit to.

*limit*: The limit to add.

#### Permission

The permission to use the command is `superior.admin.addentitylimit`

### /island admin addgenerator \<player-name / island-name / \*> \<material> \<value> \[world]

Add generator rates to an existing rates of an island.

#### Parameters

*player-name*: The name of the player to add generator rate to his island.

*island-name*: The name of the island to add generator rate to.

*\**: Add generator rate to all islands on the server.

*material*: The block to add rates to.

*value*: The rate to add.

*world*: The world to add rates in.

#### Permission

The permission to use the command is `superior.admin.addgenerator`

### /island admin addmobdrops \<player-name / island-name / \*> \<multiplier>

Add a mob-drops multiplier to an island.

#### Parameters

*player-name*: The name of the player to add mob drops to his island.

*island-name*: The name of the island to add mob drops to.

*\**: Add mob drops to all islands on the server.

*multiplier*: The multiplier to add.

#### Permission

The permission to use the command is `superior.admin.addmobdrops`

### /island admin addsize \<player-name / island-name> \<size>

Add a border size to an existing border size of an island.

#### Parameters

*player-name*: The name of the player to add border size to his island.

*island-name*: The name of the island to add border size to.

*size*: The size of border to add.

#### Permission

The permission to use the command is `superior.admin.addsize`

### /island admin addspawnerrates \<player-name / island-name / \*> \<multiplier>

Add a spawner-rate multiplier to an island.

#### Parameters

*player-name*: The name of the player to add spawner rates to his island.

*island-name*: The name of the island to add spawner rates to.

*\**: Add spawner rates to all islands on the server.

*multiplier*: The multiplier to add.

#### Permission

The permission to use the command is `superior.admin.addspawnerrates`

### /island admin addteamlimit \<player-name / island-name / \*> \<limit>

Add a members limit to an existing members limit of an island.

#### Parameters

*player-name*: The name of the player to add members limit to his island.

*island-name*: The name of the island to add members limit to.

*\**: Add members limit to all islands on the server.

*limit*: The limit to add.

#### Permission

The permission to use the command is `superior.admin.addteamlimit`

### /island admin addwarpslimit \<player-name / island-name / \*> \<limit>

Add a warps limit to an existing warps limit of an island.

#### Parameters

*player-name*: The name of the player to add warps limit to his island.

*island-name*: The name of the island to add warps limit to.

*\**: Add warps limit to all islands on the server.

*limit*: The limit to add.

#### Permission

The permission to use the command is `superior.admin.addwarpslimit`

### /island admin bypass

Enable bypass mode.\
While in bypass mode, you can bypass all island protections.

#### Permission

The permission to use the command is `superior.admin.bypass`

### /island admin chest \<player-name / island-name>

Open an island chest of a specific island.

#### Parameters

*player-name*: The name of the player to open island chest of his island.

*island-name*: The name of an island to open island chest of.

#### Permission

The permission to use the command is `superior.admin.chest`

### /island admin cleargenerator \<player-name / island-name / \*> \[world]

Clear generator rates from an island.

#### Aliases

/island admin cg \<player-name / island-name / \*> \[world]

#### Parameters

*player-name*: The name of the player to clear generator rates from his island.

*island-name*: The name of the island to clear generator rates from.

*\**: Clear generator rates from all islands on the server.

*world*: The world to clear rates in.

#### Permission

The permission to use the command is `superior.admin.cleargenerator`

### /island admin close \<player-name / island-name>

Close an island to the public.

#### Aliases

/island admin lock \<player-name / island-name>

#### Parameters

*player-name*: The name of the player to close his island.

*island-name*: The name of an island to close.

#### Permission

The permission to use the command is `superior.admin.close`

### /island admin cmdall \<player-name / island-name / \*> \<online-filter=true/false> \<command>

Execute a command on all the island members of an island.

#### Parameters

*player-name*: The name of the player to execute a command on his island's members.

*island-name*: The name of the island to execute a command on its members.

*online-filter*: Whether to execute the command only on online island members.

*command*: The command to execute\
You can use `{player-name}` as a placeholder for the island member's name.

#### Permission

The permission to use the command is `superior.admin.cmdall`

### /island admin count \<player-name / island-name> \[material]

Check block counts of an island.

#### Parameters

*player-name*: The name of the player to check block counts of his island.

*island-name*: The name of the island to check block counts of.

*material*: Check a specific count of a block.

#### Permission

The permission to use the command is `superior.admin.count`

### /island admin data \<get/set/remove> \<player/island> \<player-name / island-name> \[path] \[value]

Interact with persistent data of players or islands.

#### Parameters

*get/set/remove*: Whether to read, write or delete persistent data.

*player/island*: Whether to interact with data of a player or an island.

*player-name*: The name of the player to interact with his data.

*island-name*: The name of the island to interact with its data.

*path*: The path of the data. Optional for `get` and `remove`, required for `set`.

*value*: The value to set. Required for `set`.

#### Permission

The permission to use the command is `superior.admin.data`

### /island admin debug \[filter]

Toggle debug outputs.

#### Parameters

*filter*: Show only debug outputs of a specific debug type.

#### Permission

The permission to use the command is `superior.admin.debug`

### /island admin delwarp \<player-name / island-name> \<warp-name>

Delete a warp for an island.

#### Parameters

*player-name*: The name of the player to delete a warp for his island.

*island-name*: The name of the island to delete a warp for.

*warp-name*: The name of the warp to delete.

#### Permission

The permission to use the command is `superior.admin.delwarp`

### /island admin demote \<player-name>

Demote a player in his island.

#### Parameters

*player-name*: The name of the player to demote.

#### Permission

The permission to use the command is `superior.admin.demote`

### /island admin deposit \<player-name / island-name / \*> \<amount>

Deposit money to the island bank of an island.

#### Parameters

*player-name*: The name of the player to deposit money to his island.

*island-name*: The name of the island to deposit money to.

*\**: Deposit money to all islands.

*amount*: The amount of money to deposit.

#### Permission

The permission to use the command is `superior.admin.deposit`

### /island admin disband \<player-name / island-name>

Disband an island.

#### Parameters

*player-name*: The name of the player to disband his island.

*island-name*: The name of the island to disband.

#### Permission

The permission to use the command is `superior.admin.disband`

### /island admin fly \<player-name> \[true/false]

Toggle island fly for a player.

#### Parameters

*player-name*: The name of the player to toggle island fly for.

*true/false*: Whether to enable or disable island fly. When omitted, the mode is toggled.

#### Permission

The permission to use the command is `superior.admin.fly`

### /island admin ignore \<player-name / island-name>

Ignore an island from being displayed in the top islands.

#### Parameters

*player-name*: The name of the player to ignore his island.

*island-name*: The name of the island to ignore.

#### Permission

The permission to use the command is `superior.admin.ignore`

### /island admin join \<player-name / island-name>

Join to an island without an invitation.

#### Parameters

*player-name*: The name of the player to join his island.

*island-name*: The name of the island to join.

#### Permission

The permission to use the command is `superior.admin.join`

### /island admin kick \<player-name>

Kick a player from his island.

#### Parameters

*player-name*: The name of the player to kick from his island.

#### Permission

The permission to use the command is `superior.admin.kick`

### /island admin mission \<player-name> \<complete/reset> \<mission-name>

Complete or reset a mission for a player.

#### Parameters

*player-name*: The name of the player to manage the mission to.

*complete*: Complete the mission for the player.

*reset*: Reset the mission for the player.

*mission-name*: The name of the mission to manage.

#### Permission

The permission to use the command is `superior.admin.mission`

### /island admin modules \[module-name] \[load/unload]

Manage the installed modules.

#### Parameters

*module-name*: The name of the module to manager.

*load*: Load a module from the folder.

*unload*: Unload a module from the server.

#### Permission

The permission to use the command is `superior.admin.modules`

### /island admin msg \<player-name> \<message>

Send a message to a player without prefixes.

#### Parameters

*player-name*: The name of the player to send a message.

*message*: The message to send to the player.

#### Permission

The permission to use the command is `superior.admin.msg`

### /island admin msgall \<player-name / island-name / \*> \<message>

Send a message to all island members of an island without prefixes.

#### Parameters

*player-name*: The name of the player to send a message to his island's members.

*island-name*: The name of the island to send a message to its members.

*\**: Send a message to all players on the server.

*message*: The message to send to the player.

#### Permission

The permission to use the command is `superior.admin.msgall`

### /island admin name \<player-name / island-name> \<name>

Set a name to an island.

#### Aliases

/island admin setname \<player-name / island-name> \<name>

/island admin rename \<player-name / island-name> \<name>

#### Parameters

*player-name*: The name of the player to rename his island.

*island-name*: The name of the island to rename.

*name*: The name to set to the island.

#### Permission

The permission to use the command is `superior.admin.name`

### /island admin open \<player-name / island-name>

Open an island to the public.

#### Aliases

/island admin unlock \<player-name / island-name>

#### Parameters

*player-name*: The name of the player to open his island.

*island-name*: The name of the island to open.

#### Permission

The permission to use the command is `superior.admin.open`

### /island admin openmenu \<player-name> \<menu>

Open a menu for a player.

Aliases

/island admin menu \<player-name> \<menu>

#### Parameters

*player-name*: The name of the player to open a menu for.

*menu*: The name of the menu to open.

#### Permission

The permission to use the command is `superior.admin.openmenu`

### /island admin promote \<player-name>

Promote a player on his island.

#### Parameters

*player-name*: The name of the player to promote.

#### Permission

The permission to use the command is `superior.admin.promote`

### /island admin purge \<cancel/time>

Purge all inactive islands on the server.

#### Parameters

cancel: Cancel the next purge.

time: The time of inactivity of islands to purge, in seconds.

#### Permission

The permission to use the command is `superior.admin.purge`

### /island admin rankup \<player-name / island-name / \*> \<upgrade-name>

Rankup an upgrade for an island.

#### Parameters

*player-name*: The name of the player to rankup an upgrade for his island.

*island-name*: The name of the island to rankup an upgrade for.

*\**: Rankup an upgrade for all islands on the server.

*upgrade-name*: The name of the upgrade to rankup.

#### Permission

The permission to use the command is `superior.admin.rankup`

### /island admin recalc \[player-name / island-name]

Recalculate worth and level values for an island.

#### Aliases

/island admin recalculate \[player-name / island-name]

/island admin level \[player-name / island-name]

#### Parameters

*player-name*: The name of the player to recalculate his island.

*island-name*: The name of the island to recalculate.

#### Permission

The permission to use the command is `superior.admin.recalc`

### /island admin reload

Reload all config files and language files.

#### Permission

The permission to use the command is `superior.admin.reload`

### /island admin removeblocklimit \<player-name / island-name / \*> \<material>

Remove a block limit of a block for an island.

#### Aliases

/island admin remblocklimit \<player-name / island-name / \*> \<material>

#### Parameters

*player-name*: The name of the player to remove block limit from his island.

*island-name*: The name of the island to remove block limit from.

*\**: Remove block limit from all islands.

*material*: The block to remove limit to.

#### Permission

The permission to use the command is `superior.admin.removeblocklimit`

### /island admin removeentitylimit \<player-name / island-name / \*> \<entity>

Remove an entity limit of an entity for an island.

#### Aliases

/island admin rementitylimit \<player-name / island-name / \*> \<entity>

#### Parameters

*player-name*: The name of the player to remove entity limit from his island.

*island-name*: The name of the island to remove entity limit from.

*\**: Remove entity limit from all islands.

*entity*: The entity to remove limit of.

#### Permission

The permission to use the command is `superior.admin.removeentitylimit`

### /island admin removeratings \<player-name / island-name / \*>

Remove all ratings for an island, or remove ratings of a player from all islands.

#### Aliases

/island admin rratings \<player-name / island-name / \*>

/island admin rr \<player-name / island-name / \*>

#### Parameters

*player-name*: The name of the player to remove his ratings from all islands.

*island-name*: The name of the island to remove all ratings from.

*\**: Remove ratings from all islands.

#### Permission

The permission to use the command is `superior.admin.removeratings`

### /island admin resetpermissions \<player-name / island-name / \*>

Reset all island permissions for an island.

#### Parameters

*player-name*: The name of the player to reset island permissions for his island.

*island-name*: The name of the island to reset island permissions for.

*\**: Reset island permissions for all islands.

#### Permission

The permission to use the command is `superior.admin.resetpermissions`

### /island admin resetsettings \<player-name / island-name / \*>

Reset all island settings for an island.

#### Parameters

*player-name*: The name of the player to reset island settings for his island.

*island-name*: The name of the island to reset island settings for.

*\**: Reset island settings for all islands.

#### Permission

The permission to use the command is `superior.admin.resetsettings`

### /island admin resetworld \<player-name / island-name / \*> \<world>

Reset a world for an island.

#### Aliases

/island admin rworld \<player-name / island-name / \*> \<world>

#### Parameters

*player-name*: The name of the player to reset a world for his island.

*island-name*: The name of the island to reset a world for.

*\**: Reset a world for all islands.

*world*: The world to reset.\
Should be `normal`, `nether` or `the_end`. The world cannot be the default world.

#### Permission

The permission to use the command is `superior.admin.resetworld`

### /island admin schematic \[schematic-name] \[save-air]

Toggle schematic mode.\
While in schematic mode, you can create new schematics.

#### Aliases

/island admin schem \[schematic-name] \[save-air]

#### Parameters

*schematic-name*: Save a schematic with the given name.

*save-air*: Whether to save air blocks in the schematic (`true`/`false`).

#### Permission

The permission to use the command is `superior.admin.schematic`

### /island admin setbanklimit \<player-name / island-name / \*> \<limit>

Set a bank limit for an island.

#### Parameters

*player-name*: The name of the player to set bank limit to his island.

*island-name*: The name of the island to set bank limit to.

*\**: Set bank limit to all islands.

*limit*: The limit to set.

#### Permission

The permission to use the command is `superior.admin.setbanklimit`

### /island admin setbiome \<player-name / island-name / \*> \<biome>

Set a biome for an island.

#### Aliases

/island admin biome \<player-name / island-name / \*> \<biome>

#### Parameters

*player-name*: The name of the player to set biome to his island.

*island-name*: The name of the island to set biome to.

*\**: Set biome to all islands.

*biome*: The biome to set.

#### Permission

The permission to use the command is `superior.admin.setbiome`

### /island admin setblockamount \<world> \<x> \<y> \<z> \<amount>

Set an amount for a stacked block.

#### Aliases

/island admin setblocksize \<world> \<x> \<y> \<z> \<amount>

#### Parameters

*world*: The world of the stacked block.

*x*: The x-coords of the stacked block.

*y*: The y-coords of the stacked block.

*z*: The z-coords of the stacked block.

*amount*: The amount to set to the stacked block.

#### Permission

The permission to use the command is `superior.admin.setblockamount`

### /island admin setblocklimit \<player-name / island-name / \*> \<material> \<limit>

Set a block limit of a block for an island.

#### Parameters

*player-name*: The name of the player to set block limit to his island.

*island-name*: The name of the island to set block limit to.

*\**: Set block limit to all islands.

*material*: The block to set the limit to.

*limit*: The limit to set.

#### Permission

The permission to use the command is `superior.admin.setblocklimit`

### /island admin setbonus \<player-name / island-name / \*> \<worth/level> \<bonus>

Set a bonus for an island.

#### Aliases

/island admin bonus \<player-name / island-name / \*> \<worth/level> \<bonus>

#### Parameters

*player-name*: The name of the player to set bonus to his island.

*island-name*: The name of the island to set bonus to.

*\**: Set bonus to all islands.

*worth*: Set the bonus to the worth value of the island.

*level*: Set the bonus to the level value of the island.

*bonus*: The bonus to set.

#### Permission

The permission to use the command is `superior.admin.bonus`

### /island admin setchestrow \<player-name / island-name / \*> \<page> \<rows>

Set number of rows to a chest page for an island.

#### Parameters

*player-name*: The name of the player to set chest rows to his island.

*island-name*: The name of the island to set chest rows to.

*\**: Set chest rows to all islands.

*page*: The page to set rows to.

*rows*: The amount of rows to set.

#### Permission

The permission to use the command is `superior.admin.setchestrow`

### /island admin setcooplimit \<player-name / island-name / \*> \<limit>

Set a coop limit for an island.

#### Parameters

*player-name*: The name of the player to set coop limit to his island.

*island-name*: The name of the island to set coop limit to.

*\**: Set coop limit to all islands.

*limit*: The limit set.

#### Permission

The permission to use the command is `superior.admin.setcooplimit`

### /island admin setcropgrowth \<player-name / island-name / \*> \<multiplier>

Set a crop-growth multiplier to an island.

#### Parameters

*player-name*: The name of the player to set crop growth to his island.

*island-name*: The name of the island to set crop growth to.

*\**: Set crop growth to all islands on the server.

*multiplier*: The multiplier to set.

#### Permission

The permission to use the command is `superior.admin.setcropgrowth`

### /island admin setdisbands \<player-name / \*> \<amount>

Set the amount of disbands for a player.

#### Parameters

*player-name*: The name of the player to set disbands to.

*\**: Set disbands to all players.

*amount*: The amount of disbands to set.

#### Permission

The permission to use the command is `superior.admin.setdisbands`

### /island admin seteffect \<player-name / island-name / \*> \<effect> \<level>

Set an island effect to an existing effect level for an island.

#### Parameters

*player-name*: The name of the player to set island effect to his island.

*island-name*: The name of the island to set island effect to.

*\**: Set island effect to all islands on the server.

*effect*: The effect to set.

*level*: The level of the effect to set.

#### Permission

The permission to use the command is `superior.admin.seteffect`

### /island admin setentitylimit \<player-name / island-name / \*> \<entity> \<limit>

Set an entity limit of an entity to an island.

#### Parameters

*player-name*: The name of the player to set entity limit to his island.

*island-name*: The name of the island to set entity limit to.

*\**: Set entity limit to all islands.

*entity*: The entity to set limit to.

*limit*: The limit set.

#### Permission

The permission to use the command is `superior.admin.setentitylimit`

### /island admin setgenerator \<player-name / island-name / \*> \<material> \<value> \[world]

Set generator rates to an island.

#### Parameters

*player-name*: The name of the player to set generator rate to his island.

*island-name*: The name of the island to set generator rate to.

*\**: Set generator rate to all islands on the server.

*material*: The block to set rates to.

*value*: The rate to set.

*world*: The world to set rates in.

#### Permission

The permission to use the command is `superior.admin.setgenerator`

### /island admin setislandpreview \<schematic-name>

Set the preview location for an island schematic.

#### Aliases

/island admin setschematicpreview \<schematic-name>

#### Parameters

*schematic-name*: The name of the schematic to set the preview location for.

#### Permission

The permission to use the command is `superior.admin.setislandpreview`

### /island admin setleader \<leader> \<new-leader>

Change leadership of an island.

#### Parameters

*leader*: The name of the current island leader.

*new-leader*: The name of the new leader to set.

#### Permission

The permission to use the command is `superior.admin.setleader`

### /island admin setmobdrops \<player-name / island-name / \*> \<multiplier>

Set a mob-drops multiplier to an island.

#### Parameters

*player-name*: The name of the player to set mob drops to his island.

*island-name*: The name of the island to set mob drops to.

*\**: Set mob drops to all islands on the server.

*multiplier*: The multiplier to set.

#### Permission

The permission to use the command is `superior.admin.setmobdrops`

### /island admin setpermission \<player-name / island-name / \*> \<permission> \<island-role>

Change permission for an island-role for an island.

#### Aliases

/island admin setperm \<player-name / island-name / \*> \<permission> \<island-role>

#### Parameters

*player-name*: The name of the player to change permission to his island.

*island-name*: The name of the island to change permission to.

*\**: Change permission to all islands.

*permission*: The permission to change.

*island-role*: The new island role that will have the permission.

#### Permission

The permission to use the command is `superior.admin.setpermission`

### /island admin setrate \<player-name / island-name> \<target> \<rating>

Change rating of a player to an island.

#### Parameters

*player-name*: The name of the player to change rating to his island.

*island-name*: The name of the island to change rating to.

*target*: The name of the player to change his rating.

*rating*: The new rating to set.

#### Permission

The permission to use the command is `superior.admin.setrate`

### /island admin setrolelimit \<player-name / island-name / \*> \<island-role> \<limit>

Set a role limit to an island.

#### Parameters

*player-name*: The name of the player to set role limit to his island.

*island-name*: The name of the island to set role limit to.

*\**: Set role limit to all islands.

*island-role*: The role to set limit to.

*limit*: The limit to set.

#### Permission

The permission to use the command is `superior.admin.setrolelimit`

### /island admin setsettings \<player-name / island-name / \*> \<island-flag> \<true/false>

Change island-flag for an island.

#### Parameters

*player-name*: The name of the player to change island flag to his island.

*island-name*: The name of the island to change island flag to.

*\**: Change island flags to all islands.

*island-flag*: The island-flag to change.

*true*: Enable the island flag on the island.

*false*: Disable the island flag on the island.

#### Permission

The permission to use the command is `superior.admin.setsettings`

### /island admin setsize \<player-name / island-name / \*> \<size>

Set the border size of an island.

#### Aliases

/island admin setislandsize \<player-name / island-name / \*> \<size>

/island admin setbordersize \<player-name / island-name / \*> \<size>

#### Parameters

*player-name*: The name of the player to set border size to his island.

*island-name*: The name of the island to set border size to.

*\**: Set border size to all islands.

*size*: The size of border to set.

#### Permission

The permission to use the command is `superior.admin.setsize`

### /island admin setspawn

Change the spawn location of the plugin.

#### Permission

The permission to use the command is `superior.admin.setspawn`

### /island admin setspawnerrates \<player-name / island-name / \*> \<multiplier>

Set a spawner-rate multiplier to an island.

#### Parameters

*player-name*: The name of the player to set spawner rates to his island.

*island-name*: The name of the island to set spawner rates to.

*\**: Set spawner rates to all islands on the server.

*multiplier*: The multiplier to set.

#### Permission

The permission to use the command is `superior.admin.setspawnerrates`

### /island admin setteamlimit \<player-name / island-name / \*> \<limit>

Set the members limit of an island.

#### Parameters

*player-name*: The name of the player to set members limit to his island.

*island-name*: The name of the island to set members limit to.

*\**: Set members limit to all islands.

*limit*: The limit to set.

#### Permission

The permission to use the command is `superior.admin.setteamlimit`

### /island admin settings

Open an in-game config editor.

#### Permission

The permission to use the command is `superior.admin.settings`

### /island admin setupgrade \<player-name / island-name> \<upgrade-name> \<level>

Set level of an upgrade for an island.

#### Parameters

*player-name*: The name of the player to set upgrade level to his island.

*island-name*: The name of the island to set upgrade level to.

*upgrade*: The name of the upgrade to set its level.

*level*: The level to set.

#### Permission

The permission to use the command is `superior.admin.setupgrade`

### /island admin setwarpslimit \<player-name / island-name / \*> \<limit>

Set the warps limit of an island.

#### Parameters

*player-name*: The name of the player to set warps limit to his island.

*island-name*: The name of the island to set warps limit to.

*\**: Set warps limit to all islands.

*limit*: The limit to set.

#### Permission

The permission to use the command is `superior.admin.setwarpslimit`

### /island admin show \[player-name / island-name]

Show information about an island.

#### Parameters

*player-name*: The name of the player to show information about his island.

*island-name*: The name of the island to show information about.

#### Permission

The permission to use the command is `superior.admin.show`

### /island admin spawn \[player-name]

Teleport to spawn.

#### Parameters

*player-name*: The name of the player to teleport.

#### Permission

The permission to use the command is `superior.admin.spawn`

### /island admin syncbonus \<player-name / island-name / \*> \<worth/level>

Sync the bonus of an island with the generated worlds.

#### Parameters

*player-name*: The name of the player to sync bonus for his island.

*island-name*: The name of the island to sync bonus for.

*\**: Sync bonus for all islands.

*worth*: Sync the worth bonus of the island.

*level*: Sync the level bonus of the island.

#### Permission

The permission to use the command is `superior.admin.syncbonus`

### /island admin spy

Toggle chat spy mode.\
While in spy mode, you can see messages of island-chats of other islands.

#### Permission

The permission to use the command is `superior.admin.spy`

### /island admin syncupgrades \<player-name / island-name / \*>

Sync the multipliers and limits of an island with the upgrades.\
It will remove any value that was set with a command from the island.

#### Parameters

*player-name*: The name of the player to sync upgrades for his island.

*island-name*: The name of the island to sync upgrades for.

*\**: Sync upgrades or all islands.

#### Permission

The permission to use the command is `superior.admin.syncupgrades`

### /island admin stats

Show statistics about the plugin.

#### Permission

The permission to use the command is `superior.admin.stats`

### /island admin teleport \<player-name / island-name> \[normal/nether/the\_end]

Teleport to an island.

#### Aliases

/island admin tp \<player-name / island-name> \[normal/nether/the\_end]

/island admin go \<player-name / island-name> \[normal/nether/the\_end]

/island admin visit \<player-name / island-name> \[normal/nether/the\_end]

#### Parameters

*player-name*: The name of the player to teleport to his island.

*island-name*: The name of the island to teleport to.

*normal*: Teleport to the overworld world of the island.

*nether*: Teleport to the nether world of the island.

*the\_end*: Teleport to the end world of the island.

#### Permission

The permission to use the command is `superior.admin.teleport`

### /island admin title \<player-name> \<fade-in> \<duration> \<fade-out> -title \[message] -subtitle \[message]

Send a title to a player.

#### Parameters

*player-name*: The name of the player to send the title to.

*fade-in*: The fade-in time of the title, in ticks.

*duration*: The duration time of the title, in ticks.

*fade-out*: The fade-out time of the title, in ticks.

*title*: The title contents to send.

*subtitle*: The subtitle contents to send.

#### Permission

The permission to use the command is `superior.admin.title`

### /island admin titleall \<player-name / island-name / \*> \<fade-in> \<duration> \<fade-out> -title \[message] -subtitle \[message]

Send a title to all island members of an island.

#### Parameters

*player-name*: The name of the player to send the title to his island's members.

*island-name*: The name of the island to send the title to its members.

*\**: Send the title to all the players.

*fade-in*: The fade-in time of the title, in ticks.

*duration*: The duration time of the title, in ticks.

*fade-out*: The fade-out time of the title, in ticks.

*title*: The title contents to send.

*subtitle*: The subtitle contents to send.

#### Permission

The permission to use the command is `superior.admin.titleall`

### /island admin unignore \<player-name / island-name>

Remove an island from being ignored from the top islands.

#### Parameters

*player-name*: The name of the player to unignore his island.

*island-name*: The name of the island to unignore.

#### Permission

The permission to use the command is `superior.admin.unignore`

### /island admin unlockworld \<player-name / island-name / \*> \<normal/nether/the\_end> \<true/false>

Unlock a world for an island.

#### Aliases

/island admin world \<player-name / island-name / \*> \<normal/nether/the\_end> \<true/false>

/island admin uworld \<player-name / island-name / \*> \<normal/nether/the\_end> \<true/false>

#### Parameters

*player-name*: The name of the player to unlock a world for his island.

*island-name*: The name of the island to unlock a world for.

*\**: Unlock a world to all islands.

*normal*: Unlock the overworld world for the island.

*nether*: Unlock the nether world for the island.

*the\_end*: Unlock the end world for the island.

*true*: Unlock the world for the island.

*false*: Lock the world for the island.

#### Permission

The permission to use the command is `superior.admin.world`

### /island admin withdraw \<player-name / island-name> \<amount>

Withdraw money from the island bank of an island.

#### Parameters

*player-name*: The name of the player to withdraw money from his island.

*island-name*: The name of the island to withdraw money from.

*amount*: The amount of money to withdraw.

#### Permission

The permission to use the command is `superior.admin.withdraw`


# Permissions

### superior.chat.color

Grant access to use colors in island chat.

### superior.island.\*

Grant access to all player commands.

### superior.island.fly

Grant access to island fly. The permission is also checked when players join the server or switch worlds - island fly is automatically disabled for players without it.

### superior.island.members

Grant access to open the members menu through `/island panel members`.

### superior.island.visitors

Grant access to open the visitors menu through `/island panel visitors`.

### superior.island.stacker.\<block-type>

Grant access to stack specific block-type.

### superior.island.stacker.\*

Grant access to stack all block-types.

### superior.island.toggle.border

Grant access to use `/island toggle border`.

### superior.island.toggle.blocks

Grant access to use `/island toggle blocks`.

### superior.admin.\*

Grant access to all admin commands.

### superior.admin.bypass

Required to keep bypass mode enabled - bypass mode is automatically disabled for players without it.

### superior.admin.bypass.\*

Grant all-time bypass to all island privileges on all islands (build, break, interact, etc).

### superior.admin.bypass.\<island\_privilege>

Grant all-time bypass to a specific island privilege on all islands.

### superior.admin.bypass.cooldowns

Grant access to bypass command cooldowns.

### superior.admin.bypass.warmup

Grant access to bypass teleport warmups.

### superior.admin.ban.bypass

Grant access to bypass island bans.


# Placeholders

{% hint style="info" %}
Placeholders are supported with PlaceholderAPI and MVdWPlaceholderAPI.\
Use the placeholder syntax when using the placeholders below.
{% endhint %}


# Global Placeholders

Placeholders that are not related to a specific island or player.

### superior\_island\_total\_count

Get the total count of islands on the server.

#### Example Output

3,400

### superior\_island\_total\_count\_format

Get the total count of islands on the server formatted.

#### Example Output

3.4K

### superior\_island\_total\_count\_raw

Get the total count of islands on the server in raw format.

#### Example Output

3400

### superior\_island\_total\_level

Get the total island-levels of all islands.

#### Example Output

1,900,000.00

### superior\_island\_total\_level\_format

Get the total island-levels of all islands formatted.

#### Example Output

1.9M

### superior\_island\_total\_level\_int

Get the total island-levels of all islands as an integer.

#### Example Output

1900000

### superior\_island\_total\_level\_raw

Get the total island-levels of all islands in raw format.

#### Example Output

1900000.00

### superior\_island\_total\_worth

Get the total worth-value of all islands.

#### Example Output

1,900,000.00

### superior\_island\_total\_worth\_format

Get the total worth-value of all islands formatted.

#### Example Output

1.9M

### superior\_island\_total\_worth\_int

Get the total worth-value of all islands as an integer.

#### Example Output

1900000

### superior\_island\_total\_worth\_raw

Get the total worth-value of all islands in raw format.

#### Example Output

1900000.00

### superior\_island\_top\_worth\_<#>

Get the name of an island in a specific place sorted by worth-values.

#### Parameters

*<#>*: The position of the island to get, ranging from 1.

#### Example Usage

`superior_island_top_worth_1`

### superior\_island\_top\_worth\_value\_<#>

Get the worth-value of an island in a specific place sorted by worth-values.

#### Parameters

*<#>*: The position of the island to get, ranging from 1.

#### Example Usage

`superior_island_top_worth_value_1`

### superior\_island\_top\_worth\_leader\_<#>

Get the leader's name of an island in a specific place sorted by worth-values.

#### Parameters

*<#>*: The position of the island to get, ranging from 1.

#### Example Usage

`superior_island_top_worth_leader_1`

### superior\_island\_top\_worth\_<#>\_\<placeholder>

Run a placeholder on an island in a specific place sorted by worth-values.

#### Parameters

*<#>*: The position of the island to get, ranging from 1.

\<placeholder>: The placeholder to run.

#### Example Usage

`superior_island_top_worth_1_bank_limit`

### superior\_island\_top\_level\_<#>

Get the name of an island in a specific place sorted by island-levels.

#### Parameters

*<#>*: The position of the island to get, ranging from 1.

#### Example Usage

`superior_island_top_level_1`

### superior\_island\_top\_level\_value\_<#>

Get the island-level of an island in a specific place sorted by island-levels.

#### Parameters

*<#>*: The position of the island to get, ranging from 1.

#### Example Usage

`superior_island_top_level_value_1`

### superior\_island\_top\_level\_leader\_<#>

Get the leader's name of an island in a specific place sorted by island-levels.

#### Parameters

*<#>*: The position of the island to get, ranging from 1.

#### Example Usage

`superior_island_top_level_leader_1`

### superior\_island\_top\_level\_<#>\_\<placeholder>

Run a placeholder on an island in a specific place sorted by island-levels.

#### Parameters

*<#>*: The position of the island to get, ranging from 1.

\<placeholder>: The placeholder to run.

#### Example Usage

`superior_island_top_level_1_bank_limit`

### superior\_island\_top\_rating\_<#>

Get the name of an island in a specific place sorted by ratings.

#### Parameters

*<#>*: The position of the island to get, ranging from 1.

#### Example Usage

`superior_island_top_rating_1`

### superior\_island\_top\_rating\_value\_<#>

Get the ratings-value of an island in a specific place sorted by ratings.

#### Parameters

*<#>*: The position of the island to get, ranging from 1.

#### Example Usage

`superior_island_top_rating_value_1`

### superior\_island\_top\_rating\_leader\_<#>

Get the leader's name of an island in a specific place sorted by ratings.

#### Parameters

*<#>*: The position of the island to get, ranging from 1.

#### Example Usage

`superior_island_top_rating_leader_1`

### superior\_island\_top\_rating\_<#>\_\<placeholder>

Run a placeholder on an island in a specific place sorted by ratings.

#### Parameters

*<#>*: The position of the island to get, ranging from 1.

\<placeholder>: The placeholder to run.

#### Example Usage

`superior_island_top_rating_1_bank_limit`

### superior\_island\_top\_players\_<#>

Get the name of an island in a specific place sorted by amount of players in islands.

#### Parameters

*<#>*: The position of the island to get, ranging from 1.

#### Example Usage

`superior_island_top_players_1`

### superior\_island\_top\_players\_value\_<#>

Get the amount of players inside an island in a specific place sorted by amount of players in islands.

#### Parameters

*<#>*: The position of the island to get, ranging from 1.

#### Example Usage

`superior_island_top_players_value_1`

### superior\_island\_top\_players\_leader\_<#>

Get the leader's name of an island in a specific place sorted by amount of players in islands.

#### Parameters

*<#>*: The position of the island to get, ranging from 1.

#### Example Usage

`superior_island_top_players_leader_1`

### superior\_island\_top\_players\_<#>\_\<placeholder>

Run a placeholder on an island in a specific place sorted by amount of players in islands.

#### Parameters

*<#>*: The position of the island to get, ranging from 1.

\<placeholder>: The placeholder to run.

#### Example Usage

`superior_island_top_players_1_bank_limit`


# Island Placeholders

{% hint style="info" %}
The placeholders will show information of the island of the player.\
If you want to get information about the island that the player stands inside, add "location" to the placeholder: `superior_island_location_<placeholder>`
{% endhint %}

### superior\_island\_bank

Get balance of an island.

#### Example Output

1,900,000.00

### superior\_island\_bank\_format

Get balance of an island formatted.

#### Example Output

1.9M

### superior\_island\_bank\_int

Get balance of an island as an integer.

#### Example Output

1900000

### superior\_island\_bank\_raw

Get balance of an island in raw format.

#### Example Output

1900000.00

### superior\_island\_bank\_limit

Get the bank limit of an island.

#### Example Output

1,900,000.00

### superior\_island\_bank\_limit\_format

Get the bank limit of an island formatted.

#### Example Output

1.9M

### superior\_island\_bank\_limit\_int

Get the bank limit of an island as an integer.

#### Example Output

1900000

### superior\_island\_bank\_limit\_raw

Get the bank limit of an island in raw format.

#### Example Output

1900000.00

### superior\_island\_bank\_last\_interest

Get time since last interest.

#### Example Output

1 hour, 55 seconds

### superior\_island\_bank\_next\_interest

Get time until next interest.

#### Example Output

1 hour, 55 seconds

### superior\_island\_bans\_count

Get the count of banned players from the island.

#### Example Output

9000

### superior\_island\_bans\_list

Get the list of banned players from the island.

#### Example Output

Notch, Dinnerbone

### superior\_island\_biome

Get the biome of an island.

### superior\_island\_block\_count\_\<block>

Get the amount of specific blocks in an island.

#### Parameters

*\<block>*: The type of block to check count for.

#### Example Usage

`superior_island_block_count_cobblestone`

### superior\_island\_block\_limit\_\<block>

Get a block limit of a block in an island.

#### Parameters

*\<block>*: The type of block to check limit for.

#### Example Usage

`superior_island_block_limit_cobblestone`

### superior\_island\_bonus\_level

Get the extra level bonus of the island.

#### Example Output

1,900,000.00

### superior\_island\_bonus\_level\_format

Get the extra level bonus of the island formatted.

#### Example Output

1.9M

### superior\_island\_bonus\_level\_int

Get the extra level bonus of the island as an integer.

#### Example Output

1900000

### superior\_island\_bonus\_level\_raw

Get the extra level bonus of the island in raw format.

#### Example Output

1900000.00

### superior\_island\_bonus\_worth

Get the extra worth bonus of the island.

#### Example Output

1,900,000.00

### superior\_island\_bonus\_worth\_format

Get the extra worth bonus of the island formatted.

#### Example Output

1.9M

### superior\_island\_bonus\_worth\_int

Get the extra worth bonus of the island as an integer.

#### Example Output

1900000

### superior\_island\_bonus\_worth\_raw

Get the extra worth bonus of the island in raw format.

#### Example Output

1900000.00

### superior\_island\_center

Get the center location of an island.

#### Example Output

SuperiorWorld, 600, 100, 600

### superior\_island\_center\_x

Get the center x-axis of an island.

### superior\_island\_center\_y

Get the center y-axis of an island.

### superior\_island\_center\_z

Get the center z-axis of an island.

### superior\_island\_chest\_size

Get the amount of island chests unlocked for the island.

### superior\_island\_coop\_limit

Get the coop-limit of an island.

### superior\_island\_coop\_list

Get the list of coops of the island.

#### Example Output

Notch, Dinnerbone

### superior\_island\_coop\_size

Get the amount of coop players in the island.

### superior\_island\_creation\_time

Get the date an island was created.

### superior\_island\_crops\_multiplier

Get the crops multiplier of an island.

### superior\_island\_description

Get the description of the island.

### superior\_island\_discord

Get the discord an the island only if player has access to view it.

### superior\_island\_discord\_all

Get the discord an the island, regardless of permission to view it.

### superior\_island\_drops\_multiplier

Get the mob-drops multiplier of an island.

### superior\_island\_end\_unlocked

Get whether the end world is unlocked for an island.

### superior\_island\_entity\_limit\_\<entity>

Get an entity limit of an entity in an island.

#### Parameters

*\<entity>*: The type of entity to check limit for.

#### Example Usage

`superior_island_entity_limit_creeper`

### superior\_island\_exists

Get whether an island exists.

### superior\_island\_home

Get the home location of the island of the default dimension.

#### Example Output

SuperiorWorld, 600, 100, 600

### superior\_island\_home\_x

Get the home x-axis of the island of the default dimension.

### superior\_island\_home\_y

Get the home y-axis of the island of the default dimension.

### superior\_island\_home\_z

Get the home z-axis of the island of the default dimension.

### superior\_island\_flag\_\<flag>

Get whether an island flag is enabled in an island.

#### Parameters

*\<flag>*: The island flag to check.

#### Example Usage

`superior_island_flag_always_middle_day`

### superior\_island\_is\_coop

Get whether the player is a coop of an island.

### superior\_island\_is\_leader

Get whether the player is the leader of an island.

### superior\_island\_is\_member

Get whether the player is a member of an island.

### superior\_island\_is\_visitor

Get whether the player is a visitor of an island.

### superior\_island\_last\_time\_updated

Get the time since the island last updated.

#### Example Output

1 hour, 55 seconds

### superior\_island\_leader

Get the leader of an island.

### superior\_island\_level

Get the island-level of an island.

#### Example Output

1,900,000

### superior\_island\_level\_format

Get the island-level of an island formatted.

#### Example Output

1.9M

### superior\_island\_level\_int

Get the island-level of an island as an int.

#### Example Output

1900000

### superior\_island\_level\_raw

Get the island-level of an island in a raw format.

#### Example Output

1900000

### superior\_island\_locked

Get whether the island is locked to public.

### superior\_island\_member\_<#>

Get a name of an island member in an island.

#### Parameters

*<#>*: The position of the member to get the name for, ranging from 0.

#### Example Usage

`superior_island_member_0`

### superior\_island\_mission\_status\_\<mission>

Get the completion status of a mission.

#### Parameters

*\<mission>*: The name of the mission to check.

#### Example Usage

`superior_island_mission_status_miner_1`

### superior\_island\_missions\_completed\_\<category>

Get the amount of missions completed for a category.

#### Parameters

*\<category>*: The name of the missions category to check.

#### Example Usage

`superior_island_missions_completed_miner`

### superior\_island\_name

Get the name of an island.\
The name will be colored if color-support is enabled, otherwise stripped.

### superior\_island\_name\_formatted

Get the name of an island.\
The name will be colored despite the color-support.

### superior\_island\_name\_leader

Get the name of an island or leader's name if island doesn't have a name.

### superior\_island\_name\_stripped

Get the name of an island.\
The name will be stripped despite the color-support.

### superior\_island\_nether\_unlocked

Get whether the nether world is unlocked for the island.

### superior\_island\_normal\_unlocked

Get whether the normal world is unlocked for the island.

### superior\_island\_paypal

Get the Paypal of an island only if player has access to view it.

### superior\_island\_paypal\_all

Get the Paypal of an the island, regardless of permission to view it.

### superior\_island\_players\_count

Get the amount of players currently in the island.

### superior\_island\_players\_list

Get the list of players currently in the island.

#### Example Output

Notch, Dinnerbone

### superior\_island\_permission\_\<permission>

Get whether player has a permission in an island.

#### Parameters

*\<permission>*: The island privilege to check.

#### Example Usage

`superior_island_permission_build`

### superior\_island\_radius

Get the radius of an island.

### superior\_island\_rating

Get the rating of an island.

### superior\_island\_rating\_amount

Get amount of ratings there were given to the island.

### superior\_island\_rating\_stars

Get amount of stars an island has.

### superior\_island\_raw\_bank\_limit

Get the bank limit of the island without upgrades values applying to it.

#### Example Output

1,900,000.00

### superior\_island\_raw\_bank\_limit\_format

Get the bank limit of the island without upgrades values applying to it formatted.

#### Example Output

1.9M

### superior\_island\_raw\_bank\_limit\_int

Get the bank limit of the island without upgrades values applying to it as an integer.

#### Example Output

1900000

### superior\_island\_raw\_bank\_limit\_raw

Get the bank limit of the island without upgrades values applying to it in a raw format.

#### Example Output

1900000.00

### superior\_island\_raw\_coop\_limit

Get the coops limit of the island without upgrades values applying to it.

### superior\_island\_raw\_crops\_multiplier

Get the crops multiplier of the island without upgrades values applying to it.

### superior\_island\_raw\_drops\_multiplier

Get the drops multiplier of the island without upgrades values applying to it.

### superior\_island\_raw\_level

Get the level value of an island without bonus applied to it.

#### Example Output

1,900,000.00

### superior\_island\_raw\_level\_format

Get the level value of an island without bonus formatted.

#### Example Output

1.9M

### superior\_island\_raw\_level\_int

Get the level value of an island without bonus as an integer.

#### Example Output

1900000

### superior\_island\_raw\_level\_raw

Get the level value of an island without bonus in a raw format.

#### Example Output

1900000.00

### superior\_island\_raw\_radius

Get the radius of the island without upgrades values applying to it.

### superior\_island\_raw\_spawners\_multiplier

Get the spawners multiplier of the island without upgrades values applying to it.

### superior\_island\_raw\_team\_limit

Get the team limit of the island without upgrades values applying to it.

### superior\_island\_raw\_warps\_limit

Get the warps limit of the island without upgrades values applying to it.

### superior\_island\_raw\_worth

Get the worth value of an island without bonus applied to it.

#### Example Output

1,900,000.00

### superior\_island\_raw\_worth\_format

Get the worth value of an island without bonus formatted.

#### Example Output

1.9M

### superior\_island\_raw\_worth\_int

Get the worth value of an island without bonus as an integer.

#### Example Output

1900000

### superior\_island\_raw\_worth\_raw

Get the worth value of an island without bonus in a raw format.

#### Example Output

1900000.00

### superior\_island\_schematic

Get the schematic used to create the island.

**Example Output**

normal

### superior\_island\_size

Get the size of an island.

#### Example Output

41 x 41

### superior\_island\_size\_format

Get the size of an island rounded to 5.

#### Example Output

40 x 40

### superior\_island\_spawners\_multiplier

Get the spawner-rates multiplier of an island.

### superior\_island\_team\_limit

Get the members-limit of an island.

### superior\_island\_team\_list

Get the list of members of an island.

#### Example Output

Notch, Dinnerbone

### superior\_island\_team\_size

Get the amount of members of an island.

### superior\_island\_team\_size\_online

Get the amount of online members of an island.

### superior\_island\_top\_worth\_position

Get the position of an island sorted by worth-value, ranging from 1.

### superior\_island\_top\_level\_position

Get the position of an island sorted by island-levels, ranging from 1.

### superior\_island\_top\_rating\_position

Get the position of an island sorted by ratings, ranging from 1.

### superior\_island\_top\_players\_position

Get the position of an island sorted by visitors and members inside the island, ranging from 1.

### superior\_island\_unique\_visitors\_count

Get the amount of unique visitors that visited an island.

### superior\_island\_unique\_visitors\_list

Get the list of unique visitors that visited an island.

#### Example Output

Notch, Dinnerbone

### superior\_island\_upgrade\_\<upgrade>

Get a level of an upgrade in an island.

#### Parameters

*\<upgrade>*: The name of the upgrade.

#### Example Usage

`superior_island_upgrade_border_size`

### superior\_island\_uuid

Get the uuid of the island.

### superior\_island\_visitor\_last\_join\_\<name>

Get last time a player visited an island.

#### Parameters

*\<name>*: The name of the player to check.

#### Example Usage

`superior_island_visitor_last_join_notch`

### superior\_islan&#x64;*\_*&#x76;isitors\_count

Get the amount of visitors on the island.

### superior\_island\_visitors\_list

Get the list of visitors on the sland.

#### Example Output

Notch, Dinnerbone

### superior\_islan&#x64;*\_*&#x76;isitors\_location

Get the visit location of an island.

#### Example Output

SuperiorWorld, 600, 100, 600

### superior\_islan&#x64;*\_*&#x76;isitors\_location\_x

Get the visit location's x-axis of an island.

### superior\_islan&#x64;*\_*&#x76;isitors\_location\_y

Get the visit location's y-axis of an island.

### superior\_islan&#x64;*\_*&#x76;isitors\_location\_z

Get the visit location's z-axis of an island.

### superior\_island\_warps

Get amount of warps of an island.

### superior\_island\_warps\_limit

Get the limit of warps of an island.

### superior\_island\_world

Get the name of the world of an island.

### superior\_island\_worth

Get the worth-value of an island.

#### Example Output

1,900,000

### superior\_island\_worth\_format

Get the worth-value of an island formatted.

#### Example Output

1.9M

### superior\_island\_worth\_int

Get the worth-value of an island as an int.

#### Example Output

1900000

### superior\_island\_worth\_raw

Get the worth-value of an island in a raw format.

#### Example Output

1900000


# Player Placeholders

Placeholders related to the player.

### superior\_player\_blocks\_stacker

Get whether stacked-blocks mode is enabled for a player.

### superior\_player\_border\_color

Get the border-color for a player.

### superior\_player\_bypass

Get whether bypass mode is enabled for a player.

### superior\_player\_chat\_spy

Get whether spy mode is enabled for a player.

### superior\_player\_disbands

Get amount of disbands left for a player.

### superior\_player\_fly

Get whether fly mode is enabled for a player.

### superior\_player\_locale

Get the language of a player.

### superior\_player\_missions\_completed

Get the amount of completed missions for a player.

### superior\_player\_panel

Get whether control-panel is opened when running `/is` for a player.

### superior\_player\_role

Get the island-role of a player.

### superior\_player\_role\_display

Get the display name of the island-role of a player.

### superior\_player\_schematics

Get whether schematics mode is enabled for a player.

### superior\_player\_team\_chat

Get whether team-chat mode is enabled for a player.

### superior\_player\_texture

Get the texture-value of a player.

### superior\_player\_world\_border

Get whether world-borders are enabled for a player.


# Chat Placeholders

Chat-placeholders are placeholders that can be used in plugins that change chat-format that do not support regular placeholders (EssentialsChat, for example).

{% hint style="info" %}
Use the placeholders as they are displayed - do not remove the brackets.
{% endhint %}

{% hint style="warning" %}
The placeholders may not be compatible with all the chat plugins.
{% endhint %}

### {island-worth}

Get the worth-value of the player's island.

### {island-worth-format}

Get the worth-value of the player's island formatted.

### {island-level}

Get the level of the player's island.

### {island-level-format}

Get the level of the player's island formatted.

### {island-name}

Get the name of the player's island.

### {island-position-worth}

Get the position of the player's island sorted by worth value.

### {island-position-level}

Get the position of the player's island sorted by level value.

### {island-position-rating}

Get the position of the player's island sorted by ratings.

### {island-position-players}

Get the position of the player's island sorted by amount of visitors and members inside the island.


# Configuration Files

The plugin contains a few configuration files where you can edit the behavior of the plugin.

## Directories Tree

* block-values
  * levels.yml\
    In the levels file you can configure custom level points for your blocks. The level points you configured then will be added to the islands when blocks are placed, and can be seen in `/is show`. The format for adding them is `<BLOCK>: <LEVEL>`, where `<BLOCK>` is your block (if your block contains `:` , add '' to the block) and `<LEVEL>` is a number.
  * worth.yml\
    In the levels file you can configure custom worth values for your blocks. The worth values you configured then will be added to the islands when blocks are placed, and can be seen in `/is show`. The format for adding them is `<BLOCK>: <LEVEL>`, where `<BLOCK>` is your block (if your block contains `:` , add '' to the block) and `<LEVEL>` is a number.\
    The difference between this file and the levels.yml file is not major - the plugin gives you two ways of valuating islands. The main idea of worth values to be synced with your shop prices while the levels have custom values that are different.
* commands\
  The plugin gives the ability to create custom commands using the API. The plugin provides another way of registering them not through an external module or a different plugin - you can drag and drop jars that represents custom commands into this folder and the plugin will load them automatically on startup.
* datastore\
  This directory contains all the data files of the plugin. The plugin tracks a lot of data - islands, players, statistics and more. While you can configure islands and players data to be stored in a remote sql server, there is other data that is not stored in this database - for example, missions tracking data, or other external modules data. This data is stored under the folder, in addition to the database file (if you use a local database, such as SQLite)
* lang\
  The lang directory contains files, each representing a different translation for messages of the plugin. Players have the ability to change their preferred language using the `/is lang` command. The names of the files must follow the Locale format (Can be seen [here](https://www.oracle.com/technetwork/java/javase/java8locales-2095355.html).)
* menus\
  The plugin contains a lot of different menus players can interact with. All the menus are 100% configurable, and their configuration files can be found under this directory. For more information about configuring menus, check out [this tutorial](/superiorskyblock/overview/menus).
  * custom\
    Besides the built-in menus, the plugin provides you with the ability to create your own, custom menus, that can be opened using a command of your choice. The configuration files of the custom menus are under this directory - for more information, there is a dedicated tutorial for custom menus [here](https://wiki.bg-software.com/superiorskyblock/overview/menus#creating-custom-menus).
* modules\
  Similar to plugins, the plugin can have different "plugins" (called "modules) that are loaded by the plugin and change the gameplay behavior - an example for such module is [OneBlock](https://wiki.bg-software.com/superiorskyblock/overview/addons#oneblock-addon).\
  The external modules must be put in this directory, which is similar to your plugins directory - each module will have its own directory created where it can put all of its files.
  * bank\
    The bank module is a built-in module that gives the ability to use `/is bank` and all of the functionalities of the island bank. The configuration options for this module are inside the config file under this directory.
  * generators\
    The generators module is a built-in module that brings custom generators to islands.
  * missions\
    The missions module is a built-in module that gives the ability to get rewarded for completing different tasks in game. For further information, there is a dedicated tutorial for missions [here](/superiorskyblock/overview/missions).
  * upgrades\
    The upgrades module is a built-in module that gives the ability to reward players by making them purchase custom upgrades to their islands. For further information, there is a dedicated tutorial for upgrades [here](/superiorskyblock/overview/upgrades).
* schematics\
  The schematics directory contains a number of different schematics that can be used to create new islands. Schematic is a file that tells the plugin what blocks to place when a new island is created. For further information, there is a dedicated tutorial for schematics [here](/superiorskyblock/overview/schematics).
* world-generator\
  The plugin gives the ability to change the default generation behavior of the islands worlds. Developers can create their own custom world generator and place it inside the world-generator folder, which the plugin will later load and use that generator for the worlds. An example for such behavior is [AcidIslands](https://wiki.bg-software.com/superiorskyblock/overview/addons#acidislands-addon), which changes the void world to be filled with water.

## Configuration Files

* config.yml\
  The configuration file contains a lot of different options that can be toggled and changed of the plugin. If you don't like a feature and want it to be disabled, that's the first place to look for it. The plugin is almost entirely configurable, and everything is done through this file.
* entity-categories.yml\
  The entity categories file contains categories of entities, and lets you configure which [island privileges](/superiorskyblock/overview/island-privileges) and [island flags](/superiorskyblock/overview/island-flags) control the actions done to the entities of each category. Each category has an `entities` list and an `actions` section with the following actions:

  * `SPAWN` - The privilege required to spawn the entities using spawn eggs.
  * `DAMAGE` - The privilege required to damage the entities.
  * `INTERACT` - The privilege required to interact with the entities.
  * `SPAWNER_SPAWN` - The island flag required so the entities can spawn from spawners.
  * `NATURAL_SPAWN` - The island flag required so the entities can spawn naturally.

  ```yaml
  VILLAGERS:
    entities:
      - VILLAGER
    actions:
      INTERACT: VILLAGER_TRADING
  ```

  You can create as many custom categories as you want, and using privilege or flag names that don't exist in the plugin will register them as new custom privileges/flags. The `ANIMAL`, `MONSTER`, `TAMEABLE` and `VEHICLE` categories are built-in groups - they do not have an `entities` list, and their entities are added automatically depending on your Minecraft version.
* heads.yml\
  The heads file contains a list of custom skins for different mobs that can be seen in `/is values` and inside other menus. The skins are base64 and can be taken from services online (such as <https://minecraft-heads.com/>)
* interactables.yml\
  The interactables file contains lists of blocks that players can interact with, grouped by the [island privilege](/superiorskyblock/overview/island-privileges) that is required to interact with them:

  ```yaml
  <PRIVILEGE>:
    - BLOCK_TYPE
    - ...
  ```

  You can create as many custom privileges as you want - using a privilege name that doesn't exist in the plugin will register it as a new custom privilege. Each block should only be listed under one privilege.\
  Blocks that are not listed in this file will not get checked when interacted, letting all players interact with them on other islands. This means that if, for example, `CHEST` is not listed under this file, all the players will be able to interact with chests on islands.\
  The old format of the file - a single `interactables` list of blocks - is still supported: the plugin automatically converts it on startup by assigning a privilege to each block based on its type (chests to `CHEST_ACCESS`, containers to `USE`, signs to `SIGN_INTERACT`, spawners to `SPAWNER_BREAK`, farmland and crops to `FARM_TRAMPING`, turtle eggs to `TURTLE_EGG_TRAMPING`, lecterns to `PICKUP_LECTERN_BOOK`, and everything else to `INTERACT`).
* safe\_blocks.yml\
  This safe blocks file contains a list of blocks that player can teleport to safely. The plugin blocks teleportation of players to blocks that are considered "unsafe" to prevent players dying when they are teleported to islands.


# Messages

Here you can find all the information that is needed in order to configurate messages of the plugin.

You can edit every message that you want that is inside the language files. Most of the messages are configured (about 99% of them), and you can edit them however you want. Some of them has built-in laceholders for displaying information about the action that was done.\
For example, the player that did the action, the target of the action, etc.

In addition to the built-in placeholders, all of the messages support placeholders from PlaceholderAPI and MVdWPlaceholderAPI, which you can find on the main page. Furthermore, you can make more complex messages. For example, clickable messages with hoverable text and such.

## Raw Messages

Raw messages are messages that only have a message without any extras - not clickable, not sent as an action bar or anything else. These messages are very simple to be editted. All you have to do is just edit the message as a string, and that's it!

```yaml
RAW_MESSAGE: 'I am a raw message without any extras! &aColors are also supported! &{HEX:4e87ee}Even hex colors in 1.16 are supported!'
NEW_LINE_MESSAGE: |
  &aThis is the first line.
  &6This is the second line.
  &cYou can add unlimited lines :D
```

## Complex Messages

Complex messages are messages that can have extra actions to them. Action bars, titles, hoverable text and such, are all in this category.

{% hint style="info" %}
You can combine different message types in a single message.
{% endhint %}

### Action Bars

You can send action bars, the messages above the hotbar, by using the following format:

```yaml
MESSAGE:
  action-bar:
    text: '&aThis will be sent as an action bar!'
```

{% embed url="<https://static.bg-software.com/imgs/action-bar-example.mp4>" %}

### Titles

You can send titles, the big message in the middle of the screen, by using the following format:

```yaml
MESSAGE:
  title:
    title: '&aThe bigger text'  # If you don't want that to be sent, set this section to ''.
    sub-title: '&6The smaller text'  # If you don't want that to be sent, set this section to ''.
    fade-in: 20  # Fade in duration (in ticks).
    duration: 60  # Message duration (in ticks).
    fade-out: 20  # Fade out duration (in ticks).
```

{% embed url="<https://static.bg-software.com/imgs/title-example.mp4>" %}

### Bossbars

You can send boss bars, similar to the dragon's bar with custom color and text, by using the following format:

```yaml
MESSAGE:
  bossbar:
    color: 'PINK'  # The color to be used for the bossbar.
    message: '&eThe message of bossbar'
    ticks: 100  # The duration of the bossbar (in ticks)
    overlay: 'PROGRESS'  # The style of the bossbar.
```

The valid colors are `PINK`, `BLUE`, `RED`, `GREEN`, `YELLOW`, `PURPLE` and `WHITE` - invalid colors will default to `PINK`.

The valid overlays are `PROGRESS`, `NOTCHED_6`, `NOTCHED_10`, `NOTCHED_12` and `NOTCHED_20`.

{% hint style="info" %}
The `overlay` option only takes effect on servers with MiniMessage support (see below) - on other servers, the bossbar will always be displayed with the solid style.
{% endhint %}

### Sounds

You can play a sound when sending a message by using the following format:

```yaml
MESSAGE:
  sound:
    type: 'ENTITY_EXPERIENCE_ORB_PICKUP'  # The sound to be played.
    volume: 1
    pitch: 1
```

### Interactable Messages

You can send interactable messages that can execute commands or have hoverable text, by using the following format:

```yaml
MESSAGE:
  a:   # Random, but unique key.
    text: '&aI am hoverable text.'
    tooltip: '&6Hidden message!'
  b:
    text: '&6 I can execute commands, and I will be after the first message.'
    command: '/gmc'
  c:
    text: '&eI will put a command in the chat input instead of running it.'
    suggest: '/island create '
```

Each part supports the following options: `text` - the text to display; `tooltip` - hoverable text that is shown when hovering over the part; `command` - a command that will be executed when clicking the part; `suggest` - a command that will be put in the player's chat input when clicking the part (cannot be combined with `command`).

{% embed url="<https://static.bg-software.com/imgs/interactable-messages-example.mp4>" %}

## Custom language file

Creating a new language file is very easy task to do. All you need to do is to copy the en-US.yml file, rename it with a valid language format, and that's it! You can find a list of available language formats [here](https://www.oracle.com/technetwork/java/javase/java8locales-2095355.html).\
After you have the new file, you can edit it with the same technics that are explained above. When a new version comes out with new messages, your custom file will be updated automatically with the new messages, but in English.

## MiniMessage Support

If your server software has support to MiniMessage (Paper and its forks, on 1.18 and above), you can use MiniMessage format in the language files and it will be automatically parsed correctly.

{% hint style="warning" %}
You cannot use legacy color codes and MiniMessage format in the same message!
{% endhint %}


# Island Flags

Every island has settings (flags) that their island owners can modify. They are used to control different things on the island: fluid flow, lava, spawning and more!

## Built-in Flags

{% hint style="info" %}
The four entity-spawning flags below (`Natural Animals Spawn`, `Natural Monster Spawn`, `Spawner Animals Spawn`, `Spawner Monster Spawn`) are not hardcoded in the plugin, but registered through the `NATURAL_SPAWN` and `SPAWNER_SPAWN` actions of the [entity-categories.yml](/superiorskyblock/overview/configuration-files) file. You can register your own custom flags for other entity categories by adding new flag names to these actions, without writing any code.
{% endhint %}

**Always Day**\
Toggles time to always be day inside the island.\
This settings cannot work with other settings that change time.

**Always Middle Day**\
Toggles time to always be the middle of the day inside the island.\
This settings cannot work with other settings that change time.

**Always Night**\
Toggles time to always be night inside the island.\
This settings cannot work with other settings that change time.

**Always Middle Night**\
Toggles time to always be the middle of the night inside the island.\
This settings cannot work with other settings that change time.

**Always Rain**\
Toggles weather to always be rainy inside the island.\
This settings cannot work with other settings that change weather.

**Always Shiny**\
Toggles weather to always be shiny inside the island.\
This settings cannot work with other settings that change weather.

**Creeper Explosion**\
Toggles creeper explosions harming blocks inside the island.

**Crops Growth**\
Toggles growth of crops inside the island.

**Egg Lay**\
Toggles chickens laying eggs inside the island.

**Enderman Grief**\
Toggles endermans picking up blocks inside the island.

**Fire Spread**\
Toggles fire spread to other blocks inside the island.

**Ghast Fireball**\
Toggles fireballs harming blocks inside the island.

**Lava Flow**\
Toggles lava flowing inside the island.

**Natural Animals Spawn**\
Toggles natural spawning of animals inside the island.

**Natural Monster Spawn**\
Toggles natural spawning of monsters inside the island.

**PvP**\
Toggles pvp between players inside the island.\
When enabling the settings, all visitors will be teleported to spawn to prevent traps.

**Spawner Animals Spawn**\
Toggles spawner spawning animals inside the island.

**Spawner Monster Spawn**\
Toggles spawner spawning monsters inside the island.

**TNT Explosion**\
Toggles tnt explosions harming blocks inside the island.

**Tree Growth**\
Toggles growth of trees inside the island.

**Water Flow**\
Toggles water flowing inside the island.

**Wither Explosion**\
Toggles wither explosions harming blocks inside the island.

## Create your own island flag

In order to create your own setting, you must have knowledge in Java and the Spigot API.\
Alongside of these, you'll also need the SuperiorSkyblock's API, which can be found [here](https://github.com/OmerBenGera/SuperiorSkyblockAPI).

Island settings are represented as a class called "IslandFlag", and it's really easy to register custom ones! In this tutorial, I will make a custom setting for swimming. First, I register the custom setting by listening to the PluginInitializeEvent, and there I am calling the IslandFlag.register() method.

```java
public final class SwimmingFlag implements Listener {

    private static IslandFlag SWIMMING;

    @EventHandler
    public void onPluginInit(PluginInitializeEvent e){
        IslandFlag.register("SWIMMING");
        SWIMMING = IslandFlag.getByName("SWIMMING");
    }

}
```

{% hint style="info" %}
PluginInitializeEvent is called in the onEnable() method of SuperiorSkyblock. Therefore, you must have your plugin enabling before SuperiorSkyblock, which can be done by adding "SuperiorSkyblock2" as a depend/softdepend plugin.
{% endhint %}

After registering the custom flag, we can simply implement the restriction for swimming!

```java
public final class SwimmingFlag implements Listener {

    private static IslandFlag SWIMMING;

    @EventHandler
    public void onPluginInit(PluginInitializeEvent e){
        IslandFlag.register("SWIMMING");
        SWIMMING = IslandFlag.getByName("SWIMMING");
    }
    
    @EventHandler(ignoreCancelled = true)
    public void onPlayerMove(PlayerMoveEvent e){
        // First I check for movement between blocks
        if(e.getFrom().getBlockX() == e.getTo().getBlockX() && e.getFrom().getBlockY() == e.getTo().getBlockY() && 
                e.getFrom().getBlockZ() == e.getTo().getBlockZ())
            return;

        Island island = SuperiorSkyblockAPI.getIslandAt(e.getTo());
        
        // We make sure that swimming is disabled
        if(island == null || island.hasSettingsEnabled(SWIMMING))
            return;

        Block toBlock = e.getTo().getBlock();
        Block belowBlock = toBlock.getRelative(BlockFace.DOWN);
        
        // We check if the target block is water, or the block below it is water.
        if(toBlock.getType() == Material.WATER || (!toBlock.getType().isSolid() && belowBlock.getType() == Material.WATER)){
            e.setCancelled(true);
            e.getPlayer().sendMessage("" + ChatColor.RED + ChatColor.BOLD + "Error | " + ChatColor.GRAY + "This island has swimming disabled.");
        }
        
    }

}
```

That's it! Now players cannot enter water if the setting is disabled. You can simply add the new setting to the settings menu, and edit it's display icon there, the same as the regular settings.


# Island Privileges

Permissions that can be assigned to members or roles, that give access to certain things in the island. You can remove permissions from being given by not having them inside the permissions menu.

## Built-in Privileges

{% hint style="info" %}
Some of the privileges below are not hardcoded in the plugin, but registered through the default configuration files: the [interactables.yml](/superiorskyblock/overview/configuration-files) file registers block-interaction privileges (`Interact`, `Use`, `Chest Access`, `Sign Interact`, `Farm Tramping`, `Turtle Egg Tramping`, `Pickup Lectern Book`), and the [entity-categories.yml](/superiorskyblock/overview/configuration-files) file registers entity-related privileges (`Animal Spawn`, `Animal Damage`, `Monster Spawn`, `Monster Damage`, `Allay Interact`, `Copper Golem Interact`, `Horse Interact`, `Nautilus Interact`, `Pickup Axolotl`, `Pickup Fish`, `Item Frame`, `Painting`, `Tamed Animal Damage`, `Minecart Place`, `Minecart Damage`). You can register your own custom privileges by adding new privilege names to these files, without writing any code.
{% endhint %}

**All**\
Gives access to all the permissions.\
Recommendation: Should only be given to island leaders.

**Allay Interact**\
Gives access to interact with allays inside the island

**Animal Breed**\
Gives access to breed animals inside the island.

**Animal Damage**\
Gives access to damage animals inside the island

**Animal Shear**\
Gives access to shear animals inside the island

**Animal Spawn**\
Gives access to spawn animals inside the island

**Ban Member**\
Gives access to ban members from the island

**Break**\
Gives access to break blocks inside the island

**Brush**\
Gives access to brush suspicious blocks inside the island (1.20+ servers only)

**Build**\
Gives access to build inside the island

**Change Name**\
Gives access to change the name of the island

**Chest Access**\
Gives access to access chests inside the island

**Chorus Fruit**\
Gives access to consume chorus fruits inside the island (1.9+ servers only)

**Close Bypass**\
Gives bypass to the lock island status

**Close Island**\
Gives access to close (lock) the island to the public

**Coop Member**\
Gives access to add a player as a coop-member to the island

**Copper Golem Interact**\
Gives access to interact with copper golems inside the island

**Delete Warp**\
Gives access to delete island warps

**Demote Members**\
Gives access to demote island members

**Deposit Money**\
Gives access to deposit money into the island's bank

**Disband Island**\
Gives access to disband the island

**Discord Show**\
Gives access to see the discord of the island

**Drop Items**\
Gives access to drop items inside the island

**Dye Sheep**\
Gives access to dye sheep inside the island

**Ender Pearl**\
Gives access to use ender pearls inside the island

**Entity Ride**\
Gives access to ride entities inside the island

**Expel Bypass**\
Gives bypass from being expelled from the island

**Expel Players**\
Gives the ability to expel players from the island

**Farm Tramping**\
Gives access to destroy farms (jump on them) inside the island

**Fertilize**\
Gives access to fertilize blocks around the island

**Fish**\
Gives access to fish inside the island

**Fly**\
Gives access to fly around the island

**Horse Interact**\
Gives access to interact with horses inside the island

**Ignite Creeper**\
Gives access to ignite creppers (using a flint and steal) inside the island

**Interact**\
Gives access to interact with blocks inside the island.\
The interactable blocks are configurable and can be found under the interactables.yml file.

**Invite Member**\
Gives access to invite new players into the island

**Island Chest**\
Gives access to the community chest of the island

**Item Frame**\
Gives access to break and interact with item frames inside the island

**Kick Member**\
Gives access to kick members from the island

**Leash**\
Gives access to leash mobs inside the island

**Minecart Damage**\
Gives access to damage vehicles inside the island

**Minecart Enter**\
Gives access to enter vehicles inside the island

**Minecart Open**\
Gives access to open vehicles inside the island

**Minecart Place**\
Gives access to place vehicles inside the island

**Monster Damage**\
Gives access to damage monsters inside the island

**Monster Spawn**\
Gives access to spawn monsters inside the island

**Name Entity**\
Gives access to nametag entities inside the island

**Nautilus Interact**\
Gives access to interact with nautiluses inside the island

**Open Island**\
Gives access to open (unlock) the island to the public

**Painting**\
Gives access to break paintings inside the island

**Paypal Show**\
Gives access to see the paypal of the island

**Pickup Axolotl**\
Gives access to pick up axolotls using a water bucket inside the island

**Pickup Drops**\
Gives access to pick up drops inside the island

**Pickup Fish**\
Gives access to pick up fish using a water bucket inside the island

**Pickup Lectern Book**\
Gives access to pick up books out of lecterns inside the island

**Promote Members**\
Gives access to promote members inside the island

**Rankup**\
Gives access to rankup upgrade levels

**Ratings Show**\
Gives access to see the ratings that were given to the island

**Saddle Entity**\
Gives access to add saddles to entities inside the island

**Sculk Sensor**\
Gives access to trigger sculk sensors inside the island (1.17+ servers only)

**Set Biome**\
Gives access to change the biome of the island

**Set Discord**\
Gives access to set the discord of the island

**Set Home**\
Gives access to set the teleport location of the island

**Set Paypal**\
Gives access to set the paypal of the island

**Set Permission**\
Gives access to change the permissions of the island

**Set Role**\
Gives access to set roles to members of the island

**Set Settings**\
Gives access to change the settings of the island

**Set Warp**\
Gives access to set new warps inside the island

**Sign Interact**\
Gives access to interact with signs inside the island

**Spawner Break**\
Gives access to break spawners inside the island

**Tamed Animal Damage**\
Gives access to damage tamed animals inside the island

**Turtle Egg Tramping**\
Gives access to break turtle eggs when standing on them inside the island

**Uncoop Member**\
Gives access to remove members from being coop from the island

**Use**\
Gives access to use blocks inside the island

**Valuable Break**\
Gives access to break valuable blocks inside the island

**Villager Trading**\
Gives access to trade with villagers inside the island

**Wind Charge**\
Gives access to use wind charges inside the island (1.21+ servers only)

**Withdraw Money**\
Gives access to withdraw money from the island's bank

## Create your own island privilege

In order to create your own permission, you must have knowledge in Java and the Spigot API.\
Alongside of these, you'll also need the SuperiorSkyblock's API, which can be found [here](https://github.com/OmerBenGera/SuperiorSkyblockAPI).\
\
Island permissions are represented as a class called "IslandPrivilege", and it's really easy to register custom ones! In this tutorial, I will make a custom permission for breaking beacons inside islands.\
First, I register the custom permission by listening to the PluginInitializeEvent, and there I am calling the IslandPrivilege.register() method.

```java
public final class BeaconPlacePermission implements Listener {

    private static IslandPrivilege BEACON_BREAK;

    @EventHandler
    public void onPluginInit(PluginInitializeEvent e){
        IslandPrivilege.register("BEACON_BREAK");
        BEACON_BREAK = IslandPrivilege.getByName("BEACON_BREAK");
    }

}
```

{% hint style="info" %}
PluginInitializeEvent is called in the onEnable() method of SuperiorSkyblock. Therefore, you must have your plugin enabling before SuperiorSkyblock, which can be done by adding "SuperiorSkyblock2" as a depend/softdepend plugin.
{% endhint %}

After registering the custom permission, we can simply implement the restriction for breaking beacons!

```java
public final class BeaconPlacePermission implements Listener {

    private static IslandPrivilege BEACON_BREAK;

    @EventHandler
    public void onPluginInit(PluginInitializeEvent e){
        IslandPrivilege.register("BEACON_BREAK");
        BEACON_BREAK = IslandPrivilege.getByName("BEACON_BREAK");
    }
    
    @EventHandler
    public void onBlockBreak(BlockBreakEvent e){
        //Checking for beacons only.
        if(e.getBlock().getType() != Material.BEACON)
            return;

        Island island = SuperiorSkyblockAPI.getIslandAt(e.getBlock().getLocation());
        
        // Making sure the block was broken inside an island.
        if(island == null)
            return;
        
        if(!island.hasPermission(e.getPlayer(), BEACON_BREAK)){
            e.setCancelled(true);
            e.getPlayer().sendMessage("" + ChatColor.RED + ChatColor.BOLD + "Error | " + ChatColor.GRAY + "This island is protected.");
        }
    }

}
```

That's it! Now players must have the BEACON\_BREAK permission in order to mine beacons. You can simply add the new permission to the permissions menu, and edit it's display icon there, the same as the regular permissions.


# Schematics

Schematics are used as a default building of islands (no one wants an empty world to play inside). There are three different schematics: normal ones, nether ones & end ones.

## Creating your first schematic

Here you can find a tutorial for using the built-in system - which is very fast and optimized to ensure no lag is occured. If you prefer to use WorldEdit schematics, please scroll down for the WorldEdit section.

First, toggle the schematic mode using /is admin schematic.\
Then, select two blocks using a golden axe, and stand where you want the teleport location to be.\
The last thing to do is to run /is admin schematic , which will create the schematic file for you.\
This task might be a bit slow, so don't do it while having many players online.

**Creating a sign**\
To create a sign that will appear on the island - you have two options:

1\. You can create a sign when you create the schematic\
2\. You can place a sign on the island when you create a schematic and edit the `default-signs` option in the `config.yml`.

For both, you can use these variables:\
`{player}` - Island Owner's Name\
`{island}` - Island Name *(If the island name does not exist, then it will default to the Island Owner's Name.)*

{% embed url="<https://static.bg-software.com/imgs/schematics-creation.mp4>" %}

## WorldEdit Schematics

WorldEdit schematics are supported, but you must have FastAsyncWorldEdit installed.\
Support for regular WorldEdit won't be added, as FAWE is the same but better in performance.

{% hint style="danger" %}
WorldEdit schematics do not receive bug-fixes anymore.\
Any bug from using these schematics will not be fixed, and it's recommended to use the built-in system instead.
{% endhint %}

## Adding your own schematic

In order to add schematics, you first need to move the schematic files into the schematics folder,\
that is located under the main plugin's folder. Make sure you use WorldEdit schematics or built-in schematics.

After doing so, allocate the island-creation menu file (can be found inside the menus folder), and open it.\
Add a new item to the items section, and add to it the following sections:\
`schematic`: '' - the name of the schematic file (without file extension)\
`biome`: '' - The biome that will be set for the island.\
`bonus-worth`: - The bonus that the island will get of worth once created.\
\&#xNAN;*Can be negative to get the island start with a default worth of 0.*\
`bonus-level`: - The bonus that the island will get of level once created.\
\&#xNAN;*Can be negative to get the island start with a default level of 0.*\
`offset`: - When enabled, created islands will have a worth & level values of 0.\
This function checks for the default worth of the island, and applies a negative worth bonus.\
`spawn-offset`: - Offset to teleport the player when the island is created.\
\&#xNAN;*The format of the offset is "\<offset-x>, \<offset-y>, \<offset-z>"*\
`access`: - The item that will be displayed when having access to the schematic.\
`no-access`: - The item that will be displayed when not having access to the schematic.


# Upgrades

Using upgrades, you can give your players custom perks that are upgradable. In this documentation, you will understand how to edit them to your own style!

## The Upgrades Module

Upgrades are part of the upgrades module of the plugin. Therefore, they are configured in the config file of the module, located in `plugins/SuperiorSkyblock2/modules/upgrades/config.yml`, and not in the main config.yml of the plugin.

{% hint style="info" %}
If you have an old `upgrades.yml` file from older versions of the plugin, it will be migrated automatically into the module's config file.
{% endhint %}

Besides the upgrades themselves, the config file of the module contains the following global settings:

| Field            | Default | Description                                                                                                   |
| ---------------- | ------- | ------------------------------------------------------------------------------------------------------------- |
| `enabled`        | true    | Whether the module should be enabled. When disabled, all module commands and features will also be disabled.  |
| `crop-growth`    | true    | Whether crop-growth should be enabled. When disabled, the plugin will not alter crop growth.                  |
| `mob-drops`      | true    | Whether mob drops should be enabled. When disabled, the plugin will not alter mob drops.                      |
| `island-effects` | true    | Whether island-effects should be enabled. When disabled, the plugin will not give any effects to any players. |
| `spawner-rates`  | true    | Whether spawner-rates should be enabled. When disabled, the plugin will not alter spawner rates.              |
| `block-limits`   | true    | Whether block-limits should be enabled. When disabled, the plugin will not limit placement of blocks.         |
| `entity-limits`  | true    | Whether entity-limits should be enabled. When disabled, the plugin will not limit spawning of entities.       |

## Creating your first upgrade

Creating a new upgrade is an easy task to do!\
All the upgrades follow the same rules, but in this tutorial we will create a generator upgrade.

We will start with the basic layout for the upgrade:

```yaml
upgrades:
  island-generators:        # The name of the upgrade.
    '1':                    # The first level of the upgrade.
      <to-do>
    '2':                    # The second level of the upgrade.
      <to-do>
```

All the upgrades work with the same layout: a global section for the upgrade, and sub-sections for every level of the upgrade. You can make as many levels as you want!

Now, we can start working on our first level. We will give it a price-type, price, commands to be executed upon rankup and a required permission to use the upgrade. In this case, I don't want a permission - so I don't add that section.

```yaml
'1':
  price-type: 'money'      # The type of price handler. More information below.
  price: 100000.0          # The price to rank up to the second level.
  commands:
    - 'island admin setupgrade %player% island-generators 2'     # We must change the level of the upgrade manually using a command.
    - 'island admin msgall %player% &e&lUpgrade | &7%player% upgraded your generators to level 2!'   # Message that will be sent to the island members.
  permission:  <your-permission>   # You can add it if you want a required permission to rankup.
```

As you might have noticed, I run /is admin setupgrade - this is required so the plugin will actually change the upgrade's level for the island. Not doing so will make the upgrade to not rankup, as you'll see in the last level.

After we set up the basic layout of the level, we want to give it some values. The values will be synced with the island. You can change crop growth, spawner rates, mob drops, limits, generators and more with the upgrades! For this tutorial, I will change the generator rates using the "generator-rates" section:

```yaml
'1':
 price-type: 'money'
 price: 100000.0
 commands:
   - 'island admin setupgrade %player% island-generators 2'
   - 'island admin msgall %player% &e&lUpgrade | &7%player% upgraded your generators to level 2!'
 generator-rates:
   normal:      # The world environment. Can use normal, nether or the_end.
     STONE: 85
     COAL_ORE: 10
     IRON_ORE: 5 
```

That's it! We completed our first level! Because this is the first level of the upgrade, it will be applied to all the islands by default. It means that all of the islands on my server will have the generator rates that I configured. Now, I will add more levels by following the same layout:

```yaml
upgrades:
 island-generators:
   '1':
     price-type: 'money'
     price: 100000.0
     commands:
       - 'island admin setupgrade %player% island-generators 2'
       - 'island admin msgall %player% &e&lUpgrade | &7%player% upgraded your generators to level 2!'
     generator-rates:
       normal:
         STONE: 85
         COAL_ORE: 10
         IRON_ORE: 5 
   '2':
     price-type: 'money'
     price: 150000.0
     commands:
       - 'island admin setupgrade %player% island-generators 3'
       - 'island admin msgall %player% &e&lUpgrade | &7%player% upgraded your generators to level 3!'
     generator-rates:
       normal:
         STONE: 70
         COAL_ORE: 15
         IRON_ORE: 10
         DIAMOND_ORE: 5
   '3':
     price-type: 'money'
     price: 300000.0
     commands:
       - 'island admin setupgrade %player% island-generators 4'
       - 'island admin msgall %player% &e&lUpgrade | &7%player% upgraded your generators to level 4!'
     generator-rates:
       normal:
         STONE: 50
         COAL_ORE: 25
         IRON_ORE: 15
         DIAMOND_ORE: 10
```

After I configured all of my levels, I must also add the last upgrade - level #4. Unlike the other upgrades, this upgrade will not have the setupgrade command, but will still have values assigned to it:

```yaml
'4':
  price-type: 'money'
  price: 0.0       # I set the price to 0, so my players will always get the warning message.
  commands:
    - 'island admin msg %player% &c&lError | &7You have reached the maximum upgrade for island generators.'
  generator-rates:
    normal:
      EMERALD_ORE: 50
      DIAMOND_ORE: 50
```

Finally, I have a working generator upgrade that will have it's values synced with all the islands. You can change the values anytime you want, and your islands will be synced automatically with it. Removing existing levels is not an option - you can just make the upgrade to do nothing, but removing it completely will cause errors from the plugin.

## Level Fields

Every level of an upgrade can have the following fields:

| Field             | Type   | Description                                                                                                                                                             |
| ----------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `price-type`      | String | The type of the price handler. Optional; when omitted, defaults to `money`. The value is case-insensitive. If an invalid price-type is used, the level will be skipped. |
| `price`           | Double | The cost to upgrade to the next level.                                                                                                                                  |
| `commands`        | List   | Commands that will be executed by the console when the level is purchased. You can use `%player%` for the player's name.                                                |
| `permission`      | String | Optional permission that is required to rankup to the configured level.                                                                                                 |
| `required-checks` | List   | Optional conditions that must be met to purchase the level. More information below.                                                                                     |

### Required Checks

Using the `required-checks` field, you can add custom conditions that players must meet before they can purchase a level. Each entry in the list is in the format `<condition>;<error-message>`: the condition is evaluated by the [JavaScript engine](/superiorskyblock/overview/javascript-engine) (placeholders are supported), and if it's not met, the error message will be sent to the player.

For example, requiring the island to be at least level 10 in order to purchase the level:

```yaml
'2':
  price-type: 'money'
  price: 150000.0
  required-checks:
    - '%superior_island_level% >= 10;&cYour island must be level 10 or higher to purchase this upgrade!'
  commands:
    - ...
```

## Island Values

You can use the following sections to alter island values:

| Field             | Type    | Description                                                                                                                                                                                                                                                                              |
| ----------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `crop-growth`     | Double  | The crop growth multiplier for this upgrade.                                                                                                                                                                                                                                             |
| `spawner-rates`   | Double  | The spawner rates multiplier for this upgrade.                                                                                                                                                                                                                                           |
| `mob-drops`       | Double  | The mob drops multiplier for this upgrade.                                                                                                                                                                                                                                               |
| `team-limit`      | Integer | The team limit for this upgrade.                                                                                                                                                                                                                                                         |
| `warps-limit`     | Integer | The warps limit for this upgrade.                                                                                                                                                                                                                                                        |
| `coop-limit`      | Integer | The coops limit for this upgrade.                                                                                                                                                                                                                                                        |
| `border-size`     | Integer | The border size for this upgrade. Must not exceed the `max-island-size` from the main config, otherwise the level will be skipped.                                                                                                                                                       |
| `bank-limit`      | String  | The maximum amount of money that can be deposited into the island bank for this upgrade. Supports large numbers.                                                                                                                                                                         |
| `block-limits`    | Section | The block limits for this upgrade. All the blocks are in the format `TYPE: LIMIT`. Block types also support data values, in the format `TYPE:DATA`.                                                                                                                                      |
| `entity-limits`   | Section | The entity limits for this upgrade. All the entities are in the format `TYPE: LIMIT`.                                                                                                                                                                                                    |
| `generator-rates` | Section | The generator rates for this upgrade. The rates are configured per world environment (`normal`, `nether` or `the_end`), with all the rates in the format `TYPE: CHANCE`. Rates that are placed directly under the section (legacy format) will apply to the default world of the plugin. |
| `island-effects`  | Section | The island effects for this upgrade. All the effects are in the format `EFFECT: LEVEL`, where the level is the in-game effect level (`SPEED: 1` gives Speed I). Invalid effect names are ignored.                                                                                        |
| `role-limits`     | Section | The role limits for this upgrade. All the roles are in the format `ROLE-ID: LIMIT`, where the role id is the numeric id (weight) of the role from the main config, not its name.                                                                                                         |

## Price Types

The plugin has two pre-defined price types - money based prices and placeholders based prices.\
Simply add the `price-type` section to your upgrade with the price-type you want. Currently there are two different ones: `money` and `placeholders:`

#### money

When using this price-type, money will be taken from the players' bank (Essentials or any other economy plugin).

You must add the following fields to your upgrade to get this working:

| Required Field | Type   | Description                        |
| -------------- | ------ | ---------------------------------- |
| `price`        | Double | The cost to upgrade to next level. |

#### placeholders

When using this price-type, money will be taken by executing custom commands, and the balance will be parsed by a placeholder.

You must add the following fields to your upgrade to get this working:

| Required Field      | Type   | Description                                                                                                                                        |
| ------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `price`             | Double | The cost to upgrade to next level.                                                                                                                 |
| `placeholder`       | String | The placeholder that represents the balance of the player.                                                                                         |
| `withdraw-commands` | List   | <p>A list of commands to be executed for withdrawing money.<br>You can use %player% for player's name and %amount% for the amount to withdraw.</p> |

{% hint style="info" %}
You can register custom price types using the API.
{% endhint %}

### Example

In the example below, you can find two upgrades (each has only one level) with different price types.

The first upgrade, `money-example-upgrade`, has a `money` price-type configured to it. The second one, `placeholders-example-upgrade`, has a `placeholders` price-type.\
For this example, assume the placeholder `%custom_economy_balace%` returns an integer with the balance of the player and the command `/customeco take <player-name> <price>` takes the given balance from the given player.

```yaml
upgrades:
  money-example-upgrade:
    '1':
      price: 1000000.0
      price-type: 'money'
      commands:
        - ...
  placeholders-example-upgrade:
    '1':
      price: 1000000.0
      price-type: 'placeholders'
      placeholder: '%custom_economy_balance%'
      withdraw-commands:
      - 'customeco take %player% 1000000'
      commands:
        - ...
```


# Island Multipliers

The plugin gives you the ability to change different multipliers using the upgrades system.

## Crop Growth

The crop-growth multiplier changes the rates of growth of crops in the island.

In order to understand how the crop-growth work, you must understand first how it works in vanilla. To do that, you must under a few concepts beforehand:

#### Chunks

Chunks (16x16 areas of the world) are stored in the backend in sections - each for a 16x16x16 blocks.

#### Ticks

The server is running in intervals of ticks, which each tick last 50 milliseconds (so 20 ticks in a second).

#### Ticked Blocks

"ticking", "ticked blocks", etc; are all referred to blocks that can be grown as crops for this discussion.

Every tick the server is running, it iterates through all the loaded chunks in the world that can be ticked (in general, loaded chunks that players are close enough to them) and tries to tick blocks inside these chunks. For each of these chunks, the server iterates through each one of its sections and chooses a number of blocks to try and tick. How does the server choose this number? Game rules! The game rule `randomTickSpeed` determines exactly that. It randomly picks up blocks in each chunk section (according to the `randomTickSpeed` value) and checks if they can get ticked. If they do, it runs a tick for them. In game, you'll see the block grow.

Now that you have better understanding of the vanilla mechanism, that's the time to discuss how the plugin handles the multiplier. As you can guess, it's almost impossible to get an exact multiplier for crops due to the randomness of picking up blocks. However, the plugin can multiply the amount of blocks to tick, and that's exactly what it does. Instead of only ticking `randomTickSpeed` blocks, it actually tries to tick `randomTickSpeed * <crop-growth multiplier> * <crops-interval>` amount of blocks (The multiplication by the `crops-interval` is done because the plugin doesn't tick blocks every tick - configured)

## Spawner Rates

The spawner-rates multiplier changes the delay of spawners for running the next spawning waves.\
For this discussion, `spawner wave(s)` is referred to the action where the spawner spawn a group of entities. This action can be done across a few tick or get completed in one tick, depends on the game.

After a spawner wave is done, the plugin waits a few ticks (5 to be exact) and reduces the delay for the next wave. The delay in reducing the spawner-wave delay is to ensure the current spawner wave is completely done, and the new delay of the spawner was already set by the game. Because the wave can last for more than a tick, the plugin must ensure that the wave is completed before changing the delay.

The plugin changes the delay by simply taking the current delay and dividing it by the spawner-rates multiplier of the island. The plugin makes sure that the spawner-rate is above 1 before doing the action. Division (even in small values) can dramatically reduce the delay of spawners, and therefore it's advised to use small values (even decimals if possible) - spawning a lot of entities may cause server-lag.

## Mob Drops

The mob-drops multiplier changes the amount of items that are dropped from mobs in the island.

{% hint style="info" %}
The multiplier changes the amount of items that were dropped; it doesn't increase the chances of other items to drop.
{% endhint %}

Once a mob dies, the plugin iterates through all the items that were dropped by the entity, and multiply their amount by the drops-multiplier. If the new amount exceeds the maximum stack-size of the item, the plugin will drop additional items.

The plugin makes sure to not multiply equipment (armor, hand items, chest contents, etc) of entities to prevent duplication glitches.


# Menus

Menus (guis) are used in the plugin in many cases, and they are all fully customizable. In this documentation, you will understand how to edit them to your own style!

## Editing the menu's style

You have the ability to edit the style of the menu, which includes its title, its type and the amount of rows it has.

{% hint style="info" %}
Note: Some menus might have additional custom fields that are not addressed in this tutorial. (i.e. [Schematics](/superiorskyblock/overview/schematics))
{% endhint %}

{% hint style="info" %}
The plugin ships version-variant menu files (for example `warps1_12.yml`, `warps1_16.yml`) alongside the base files. These variants only swap material names and data values for older Minecraft versions - the plugin automatically picks the closest variant for your server version. You should only edit the file that matches your server's version.
{% endhint %}

| Field Name      | Description                                                                                                                                                  | Supported Menus |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------- |
| `title`         | Custom title for the menu. Supports color codes, 1.16+ codes and placeholders                                                                                | All menus       |
| `type`          | The type of the menu. A list of inventory types can be found [here](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html). | All menus       |
| `previous-menu` | Whether or not the previous menu should be opened when closing this menu.                                                                                    | All menus       |
| `open-sound`    | A sound that will be played when opening the menu. Should follow the sound format.                                                                           | All menus       |
| `back`          | The back button of the menu. This is required if only-back-button is enabled.                                                                                | All menus       |
| `previous-page` | The previous page button for paged menus.                                                                                                                    | Paged menus     |
| `current-page`  | The display item of the current page of the menu.                                                                                                            | Paged menus     |
| `next-page`     | The next page button for paged menus.                                                                                                                        | Paged menus     |
| `slots`         | The item symbol that will be used for the paged menu contents (warps, members, etc)                                                                          | Paged menus     |
| `skip-one-item` | Whether the menu should display the object directly instead of opening the menu when there is only one object to display.                                    | Paged menus     |
| `custom-order`  | A list of slot numbers that determines a custom ordering for the paged menu contents.                                                                        | Paged menus     |

Besides all of these fields, there is another field that is really important - `pattern`.\
This field determines the pattern of the menu, or in other words - the amount of rows that the menu has and the items in the menu. This field is a list of strings that represents the rows of the menu. Each string should contain the amount of columns the menu has.\
\&#xNAN;*(Regular menu types should have 9 items in a row, hoppers should have 5, etc.)*\
Each item in the menu is represented by a unique character, and can be set in any slot in the menu. Similar chars will represent the same item.

#### Pattern Examples

The following menu has 1 row with a similar item that is represented by the char `A`:

```yaml
pattern:
- 'A A A A A A A A A'
```

The following example has 5 rows, with a similar item as a border, and is filled with another item:

```yaml
pattern:
- 'A A A A A A A A A'
- 'A B B B B B B B A'
- 'A B B B B B B B A'
- 'A B B B B B B B A'
- 'A A A A A A A A A'
```

## Editing items in the menu

All the items styling is done under the `items` section in the menu. Under this section, each item should have a section where you can style it to your own liking. The name of the section is the unique char you chose for your item. For the examples above, the unique chars are `A` and `B`.\
Therefore, the `items` section will be like the following:

```yaml
items:
  'A':
    ... # All the item's settings
  'B':
    ... # All the item's settings
```

Each item can be configured as you wish, and can have as many settings as you wish from the list down below.

{% hint style="info" %}
Note: SuperiorSkyblock only supports material names, ids are not supported. You can find material names [here](https://bg-software.com/materials/).
{% endhint %}

| Field Name     | Description                                                                                                                                                                                                                                               |
| -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `type`         | The material type of the item.                                                                                                                                                                                                                            |
| `data`         | The data value of the item. Used in versions 1.12 or below to determine different items.                                                                                                                                                                  |
| `name`         | Custom name for the item (supports color codes)                                                                                                                                                                                                           |
| `lore`         | A list of lines for the lore of the item (supports color codes)                                                                                                                                                                                           |
| `amount`       | Custom amount for the item                                                                                                                                                                                                                                |
| `enchants`     | A section for all enchantments. Each enchantment will have a different sub-section, with the level of the ench as a value.                                                                                                                                |
| `glow`         | Whether or not the item should have enchanted effect without having an enchantment in its lore.                                                                                                                                                           |
| `flags`        | A list of item flags to be applied for the item. Supported in 1.9+, and can be found [here](https://helpch.at/docs/1.12.2/index.html?org/bukkit/inventory/ItemFlag.html).                                                                                 |
| `skull`        | Base64 value for the skin of the skull, if this item is a player's head item. This can be obtained [here](https://minecraft-heads.com).                                                                                                                   |
| `unbreakable`  | Set the spigot's unbreakable flag for the item.                                                                                                                                                                                                           |
| `effects`      | A list of potion effects that will be applied for the item. More information about it below.                                                                                                                                                              |
| `entity`       | Set the entity of the item, if it's a spawn egg. Replaces the usage of data values for legacy versions.                                                                                                                                                   |
| `customModel`  | Set a custom model data for items. This is used to set custom textures for the items using custom resource packs. Supported in 1.14+                                                                                                                      |
| `leatherColor` | Set a custom color for a piece of leather armor, in hex format.                                                                                                                                                                                           |
| `bannerMeta`   | A section of banner patterns. Each sub-section is a [dye color](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/DyeColor.html) with a [pattern type](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/block/banner/PatternType.html) as its value. |
| `trim`         | A section for an armor trim. Must contain a `material` field (trim material) and a `pattern` field (trim pattern). Supported in 1.20+                                                                                                                     |
| `itemModel`    | Set an item model for items. This is used to set custom textures for the items using custom resource packs. Supported in 1.21.4+                                                                                                                          |
| `rarity`       | Set the rarity of the item, affecting the color of the item's name. Supported in 1.20.6+                                                                                                                                                                  |
| `source`       | Path to another section where the item is configured                                                                                                                                                                                                      |
| `hideTooltip`  | Hide tooltips when hovering over an item                                                                                                                                                                                                                  |

#### Effects Section

The effects section is used to add effects for potion items. Each effect will have it's own section, and two custom sub-sections: `duration` and `amplifier`. The `duration` field is required - effects without it will be skipped.\
Here is an example for a potion item with a speed 2 effect that lasts for 5 minutes:

```yaml
'A':
  type: POTION
  effects:
    # Add speed effect to the potion
    speed:
      # The duration of the effect, in ticks (20 ticks = 1 second)
      duration: 6000
      # The amplifier of the effect. Calculated as the desired level - 1.
      amplifier: 1
```

#### Access Buttons

Some menus (Biomes, Island Creation, Permissions, Settings and more) use buttons with multiple states depending on whether the player can use them. Instead of a single item, these buttons contain sub-sections such as `access` and `no-access` (or menu-specific names like `settings-enabled` and `settings-disabled`), where each sub-section is a regular item-section. Check the page of the specific menu for the exact state names it supports.

```yaml
items:
  'A':
    # Displayed when the player can use the button.
    access:
      type: LIME_STAINED_GLASS_PANE
      name: '&aClick me!'
    # Displayed when the player cannot use the button.
    no-access:
      type: RED_STAINED_GLASS_PANE
      name: '&cNo access!'
```

## Giving sounds to items

You can make items to play sounds when clicked. All sounds must follow a specific format, which will be described below. Similar to the way items are configured, the sounds go under the `sounds` section, and as sub-sections, each char of the item you want to apply a custom sound for.\
The sound sections should have the following fields:

| Field Name | Description              |
| ---------- | ------------------------ |
| `type`     | The sound to play.       |
| `volume`   | The volume of the sound. |
| `pitch`    | The pitch of the sound.  |

An example for a custom sound for the item `A`:

```yaml
sounds:
  'A':
    type: ENTITY_EXPERIENCE_ORB_PICKUP
    volume: 0.2
    pitch: 0.2
```

## Running custom commands

You can make commands to be executed when clicking items. Similar to the sounds and the items sections, you can use the `commands` section to execute custom commands. Commands can be executed by the Console, or can be executed by the player that clicks the item. Besides that, you can use `%player%` to get the name of the player that clicked the item.

**Execute Commands by the Player:**\
You can make the player to execute the command instead of the Console by having `[player]` at the start of the command.

**Execute Island Commands:**\
You can execute island commands by setting the subcommand in brackets. `[player] [tp]` will make the player to execute /is tp. For a command with args, simply add the args outside of the brackets.

**Execute Custom Commands:**\
You can execute custom commands by simply writing them without `/` at the start. `bc &cHello!` will execute `/bc &cHello!` by the Console.

**Built-in Actions:**\
The plugin provides two custom actions that can be executed - close the menu and go back to the previous menu. Similar to the player action, you can use `[close]` to close the menu, and `[back]` to go to the previous menu.

## Permissions Section

You can add required permissions for items that players must have before they can click the items. All permissions must follow a specific format, which will be described below. Similar to the way items are configured, the permissions go under the `permissions` section, and as sub-sections, each char of the item you want to apply a required permission for.\
The permissions sections should have the following fields:

| Field Name        | Description                                                                        |
| ----------------- | ---------------------------------------------------------------------------------- |
| `permission`      | The permission that will be required from player.                                  |
| `no-access-sound` | Sound that will be played to the player when the player is missing the permission. |

An example for a custom permission for using the item `A`:

```
permissions:
  'A':
    permission: 'my.custom.permission'
    no-access-sound:
      type: BLOCK_ANVIL_PLACE
      volume: 0.2
      pitch: 0.2
```

{% hint style="info" %}
It's recommended for you to follow the default format of menus when you edit them. This will make your life much more easier when working with menus!
{% endhint %}

## Creating custom menus

You can make custom menus that will be opened by custom sub-commands. The principles of the regular menus are also applied to the custom menus. Simply create a new file under the `custom` folder - each file represents a custom menu. Besides the regular fields of the other menus, custom menus must have the following fields:

| Field Name        | Description                                                                                                 | Required Field |
| ----------------- | ----------------------------------------------------------------------------------------------------------- | -------------- |
| `command`         | The sub-command that will be used to open the menu (`/island {your-sub-command}`).                          | Required       |
| `aliases`         | A list of aliases for the command, splitted by `,` .                                                        | Optional       |
| `permission`      | Custom permission that players need to have in order to execute the command.                                | Optional       |
| `description`     | A list of descriptions for different languages for the command. The description is displayed in `/is help`. | Optional       |
| `display-command` | Whether or not the command should be displayed in `/is help`.                                               | Optional       |
| `require-island`  | Whether the player opening the menu is required to have an island.                                          | Optional       |

#### Command Section

The command section needs to be formatted properly for the plugin to be able to register your custom menu. Here is an example of a properly set up command section:

```yaml
command:
  aliases: alias1, alias2
  permission: 'your.permission'
  display-command: true
  description:
    en-US: 'This is just a test menu.'
    fr-FR: 'Il s''agit du menu de test.'
```

{% hint style="info" %}
Note: The name of your custom menu file ***will be your sub-command***\
(`/is {your-sub-command}`).
{% endhint %}

#### Description Section

The description section should have sub-sections for each language, and the description for that language as a value. For example:

```yaml
description:
  # Custom description for the command for English.
  en-US: 'This is a custom command to open a custom menu'
  # Custom description for the command for France.
  fr-FR: ...
```


# Bank Logs Menu

Here you'll find how to make your own bank logs from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Paged-Type Menu Sections

The bank-logs menu is a paged-menu, which means it displays items from a list of available items - in this case, bank-transactions. Because the amount of bank-transactions can be greater than the amount of available slots, the menu supports multiple pages.

This type of menu requires 4 additional sections: \
`slots` - char of the bank-transaction buttons.\
`previous-page` - char to set a custom button that will get players back to the previous page.\
`current-page` - char to set a custom button that will display the current page players look at.\
`next-page` - char to set a custom button that will get players to the next page.

### Bank-Logs Related Sections

The bank-logs menu have two additional sections that can be configured. The first one is `time-sort`, which you can configure a custom button that will sort the bank-transactions by their creation time. Similar to that, there is `money-sort`, which is a button to sort bank-transactions by the money in the transaction. Simply set them as a custom char from your pattern in order to make that item a custom button.

{% hint style="info" %}
If you don't want one of the custom buttons, simply remove their section from the file.
{% endhint %}

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Custom Placeholders

The items of the paged-menu (`slots`, `previous-page`, etc) support custom placeholders!\
`slots` - \
&#x20;       {0} - The transaction's id\
&#x20;       {1} - The name of the player that made the transaction.\
&#x20;       {2} - The transaction's action (widthraw / deposit)\
&#x20;       {3} - The time the transaction was made.\
&#x20;       {4} - The amount that was transferred in the transaction.\
&#x20;       {5} - The amount that was transferred, formatted with commas.\
&#x20;       {6} - The amount that was transferred, formatted with `K` for thousands, `M` for millions, \
&#x20;               `B` for billions, `T` for trillions and `Q` for quadrillions.\
`previous-page`, `next-page` -\
&#x20;       {0} - Green color (\&a) if can navigate to the previous/next page, red color (\&c) otherwise.\
`current-page` -\
&#x20;       {0} - The current's page number.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is an example of a bank-logs menu, which includes most of the technics and features stated in this tutorial.

{% embed url="<https://gist.github.com/OmerBenGera/a5278989c3b2bf03ade12c2fafee2b2f>" %}


# Banned Players Menu

Here you'll find how to make your own banned players menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

The title of this menu supports a custom placeholder: {0} - the amount of banned players the island has.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Paged-Type Menu Sections

The banned-players menu is a paged-menu, which means it displays items from a list of available items - in this case, players banned from the island. Because the amount of banned players can be greater than the amount of available slots, the menu supports multiple pages.

This type of menu requires 4 additional sections:\
`slots` - char of the banned player buttons.\
`previous-page` - char to set a custom button that will get players back to the previous page.\
`current-page` - char to set a custom button that will display the current page players look at.\
`next-page` - char to set a custom button that will get players to the next page.

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Custom Placeholders

The items of the paged-menu (`slots`, `previous-page`, etc) support custom placeholders!\
`slots` -\
{0} - The banned player's name.\
{1} - The banned player's role.\
`previous-page`, `next-page` -\
{0} - Green color (\&a) if can navigate to the previous/next page, red color (\&c) otherwise.\
`current-page` -\
{0} - The current's page number.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default banned-players menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lIsland Banned Players ({0})'
previous-menu: true

pattern:
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '$ $ $ $ $ $ $ $ $'
  - '# # % # * # ^ # #'

slots: '@'
previous-page: '%'
current-page: '*'
next-page: '^'

items:
  '@':
    type: SKULL_ITEM
    data: 3
    name: '&e{0}'
    lore:
      - '&7Click to unban the player.'
  '%':
    type: PAPER
    name: '{0}Previous Page'
  '*':
    type: DOUBLE_PLANT
    name: '&aCurrent Page'
    lore:
      - '&7Page {0}'
  '^':
    type: PAPER
    name: '{0}Next Page'
  '$':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'

sounds:
  '@':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
```


# Biomes Menu

Here you'll find how to make your own biomes from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Biomes Related Sections

The biomes menu have an additional section that can be configured - `current-biome-glow`, whether the current biome should be glowing or not.

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Biome Items

The biomes menu gives players the ability to change their island's biome to another. In order to achieve that, the menu must be configured with special type of buttons that will make this work.

These speical-type buttons do not follow the format of regular items and have custom sections that should be given to them.

| Field Name  | Field Type   | Description                                                                                |
| ----------- | ------------ | ------------------------------------------------------------------------------------------ |
| `biome`     | String       | The biome to change. List of biomes can be found [here](#general-sections).                |
| `access`    | Item-Section | The item that will be displayed when players have permission to change to the biome.       |
| `no-access` | Item-Section | The item that will be displayed when players don't have permission to change to the biome. |

{% hint style="info" %}
The `access` and `no-access` fields can be used in sounds and commands sections as well to achieve custom sounds/commands when having/not having permission to change to the biome.
{% endhint %}

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is an example of a biomes menu, which includes most of the technics and features stated in this tutorial.

{% embed url="<https://gist.github.com/OmerBenGera/be693782389bfee0749fd6207e17bb66>" %}


# Border Color Menu

Here you'll find how to make your own border color menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html). By default, this menu uses the `HOPPER` type, which has a single row with 5 slots.
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. Because this menu uses the `HOPPER` type by default, the pattern should contain a single line with 5 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Border-Color Related Sections

The border-color menu is used to change the color of the world border, and therefore it has special buttons that should be configured. Simply set them as a custom char from your pattern in order to make that item a custom button.

| Field Name    | Field Type | Description                                        |
| ------------- | ---------- | -------------------------------------------------- |
| `green-color` | Char       | The button that changes the border color to green. |
| `red-color`   | Char       | The button that changes the border color to red.   |
| `blue-color`  | Char       | The button that changes the border color to blue.  |

#### Border Toggle Item

Besides the color buttons, you can add a button that toggles the world border on and off for the player. This special-type button does not follow the format of regular items and has custom sections that should be given to it.

| Field Name       | Field Type   | Description                                                           |
| ---------------- | ------------ | --------------------------------------------------------------------- |
| `enable-border`  | Item-Section | The item that will be displayed when the player's border is disabled. |
| `disable-border` | Item-Section | The item that will be displayed when the player's border is enabled.  |

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default border-color menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&l        Border Color'
previous-menu: true
type: HOPPER

pattern:
  - '~ # @ ^ $'

green-color: '@'
red-color: '^'
blue-color: '$'

items:
  '~':
    enable-border:
      type: SKULL_ITEM
      data: 3
      skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2ZhZjRjMjlmMWU3NDA1ZjQ2ODBjNWMyYjAzZWY5Mzg0ZjFhZWNmZTI5ODZhZDUwMTM4YzYwNWZlZmZmMmYxNSJ9fX0='
      name: '&aEnable Border'
    disable-border:
      type: SKULL_ITEM
      data: 3
      skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvM2ZhZjRjMjlmMWU3NDA1ZjQ2ODBjNWMyYjAzZWY5Mzg0ZjFhZWNmZTI5ODZhZDUwMTM4YzYwNWZlZmZmMmYxNSJ9fX0='
      name: '&cDisable Border'
  '#':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'
  '@':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzc0NzJkNjA4ODIxZjQ1YTg4MDUzNzZlYzBjNmZmY2I3ODExNzgyOWVhNWY5NjAwNDFjMmEwOWQxMGUwNGNiNCJ9fX0='
    name: '&aGreen Color'
  '^':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjk1M2IxMmEwOTQ2YjYyOWI0YzA4ODlkNDFmZDI2ZWQyNmZiNzI5ZDRkNTE0YjU5NzI3MTI0YzM3YmI3MGQ4ZCJ9fX0='
    name: '&cRed Color'
  '$':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTYzZTY2NDZmMWMwZDQxZmQzYmY1NTg0YTFjZTA0NGY1YzQ2ZDU5ODI1OGRiNDYyMTYxMTc4NTlmNTdhZjE5NyJ9fX0='
    name: '&bBlue Color'

sounds:
  '~':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '@':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '^':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '$':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
```


# Confirm Ban Menu

Here you'll find how to make your own confirm ban menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html). By default, this menu uses the `HOPPER` type, which has a single row with 5 slots.
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. Because this menu uses the `HOPPER` type by default, the pattern should contain a single line with 5 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Confirm-Ban Related Sections

The confirm-ban menu is used to confirm or cancel the ban of a player, and therefore it has special buttons that should be configured. Simply set them as a custom char from your pattern in order to make that item a custom button.

| Field Name | Field Type | Description                                   |
| ---------- | ---------- | --------------------------------------------- |
| `confirm`  | Char       | The button that confirms and bans the player. |
| `cancel`   | Char       | The button that cancels the ban.              |

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default confirm-ban menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&l      Confirm Ban'
previous-menu: true
type: HOPPER

pattern:
  - '# @ # ^ #'

confirm: '@'
cancel: '^'

items:
  '#':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'
  '@':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzc0NzJkNjA4ODIxZjQ1YTg4MDUzNzZlYzBjNmZmY2I3ODExNzgyOWVhNWY5NjAwNDFjMmEwOWQxMGUwNGNiNCJ9fX0='
    name: '&aConfirm'
    lore:
      - '&7Are you sure you want to ban that player?'
  '^':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjk1M2IxMmEwOTQ2YjYyOWI0YzA4ODlkNDFmZDI2ZWQyNmZiNzI5ZDRkNTE0YjU5NzI3MTI0YzM3YmI3MGQ4ZCJ9fX0='
    name: '&4Cancel'

sounds:
  '@':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '^':
    type: ANVIL_LAND
    volume: 0.2
    pitch: 0.2
```


# Confirm Disband Menu

Here you'll find how to make your own confirm disband menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html). By default, this menu uses the `HOPPER` type, which has a single row with 5 slots.
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. Because this menu uses the `HOPPER` type by default, the pattern should contain a single line with 5 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Confirm-Disband Related Sections

The confirm-disband menu is used to confirm or cancel the disband of an island, and therefore it has special buttons that should be configured. Simply set them as a custom char from your pattern in order to make that item a custom button.

| Field Name | Field Type | Description                                       |
| ---------- | ---------- | ------------------------------------------------- |
| `confirm`  | Char       | The button that confirms and disbands the island. |
| `cancel`   | Char       | The button that cancels the disband.              |

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default confirm-disband menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&l      Confirm Disband'
previous-menu: true
type: HOPPER

pattern:
  - '# @ # ^ #'

confirm: '@'
cancel: '^'

items:
  '#':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'
  '@':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzc0NzJkNjA4ODIxZjQ1YTg4MDUzNzZlYzBjNmZmY2I3ODExNzgyOWVhNWY5NjAwNDFjMmEwOWQxMGUwNGNiNCJ9fX0='
    name: '&aConfirm'
    lore:
      - '&7Are you sure you want to delete your island?'
  '^':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjk1M2IxMmEwOTQ2YjYyOWI0YzA4ODlkNDFmZDI2ZWQyNmZiNzI5ZDRkNTE0YjU5NzI3MTI0YzM3YmI3MGQ4ZCJ9fX0='
    name: '&4Cancel'

sounds:
  '@':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '^':
    type: ANVIL_LAND
    volume: 0.2
    pitch: 0.2
```


# Confirm Kick Menu

Here you'll find how to make your own confirm kick menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html). By default, this menu uses the `HOPPER` type, which has a single row with 5 slots.
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. Because this menu uses the `HOPPER` type by default, the pattern should contain a single line with 5 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Confirm-Kick Related Sections

The confirm-kick menu is used to confirm or cancel the kick of a player, and therefore it has special buttons that should be configured. Simply set them as a custom char from your pattern in order to make that item a custom button.

| Field Name | Field Type | Description                                    |
| ---------- | ---------- | ---------------------------------------------- |
| `confirm`  | Char       | The button that confirms and kicks the player. |
| `cancel`   | Char       | The button that cancels the kick.              |

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default confirm-kick menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&l      Confirm Kick'
previous-menu: true
type: HOPPER

pattern:
  - '# @ # ^ #'

confirm: '@'
cancel: '^'

items:
  '#':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'
  '@':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzc0NzJkNjA4ODIxZjQ1YTg4MDUzNzZlYzBjNmZmY2I3ODExNzgyOWVhNWY5NjAwNDFjMmEwOWQxMGUwNGNiNCJ9fX0='
    name: '&aConfirm'
    lore:
      - '&7Are you sure you want to kick that player?'
  '^':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjk1M2IxMmEwOTQ2YjYyOWI0YzA4ODlkNDFmZDI2ZWQyNmZiNzI5ZDRkNTE0YjU5NzI3MTI0YzM3YmI3MGQ4ZCJ9fX0='
    name: '&4Cancel'

sounds:
  '@':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '^':
    type: ANVIL_LAND
    volume: 0.2
    pitch: 0.2
```


# Confirm Leave Menu

Here you'll find how to make your own confirm leave menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html). By default, this menu uses the `HOPPER` type, which has a single row with 5 slots.
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. Because this menu uses the `HOPPER` type by default, the pattern should contain a single line with 5 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Confirm-Leave Related Sections

The confirm-leave menu is used to confirm or cancel leaving an island, and therefore it has special buttons that should be configured. Simply set them as a custom char from your pattern in order to make that item a custom button.

| Field Name | Field Type | Description                                          |
| ---------- | ---------- | ---------------------------------------------------- |
| `confirm`  | Char       | The button that confirms and makes the player leave. |
| `cancel`   | Char       | The button that cancels leaving the island.          |

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default confirm-leave menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&l      Confirm Leave'
previous-menu: true
type: HOPPER

pattern:
  - '# @ # ^ #'

confirm: '@'
cancel: '^'

items:
  '#':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'
  '@':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzc0NzJkNjA4ODIxZjQ1YTg4MDUzNzZlYzBjNmZmY2I3ODExNzgyOWVhNWY5NjAwNDFjMmEwOWQxMGUwNGNiNCJ9fX0='
    name: '&aConfirm'
    lore:
      - '&7Are you sure you want to leave your island?'
  '^':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjk1M2IxMmEwOTQ2YjYyOWI0YzA4ODlkNDFmZDI2ZWQyNmZiNzI5ZDRkNTE0YjU5NzI3MTI0YzM3YmI3MGQ4ZCJ9fX0='
    name: '&4Cancel'

sounds:
  '@':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '^':
    type: ANVIL_LAND
    volume: 0.2
    pitch: 0.2
```


# Confirm Transfer Menu

Here you'll find how to make your own confirm transfer menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html). By default, this menu uses the `HOPPER` type, which has a single row with 5 slots.
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. Because this menu uses the `HOPPER` type by default, the pattern should contain a single line with 5 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Confirm-Transfer Related Sections

The confirm-transfer menu is used to confirm or cancel the transfer of the island's leadership, and therefore it has special buttons that should be configured. Simply set them as a custom char from your pattern in order to make that item a custom button.

| Field Name | Field Type | Description                                            |
| ---------- | ---------- | ------------------------------------------------------ |
| `confirm`  | Char       | The button that confirms and transfers the leadership. |
| `cancel`   | Char       | The button that cancels the transfer.                  |

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default confirm-transfer menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&l      Confirm Transfer'
previous-menu: true
type: HOPPER

pattern:
  - '# @ # ^ #'

confirm: '@'
cancel: '^'

items:
  '#':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'
  '@':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzc0NzJkNjA4ODIxZjQ1YTg4MDUzNzZlYzBjNmZmY2I3ODExNzgyOWVhNWY5NjAwNDFjMmEwOWQxMGUwNGNiNCJ9fX0='
    name: '&aConfirm'
    lore:
      - '&7Are you sure you want to transfer your island?'
  '^':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjk1M2IxMmEwOTQ2YjYyOWI0YzA4ODlkNDFmZDI2ZWQyNmZiNzI5ZDRkNTE0YjU5NzI3MTI0YzM3YmI3MGQ4ZCJ9fX0='
    name: '&4Cancel'

sounds:
  '@':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '^':
    type: ANVIL_LAND
    volume: 0.2
    pitch: 0.2
```


# Control Panel Menu

Here you'll find how to make your own control panel menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Control-Panel Related Sections

The control-panel menu is the main island panel, and it has special buttons that open other menus directly. Simply set them as a custom char from your pattern in order to make that item a custom button.

| Field Name | Field Type | Description                                                                                |
| ---------- | ---------- | ------------------------------------------------------------------------------------------ |
| `members`  | Char       | The button that opens the [members menu](/superiorskyblock/overview/menus/members-menu).   |
| `settings` | Char       | The button that opens the [settings menu](/superiorskyblock/overview/menus/settings-menu). |
| `visitors` | Char       | The button that opens the [visitors menu](/superiorskyblock/overview/menus/visitors-menu). |

{% hint style="info" %}
All the other buttons in the default menu are regular items that execute island commands using the commands section, so you can add as many custom buttons as you wish.
{% endhint %}

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default control-panel menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lIsland Panel'
previous-menu: true

pattern:
  - '2 2 2 2 2 2 2 2 2'
  - '# ! # @ # $ # % #'
  - '_ # ^ # & # * # 1'
  - '# ~ # = # - # + #'
  - '2 2 2 2 2 2 2 2 2'

members: '+'
settings: '@'
visitors: '-'

items:
  '!':
    type: SIGN
    name: '&eTeleport'
    lore:
      - '&7Teleport back to your island.'
  '@':
    type: DIODE
    name: '&eIsland Settings'
    lore:
      - '&7Manage settings regarding your island.'
  '$':
    type: ENDER_PEARL
    name: '&eIsland Permissions'
    lore:
      - '&7Manage permissions in your island.'
  '%':
    type: GRASS
    name: '&eIsland Biomes'
    lore:
      - '&7Change the biome of your island.'
  '_':
    type: EMERALD
    name: '&eIsland Bank'
    lore:
      - '&7Open the bank of your island.'
  '^':
    type: GOLD_INGOT
    name: '&eIsland Upgrades'
    lore:
      - '&7Upgrade your island statistics!'
  '&':
    type: BEACON
    name: '&eTop Islands'
    lore:
      - '&7Check which island is the best on the server!'
  '*':
    type: PAPER
    name: '&eIsland Missions'
    lore:
      - '&7Complete missions and get rewarded!'
  '1':
    type: SMOOTH_BRICK
    name: '&eIsland Counts'
    lore:
      - '&7See all the blocks on your island!'
  '~':
    type: BARRIER
    name: '&eIsland Disband'
    lore:
      - '&7Disband your island.'
      - '&cThis action cannot be restored!'
  '=':
    type: CHEST
    name: '&eIsland Chest'
    lore:
      - '&7Open the community chest of the island.'
  '-':
    type: SKULL_ITEM
    name: '&eIsland Visitors'
    lore:
      - '&7Check all the visitors of the island.'
  '+':
    type: SKULL_ITEM
    data: 3
    name: '&eIsland Members'
    lore:
      - '&7Manage the members of the island.'
  '2':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'

sounds:
  '!':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '@':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '$':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '%':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '_':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '^':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '&':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '*':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '1':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '~':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '-':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '=':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '+':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2

commands:
  '!':
    - '[player] is tp'
  '$':
    - '[player] is permissions'
  '%':
    - '[player] is biome'
  '_':
    - '[player] is bank'
  '^':
    - '[player] is upgrade'
  '&':
    - '[player] is top'
  '*':
    - '[player] is missions'
  '1':
    - '[player] is counts'
  '~':
    - '[player] is disband'
  '=':
    - '[player] is chest'
```


# Coops Menu

Here you'll find how to make your own coops menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

The title of this menu supports custom placeholders: {0} - the amount of coop players the island has; {1} - the coop limit of the island.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Paged-Type Menu Sections

The coops menu is a paged-menu, which means it displays items from a list of available items - in this case, coop players. Because the amount of coop players can be greater than the amount of available slots, the menu supports multiple pages.

This type of menu requires 4 additional sections:\
`slots` - char of the coop player buttons.\
`previous-page` - char to set a custom button that will get players back to the previous page.\
`current-page` - char to set a custom button that will display the current page players look at.\
`next-page` - char to set a custom button that will get players to the next page.

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Custom Placeholders

The items of the paged-menu (`slots`, `previous-page`, etc) support custom placeholders!\
`slots` -\
{0} - The coop player's name.\
{1} - The coop player's role.\
`previous-page`, `next-page` -\
{0} - Green color (\&a) if can navigate to the previous/next page, red color (\&c) otherwise.\
`current-page` -\
{0} - The current's page number.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default coops menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lIsland Coop Players ({0}/{1})'
previous-menu: true

pattern:
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '$ $ $ $ $ $ $ $ $'
  - '# # % # * # ^ # #'

slots: '@'
previous-page: '%'
current-page: '*'
next-page: '^'

items:
  '@':
    type: SKULL_ITEM
    data: 3
    name: '&e{0}'
    lore:
      - '&7Click to uncoop the player.'
  '%':
    type: PAPER
    name: '{0}Previous Page'
  '*':
    type: DOUBLE_PLANT
    name: '&aCurrent Page'
    lore:
      - '&7Page {0}'
  '^':
    type: PAPER
    name: '{0}Next Page'
  '$':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'

sounds:
  '@':
    type: CHEST_OPEN
    volume: 0.8
    pitch: 1
```


# Counts Menu

Here you'll find how to make your own counts menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Paged-Type Menu Sections

The counts menu is a paged-menu, which means it displays items from a list of available items - in this case, the blocks that are placed on the island. Because the amount of block types can be greater than the amount of available slots, the menu supports multiple pages.

This type of menu requires 4 additional sections:\
`slots` - char of the block count buttons.\
`previous-page` - char to set a custom button that will get players back to the previous page.\
`current-page` - char to set a custom button that will display the current page players look at.\
`next-page` - char to set a custom button that will get players to the next page.

{% hint style="info" %}
The block count buttons automatically use the counted block as the displayed item - the `type` field of the `slots` item is only used as a fallback.
{% endhint %}

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Custom Placeholders

The items of the paged-menu (`slots`, `previous-page`, etc) support custom placeholders!\
`slots` -\
{0} - The name of the block.\
{1} - The amount of blocks on the island.\
{2} - The total worth of the blocks.\
{3} - The total level of the blocks.\
{4} - The total worth of the blocks, formatted with `K` for thousands, `M` for millions, etc.\
{5} - The total level of the blocks, formatted with `K` for thousands, `M` for millions, etc.\
`previous-page`, `next-page` -\
{0} - Green color (\&a) if can navigate to the previous/next page, red color (\&c) otherwise.\
`current-page` -\
{0} - The current's page number.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default counts menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lIsland Block Counts'
previous-menu: true

pattern:
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '$ $ $ $ $ $ $ $ $'
  - '# # % # * # ^ # #'

slots: '@'
previous-page: '%'
current-page: '*'
next-page: '^'

items:
  '@':
    type: STONE
    name: '&e{0}'
    lore:
      - '&6&l* &e&lQuantity &fx{1}'
      - '&6&l* &e&lWorth: &f${2}'
      - '&6&l* &e&lLevel: &f${3}'
    flags:
      - HIDE_ATTRIBUTES
  '%':
    type: PAPER
    name: '{0}Previous Page'
  '*':
    type: DOUBLE_PLANT
    name: '&aCurrent Page'
    lore:
      - '&7Page {0}'
  '^':
    type: PAPER
    name: '{0}Next Page'
  '$':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'
```


# Global Warps Menu

Here you'll find how to make your own global warps menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Paged-Type Menu Sections

The global-warps menu is a paged-menu, which means it displays items from a list of available items - in this case, all the islands with public warps on the server. Because the amount of islands can be greater than the amount of available slots, the menu supports multiple pages.

This type of menu requires 4 additional sections:\
`warps` - char of the island buttons (`slots` is supported as well).\
`previous-page` - char to set a custom button that will get players back to the previous page.\
`current-page` - char to set a custom button that will display the current page players look at.\
`next-page` - char to set a custom button that will get players to the next page.

### Global-Warps Related Sections

The global-warps menu has an additional section that can be configured - `visitor-warps`. When enabled, instead of showing islands with warps, the visitor warp locations of islands will be shown. To show the description of the visitor warp, use the {1} placeholder.

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Custom Placeholders

The items of the paged-menu (`warps`, `previous-page`, etc) support custom placeholders!\
`warps` -\
{0} - The name of the island's owner.\
{1} - The description of the visitor warp (when `visitor-warps` is enabled).\
{2} - The amount of warps the island has.\
{3} - The island's name.\
{4} - The island's level.\
{5} - The island's level, formatted with `K` for thousands, `M` for millions, etc.\
{6} - The island's worth.\
{7} - The island's worth, formatted with `K` for thousands, `M` for millions, etc.\
{8} - The island's total rating, as a number.\
{9} - The island's rating, formatted as stars.\
`previous-page`, `next-page` -\
{0} - Green color (\&a) if can navigate to the previous/next page, red color (\&c) otherwise.\
`current-page` -\
{0} - The current's page number.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default global-warps menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lIsland Warps'
previous-menu: true

pattern:
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '$ $ $ $ $ $ $ $ $'
  - '# # % # * # ^ # #'

warps: '@'
previous-page: '%'
current-page: '*'
next-page: '^'

# When enabled, instead of showing warps, the visitor warp locations will be shown.
# To show the description, use the {1} placeholder.
visitor-warps: false

items:
  '@':
    type: SKULL_ITEM
    data: 3
    name: '&e{0}''s Island'
    lore:
      - '&7Click to see all warps of this island.'
      - '&8>> &7This island has {2} warps.'
  '%':
    type: PAPER
    name: '{0}Previous Page'
  '*':
    type: DOUBLE_PLANT
    name: '&aCurrent Page'
    lore:
      - '&7Page {0}'
  '^':
    type: PAPER
    name: '{0}Next Page'
  '$':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'

sounds:
  '@':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
```


# Island Bank Menu

Here you'll find how to make your own island bank menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Island-Bank Related Sections

The island-bank menu has additional sections that can be configured. Simply set them as a custom char from your pattern in order to make that item a custom button.

| Field Name | Field Type | Description                                                                                  |
| ---------- | ---------- | -------------------------------------------------------------------------------------------- |
| `balance`  | Char       | A custom button that displays the balance of the island's bank.                              |
| `logs`     | Char       | The button that opens the [bank logs menu](/superiorskyblock/overview/menus/bank-logs-menu). |

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Bank Action Items

In order to create deposit and withdraw buttons, the items should be configured with a special `bank-action` section. This section should contain either a `deposit` field or a `withdraw` field.

The value of the field can be a percentage (double): `100.0` will deposit/withdraw all the money, `50.0` will deposit/withdraw half of it, and `0.0` will ask the player to enter a custom amount in the chat.

```yaml
'!':
  type: STAINED_GLASS_PANE
  data: 5
  name: '&aDeposit Half Money'
  bank-action:
    deposit: 50.0
```

Instead of a percentage, the value can also be a list of commands that will be executed by the console when the transaction succeeds. The placeholder {0} will be replaced with the name of the player, and {1} will be replaced with the amount of the transaction.

#### Custom Placeholders

The `balance` item supports custom placeholders!\
{0} - The bank's balance.\
{1} - The bank's balance, formatted with commas.\
{2} - The bank's balance, formatted with `K` for thousands, `M` for millions, etc.\
{3} - The bank's limit.\
{4} - The bank's limit, formatted with commas.\
{5} - The bank's limit, formatted with `K` for thousands, `M` for millions, etc.\
{6} - The last time interest was given.\
{7} - The next time interest will be given.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

Bank action items support two special sound sections instead of a regular sound: `success-sound`, which is played when the transaction succeeds, and `fail-sound`, which is played when the transaction fails.

```yaml
sounds:
  '!':
    success-sound:
      type: ORB_PICKUP
      volume: 0.2
      pitch: 0.2
    fail-sound:
      type: ANVIL_LAND
      volume: 0.2
      pitch: 0.2
```

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default island-bank menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lIsland Bank'
previous-menu: true

pattern:
  - '= - @ @ @ @ @ - ='
  - '- @ ! @ @ @ % @ -'
  - '@ # @ @ * @ @ ^ @'
  - '- @ $ @ @ @ & @ -'
  - '= - @ @ ~ @ @ - ='

balance: '*'
logs: '~'

items:
  '!':
    type: STAINED_GLASS_PANE
    data: 5
    name: '&aDeposit Half Money'
    lore:
      - '&7Deposit half of your money into the bank.'
    bank-action:
      deposit: 50.0
  '#':
    type: STAINED_GLASS_PANE
    data: 5
    name: '&aDeposit Money'
    lore:
      - '&7Deposit money into the bank.'
    bank-action:
      deposit: 0.0
  '$':
    type: STAINED_GLASS_PANE
    data: 5
    name: '&aDeposit All Money'
    lore:
      - '&7Deposit all of your money into the bank.'
    bank-action:
      deposit: 100.0
  '%':
    type: STAINED_GLASS_PANE
    data: 14
    name: '&aWithdraw Half Money'
    lore:
      - '&7Withdraw half of the money from the bank.'
    bank-action:
      withdraw: 50.0
  '^':
    type: STAINED_GLASS_PANE
    data: 14
    name: '&aWithdraw Money'
    lore:
      - '&7Withdraw money from the bank.'
    bank-action:
      withdraw: 0.0
  '&':
    type: STAINED_GLASS_PANE
    data: 14
    name: '&aWithdraw All Money'
    lore:
      - '&7Withdraw all of the money from the bank.'
    bank-action:
      withdraw: 100.0
  '*':
    type: PAPER
    name: '&6Balance'
    lore:
      - '&7Your bank currently has ${2}'
      - '&7Next interest on {7}'
  '=':
    type: EMERALD_BLOCK
    name: '&f '
  '-':
    type: EMERALD
    name: '&f '
  '~':
    type: EXP_BOTTLE
    name: '&6Transaction Logs'

sounds:
  '!':
    success-sound:
      type: ORB_PICKUP
      volume: 0.2
      pitch: 0.2
    fail-sound:
      type: ANVIL_LAND
      volume: 0.2
      pitch: 0.2
  '~':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
```


# Island Chest Menu

Here you'll find how to make your own island chest menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Paged-Type Menu Sections

The island-chest menu is a paged-menu, which means it displays items from a list of available items - in this case, the pages of the island chest. Because the amount of chest pages can be greater than the amount of available slots, the menu supports multiple pages.

This type of menu requires 4 additional sections:\
`slots` - char of the chest page buttons.\
`previous-page` - char to set a custom button that will get players back to the previous page.\
`current-page` - char to set a custom button that will display the current page players look at.\
`next-page` - char to set a custom button that will get players to the next page.

{% hint style="info" %}
The island-chest menu supports the `skip-one-item` option - when enabled and the island has only one chest page, the chest will be opened directly instead of this menu.
{% endhint %}

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Chest Page Items

The chest page buttons (`slots` char) do not follow the format of regular items and have custom sections that should be given to them:

| Field Name     | Field Type   | Description                                                           |
| -------------- | ------------ | --------------------------------------------------------------------- |
| `valid-page`   | Item-Section | The item that will be displayed when the chest page is available.     |
| `invalid-page` | Item-Section | The item that will be displayed when the chest page is not available. |

#### Custom Placeholders

The `valid-page` items support custom placeholders!\
{0} - The page's number.\
{1} - The amount of slots in the page.\
The pagination items also support custom placeholders:\
`previous-page`, `next-page` -\
{0} - Green color (\&a) if can navigate to the previous/next page, red color (\&c) otherwise.\
`current-page` -\
{0} - The current's page number.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default island-chest menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lIsland Chest'
previous-menu: true

pattern:
  - '# # # # # # # # #'
  - '# $ @ @ @ @ @ $ #'
  - '# $ @ @ @ @ @ $ #'
  - '# $ @ @ @ @ @ $ #'
  - '# $ @ @ @ @ @ $ #'
  - '# # % # * # ^ # #'

slots: '@'
previous-page: '%'
current-page: '*'
next-page: '^'

items:
  '@':
    valid-page:
      type: STORAGE_MINECART
      name: '&ePage #{0}'
      lore:
        - '&eSize: &7{1}'
    invalid-page:
      type: MINECART
      name: '&f '
  '%':
    type: PAPER
    name: '{0}Previous Page'
  '*':
    type: DOUBLE_PLANT
    name: '&aCurrent Page'
    lore:
      - '&7Page {0}'
  '^':
    type: PAPER
    name: '{0}Next Page'
  '#':
    type: RAILS
    name: '&f '

sounds:
  '@':
    type: CHEST_OPEN
    volume: 0.8
    pitch: 1
```


# Island Creation Menu

Here you'll find how to make your own island creation menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Schematic Items

The island-creation menu gives players the ability to choose the schematic of their new island. In order to achieve that, the menu must be configured with special type of buttons that will make this work.

These special-type buttons do not follow the format of regular items and have custom sections that should be given to them.

| Field Name     | Field Type   | Description                                                                                                                           |
| -------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| `schematic`    | String       | The name of the schematic that will be used for the island. More info about schematics [here](/superiorskyblock/overview/schematics). |
| `biome`        | String       | The biome the island will have when created.                                                                                          |
| `spawn-offset` | String       | An offset for the spawn location of the island, in the format `'x, y, z'`.                                                            |
| `bonus`        | Double       | A bonus worth that will be given to islands created with this schematic (`bonus-worth` is supported as well).                         |
| `bonus-level`  | Double       | A bonus level that will be given to islands created with this schematic.                                                              |
| `offset`       | Boolean      | When enabled, the values of the schematic's blocks will be used as an offset, making the island start with a value of 0.              |
| `access`       | Item-Section | The item that will be displayed when players have permission to use the schematic.                                                    |
| `no-access`    | Item-Section | The item that will be displayed when players don't have permission to use the schematic.                                              |

{% hint style="info" %}
The `access` and `no-access` fields can be used in the sounds and commands sections as well to achieve custom sounds/commands when having/not having permission to use the schematic. The permission for a schematic is `superior.island.schematic.<schematic-name>`.
{% endhint %}

{% hint style="info" %}
The island-creation menu supports the `skip-one-item` option - when enabled and only one schematic is available, the island will be created directly with that schematic instead of opening the menu.
{% endhint %}

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default island-creation menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lCreate a new island...'
previous-menu: true

pattern:
  - '~ ~ ~ ~ ~ ~ ~ ~ ~'
  - '# @ # # ^ # # $ #'
  - '~ ~ ~ ~ ~ ~ ~ ~ ~'

items:
  '@':
    schematic: 'normal'
    biome: PLAINS
    spawn-offset: '0, 0, 0'
    access:
      type: SKULL_ITEM
      data: 3
      skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzk1ZDM3OTkzZTU5NDA4MjY3ODQ3MmJmOWQ4NjgyMzQxM2MyNTBkNDMzMmEyYzdkOGM1MmRlNDk3NmIzNjIifX19'
      name: '&eNormal Island &a(Available)'
      lore:
        - '&7Simple island with trees and a mining area!'
        - '&7 '
        - '&7&o(( &f&oRight-Click &7&oto preview the island. ))'
    no-access:
      type: SKULL_ITEM
      data: 3
      skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzk1ZDM3OTkzZTU5NDA4MjY3ODQ3MmJmOWQ4NjgyMzQxM2MyNTBkNDMzMmEyYzdkOGM1MmRlNDk3NmIzNjIifX19'
      name: '&eNormal Island &c(Unavailable)'
      lore:
        - '&7Simple island with trees and a mining area!'
        - '&7 '
        - '&7&o(( &f&oRight-Click &7&oto preview the island. ))'
  '^':
    schematic: 'mycel'
    biome: MUSHROOM_ISLAND
    spawn-offset: '0, 0, 0'
    access:
      type: SKULL_ITEM
      data: 3
      skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWE0NWQxYjQxN2NiZGRjMjE3NjdiMDYwNDRlODk5YjI2NmJmNzhhNjZlMjE4NzZiZTNjMDUxNWFiNTVkNzEifX19'
      name: '&eMycelium Island &a(Available)'
      lore:
        - '&7Customized island with lots of mycelium!'
        - '&7 '
        - '&7&o(( &f&oRight-Click &7&oto preview the island. ))'
    no-access:
      type: SKULL_ITEM
      data: 3
      skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZWE0NWQxYjQxN2NiZGRjMjE3NjdiMDYwNDRlODk5YjI2NmJmNzhhNjZlMjE4NzZiZTNjMDUxNWFiNTVkNzEifX19'
      name: '&eMycelium Island &c(Unavailable)'
      lore:
        - '&7Customized island with lots of mycelium!'
        - '&7 '
        - '&7&o(( &f&oRight-Click &7&oto preview the island. ))'
  '$':
    schematic: 'desert'
    biome: DESERT
    spawn-offset: '0, 0, 0'
    access:
      type: SKULL_ITEM
      data: 3
      skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjVkYjMxMjA2N2JlMWQ1YzRmMTQ3OGFmM2NhMmY2Y2Y4MTA0YWI0Y2NiZmY1NzkxN2M4NTc4ZGFhMTUwMDJjMiJ9fX0='
      name: '&eDesert Island &a(Available)'
      lore:
        - '&7Customized island with lots of sand!'
        - '&7 '
        - '&7&o(( &f&oRight-Click &7&oto preview the island. ))'
    no-access:
      type: SKULL_ITEM
      data: 3
      skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjVkYjMxMjA2N2JlMWQ1YzRmMTQ3OGFmM2NhMmY2Y2Y4MTA0YWI0Y2NiZmY1NzkxN2M4NTc4ZGFhMTUwMDJjMiJ9fX0='
      name: '&eDesert Island &c(Unavailable)'
      lore:
        - '&7Customized island with lots of sand!'
        - '&7 '
        - '&7&o(( &f&oRight-Click &7&oto preview the island. ))'
  '~':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'

sounds:
  '@':
    access:
      type: PORTAL_TRIGGER
      volume: 1
      pitch: 0.2
    no-access:
      type: ANVIL_LAND
      volume: 0.2
      pitch: 0.2
  '^':
    access:
      type: PORTAL_TRIGGER
      volume: 1
      pitch: 0.2
    no-access:
      type: ANVIL_LAND
      volume: 0.2
      pitch: 0.2
  '$':
    access:
      type: PORTAL_TRIGGER
      volume: 1
      pitch: 0.2
    no-access:
      type: ANVIL_LAND
      volume: 0.2
      pitch: 0.2
```


# Island Rate Menu

Here you'll find how to make your own island rate menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Island-Rate Related Sections

The island-rate menu is used to give a rating to an island, and therefore it has special buttons that should be configured. Simply set them as a custom char from your pattern in order to make that item a custom button.

| Field Name    | Field Type | Description                                    |
| ------------- | ---------- | ---------------------------------------------- |
| `zero-stars`  | Char       | The button that rates the island with 0 stars. |
| `one-star`    | Char       | The button that rates the island with 1 star.  |
| `two-stars`   | Char       | The button that rates the island with 2 stars. |
| `three-stars` | Char       | The button that rates the island with 3 stars. |
| `four-stars`  | Char       | The button that rates the island with 4 stars. |
| `five-stars`  | Char       | The button that rates the island with 5 stars. |

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default island-rate menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lRate Island'
previous-menu: true

pattern:
  - '# ~ @ % # * ^ & #'

zero-stars: '~'
one-star: '@'
two-stars: '%'
three-stars: '*'
four-stars: '^'
five-stars: '&'

items:
  '~':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODViZDFlNjEzZmYzMmI1MjNjY2Y5ZTU3NGNjMzExYjc5OGMyYjNhNjgyOGYwZjcxYTI1NGM5OTVlNmRiOGU1In19fQ=='
    name: '&4Horrible (0/5)'
  '@':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYmNmYWZmYThjNmM3ZjYyNjIxNjgyZmU1NjcxMWRjM2I4OTQ0NjVmZGY3YTYyZjQzYjMxYTBkMzQwM2YzNGU3In19fQ=='
    name: '&6Ugly (1/5)'
  '%':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNThjY2ExZTBmYjVkOWJmNzdmNTI3MzU2ZThiZjRlNTNjYjRhNGM1NmYxMWU3NzlhYmFkYWU1NDFiYmVkYzYifX19'
    name: '&eNice (2/5)'
  '*':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzQyMjZmMmViNjRhYmM4NmIzOGI2MWQxNDk3NzY0Y2JhMDNkMTc4YWZjMzNiN2I4MDIzY2Y0OGI0OTMxMSJ9fX0='
    name: '&aGood (3/5)'
  '^':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOGI1MjdiMjRiNWQyYmNkYzc1NmY5OTVkMzRlYWU1NzlkNzQxNGIwYTVmMjZjNGZmYTRhNTU4ZWNhZjZiNyJ9fX0='
    name: '&2Beautiful (4/5)'
  '&':
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDkzNTdjYjQ2NjQ0MjZhOWFlMGY5Yzc3MjVlYTQzNTFkYzY5ZjE1YTgwNjJjMDM1OTFlMjZhYzExYmJjNWEifX19'
    name: '&5Fabulous (5/5)'

sounds:
  '~':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '@':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '%':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '*':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '^':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '&':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
```


# Island Ratings Menu

Here you'll find how to make your own island ratings menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

The title of this menu supports a custom placeholder: {0} - the total rating of the island.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Paged-Type Menu Sections

The island-ratings menu is a paged-menu, which means it displays items from a list of available items - in this case, the ratings the island received. Because the amount of ratings can be greater than the amount of available slots, the menu supports multiple pages.

This type of menu requires 4 additional sections:\
`slots` - char of the rating buttons.\
`previous-page` - char to set a custom button that will get players back to the previous page.\
`current-page` - char to set a custom button that will display the current page players look at.\
`next-page` - char to set a custom button that will get players to the next page.

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Custom Placeholders

The items of the paged-menu (`slots`, `previous-page`, etc) support custom placeholders!\
`slots` -\
{0} - The name of the player that rated the island.\
{1} - The rating that was given, formatted as stars.\
`previous-page`, `next-page` -\
{0} - Green color (\&a) if can navigate to the previous/next page, red color (\&c) otherwise.\
`current-page` -\
{0} - The current's page number.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default island-ratings menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lIsland Ratings ({0}/5)'
previous-menu: true

pattern:
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '$ $ $ $ $ $ $ $ $'
  - '# # % # * # ^ # #'

slots: '@'
previous-page: '%'
current-page: '*'
next-page: '^'

items:
  '@':
    type: SKULL_ITEM
    data: 3
    name: '&e{0}'
    lore:
      - '{1}'
  '%':
    type: PAPER
    name: '{0}Previous Page'
  '*':
    type: DOUBLE_PLANT
    name: '&aCurrent Page'
    lore:
      - '&7Page {0}'
  '^':
    type: PAPER
    name: '{0}Next Page'
  '$':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'
```


# Member Manage Menu

Here you'll find how to make your own member manage menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

The title of this menu supports a custom placeholder: {} - the name of the member that is being managed.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Member-Manage Related Sections

The member-manage menu is used to manage a single island member, and therefore it has special buttons that should be configured. Simply set them as a custom char from your pattern in order to make that item a custom button.

| Field Name | Field Type | Description                                                                                      |
| ---------- | ---------- | ------------------------------------------------------------------------------------------------ |
| `roles`    | Char       | The button that opens the [member role menu](/superiorskyblock/overview/menus/member-role-menu). |
| `ban`      | Char       | The button that bans the member from the island.                                                 |
| `kick`     | Char       | The button that kicks the member from the island.                                                |

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default member-manage menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&8&l{}'
previous-menu: true

pattern:
  - '$ $ $ $ $ $ $ $ $'
  - '$ # # # # # # # $'
  - '$ # @ # % # ^ # $'
  - '$ # # # # # # # $'
  - '$ $ $ $ $ $ $ $ $'

roles: '@'
ban: '%'
kick: '^'

items:
  '$':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'
  '@':
    type: DIAMOND_CHESTPLATE
    name: '&ePlayer Role'
    lore:
      - '&7Click to edit player''s role.'
    flags:
      - HIDE_ATTRIBUTES
  '%':
    type: BARRIER
    name: '&eBan Player'
    lore:
      - '&7Click to ban the player from the island.'
  '^':
    type: SKULL_ITEM
    name: '&eKick Player'
    lore:
      - '&7Click to kick the player from the island.'

sounds:
  '@':
    type: CHEST_OPEN
    volume: 0.8
    pitch: 1
  '%':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '^':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
```


# Member Role Menu

Here you'll find how to make your own member role menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

The title of this menu supports a custom placeholder: {} - the name of the member that its role is being changed.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Role Items

The member-role menu gives players the ability to set the role of a member. In order to achieve that, the menu must be configured with special type of buttons that will make this work.

These special-type buttons follow the format of regular items, with one additional field that should be given to them:

| Field Name | Field Type       | Description                                                                                             |
| ---------- | ---------------- | ------------------------------------------------------------------------------------------------------- |
| `role`     | String / Integer | The role to set when clicking the item. Can be either the role's name or the role's id from config.yml. |

{% hint style="info" %}
Clicking a role item with the leader role will transfer the leadership of the island to the member.
{% endhint %}

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default member-role menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&8&l{}'
previous-menu: true

pattern:
  - '$ $ $ $ $ $ $ $ $'
  - '$ # # # # # # # $'
  - '$ @ # % # & # * $'
  - '$ # # # # # # # $'
  - '$ $ $ $ $ $ $ $ $'

items:
  '$':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'
  '@':
    role: Member
    type: LEATHER_CHESTPLATE
    name: '&eMember'
    lore:
      - '&7Click to set player''s role to member.'
    flags:
      - HIDE_ATTRIBUTES
  '%':
    role: Moderator
    type: GOLD_CHESTPLATE
    name: '&eModerator'
    lore:
      - '&7Click to set player''s role to moderator.'
    flags:
      - HIDE_ATTRIBUTES
  '&':
    role: Admin
    type: IRON_CHESTPLATE
    name: '&eAdmin'
    lore:
      - '&7Click to set player''s role to admin.'
    flags:
      - HIDE_ATTRIBUTES
  '*':
    role: Leader
    type: DIAMOND_CHESTPLATE
    name: '&eLeader'
    lore:
      - '&7Click to transfer leadership to player.'
    flags:
      - HIDE_ATTRIBUTES

sounds:
  '@':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '%':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '&':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
  '*':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
```


# Members Menu

Here you'll find how to make your own members menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

The title of this menu supports custom placeholders: {0} - the amount of members the island has; {1} - the member limit of the island.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Paged-Type Menu Sections

The members menu is a paged-menu, which means it displays items from a list of available items - in this case, island members. Because the amount of members can be greater than the amount of available slots, the menu supports multiple pages.

This type of menu requires 4 additional sections:\
`slots` - char of the member buttons.\
`previous-page` - char to set a custom button that will get players back to the previous page.\
`current-page` - char to set a custom button that will display the current page players look at.\
`next-page` - char to set a custom button that will get players to the next page.

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Custom Placeholders

The items of the paged-menu (`slots`, `previous-page`, etc) support custom placeholders!\
`slots` -\
{0} - The member's name.\
{1} - The member's role.\
`previous-page`, `next-page` -\
{0} - Green color (\&a) if can navigate to the previous/next page, red color (\&c) otherwise.\
`current-page` -\
{0} - The current's page number.

{% hint style="info" %}
Clicking a member button opens the [member manage menu](/superiorskyblock/overview/menus/member-manage-menu) for that member.
{% endhint %}

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default members menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lIsland Members ({0}/{1})'
previous-menu: true

pattern:
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '$ $ $ $ $ $ $ $ $'
  - '# # % # * # ^ # #'

slots: '@'
previous-page: '%'
current-page: '*'
next-page: '^'

items:
  '@':
    type: SKULL_ITEM
    data: 3
    name: '&e{0}'
    lore:
      - '&eRole: &7{1}'
  '%':
    type: PAPER
    name: '{0}Previous Page'
  '*':
    type: DOUBLE_PLANT
    name: '&aCurrent Page'
    lore:
      - '&7Page {0}'
  '^':
    type: PAPER
    name: '{0}Next Page'
  '$':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'

sounds:
  '@':
    type: CHEST_OPEN
    volume: 0.8
    pitch: 1
```


# Missions Menu

Here you'll find how to make your own missions menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Category Buttons

The missions menu displays the mission categories of the server. The slot of each category button is not set in this menu - it is determined by the `slot` field of the category in the `config.yml` file, under the `missions-categories` section. Clicking a category button opens the [missions category menu](/superiorskyblock/overview/menus/missions-category-menu) for that category.

The items you configure in this menu are used as the visuals for the slots - place an item in the same slot as a category to give that category a custom look.

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default missions menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lMissions'
previous-menu: true

pattern:
  - '$ $ $ $ $ $ $ $ $'
  - '$ * * * * * * * $'
  - '$ * # @ % ^ & * $'
  - '$ * * * * * * * $'
  - '$ $ $ $ $ $ $ $ $'

items:
  '$':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'
  '#':
    type: DIAMOND_PICKAXE
    name: '&eMiner Missions'
    lore:
      - '&7Click to start your adventure as a Miner.'
    flags:
      - HIDE_ATTRIBUTES
  '@':
    type: SKULL_ITEM
    data: 2
    name: '&eSlayer Missions'
    lore:
      - '&7Click to start your adventure as a Slayer.'
  '%':
    type: WHEAT
    name: '&eFarmer Missions'
    lore:
      - '&7Click to start your adventure as a Farmer.'
  '^':
    type: FISHING_ROD
    name: '&eFisherman Missions'
    lore:
      - '&7Click to start your adventure as a Fisherman.'
  '&':
    type: MAP
    name: '&eExplorer Missions'
    lore:
      - '&7Click to start your adventure as an Explorer.'

sounds:
  '#':
    type: CHEST_OPEN
    volume: 0.8
    pitch: 1
  '@':
    type: CHEST_OPEN
    volume: 0.8
    pitch: 1
  '%':
    type: CHEST_OPEN
    volume: 0.8
    pitch: 1
  '^':
    type: CHEST_OPEN
    volume: 0.8
    pitch: 1
  '&':
    type: CHEST_OPEN
    volume: 0.8
    pitch: 1
```


# Missions Category Menu

Here you'll find how to make your own missions category menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

The title of this menu supports a custom placeholder: {0} - the name of the category.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Paged-Type Menu Sections

The missions-category menu is a paged-menu, which means it displays items from a list of available items - in this case, the missions of the category. Because the amount of missions can be greater than the amount of available slots, the menu supports multiple pages.

This type of menu requires 4 additional sections:\
`slots` - char of the mission buttons.\
`previous-page` - char to set a custom button that will get players back to the previous page.\
`current-page` - char to set a custom button that will display the current page players look at.\
`next-page` - char to set a custom button that will get players to the next page.

{% hint style="info" %}
The icons of the missions themselves are not configured in this menu - each mission has its own icon configured in its mission file, under the `icons` section.
{% endhint %}

### Missions-Category Related Sections

The missions-category menu has additional sections that can be configured:

| Field Name           | Field Type | Description                                                                                               |
| -------------------- | ---------- | --------------------------------------------------------------------------------------------------------- |
| `sort-by-completion` | Boolean    | Whether missions should be sorted by their completion status: Not completed -> Can complete -> Completed. |
| `remove-completed`   | Boolean    | Whether completed missions should not be displayed in the menu.                                           |

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Custom Placeholders

The pagination items of the paged-menu support custom placeholders!\
`previous-page`, `next-page` -\
{0} - Green color (\&a) if can navigate to the previous/next page, red color (\&c) otherwise.\
`current-page` -\
{0} - The current's page number.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

The mission buttons (`slots` char) support four special sound sections instead of a regular sound, depending on the status of the mission for the player:

| Field Name      | Description                                                           |
| --------------- | --------------------------------------------------------------------- |
| `locked`        | Played when the mission is locked for the player.                     |
| `completed`     | Played when the mission was already completed.                        |
| `not-completed` | Played when the mission is not completed and cannot be completed yet. |
| `can-complete`  | Played when the mission can be completed.                             |

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default missions-category menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&l{0} Missions'
previous-menu: true

pattern:
  - '# # # # # # # # #'
  - '# # @ @ @ @ @ # #'
  - '# # # # # # # # #'

slots: '@'
previous-page: '*'
current-page: '*'
next-page: '*'

# Should missions be sorted by their completion status?
# Not completed -> Can complete -> Completed
sort-by-completion: false

# Should completed missions not be displayed in the menu?
remove-completed: false

items:
  '#':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'

sounds:
  '@':
    locked:
      type: ANVIL_LAND
      volume: 0.2
      pitch: 0.2
    completed:
      type: ANVIL_LAND
      volume: 0.2
      pitch: 0.2
    not-completed:
      type: ANVIL_LAND
      volume: 0.2
      pitch: 0.2
    can-complete:
      type: ORB_PICKUP
      volume: 0.2
      pitch: 0.2
```


# Permissions Menu

Here you'll find how to make your own permissions menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Paged-Type Menu Sections

The permissions menu is a paged-menu, which means it displays items from a list of available items - in this case, the [island privileges](/superiorskyblock/overview/island-privileges). Because the amount of privileges can be greater than the amount of available slots, the menu supports multiple pages.

This type of menu requires 4 additional sections:\
`slots` - char of the privilege buttons.\
`previous-page` - char to set a custom button that will get players back to the previous page.\
`current-page` - char to set a custom button that will display the current page players look at.\
`next-page` - char to set a custom button that will get players to the next page.

### Messages Section

The permissions menu can be opened for a specific player or for a role. When opened for a role, the `role-permission` items display which roles have the privilege using the `messages` section:

| Field Name               | Field Type | Description                                                                                            |
| ------------------------ | ---------- | ------------------------------------------------------------------------------------------------------ |
| `no-role-permission`     | String     | The format of a role line when the role doesn't have the privilege. {} is the role name.               |
| `exact-role-permission`  | String     | The format of a role line when the role is the exact role with the privilege. {} is the role name.     |
| `higher-role-permission` | String     | The format of a role line when the role inherits the privilege from a lower role. {} is the role name. |

```yaml
messages:
  no-role-permission: '&8 - &c{}'
  exact-role-permission: '&8 - &2{}'
  higher-role-permission: '&8 - &a{}'
```

### Permissions-Configuration Section

Besides the regular menu sections, the permissions menu has a `permissions` section, where all the privileges of the menu are configured. Each privilege has its own sub-section, with the name of the [island privilege](/superiorskyblock/overview/island-privileges) as its key. Each privilege section can have the following fields:

| Field Name            | Field Type   | Description                                                                                      |
| --------------------- | ------------ | ------------------------------------------------------------------------------------------------ |
| `display-menu`        | Boolean      | Whether the privilege should be displayed in the menu.                                           |
| `permission-enabled`  | Item-Section | The item that will be displayed when the privilege is enabled for the player.                    |
| `permission-disabled` | Item-Section | The item that will be displayed when the privilege is disabled for the player.                   |
| `role-permission`     | Item-Section | The item that will be displayed when the menu is opened for a role instead of a player.          |
| `has-access`          | Section      | Contains a `sound` section (and optionally `commands`) used when the privilege is granted.       |
| `no-access`           | Section      | Contains a `sound` section (and optionally `commands`) used when the privilege can't be changed. |

The lore of the `role-permission` item supports two custom placeholders: {} - the name of the role that currently has the privilege; a lore line containing only {0} will be replaced with the list of the roles, formatted using the `messages` section.

```yaml
permissions:
  all:
    display-menu: true
    permission-enabled:
      type: BEDROCK
      name: '&6All'
      lore:
        - '&7Access to all the abilities of the island.'
        - '&7Currently &aENABLED&7.'
    permission-disabled:
      type: BEDROCK
      name: '&6All'
      lore:
        - '&7Access to all the abilities of the island.'
        - '&7Currently &cDISABLED&7.'
    role-permission:
      type: BEDROCK
      name: '&6All'
      lore:
        - '&7Access to all the abilities of the island.'
        - '&7Role: &e{}&7.'
        - ''
        - '{0}'
    has-access:
      sound:
        type: ORB_PICKUP
        volume: 0.2
        pitch: 0.2
    no-access:
      sound:
        type: ANVIL_LAND
        volume: 0.2
        pitch: 0.2
```

{% hint style="info" %}
If a privilege that exists in the plugin is missing from the `permissions` section, a warning will be printed to the console. You can hide a privilege from the menu without warnings by setting its `display-menu` field to `false`.
{% endhint %}

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Custom Placeholders

The pagination items of the paged-menu support custom placeholders!\
`previous-page`, `next-page` -\
{0} - Green color (\&a) if can navigate to the previous/next page, red color (\&c) otherwise.\
`current-page` -\
{0} - The current's page number.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is a shortened version of the default permissions menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lPermissions Controller'
previous-menu: true

pattern:
  - '$ $ $ $ $ $ $ $ $'
  - '$ @ @ @ @ @ @ @ $'
  - '$ @ @ @ @ @ @ @ $'
  - '$ @ @ @ @ @ @ @ $'
  - '$ $ % $ * $ ^ $ $'

slots: '@'
previous-page: '%'
current-page: '*'
next-page: '^'

messages:
  no-role-permission: '&8 - &c{}'
  exact-role-permission: '&8 - &2{}'
  higher-role-permission: '&8 - &a{}'

items:
  '$':
    type: STAINED_GLASS_PANE
    data: 3
    name: '&f'
  '%':
    type: PAPER
    name: '{0}Previous Page'
  '*':
    type: DOUBLE_PLANT
    name: '&aCurrent Page'
    lore:
      - '&7Page {0}'
  '^':
    type: PAPER
    name: '{0}Next Page'

permissions:
  animal_breed:
    display-menu: true
    permission-enabled:
      type: WHEAT
      name: '&6Animal Breed'
      lore:
        - '&7Access to breed animals inside the island.'
        - '&7Currently &aENABLED&7.'
    permission-disabled:
      type: WHEAT
      name: '&6Animal Breed'
      lore:
        - '&7Access to breed animals inside the island.'
        - '&7Currently &cDISABLED&7.'
    role-permission:
      type: WHEAT
      name: '&6Animal Breed'
      lore:
        - '&7Access to breed animals inside the island.'
        - '&7Role: &e{}&7.'
        - ''
        - '{0}'
    has-access:
      sound:
        type: ORB_PICKUP
        volume: 0.2
        pitch: 0.2
    no-access:
      sound:
        type: ANVIL_LAND
        volume: 0.2
        pitch: 0.2
  # ... more privileges follow the same format ...
```


# Player Language Menu

Here you'll find how to make your own player language menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Language Items

The player-language menu gives players the ability to change the language of the plugin's messages for themselves. In order to achieve that, the menu must be configured with special type of buttons that will make this work.

These special-type buttons follow the format of regular items, with one additional field that should be given to them:

| Field Name | Field Type | Description                                                                                                                                |
| ---------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `language` | String     | The language to switch to when clicking the item (for example `en-US`). The language must be a valid locale that is enabled in the config. |

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is a shortened version of the default player-language menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lSelect Language...'
previous-menu: true

pattern:
  - '@ @ @ @ @ @ @ @ @'
  - '@ # % * + ^ ~ 1 @'
  - '@ @ - = ! 2 3 @ @'
  - '@ @ @ @ @ @ @ @ @'

items:
  '@':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'
  '#':
    language: 'en-US'
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGNhYzk3NzRkYTEyMTcyNDg1MzJjZTE0N2Y3ODMxZjY3YTEyZmRjY2ExY2YwY2I0YjM4NDhkZTZiYzk0YjQifX19'
    name: '&eEnglish'
    lore:
      - '&7Change language to English.'
  '-':
    language: 'fr-FR'
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTEyNjlhMDY3ZWUzN2U2MzYzNWNhMWU3MjNiNjc2ZjEzOWRjMmRiZGRmZjk2YmJmZWY5OWQ4YjM1Yzk5NmJjIn19fQ=='
    name: '&eFrench'
    lore:
      - '&7Change language to French.'
  '=':
    language: 'es-ES'
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzJiZDQ1MjE5ODMzMDllMGFkNzZjMWVlMjk4NzQyODc5NTdlYzNkOTZmOGQ4ODkzMjRkYThjODg3ZTQ4NWVhOCJ9fX0='
    name: '&eSpanish'
    lore:
      - '&7Change language to Spanish.'
  # ... more language items follow the same format ...

sounds:
  '#':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
```


# Settings Menu

Here you'll find how to make your own settings menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Paged-Type Menu Sections

The settings menu is a paged-menu, which means it displays items from a list of available items - in this case, the island settings (also known as [island flags](/superiorskyblock/overview/island-flags)). Because the amount of settings can be greater than the amount of available slots, the menu supports multiple pages.

This type of menu requires 4 additional sections:\
`slots` - char of the setting buttons.\
`previous-page` - char to set a custom button that will get players back to the previous page.\
`current-page` - char to set a custom button that will display the current page players look at.\
`next-page` - char to set a custom button that will get players to the next page.

### Settings Section

Besides the regular menu sections, the settings menu has a `settings` section, where all the settings of the menu are configured. Each setting has its own sub-section, with the name of the [island flag](/superiorskyblock/overview/island-flags) as its key. Each setting section can have the following fields:

| Field Name          | Field Type   | Description                                                   |
| ------------------- | ------------ | ------------------------------------------------------------- |
| `display-menu`      | Boolean      | Whether the setting should be displayed in the menu.          |
| `settings-enabled`  | Item-Section | The item that will be displayed when the setting is enabled.  |
| `settings-disabled` | Item-Section | The item that will be displayed when the setting is disabled. |
| `sound`             | Sound        | A sound that will be played when the setting is toggled.      |

```yaml
settings:
  always_day:
    display-menu: true
    settings-enabled:
      type: STAINED_CLAY
      data: 4
      name: '&6Always Day'
      lore:
        - '&7Set a day time on your island.'
        - '&7Currently &aENABLED&7.'
    settings-disabled:
      type: STAINED_CLAY
      data: 4
      name: '&6Always Day'
      lore:
        - '&7Set a day time on your island.'
        - '&7Currently &cDISABLED&7.'
    sound:
      type: ORB_PICKUP
      volume: 0.2
      pitch: 0.2
```

{% hint style="info" %}
If a flag that exists in the plugin is missing from the `settings` section, a warning will be printed to the console. You can hide a setting from the menu without warnings by setting its `display-menu` field to `false`.
{% endhint %}

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Custom Placeholders

The pagination items of the paged-menu support custom placeholders!\
`previous-page`, `next-page` -\
{0} - Green color (\&a) if can navigate to the previous/next page, red color (\&c) otherwise.\
`current-page` -\
{0} - The current's page number.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is a shortened version of the default settings menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lIsland Settings'
previous-menu: true

pattern:
  - '$ $ $ $ $ $ $ $ $'
  - '$ @ @ @ @ @ @ @ $'
  - '$ @ @ @ @ @ @ @ $'
  - '$ @ @ @ @ @ @ @ $'
  - '$ $ % $ * $ ^ $ $'

slots: '@'
previous-page: '%'
current-page: '*'
next-page: '^'

items:
  '$':
    type: STAINED_GLASS_PANE
    data: 3
    name: '&f'
  '%':
    type: PAPER
    name: '{0}Previous Page'
  '*':
    type: DOUBLE_PLANT
    name: '&aCurrent Page'
    lore:
      - '&7Page {0}'
  '^':
    type: PAPER
    name: '{0}Next Page'

settings:
  always_day:
    display-menu: true
    settings-enabled:
      type: STAINED_CLAY
      data: 4
      name: '&6Always Day'
      lore:
        - '&7Set a day time on your island.'
        - '&7Currently &aENABLED&7.'
    settings-disabled:
      type: STAINED_CLAY
      data: 4
      name: '&6Always Day'
      lore:
        - '&7Set a day time on your island.'
        - '&7Currently &cDISABLED&7.'
    sound:
      type: ORB_PICKUP
      volume: 0.2
      pitch: 0.2
  # ... more settings follow the same format ...
```


# Top Islands Menu

Here you'll find how to make your own top islands menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Paged-Type Menu Sections

The top-islands menu is a paged-menu, which means it displays items from a list of available items - in this case, the top islands of the server. Because the amount of islands can be greater than the amount of available slots, the menu supports multiple pages.

This type of menu requires 4 additional sections:\
`slots` - char of the island buttons.\
`previous-page` - char to set a custom button that will get players back to the previous page.\
`current-page` - char to set a custom button that will display the current page players look at.\
`next-page` - char to set a custom button that will get players to the next page.

### Top-Islands Related Sections

The top-islands menu has additional sections that can be configured:

| Field Name                | Field Type | Description                                                                          |
| ------------------------- | ---------- | ------------------------------------------------------------------------------------ |
| `player-island`           | Char       | A custom button that displays the island of the player that is viewing the menu.     |
| `sort-glow-when-selected` | Boolean    | Whether the sorting buttons should glow when their sorting type is the selected one. |

#### Sorting Buttons

You can create buttons that change the sorting type of the islands. These buttons follow the format of regular items, with one additional field that should be given to them:

| Field Name     | Field Type | Description                                                                    |
| -------------- | ---------- | ------------------------------------------------------------------------------ |
| `sorting-type` | String     | The sorting type to switch to. Can be `WORTH`, `LEVEL`, `RATING` or `PLAYERS`. |

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Island Items

The island buttons (`slots` and `player-island` chars) do not follow the format of regular items and have custom sections that should be given to them:

| Field Name  | Field Type   | Description                                                      |
| ----------- | ------------ | ---------------------------------------------------------------- |
| `island`    | Item-Section | The item that will be displayed when there is an island to show. |
| `no-island` | Item-Section | The item that will be displayed when there is no island to show. |

The `island` and `no-island` fields can be used in the sounds and commands sections as well, to achieve custom sounds/commands depending on whether an island exists in that slot.

#### Custom Placeholders

The `island` items support custom placeholders!\
{0} - The island's name (or its owner's name if no name is set).\
{1} - The island's place in the top islands.\
{2} - The island's level.\
{3} - The island's worth.\
{4} - Special placeholder for the members of the island (explained below).\
{5} - The island's level, formatted with `K` for thousands, `M` for millions, etc.\
{6} - The island's worth, formatted with `K` for thousands, `M` for millions, etc.\
{7} - The island's total rating, as a number.\
{8} - The island's rating, formatted as stars.\
{9} - The amount of ratings the island received.\
{10} - The amount of players that are currently on the island.\
The pagination items also support custom placeholders:\
`previous-page`, `next-page` -\
{0} - Green color (\&a) if can navigate to the previous/next page, red color (\&c) otherwise.\
`current-page` -\
{0} - The current's page number.

#### Members Placeholder

The {4} placeholder is used inside the lore to display the list of the island members. The format of the lore line should be `'{4}:<member-format>'` - the line will be repeated for every member of the island, and the `{}` placeholder inside the member format will be replaced with the member's name. You can also use {0} for the member's name, {1} for the member's online status and {2} for the member's role.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default top-islands menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lTop Islands'
previous-menu: true

pattern:
  - '~ ~ ~ ~ ~ ~ ~ ~ ~'
  - '@ % @ @ @ # @ @ @'
  - '@ * @ @ # # # @ @'
  - '@ ^ @ # # # # # @'
  - '@ & @ @ @ $ @ @ @'
  - '~ ~ ! ~ - ~ + ~ ~'

slots: '#'
previous-page: '!'
current-page: '-'
next-page: '+'

player-island: '$'
sort-glow-when-selected: true

items:
  '#':
    island:
      type: SKULL_ITEM
      data: 3
      name: '&e&l[!] Island: &6&n{0}&7 (#{1})'
      lore:
        - '&7'
        - '&6&l* &e&lIsland Level &7{2}'
        - '&7'
        - '&6&l* &e&lPlace &7#{1}'
        - '&6&l* &e&lWorth &7${3}'
        - '&6&l* &e&lRating {8} &7({9})'
        - '&6&l* &e&lPlayers &7{10}'
        - '&7'
        - '&6&l* &e&lMembers:'
        - '{4}:&f  - &7{}'
        - '&7'
        - '&7&o(( &f&oLeft-Click &7&oto view their items. ))'
        - '&7&o(( &f&oRight-Click &7&oto teleport to island warp. ))'
    no-island:
      type: SKULL_ITEM
      data: 3
      name: '&cInvalid Island'
  '%':
    type: DIAMOND
    sorting-type: 'WORTH'
    name: '&6Sort by Worth'
  '*':
    type: GOLD_INGOT
    sorting-type: 'LEVEL'
    name: '&6Sort by Level'
  '^':
    type: EMERALD
    sorting-type: 'RATING'
    name: '&6Sort by Rating'
  '&':
    type: SKULL_ITEM
    data: 3
    sorting-type: 'PLAYERS'
    name: '&6Sort by Players'
  '!':
    type: PAPER
    name: '{0}Previous Page'
  '-':
    type: DOUBLE_PLANT
    name: '&aCurrent Page'
    lore:
      - '&7Page {0}'
  '+':
    type: PAPER
    name: '{0}Next Page'
  '~':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'

sounds:
  '@':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
```


# Unique Visitors Menu

Here you'll find how to make your own unique visitors menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

The title of this menu supports a custom placeholder: {0} - the amount of unique visitors the island had.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Paged-Type Menu Sections

The unique-visitors menu is a paged-menu, which means it displays items from a list of available items - in this case, all the players that ever visited the island. Because the amount of visitors can be greater than the amount of available slots, the menu supports multiple pages.

This type of menu requires 4 additional sections:\
`slots` - char of the visitor buttons.\
`previous-page` - char to set a custom button that will get players back to the previous page.\
`current-page` - char to set a custom button that will display the current page players look at.\
`next-page` - char to set a custom button that will get players to the next page.

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Custom Placeholders

The items of the paged-menu (`slots`, `previous-page`, etc) support custom placeholders!\
`slots` -\
{0} - The visitor's name.\
{1} - The name of the owner of the visitor's island.\
{2} - The name of the visitor's island.\
{3} - The last time the visitor joined the island.\
`previous-page`, `next-page` -\
{0} - Green color (\&a) if can navigate to the previous/next page, red color (\&c) otherwise.\
`current-page` -\
{0} - The current's page number.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default unique-visitors menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lIsland Unique Visitors ({0})'
previous-menu: true

pattern:
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '$ $ $ $ $ $ $ $ $'
  - '# # % # * # ^ # #'

slots: '@'
previous-page: '%'
current-page: '*'
next-page: '^'

items:
  '@':
    type: SKULL_ITEM
    data: 3
    name: '&e{0}'
    lore:
      - '&7Island Owner: {1}'
      - '&7Last Time Joined: {3}'
      - ''
      - '&7Left-Click to expel the player.'
      - '&7Right-Click to invite the player.'
  '%':
    type: PAPER
    name: '{0}Previous Page'
  '*':
    type: DOUBLE_PLANT
    name: '&aCurrent Page'
    lore:
      - '&7Page {0}'
  '^':
    type: PAPER
    name: '{0}Next Page'
  '$':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'

sounds:
  '@':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
```


# Upgrades Menu

Here you'll find how to make your own upgrades menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Upgrades Section

Besides the regular menu sections, the upgrades menu has an `upgrades` section, where all the upgrade buttons are configured. Each upgrade has its own sub-section, with the name of the upgrade from `upgrades.yml` (the upgrades configuration file) as its key.

Each upgrade section should have an `item` field with the char of the upgrade button from the pattern. Besides that, it should have a sub-section for every level of the upgrade, with the level number as its key. Each level section should have the following fields:

| Field Name       | Field Type   | Description                                                               |
| ---------------- | ------------ | ------------------------------------------------------------------------- |
| `has-next-level` | Item-Section | The item that will be displayed when there is a next level to upgrade to. |
| `no-next-level`  | Item-Section | The item that will be displayed when the level is the last one.           |

Both items can have their own `sound` section (played when clicking the button in that state) and `commands` list.

#### Custom Placeholders

The upgrade items support custom placeholders!\
{0} - The price of the next level.\
{1} - The price of the next level, formatted with commas.\
{2} - The price of the next level, formatted with `K` for thousands, `M` for millions, etc.

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is a shortened version of the default upgrades menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lIsland Upgrades'
previous-menu: true

pattern:
  - '$ $ $ $ $ $ $ $ $'
  - '# # @ # % # ^ # #'
  - '# # # ! # + # # #'
  - '# # * # ~ # & # #'
  - '$ $ $ $ $ $ $ $ $'

items:
  '$':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'

upgrades:
  hoppers-limit:
    item: '@'
    '1':
      has-next-level:
        type: HOPPER
        name: '&d&lHopper Increase &a(Available)'
        lore:
          - '&7'
          - '&dNext Level: &e2'
          - '&7'
          - '&7Purchasing the hopper upgrade'
          - '&7will increase your island''s'
          - '&7max hoppers limit.'
          - '&7'
          - '&dAmount: &f16x Hoppers'
          - '&dPrice: &f$1,000,000'
          - '&7'
          - '&aClick to purchase upgrade.'
        sound:
          type: ORB_PICKUP
          volume: 0.2
          pitch: 0.2
      no-next-level:
        type: HOPPER
        name: '&d&lHopper Increase &c(Unavailable)'
        lore:
          - '&7'
          - '&dNext Level: &e2'
          - '&7'
          - '&7Purchasing the hopper upgrade'
          - '&7will increase your island''s'
          - '&7max hoppers limit.'
          - '&7'
          - '&dAmount: &f16x Hoppers'
          - '&dPrice: &f$1,000,000'
          - '&7'
          - '&cYou cannot purchase this upgrade.'
    '2':
      has-next-level:
        # ... same format as level 1 ...
      no-next-level:
        # ... same format as level 1 ...
  # ... more upgrades (crop-growth, spawner-rates, mob-drops, members-limit,
  #     border-size, generator-rates, minecarts-limit) follow the same format ...
```


# Values Menu

Here you'll find how to make your own values menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

The title of this menu supports custom placeholders: {0} - the name of the island's owner; {1} - the worth of the island; {2} - the worth of the island, formatted with `K` for thousands, `M` for millions, etc.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Block Value Items

The values menu displays the worth and level values of specific blocks on the island. In order to achieve that, the menu must be configured with special type of buttons that will make this work.

These special-type buttons follow the format of regular items, with one additional field that should be given to them:

| Field Name | Field Type | Description                                                                                                                          |
| ---------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `block`    | String     | The block to track. Can be a material name (for example `IRON_BLOCK`) or a spawner with an entity (for example `MOB_SPAWNER:BLAZE`). |

#### Custom Placeholders

The block value items support custom placeholders!\
{0} - The amount of the blocks on the island.\
{1} - The total worth of the blocks.\
{2} - The total level of the blocks.\
{3} - The total worth of the blocks, formatted with `K` for thousands, `M` for millions, etc.\
{4} - The total level of the blocks, formatted with `K` for thousands, `M` for millions, etc.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is a shortened version of the default values menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '{0} &n${1}'
previous-menu: true

pattern:
  - '& & & & & & & & &'
  - '% $ A B C D E F %'
  - '% % G H I J K L %'
  - '% * M N O P Q R %'
  - '% % S T U V W X %'
  - '& & & & & & & & &'

items:
  '&':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'
  '$':
    type: MOB_SPAWNER
    name: '&e&lSPAWNERS ->'
    flags:
      - HIDE_ATTRIBUTES
  '*':
    type: BOOK_AND_QUILL
    name: '&e&lITEMS ->'
  'A':
    block: MOB_SPAWNER:IRON_GOLEM
    type: SKULL_ITEM
    data: 3
    skull: 'eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODkwOTFkNzllYTBmNTllZjdlZjk0ZDdiYmE2ZTVmMTdmMmY3ZDQ1NzJjNDRmOTBmNzZjNDgxOWE3MTQifX19'
    name: '&e&l[!] &7Iron Golem Spawner'
    lore:
      - '&6&l* &e&lQuantity &fx{0}'
      - '&6&l* &e&lWorth: &f${1}'
      - '&6&l* &e&lLevel: &f${2}'
  'M':
    block: HOPPER
    type: HOPPER
    name: '&e&l[!] &7Hopper'
    lore:
      - '&6&l* &e&lQuantity &fx{0}'
      - '&6&l* &e&lWorth: &f${1}'
      - '&6&l* &e&lLevel: &f${2}'
  'O':
    block: IRON_BLOCK
    type: IRON_BLOCK
    name: '&e&l[!] &7Iron Block'
    lore:
      - '&6&l* &e&lQuantity &fx{0}'
      - '&6&l* &e&lWorth: &f${1}'
      - '&6&l* &e&lLevel: &f${2}'
  # ... more block items follow the same format ...
```


# Visitors Menu

Here you'll find how to make your own visitors menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

The title of this menu supports a custom placeholder: {0} - the amount of visitors that are currently on the island.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Paged-Type Menu Sections

The visitors menu is a paged-menu, which means it displays items from a list of available items - in this case, the visitors that are currently on the island. Because the amount of visitors can be greater than the amount of available slots, the menu supports multiple pages.

This type of menu requires 4 additional sections:\
`slots` - char of the visitor buttons.\
`previous-page` - char to set a custom button that will get players back to the previous page.\
`current-page` - char to set a custom button that will display the current page players look at.\
`next-page` - char to set a custom button that will get players to the next page.

### Visitors Related Sections

The visitors menu has an additional section that can be configured - `unique-visitors`. This is a char of a custom button that opens the [unique visitors menu](/superiorskyblock/overview/menus/unique-visitors-menu), which displays all-time visitors of the island.

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Custom Placeholders

The items of the paged-menu (`slots`, `previous-page`, etc) support custom placeholders!\
`slots` -\
{0} - The visitor's name.\
{1} - The name of the owner of the visitor's island.\
{2} - The name of the visitor's island.\
`previous-page`, `next-page` -\
{0} - Green color (\&a) if can navigate to the previous/next page, red color (\&c) otherwise.\
`current-page` -\
{0} - The current's page number.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default visitors menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lIsland Visitors ({0})'
previous-menu: true

pattern:
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '$ $ $ $ ~ $ $ $ $'
  - '# # % # * # ^ # #'

slots: '@'
previous-page: '%'
current-page: '*'
next-page: '^'
unique-visitors: '~'

items:
  '@':
    type: SKULL_ITEM
    data: 3
    name: '&e{0}'
    lore:
      - '&7Island Owner: {1}'
      - ''
      - '&7Left-Click to expel the player.'
      - '&7Right-Click to invite the player.'
  '%':
    type: PAPER
    name: '{0}Previous Page'
  '*':
    type: DOUBLE_PLANT
    name: '&aCurrent Page'
    lore:
      - '&7Page {0}'
  '^':
    type: PAPER
    name: '{0}Next Page'
  '~':
    type: SKULL_ITEM
    name: '&eUnique Visitors'
    lore:
      - '&7Click to open all-time visitors menu.'
  '$':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'

sounds:
  '@':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
```


# Warp Categories Menu

Here you'll find how to make your own warp categories menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Paged-Type Menu Sections

The warp-categories menu is a paged-menu, which means it displays items from a list of available items - in this case, the warp categories of an island. Because the amount of categories can be greater than the amount of available slots, the menu supports multiple pages.

This type of menu requires 4 additional sections:\
`slots` - char of the category buttons.\
`previous-page` - char to set a custom button that will get players back to the previous page.\
`current-page` - char to set a custom button that will display the current page players look at.\
`next-page` - char to set a custom button that will get players to the next page.

{% hint style="info" %}
The category buttons themselves use the icons that were set for the categories in-game, and each category is placed in the slot that was chosen for it. The item configured for the `slots` char is used as a filler for the rest of the slots.
{% endhint %}

### Warp-Categories Related Sections

The warp-categories menu has an additional section that can be configured - `edit-lore`. This is a list of lore lines that will be appended to the category icons when the player viewing the menu is allowed to edit them. It is useful for explaining how to edit categories without having the extra lines displayed to regular visitors.

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Custom Placeholders

The pagination items of the paged-menu support custom placeholders!\
`previous-page`, `next-page` -\
{0} - Green color (\&a) if can navigate to the previous/next page, red color (\&c) otherwise.\
`current-page` -\
{0} - The current's page number.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default warp-categories menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lWarp Categories'
previous-menu: true

pattern:
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '$ $ $ $ $ $ $ $ $'
  - '# # % # * # ^ # #'

slots: '@'
previous-page: '%'
current-page: '*'
next-page: '^'

# This lore is added to category icons.
edit-lore:
  - '&f '
  - '&f '
  - '&7&o(( &f&oLeft-Click &7&oto see island warps. ))'
  - '&7&o(( &f&oRight-Click &7&oto edit the category. ))'

items:
  '@':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'
  '%':
    type: PAPER
    name: '&cPrevious Page'
  '*':
    type: DOUBLE_PLANT
    name: '&aCurrent Page'
    lore:
      - '&7Page 1'
  '^':
    type: PAPER
    name: '&cNext Page'
  '$':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'
```


# Warp Category Icon Edit Menu

Here you'll find how to make your own warp category icon edit menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

The title of this menu supports a custom placeholder: {0} - the name of the category that its icon is being edited.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Warp-Category-Icon-Edit Related Sections

The warp-category-icon-edit menu is used to edit the icon of a warp category, and therefore it has special buttons that should be configured. Simply set them as a custom char from your pattern in order to make that item a custom button.

| Field Name     | Field Type | Description                                                       |
| -------------- | ---------- | ----------------------------------------------------------------- |
| `icon-type`    | Char       | The button that lets players change the material of the icon.     |
| `icon-rename`  | Char       | The button that lets players change the name of the icon.         |
| `icon-relore`  | Char       | The button that lets players change the lore of the icon.         |
| `icon-confirm` | Char       | The button that confirms the changes made to the icon.            |
| `icon-slots`   | Char       | The slot where the currently edited icon is displayed as preview. |

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default warp-category-icon-edit menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lCategory: {0}'
previous-menu: true

pattern:
  - '@ @ @ @ @ @ @ @ @'
  - '@ ! @ @ @ @ @ ~ @'
  - '@ @ @ @ ^ @ @ @ @'
  - '@ $ @ @ @ @ @ % @'
  - '@ @ @ @ @ @ @ @ @'

icon-type: '!'
icon-rename: '~'
icon-relore: '$'
icon-confirm: '%'
icon-slots: '^'

items:
  '!':
    type: DIAMOND
    name: '&6Set Type'
    lore:
      - '&f '
      - '&f '
      - '&7&o(( &f&oClick &7&oto edit the item type. ))'
  '~':
    type: ANVIL
    name: '&6Set Name'
    lore:
      - '&f '
      - '&f '
      - '&7&o(( &f&oClick &7&oto edit the item name. ))'
  '$':
    type: PAPER
    name: '&6Set Lore'
    lore:
      - '&f '
      - '&f '
      - '&7&o(( &f&oClick &7&oto edit the item lore. ))'
  '%':
    type: EMERALD
    name: '&6Confirm Changes'
    lore:
      - '&f '
      - '&f '
      - '&7&o(( &f&oClick &7&oto confirm all changes. ))'
  '^':
    type: STONE

sounds:
  '%':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
```


# Warp Category Manage Menu

Here you'll find how to make your own warp category manage menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

The title of this menu supports a custom placeholder: {0} - the name of the category that is being edited.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Warp-Category-Manage Related Sections

The warp-category-manage menu is used to edit a single warp category, and therefore it has special buttons that should be configured. Simply set them as a custom char from your pattern in order to make that item a custom button.

| Field Name             | Field Type | Description                                                                                                         |
| ---------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------- |
| `category-rename`      | Char       | The button that lets players rename the category.                                                                   |
| `category-icon`        | Char       | The button that opens the [category icon edit menu](/superiorskyblock/overview/menus/warp-category-icon-edit-menu). |
| `category-warps`       | Char       | The button that opens the warps menu of the category.                                                               |
| `success-update-sound` | Sound      | A sound that will be played when the category is successfully updated.                                              |

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default warp-category-manage menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lCategory: {0}'
previous-menu: true

pattern:
  - '@ @ @ @ @ @ @ @ @'
  - '@ ! @ @ ~ @ @ $ @'
  - '@ @ @ @ @ @ @ @ @'

success-update-sound:
  type: ORB_PICKUP
  volume: 0.2
  pitch: 0.2

category-rename: '!'
category-icon: '~'
category-warps: '$'

items:
  '!':
    type: BOOK
    name: '&6Rename Category'
    lore:
      - '&f '
      - '&f '
      - '&7&o(( &f&oClick &7&oto rename the category. ))'
  '~':
    type: STONE
    lore:
      - '&f '
      - '&f '
      - '&7&oYou can use the following placeholders:'
      - '&7&o{0} is used for the warp''s name.'
      - '&7&o{1} is used for the warp''s location.'
      - '&7&o{2} is used for the warp''s public status.'
      - '&7&o(( &f&oRight-Click &7&oto edit the icon. ))'
      - '&7&o(( &f&oLeft-Click &7&oto edit the category''s slot. ))'
  '$':
    type: ENDER_PEARL
    name: '&6Island Warps'
    lore:
      - '&f '
      - '&f '
      - '&7&o(( &f&oClick &7&oto edit the category warps. ))'
```


# Warp Icon Edit Menu

Here you'll find how to make your own warp icon edit menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

The title of this menu supports a custom placeholder: {0} - the name of the warp that its icon is being edited.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Warp-Icon-Edit Related Sections

The warp-icon-edit menu is used to edit the icon of a warp, and therefore it has special buttons that should be configured. Simply set them as a custom char from your pattern in order to make that item a custom button.

| Field Name     | Field Type | Description                                                       |
| -------------- | ---------- | ----------------------------------------------------------------- |
| `icon-type`    | Char       | The button that lets players change the material of the icon.     |
| `icon-rename`  | Char       | The button that lets players change the name of the icon.         |
| `icon-relore`  | Char       | The button that lets players change the lore of the icon.         |
| `icon-confirm` | Char       | The button that confirms the changes made to the icon.            |
| `icon-slots`   | Char       | The slot where the currently edited icon is displayed as preview. |

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default warp-icon-edit menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lWarp: {0}'
previous-menu: true

pattern:
  - '@ @ @ @ @ @ @ @ @'
  - '@ ! @ @ @ @ @ ~ @'
  - '@ @ @ @ ^ @ @ @ @'
  - '@ $ @ @ @ @ @ % @'
  - '@ @ @ @ @ @ @ @ @'

icon-type: '!'
icon-rename: '~'
icon-relore: '$'
icon-confirm: '%'
icon-slots: '^'

items:
  '!':
    type: DIAMOND
    name: '&6Set Type'
    lore:
      - '&f '
      - '&f '
      - '&7&o(( &f&oClick &7&oto edit the item type. ))'
  '~':
    type: ANVIL
    name: '&6Set Name'
    lore:
      - '&f '
      - '&f '
      - '&7&o(( &f&oClick &7&oto edit the item name. ))'
  '$':
    type: PAPER
    name: '&6Set Lore'
    lore:
      - '&f '
      - '&f '
      - '&7&o(( &f&oClick &7&oto edit the item lore. ))'
  '%':
    type: EMERALD
    name: '&6Confirm Changes'
    lore:
      - '&f '
      - '&f '
      - '&7&o(( &f&oClick &7&oto confirm all changes. ))'
  '^':
    type: STONE

sounds:
  '%':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
```


# Warp Manage Menu

Here you'll find how to make your own warp manage menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

The title of this menu supports a custom placeholder: {0} - the name of the warp that is being edited.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Warp-Manage Related Sections

The warp-manage menu is used to edit a single warp, and therefore it has special buttons that should be configured. Simply set them as a custom char from your pattern in order to make that item a custom button.

| Field Name             | Field Type | Description                                                                                            |
| ---------------------- | ---------- | ------------------------------------------------------------------------------------------------------ |
| `warp-rename`          | Char       | The button that lets players rename the warp.                                                          |
| `warp-icon`            | Char       | The button that opens the [warp icon edit menu](/superiorskyblock/overview/menus/warp-icon-edit-menu). |
| `warp-location`        | Char       | The button that updates the warp's location to the player's current location.                          |
| `warp-private`         | Char       | The button that toggles the privacy of the warp.                                                       |
| `success-update-sound` | Sound      | A sound that will be played when the warp is successfully updated.                                     |

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default warp-manage menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lWarp: {0}'
previous-menu: true

pattern:
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ ! @ % @ $ @ @'
  - '@ @ @ @ ~ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'

success-update-sound:
  type: ORB_PICKUP
  volume: 0.2
  pitch: 0.2

warp-rename: '!'
warp-icon: '~'
warp-location: '$'
warp-private: '%'

items:
  '!':
    type: BOOK
    name: '&6Rename Warp'
    lore:
      - '&f '
      - '&f '
      - '&7&o(( &f&oClick &7&oto rename the warp. ))'
  '~':
    type: STONE
    lore:
      - '&f '
      - '&f '
      - '&7&oYou can use the following placeholders:'
      - '&7&o{0} is used for the warp''s name.'
      - '&7&o{1} is used for the warp''s location.'
      - '&7&o{2} is used for the warp''s public status.'
      - '&7&o(( &f&oClick &7&oto edit the icon. ))'
  '$':
    type: ENDER_PEARL
    name: '&6Warp Location'
    lore:
      - '&f '
      - '&f '
      - '&7&o(( &f&oClick &7&oto update the warp location. ))'
  '%':
    type: FEATHER
    name: '&6Private Warp'
    lore:
      - '&f '
      - '&f '
      - '&7&o(( &f&oClick &7&oto toggle warp to the public. ))'
```


# Warps Menu

Here you'll find how to make your own warps menu from scratch.

### General Sections

First, give your menu a custom name by adding a `title (string)` section. After that, you may configure other general options of your menu: `previous-menu (boolean)` to enable opening of previous menu when closing the menu; `type (string)` to set the inventory-type of the menu; `open-sound (sound)` for setting a custom sound when opening the menu.

{% hint style="info" %}
You may find a list of valid inventory-types [on this link](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/inventory/InventoryType.html).
{% endhint %}

### Pattern Section

Let's work on the pattern section. The pattern section is the area where you can configure the layout of your menu. It is a list of strings that each char in them represents a different item that will be displayed in your menu. The pattern list should contain a list of 1 to 6 lines that each will have 9 chars - spaces are not counted as chars. If you have two same chars in different slots, then the items in these slots will be identical. Configuring how items will look like is not done here, but in the `items` section.

### Paged-Type Menu Sections

The warps menu is a paged-menu, which means it displays items from a list of available items - in this case, island warps. Because the amount of warps can be greater than the amount of available slots, the menu supports multiple pages.

This type of menu requires 4 additional sections:\
`slots` - char of the warp buttons.\
`previous-page` - char to set a custom button that will get players back to the previous page.\
`current-page` - char to set a custom button that will display the current page players look at.\
`next-page` - char to set a custom button that will get players to the next page.

### Warps Related Sections

The warps menu has an additional section that can be configured - `edit-lore`. This is a list of lore lines that will be appended to the warp icons when the player viewing the menu is allowed to edit the warps. It is useful for explaining how to edit warps without having the extra lines displayed to regular visitors.

### Items Section

That's the place where you configure your items. You can find a tutorial on how to properly configure an item [here](https://wiki.bg-software.com/superiorskyblock/menus#editing-items-in-the-menu).

#### Custom Placeholders

The items of the paged-menu (`slots`, `previous-page`, etc) support custom placeholders!\
`slots` -\
{0} - The warp's name.\
{1} - The warp's location.\
{2} - The warp's privacy status (private indicator).\
`previous-page`, `next-page` -\
{0} - Green color (\&a) if can navigate to the previous/next page, red color (\&c) otherwise.\
`current-page` -\
{0} - The current's page number.

### Sounds Section

In this section you can configure custom sounds that will be played when players click the items in the menu. You can find a tutorial on how to properly configure sounds [here](https://wiki.bg-software.com/superiorskyblock/menus#giving-sounds-to-items).

### Commands Section

In this section you can configure custom commands that will be executed when players click the items in the menu. You can find a tutorial on how to properly configure commands [here](https://wiki.bg-software.com/superiorskyblock/menus#running-custom-commands).

### Permissions Section

In this section you can configure required-permissions for your items that players must have before they can click an item. You can find a tutorial on how to properly configure permissions [here](https://wiki.bg-software.com/superiorskyblock/menus#permissions-section).

### Menu Example

This is the default warps menu, which includes most of the technics and features stated in this tutorial.

```yaml
title: '&lIsland Warps'
previous-menu: true

pattern:
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '@ @ @ @ @ @ @ @ @'
  - '$ $ $ $ $ $ $ $ $'
  - '# # % # * # ^ # #'

slots: '@'
previous-page: '%'
current-page: '*'
next-page: '^'

# This lore is added to warp icons.
edit-lore:
  - '&f '
  - '&f '
  - '&7&o(( &f&oLeft-Click &7&oto warp to the location. ))'
  - '&7&o(( &f&oRight-Click &7&oto edit warp. ))'

items:
  '@':
    type: BOOK
    name: '&e{0} {2}'
    lore:
      - '&7Located at {1}.'
  '%':
    type: PAPER
    name: '{0}Previous Page'
  '*':
    type: DOUBLE_PLANT
    name: '&aCurrent Page'
    lore:
      - '&7Page {0}'
  '^':
    type: PAPER
    name: '{0}Next Page'
  '$':
    type: STAINED_GLASS_PANE
    data: 15
    name: '&f'

sounds:
  '@':
    type: ORB_PICKUP
    volume: 0.2
    pitch: 0.2
```


# Missions

Using missions, you can give your players tasks to do on your server. In this documentation, you will understand how to edit them to your own style!

## How do missions work?

First of all, it's important to understand how missions work. Missions are instructions that given to external jars (similar to plugins). The jars handle the events and actions that player do, and by following the instructions that are given to them, they know how to reward the players or islands. SuperiorSkyblock provides default jars that know how to handle a large range of actions, such as block breaking, island actions, enchanting, collection of items and crafting of items.

## Default mission jars

Here you can find information about every default mission jar.

#### BlocksMissions

The BlocksMissions jar handles tracking of placement and breaking of blocks in islands. Using this jar, you can give players missions that they need to break certain blocks or place them.\
You can read more about it [here](/superiorskyblock/overview/missions/blocksmissions).

#### **BrewingMissions**

The BrewingMissions jar handles tracking of brewing potions in islands. Using this jar, you can give players missions that they need to brew certain potions.\
You can read more about it [here](/superiorskyblock/overview/missions/brewingmissions).

#### **CraftingMissions**

The CraftingMissions jar handles tracking of crafting items in islands. Using this jar, you can give players missions that they need to craft items in a crafting table.\
You can read more about it [here](/superiorskyblock/overview/missions/craftingmissions).

#### **EnchantingMissions**

The EnchantingMissions jar handles tracking of enchanting items in islands. Using this jar, you can give players missions that they need to enchant certain items.\
You can read more about it [here](/superiorskyblock/overview/missions/enchantingmissions).

#### **FarmingMissions**

The FarmingMissions jar handles tracking of growth of crops in islands. Using this jar, you can give players missions that they need to plant crops. \
You can read more about it [here](/superiorskyblock/overview/missions/farmingmissions).

#### **FishingMissions**

The FishingMissions jar handles tracking of fishing in islands. Using this jar, you can give players missions that they need to fish.\
You can read more about it [here](/superiorskyblock/overview/missions/fishingmissions).

#### **IslandMissions**

The IslandMissions jar handles tracking island events. Using this jar, you can give players missions that can be completed once an event is fired.\
You can read more about it [here](/superiorskyblock/overview/missions/islandmissions).

#### **ItemsMissions**

The ItemsMissions jar handles tracking of items in inventories. Using this jar, you can give players missions that they need to hold an item for completion.\
You can read more about it [here](/superiorskyblock/overview/missions/itemsmissions).

#### **KillsMissions**

The KillsMissions jar handles tracking of mobs killing in islands. Using this jar, you can give players missions that they need to kill mobs.\
You can read more about it [here](/superiorskyblock/overview/missions/killsmissions).

#### **StatisticsMissions**

The StatisticsMissions jar handles tracking of statistics. Using this jar, you can give players missions that they need to get certain statistics.\
You can read more about it [here](/superiorskyblock/overview/missions/statisticsmissions).

## Missions files-structure

The root folder for missions is the "categories" folder, located in `modules/missions/categories`. This folder should contain only folders, each represents a different missions-category. Each category folder can contain unlimited amount of files, each represents a different mission inside that category. The name of the missions will be the same as the name of the file representing your mission.

## Create your first mission

Here you'll understand how to create your own mission. All the missions have the follow the same concept, but in this tutorial I chose to customize my own lumberjack mission!

I first start with setting basic information (name & mission type):

```yaml
mission-file: BlocksMissions    # I am using the BlocksMissions jar as it knows how to handle block breaking.
```

After that, I start giving it some more advanced settings. I want my players to only gain progress from natural blocks spawning, I want the mission to be reset upon disbanding of an island, and I want them to be able to use the mission if they are above island level of 250.

```yaml
mission-file: BlocksMissions

only-natural-blocks: true             # Make sure only natural blocks are counted.
disband-reset: true                   # Resetting the mission upon island disband.
required-checks:                      # Handles custom checks, such as minimum level requirement.
  - '%superior_island_level% > 250'
```

Now, I will configure three important things:

1. The blocks that will be tracked (I am using 1.16 blocks).
2. Rewards for the mission
3. The icon of the mission that will be displayed in /is missions.

```yaml
mission-file: BlocksMissions

only-natural-blocks: true
disband-reset: true
required-checks:
 - '%superior_island_level% > 250'

# The blocks that will be tracked.
required-blocks:
 # A section of blocks. All the blocks in a section will be counted together.
 '1':
   # All the blocks of this section.
   types:
     - 'OAK_LOG'
     - 'SPRUCE_LOG'
     - 'BIRCH_LOG'
     - 'JUNGLE_LOG'
     - 'ACACIA_LOG'
     - 'DARK_OAK_LOG'
   # The total amount of all the blocks of the section (5 stacks).
   amount: 320

# The rewards of the mission.
rewards:
 items:
   '1':                  # Random section name, doesn't really matter.
     type: OAK_SAPLING   # The item's type
     amount: 16          # The item's amount.
 commands:               # Commands that will be executed upon completion.
   - 'is admin msg %player% &e&lMission | &7Successfully finished the mission Lumberjack!'

# Settings related to the icon in the missions menu.
icons:
 # The icon that will be displayed when the player cannot complete the mission for any reason.
 not-completed:
   type: PAPER
   name: '&aLumberjack'
   lore:
     - '&7Cut 320 logs.'
     - ''
     - '&6Required Materials:'
     - '&8 - &7x320 Logs'
     - ''
     - '&6Rewards:'
     - '&8 - &7x16 Oak Saplings'
     - ''
     - '&6Cut Logs: &7{1}/320'
     - '&6Progress: &7{0}%'
     - '&c&l ✘ &7Not Completed'
 # The icon that will be displayed when the player can complete the mission.
 can-complete:
   type: PAPER
   name: '&aLumberjack'
   lore:
     - '&7Cut 320 logs.'
     - ''
     - '&6Required Materials:'
     - '&8 - &7x320 Logs'
     - ''
     - '&6Rewards:'
     - '&8 - &7x16 Oak Saplings'
     - ''
     - '&6Cut Logs: &7320/320'
     - '&6Progress: &7100%'
     - '&a&l ✔ &7Click to redeem your reward.'
   enchants:
     DURABILITY: 1
   flags:
     - HIDE_ENCHANTS
 # The icon that will be displayed when the player has already completed the mission.
 completed:
   type: MAP
   name: '&aLumberjack'
   lore:
     - '&7Cut 320 logs.'
     - ''
     - '&6Cut Logs: &7320/320'
     - '&6Progress: &7100%'
     - '&a&l ✔ &7Already Claimed.'
```

As you might have noticed, I used some built-in placeholders, such as {0} and {1}. \
{0} - Used as a percentage placeholder. \
{1} - Used as a placeholder for the amount of tracked blocks. \
{value\_\<block>} - Used as a placeholder for the amount of a specific tracked block.\
{percentage\_\<block>} - Used as a percentage placeholder for a specific block.

That's it! The mission is now setup and ready to be used. There are more settings that can be applied to all the missions:\
`required-missions`: A list of missions that must be completed before completion of the mission. \
`required-checks`: A list of checks which depend on placeholders that needs to be checked before completion of the mission. \
`only-show-if-required-completed`: Whether or not the mission should only be shown in menus when the required missions & checks are completed. \
`island`: Whether or not the mission should be an islands mission (mission that is synced with all island members).                                                                                                                                                                                             `weight`: The order this mission will be displayed in the missions folder. Missions will be sorted by their weights, and if two missions have the same weight, they will be sorted by their names instead.\
`auto-reward`: Whether or not the plugin should reward the players without them doing it in the missions menu. \
`disband-reset`: Whether or not the mission should be reset when disbanding the island (used for player-missions).\
`leave-reset`: Whether or not the mission should be reset when leaving an island (used for player-missions).\
`reset-amount`: The amount of times a mission can be completed. \
`rewards.items`: A list of items that will be given to players when they complete the mission. `rewards.commands`: A list of commands that will be executed when players complete the mission. `icons.not-completed`: The item that will be shown in the menu when the mission is not completed. `icons.can-complete`: The item that will be shown in the menu when the mission can be completed. `icons.completed`: The item that will be shown in the menu when the mission is completed.&#x20;

## Create your own mission jar

&#x20;In order to create your own missions jar, you must have knowledge in Java and the Spigot API.\
&#x20;Mission jars are part of the SuperiorSkyblock's API, which can be found [here](https://github.com/OmerBenGera/SuperiorSkyblockAPI).\
\
&#x20;In this tutorial, I will make a chat-mission that counts the amount of times a player has written "Hello".\
&#x20;First, I create a ChatMission object that extends the Mission object, and override all the methods.

```java
public final class ChatMission extends Mission<Object> {

    @Override
    public void load(JavaPlugin plugin, ConfigurationSection section) throws MissionLoadException {

    }

    @Override
    public double getProgress(SuperiorPlayer superiorPlayer) {
        return 0;
    }

    @Override
    public void onComplete(SuperiorPlayer superiorPlayer) {

    }

    @Override
    public void onCompleteFail(SuperiorPlayer superiorPlayer) {

    }

}
```

As you can see, the Mission object needs an argument. This argument will be our data. The Mission object has a built-in system to organize all the data for us. In this tutorial, I can just use the Integer class. In more complicated missions, you might want to use your own custom object.

```java
public final class ChatMission extends Mission<Integer> {

    ...

}
```

Now, we need to start implementing the default methods.\
`load()` - That's your "constructor" of the mission. It has two parameters: the plugin's instance, and the configurationsection of the mission. If something was not done correctly, and you want to cancel the loading of the mission - throw MissionLoadException with your error as a message. \
`getProgress()` - Calculates the progress of the player. Must return a number between 0 and 1. `onComplete()` - A callback method that will be ran when a player completes a mission. \
`onCompleteFail()` - A callback method that will be ran when a player fails to complete a mission.

```java
public final class ChatMission extends Mission<Integer> {

    private int AMOUNT_OF_TIMES = 0;
    private String CHAT_MESSAGE = "";

    @Override
    public void load(JavaPlugin plugin, ConfigurationSection section) throws MissionLoadException {
        if(!section.contains("times"))
            throw new MissionLoadException("Mission ChatMission must contain the \"times\" section!");

        if(!section.contains("message"))
            throw new MissionLoadException("Mission ChatMission must contain the \"message\" section!");

        AMOUNT_OF_TIMES = section.getInt("times");

        if(AMOUNT_OF_TIMES <= 0)
            throw new MissionLoadException("times must be a positive value.");

        CHAT_MESSAGE = section.getString("message").toLowerCase();
    }

    @Override
    public double getProgress(SuperiorPlayer superiorPlayer) {
        Integer count = get(superiorPlayer);
        return count == null ? 0D : (double) count / AMOUNT_OF_TIMES;
    }

    @Override
    public void onComplete(SuperiorPlayer superiorPlayer) {
        // There's nothing special to do here, so I will just clear data from the user.
        clearData(superiorPlayer);
    }

    @Override
    public void onCompleteFail(SuperiorPlayer superiorPlayer) {
        // Empty
    }

}
```

At this point, you can start listening to your events and alter the data when necessary. There's only one important thing to do, and it's to call the rewardMission() method. Furthermore, it's important to implement the saveProgress() and loadProgress() methods, so data will be saved on restarts.

The final product after adding a listener & registering it:

```java
public final class ChatMission extends Mission<Integer> implements Listener {

    private int AMOUNT_OF_TIMES = 0;
    private String CHAT_MESSAGE = "";

    @Override
    public void load(JavaPlugin plugin, ConfigurationSection section) throws MissionLoadException {
        if(!section.contains("times"))
            throw new MissionLoadException("Mission ChatMission must contain the \"times\" section!");

        if(!section.contains("message"))
            throw new MissionLoadException("Mission ChatMission must contain the \"message\" section!");

        AMOUNT_OF_TIMES = section.getInt("times");

        if(AMOUNT_OF_TIMES <= 0)
            throw new MissionLoadException("times must be a positive value.");

        CHAT_MESSAGE = section.getString("message").toLowerCase();

        Bukkit.getPluginManager().registerEvents(this, plugin);
    }

    @Override
    public double getProgress(SuperiorPlayer superiorPlayer) {
        Integer count = get(superiorPlayer);
        return count == null ? 0D : (double) count / AMOUNT_OF_TIMES;
    }

    @Override
    public void onComplete(SuperiorPlayer superiorPlayer) {
        // There's nothing special to do here, so I will just clear data from the user.
        clearData(superiorPlayer);
    }

    @Override
    public void onCompleteFail(SuperiorPlayer superiorPlayer) {
        // Empty
    }

    @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
    public void onPlayerChat(AsyncPlayerChatEvent e){
        SuperiorPlayer superiorPlayer = SuperiorSkyblockAPI.getPlayer(e.getPlayer());;

        // Checking if the tracked message is in the player's message.
        if(!e.getMessage().toLowerCase().contains(CHAT_MESSAGE))
            return;

        // Making sure that the player can actually complete the mission, so we don't track data for no reason.
        if(!SuperiorSkyblockAPI.getMissions().canCompleteNoProgress(superiorPlayer, this))
            return;

        // Increasing the counter by 1.
        Integer currentCount = get(superiorPlayer);
        insertData(superiorPlayer, currentCount == null ? 1 : currentCount + 1);

        /* Calling the reward method with the following paramters:
            mission - this instance.
            superiorPlayer - our player.
            boolean - should the plugin check for auto reward or not.
         */
        SuperiorSkyblockAPI.getMissions().rewardMission(this, superiorPlayer, true);
    }

}
```

&#x20;More complicated missions will require more data to be tracked and more listeners.\
&#x20;Moreoever, I didn't implement the saveProgress() and loadProgress(), and didn't implement other useful methods that you might want to use.\
I recommend going through the Mission object before creating your own jar and see all the things it provides. If you want to see how the default mission jars are implemented, check out their [github repository](https://github.com/OmerBenGera/SuperiorSkyblock2-Missions/)!


# BlocksMissions

The BlocksMissions jar handles tracking of placement and breaking of blocks in islands. Using this jar, you can give players missions that they need to break certain blocks or place them. The mission checks when players place blocks or break blocks, and track data accordingly.

## Required Sections

### required-blocks

List of blocks that are required to complete the mission.

Example for usage of this section can be found below.

#### Section Type

Configuration Section

## Optional Sections

### only-natural-blocks

Whether to track only natural blocks when players break them.

#### Section Type

Boolean (true/false)

### blocks-placement

When set to true, the mission will track placement of blocks instead of breaking them.

#### Section Type

Boolean (true/false)

### blocks-replace

When set to true, players will be allowed to replace the blocks and gain progress for the misson.

{% hint style="info" %}
This only affects the mission if blocks-placement is set to true.
{% endhint %}

#### Section Type

Boolean (true/false)

## Example

```yaml
# The mission file to use
mission-file: BlocksMissions

# Whether the mission should be given when completing all requirements.
auto-reward: true

# Should block counts of players get reset when completing the mission?
reset-after-finish: true

# Whether only naturally spawned blocks should be counted towards the mission or not.
only-natural-blocks: true

# Rewards given when completing the mission.
rewards:
  commands:
    - 'eco give %player% 1000'
    - 'is admin msg %player% &e&lMiner | &7Successfully finished the mission Miner I!'
    - 'is admin msg %player% &e&lMiner | &7Now that you are familiar with generators, mine some iron.'
    - 'is admin msg %player% &e&lMiner | &7&oFor more information about the next mission, checkout /is missions'

# List of all required blocks must be gathered in order to complete the mission.
required-blocks:
  '1':
    types:
      - 'STONE'
    amount: 48
  '2':
    types:
      - 'COAL_ORE'
    amount: 16

# Icons used in the menus.
icons:
  not-completed:
    type: PAPER
    name: '&aMiner I'
    lore:
      - '&7Mine x48 cobblestone and x16 coal ore.'
      - ''
      - '&6Required Blocks:'
      - '&8 - &7x48 Cobblestone'
      - '&8 - &7x16 Coal Ore'
      - ''
      - '&6Rewards:'
      - '&8 - &7$1,000'
      - '&8 - &7Generator Upgrade'
      - ''
      - '&6Cobblestone Mined: &7{value_stone}/48'
      - '&6Coal Ore Mined: &7{value_coal_ore}/16'
      - '&6Progress: &7{0}%'
      - '&c&l ✘ &7Not Completed'
  can-complete:
    type: PAPER
    name: '&aMiner I'
    lore:
      - '&7Mine x48 cobblestone and x16 coal ore.'
      - ''
      - '&6Required Blocks:'
      - '&8 - &7x48 Cobblestone'
      - '&8 - &7x16 Coal Ore'
      - ''
      - '&6Rewards:'
      - '&8 - &7$1,000'
      - '&8 - &7Generator Upgrade'
      - ''
      - '&6Cobblestone Mined: &748/48'
      - '&6Coal Ore Mined: &716/16'
      - '&6Progress: &7100%'
      - '&a&l ✔ &7Click to redeem your reward.'
    enchants:
      DURABILITY: 1
    flags:
      - HIDE_ENCHANTS
  completed:
    type: MAP
    name: '&aMiner I'
    lore:
      - '&7Mine x48 cobblestone and x16 coal ore.'
      - ''
      - '&6Rewards:'
      - '&8 - &7$1,000'
      - '&8 - &7Generator Upgrade'
      - ''
      - '&6Cobblestone Mined: &748/48'
      - '&6Coal Ore Mined: &716/16'
      - '&6Progress: &7100%'
      - '&a&l ✔ &7Already Claimed.'
```


# BrewingMissions

The BrewingMissions jar handles tracking of brewing potions in islands. Using this jar, you can give players missions that they need to brew certain potions. The mission checks when players brew potions, and track data accordingly.

## Required Sections

### required-potions

List of potions that are required to complete the mission.

Example for usage of this section can be found below.

#### Section Type

Configuration Section

## Example

```yaml
# The mission file to use
mission-file: BrewingMissions

# Whether the mission should be given when completing all requirements.
auto-reward: true

# Should block counts of players get reset when completing the mission?
reset-after-finish: true

# Rewards given when completing the mission.
rewards:
  commands:
    - 'eco give %player% 1000'
    - 'is admin msg %player% &e&lBrewer | &7Successfully finished the mission Brewer I!'
    - 'is admin msg %player% &e&lBrewer | &7Now that you are familiar with the brewing stand, lets go advanced.'
    - 'is admin msg %player% &e&lBrewer | &7&oFor more information about the next mission, checkout /is missions'

# List of all required blocks must be gathered in order to complete the mission.
required-potions:
  '1':
    # Brew 1 potion of Speed II.
    potions:
      '1':
        type: SPEED
        upgraded: true
        extended: false
        splash: false
    amount: 1

# Icons used in the menus.
icons:
  not-completed:
    type: PAPER
    name: '&aBrewer I'
    lore:
      - '&7Brew x1 Speed II potion.'
      - ''
      - '&6Required Potions:'
      - '&8 - &7x1 Speed II'
      - ''
      - '&6Rewards:'
      - '&8 - &7$1,000'
      - ''
      - '&6Potions Brewed: &70/1'
      - '&6Progress: &7{0}%'
      - '&c&l ✘ &7Not Completed'
  can-complete:
    type: PAPER
    name: '&aBrewer I'
    lore:
      - '&7Brew x1 Speed II potion.'
      - ''
      - '&6Required Potions:'
      - '&8 - &7x1 Speed II'
      - ''
      - '&6Rewards:'
      - '&8 - &7$1,000'
      - ''
      - '&6Potions Brewed: &71/1'
      - '&6Progress: &7100%'
      - '&a&l ✔ &7Click to redeem your reward.'
    enchants:
      DURABILITY: 1
    flags:
      - HIDE_ENCHANTS
  completed:
    type: MAP
    name: '&aBrewer I'
    lore:
      - '&7Brew x1 Speed II potion.'
      - ''
      - '&6Rewards:'
      - '&8 - &7$1,000'
      - ''
      - '&6Potions Brewed: &71/1'
      - '&6Progress: &7100%'
      - '&a&l ✔ &7Already Claimed.'
```


# CraftingMissions

The CraftingMissions jar handles tracking of crafting items in islands. Using this jar, you can give players missions that they need to craft items in a crafting table. The mission checks when players craft items, and track data accordingly.

## Required Sections

### craftings

List of recipes that are required to complete the mission.

Example for usage of this section can be found below.

#### Section Type

Configuration Section

## Example

```yaml
# The mission file to use
mission-file: CraftingMissions

# Whether the mission should be given when completing all requirements.
auto-reward: true

# Rewards given when completing the mission.
rewards:
  commands:
    - 'eco give %player% 1000'
    - 'is admin msg %player% &e&lCrafter | &7Successfully finished the mission Crafter I!'
    - 'is admin msg %player% &e&lCrafter | &7Now that you are familiar with recipes, lets go advanced.'
    - 'is admin msg %player% &e&lCrafter | &7&oFor more information about the next mission, checkout /is missions'

# List of all required blocks must be gathered in order to complete the mission.
craftings:
  '1':
    type: 'GOLD_BLOCK'
    amount: 1

# Icons used in the menus.
icons:
  not-completed:
    type: PAPER
    name: '&aCrafter I'
    lore:
      - '&7Craft x1 Gold Block'
      - ''
      - '&6Required Craftings:'
      - '&8 - &7x1 Gold Block'
      - ''
      - '&6Rewards:'
      - '&8 - &7$1,000'
      - ''
      - '&6Gold Block Crafted: &7{value_gold_block}/1'
      - '&6Progress: &7{0}%'
      - '&c&l ✘ &7Not Completed'
  can-complete:
    type: PAPER
    name: '&aCrafter I'
    lore:
      - '&7Craft x1 Gold Block'
      - ''
      - '&6Required Craftings:'
      - '&8 - &7x1 Gold Block'
      - ''
      - '&6Rewards:'
      - '&8 - &7$1,000'
      - ''
      - '&6Gold Block Crafted: &71/1'
      - '&6Progress: &7100%'
      - '&a&l ✔ &7Click to redeem your reward.'
    enchants:
      DURABILITY: 1
    flags:
      - HIDE_ENCHANTS
  completed:
    type: MAP
    name: '&aCrafter I'
    lore:
      - '&7Craft x1 Gold Block'
      - ''
      - '&6Rewards:'
      - '&8 - &7$1,000'
      - ''
      - '&6Gold Block Crafted: &71/1'
      - '&6Progress: &7100%'
      - '&a&l ✔ &7Already Claimed.'
```


# EnchantingMissions

The EnchantingMissions jar handles tracking of enchanting items in islands. Using this jar, you can give players missions that they need to enchant certain items. The mission checks when players enchant items, and track data accordingly.

## Required Sections

### required-enchants

List of enchantments that are required to complete the mission.

Example for usage of this section can be found below.

#### Section Type

Configuration Section

## Optional Sections

### enchanted-placeholder

Placeholder that will be used in the item for a completed enchantment.

#### Section Type

String

#### Default Value

Yes

### not-enchanted-placeholder

Placeholder that will be used in the item for a not-completed enchantment.

#### Section Type

String

#### Default Value

Yes

## Example

```yaml
# The mission file to use
mission-file: EnchantingMissions

# Whether the mission should be given when completing all requirements.
auto-reward: true

# Rewards given when completing the mission.
rewards:
  commands:
    - 'eco give %player% 1000'
    - 'is admin msg %player% &e&lEnchanter | &7Successfully finished the mission Enchanter I!'
    - 'is admin msg %player% &e&lEnchanter | &7Now that you are familiar with enchantments, lets go advanced.'
    - 'is admin msg %player% &e&lEnchanter | &7&oFor more information about the next mission, checkout /is missions'

# List of all required blocks must be gathered in order to complete the mission.
required-enchants:
  '1':
    types:
      - 'DIAMOND_HELMET'
    enchants:
      PROTECTION_ENVIRONMENTAL: 4
    amount: 1
  '2':
    types:
      - 'DIAMOND_CHESTPLATE'
    enchants:
      PROTECTION_ENVIRONMENTAL: 4
    amount: 1
  '3':
    types:
      - 'DIAMOND_LEGGINGS'
    enchants:
      PROTECTION_ENVIRONMENTAL: 4
    amount: 1
  '4':
    types:
      - 'DIAMOND_BOOTS'
    enchants:
      PROTECTION_ENVIRONMENTAL: 4
    amount: 1

# Icons used in the menus.
icons:
  not-completed:
    type: PAPER
    name: '&aEnchanter I'
    lore:
      - '&7Enchant a full diamond armor with protection 4'
      - ''
      - '&6Required Enchantments:'
      - '&8 - &7x1 Diamond Helmet (Protection IV)'
      - '&8 - &7x1 Diamond Chestplate (Protection IV)'
      - '&8 - &7x1 Diamond Leggings (Protection IV)'
      - '&8 - &7x1 Diamond Boots (Protection IV)'
      - ''
      - '&6Rewards:'
      - '&8 - &7$1,000'
      - ''
      - '&6Diamond Helmet: &7{enchanted_diamond_helmet}'
      - '&6Diamond Chestplate: &7{enchanted_diamond_chestplate}'
      - '&6Diamond Leggings: &7{enchanted_diamond_leggings}'
      - '&6Diamond Boots: &7{enchanted_diamond_boots}'
      - '&6Progress: &7{0}%'
      - '&c&l ✘ &7Not Completed'
  can-complete:
    type: PAPER
    name: '&aEnchanter I'
    lore:
      - '&7Enchant a full diamond armor with protection 4'
      - ''
      - '&6Required Enchantments:'
      - '&8 - &7x1 Diamond Helmet (Protection IV)'
      - '&8 - &7x1 Diamond Chestplate (Protection IV)'
      - '&8 - &7x1 Diamond Leggings (Protection IV)'
      - '&8 - &7x1 Diamond Boots (Protection IV)'
      - ''
      - '&6Rewards:'
      - '&8 - &7$1,000'
      - ''
      - '&6Diamond Helmet: &7Yes'
      - '&6Diamond Chestplate: &7Yes'
      - '&6Diamond Leggings: &7Yes'
      - '&6Diamond Boots: &7Yes'
      - '&6Progress: &7100%'
      - '&a&l ✔ &7Click to redeem your reward.'
    enchants:
      DURABILITY: 1
    flags:
      - HIDE_ENCHANTS
  completed:
    type: MAP
    name: '&aEnchanter I'
    lore:
      - '&7Enchant a full diamond armor with protection 4'
      - ''
      - '&6Rewards:'
      - '&8 - &7$1,000'
      - ''
      - '&6Diamond Helmet: &7Yes'
      - '&6Diamond Chestplate: &7Yes'
      - '&6Diamond Leggings: &7Yes'
      - '&6Diamond Boots: &7Yes'
      - '&6Progress: &7100%'
      - '&a&l ✔ &7Already Claimed.'
```


# FarmingMissions

The FarmingMissions jar handles tracking of growth of crops in islands. Using this jar, you can give players missions that they need to plant crops. The mission checks when crops grow, and track data for the player that planted them accordingly.

## Required Sections

### required-plants

List of plants that are required to complete the mission.

This value can be one of the followings:

* BAMBOO
* BEETROOT
* CACTUS
* CARROT
* CHORUS\_FLOWER
* CHORUS\_PLANT
* COCOA
* MELON
* POTATO
* PUMPKIN
* SUGAR\_CANE
* SWEET\_BERRY\_BUSH
* WHEAT

Any other blocks may work - make sure you write the exact same material name of the block.

#### Section Type

Configuration Section

## Example

```yaml
# The mission file to use
mission-file: FarmingMissions

# Whether the mission should be given when completing all requirements.
auto-reward: true

# Should block counts of players get reset when completing the mission?
reset-after-finish: true

# Rewards given when completing the mission.
rewards:
  items:
    '1':
      type: BEETROOT_SEEDS
      amount: 1
    '2':
      type: PUMPKIN_SEEDS
      amount: 1
    '3':
      type: MELON_SEEDS
      amount: 1
  commands:
    - 'eco give %player% 2500'
    - 'is admin msg %player% &e&lFarmer | &7Successfully finished the mission Farmer I!'

# List of all required blocks must be gathered in order to complete the mission.
required-plants:
  '1':
    types:
      - 'CARROT'
    amount: 10
  '2':
    types:
      - 'POTATO'
    amount: 10
  '3':
    types:
      - 'WHEAT'
    amount: 10

# Icons used in the menus.
icons:
  not-completed:
    type: PAPER
    name: '&aFarmer I'
    lore:
      - '&7Plant a small farm.'
      - ''
      - '&6Required Plants:'
      - '&8 - &7x10 Carrots'
      - '&8 - &7x10 Potatoes'
      - '&8 - &7x10 Wheat'
      - ''
      - '&6Rewards:'
      - '&8 - &7x1 Beetroot Seed'
      - '&8 - &7x1 Pumpkin Seed'
      - '&8 - &7x1 Melon Seed'
      - '&8 - &7$2,500'
      - ''
      - '&6Grown Carrots: &7{value_carrots}/10'
      - '&6Grown Potatoes: &7{value_potatoes}/10'
      - '&6Grown Wheat: &7{value_wheat}/10'
      - '&6Progress: &7{0}%'
      - '&c&l ✘ &7Not Completed'
  can-complete:
    type: PAPER
    name: '&aFarmer I'
    lore:
      - '&7Plant a small farm.'
      - ''
      - '&6Required Plants:'
      - '&8 - &7x10 Carrots'
      - '&8 - &7x10 Potatoes'
      - '&8 - &7x10 Wheat'
      - ''
      - '&6Rewards:'
      - '&8 - &7x1 Beetroot Seed'
      - '&8 - &7x1 Pumpkin Seed'
      - '&8 - &7x1 Melon Seed'
      - '&8 - &7$2,500'
      - ''
      - '&6Grown Carrots: &710/10'
      - '&6Grown Potatoes: &710/10'
      - '&6Grown Wheat: &710/10'
      - '&6Progress: &7100%'
      - '&a&l ✔ &7Click to redeem your reward.'
    enchants:
      DURABILITY: 1
    flags:
      - HIDE_ENCHANTS
  completed:
    type: MAP
    name: '&aFarmer I'
    lore:
      - '&7Plant a small farm.'
      - ''
      - '&6Rewards:'
      - '&8 - &7x1 Beetroot Seed'
      - '&8 - &7x1 Pumpkin Seed'
      - '&8 - &7x1 Melon Seed'
      - '&8 - &7$2,500'
      - ''
      - '&6Grown Carrots: &710/10'
      - '&6Grown Potatoes: &710/10'
      - '&6Grown Wheat: &710/10'
      - '&6Progress: &7100%'
      - '&a&l ✔ &7Already Claimed.'
```




---

[Next Page](/llms-full.txt/1)

