# Home

![](https://i.imgur.com/FNsD4h0.png)

## How to buy BattlePass?

You can purchase [BattlePass here](https://advancedplugins.net/item/BattlePass.11?ref=wiki)

## Summary

BattlePass is a plugin, enabling you to offer a practical solution to keep your players active by allowing them to gain experience and rewards for completing tasks! *PS: We now offer PlaceholderAPI support, check the quests.*

If you need something that's not on our wiki, contact us on Discord[ here.](https://advancedplugins.net/discord)

<figure><img src="https://957189450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVKgJtPKw7gQhR_Osin%2Fuploads%2FitjkXKrk40IzG8ZPfjUZ%2Fimage.gif?alt=media&amp;token=811d96bd-7b07-4ffc-b7fd-ef1c390a195a" alt=""><figcaption><p><a href="https://mintservers.com/?utm_source=gitbook_battlepass&#x26;utm_medium=banner&#x26;utm_content=gitbook"><strong>Sponsored by MintServers. AdvancedPlugins.net integration &#x26; auto updates. Unlimited RAM plan for only $9.99!</strong></a></p></figcaption></figure>


# Immersive BattlePass UI \[NEW]

Our immersive BattlePass UI designed to increase player retention and interest.

<figure><img src="https://i.imgur.com/ukqaRTQ.gif" alt=""><figcaption></figcaption></figure>

**Redesigned** Main, Rewards, Quest Overview, Daily Quests and Weekly Quests menus

* **New graphics** and UIs to create a more immersive experience
* **New Chat BattlePass Icon**
* **New progress bar** for completing quests

### <mark style="color:red;">**View it on our website:**</mark> [**https://advancedplugins.net/item/BattlePass-UI.110**](https://advancedplugins.net/item/BattlePass-UI.110)

### **How does this work?**

\
This uses ItemsAdder or Oraxen plugins to apply custom textures to BattlePass menus. This is as simple as just installing one of those plugins, adding this pack and custom BattlePass configuration - that's it!

<figure><img src="https://i.imgur.com/Ww60cnG.gif" alt=""><figcaption></figcaption></figure>

Complete guide on how to install with those plugins is included within the pack files.\
\
**Full installation support is available for customers of this pack on our official AdvancedPlugins discord server, any questions or problems will be answered there.**


# Creating Quests

## Using in-game editor (easier method)

You use in-game editor you need to use command `/bpa editor`. In menu you need to choose category which you want edit. After that you can edit existing quest or create a new quest.

## By editing `.yml` files

To create or edit quest go to `plugins/BattlePass/quests` folder and open file with category which you want to edit. There you can edit quest which already exists or create a new quest by adding it to `quests` section using this template (if you don't need certain option, just remove line with it):

```yaml
10: # UNIQUE quest ID
    name: "My Quest" # Name of your quest
    type: "block-break" # Check "Quest Types"
    variable: "iron_ore" #Check "Setting up and using Variables"
    points: 5 # Number of points for completing quest
    required-progress: 10 # Required progress to complete quest
    exclusive: "free" # "free" if quest is for everyone or "premium" if is only for players with premium pass
    special-progress: [] # Check "Special Cases Progress"
    complete-commands:  # Commands executed after completing quest
        - "give %player% coal 1" # It will give 1 coal to player for completing this quest :)
    whitelisted-world: []  # Worlds where player can complete quest (or empty when all worlds are allowed)
    blacklisted-worlds: [] # Worlds where player can't complete quest
    whitelisted-regions: [] # WorldGuard regions where player can complete quest (or empty when all regions are allowed)
    blacklisted-regions: [] # WorldGuard regions where player can't complete quest 
    item: # Icon configuration
        material: "diamond" # https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html
        name: "&6Week X &7| &eMy Quest" # Name of item
        lore: # Item description
            - "&6Break 10 iron ores"
            - "&e%total_progress%&7/&e%required_progress%"
        item-flags: [] # https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/inventory/ItemFlag.html
        enchants: # List of enchantments
            - "PROTECTION:4"
        customModelData: 0 # Custom Model Data of your item (for resource packs)
        amount: 1 # Item amount
        nbt: "" # Custom NBT text used like in /give command. Example: "diamond[unbreakable={}]" will add Unbreakable modification to this item
```

### Icon placeholders

```
%info% - Information about current step
%step% - Current step
%steps% - Number of steps in this quest
%total_progress% - Progress (number)
%required_progress% - Required progress (number)
%percentage_progress% - Progress (percent)
%progress_bar% - Progress (bar)
```


# Multi-Step quests

Learn how to create multiple step quests!

```yaml
10: # Multiple step quest
    name: 'Week 1 - Advanced Miner'
    steps:
      1:
        type: block-break
        variable: coal_ore
        required-progress: 10
        points: 0
        info:
          - "&7Mine &e10 coal ores"
      2:
        type: block-break
        variable: iron_ore
        required-progress: 10
        points: 5
        info:
          - "&7Mine &e10 iron ores"
      3:
        type: block-break
        variable: diamond_ore
        required-progress: 10
        points: 25
        info:
          - "&7Mine &e10 diamond ores"
    item:
      material: golden_pickaxe:0
      name: '&eAdvanced Miner &7(&e%step%&7/&6%steps%&7)'
      lore:
        - '&7Mine various ores'
        - '%info%'
        - ''
        - '&7Progress &e%total_progress%&7/&e%required_progress%'
```

This quest has 3 steps:

* Mine 10 coal ores (no rewards)
* Mine 10 iron ores (gives 5 points)
* Mine 10 diamond ores (gives 25 points)

After completing all 3 steps, the quest will complete.

### How to create a quest with multiple steps

As in the example, create a section `steps` and add quest parameters to each step section as desired.

### Info parameter

Each step can contain a list of information which you can use inside the quest icon (`%info%`).

### Icon placeholders related to steps system

* `%step%` - current step
* `%steps%` - number of steps
* `%info%` - information from step `info` parameter

### Global quest parameters

Some values like type, required-progress, whitelist, blacklist etc. can be used globally by adding them to the quest section instead of the step section.

Example:

```yaml
yamlCopy10: # Multiple step quest
    name: 'Week 1 - Advanced Miner'
    required-progress: 10
    points: 5
    steps:
      1:
        type: block-break
        variable: coal_ore
        info:
          - "&7Mine &e10 coal ores"
      2:
        type: block-break
        variable: iron_ore
        info:
          - "&7Mine &e10 iron ores"
      3:
        type: block-break
        variable: diamond_ore
        info:
          - "&7Mine &e10 diamond ores"
```

In this example, all steps require 10 progress and give 5 points (per step).


# Special Cases Progress

Define special cases progress multipliers, e.g. when you want a `kill-mob` action to give a different number of progress points depending on the mob, or mining ores.

Better, newer approach for special progress -> [Check](https://wiki.advancedplugins.net/actions/setting-up-and-using-variables)

### Syntax:

```yaml
special-progress:
  - "VARIABLE MULTIPLIER"
```

### Example:

```yaml
type: block-break
variable: coal_ore OR diamond_ore
special-progress:
  - "diamond_ore 5" # Diamond ore will give 5 progress instead of 1
```


# Daily Quests Difficulty

Sometimes we want to make that daily quests have same difficulty every day. I.e. we want to make that daily quests always have 1 hard quest, 3 medium quests and 5 easy quests. It's now possible by using 'difficulty' property.

## Setting quest's difficulty

Firstly, we need to set difficulty of all daily quests. You can set it using in-game editor or by adding `difficulty` property to every daily quest in server files.

Difficulty name can be anything. It can be just one word, or it can be entire sentence with colors, but you need to make sure that quests with same difficulty has same difficulty property.

**Example configuration**

```yaml
  6: # Quest id
    type: throw-projectile
    variable: none
    name: 'Throw and Throw'
    required-progress: 200
    points: 10
    difficulty: medium # <-- Difficulty
    item:
      material: snowball
      name: '&eBaller'
      lore:
        - '&7To complete this quest, you must'
        - '&7throw/shoot 200 projectiles.'
        - '&7Difficulty: &e%difficulty%' # <-- You can also show difficulty in quest's description using %difficulty% placeholder
        - ''
        - '&7(&a%percentage_progress%&7)'
```

## Enabling & Setting strategy

Now we need to configure strategy in `settings.yml`

```yaml
daily-quest-difficulty:
  enabled: true
  strategy:
    easy: 5
    medium: 3
    hard: 1
```

As I said, name od difficulty can be anything, so you can even add `&4&lImpossible Quest` difficulty (sentence with colors)

{% hint style="info" %}
You can also configure i.e. 1 hard quest and 4 random quests by setting:

```yaml
# ...
strategy:
    # ...
    hard: 1
```

and

```yaml
current-season:
    # ...
    daily-quest-amount: 5
    # ...
```

{% endhint %}

```yaml
# ...
strategy:
    # ...
    "&4&lImpossible Quest": 1
```

## Configuring permanent quests

Sometimes, we want to make that one or more daily quests are always available. You can achieve that by adding ids of these quests to `permanent-daily-quest-ids`. Example:

```yaml
permanent-daily-quest-ids: ['1', '3', '5']
```

In this example, daily quests with id 1,3 and 5 will be always available


# Events

You can also create event quests. They have own menu and are available in certain period of time. You can create them same as new week (in `quests` folder), but you need to change name to template `event-<id>-quests.yml` (Replace `<id>` with id of your event i.e. `easter`). Also, you need to add this configuration:

```yaml
category:
  start: # Start date
    date: "14/04/2025"
    time: "10:00"
  end: # End date
    date: "27/04/2025"
    time: "22:00"
  name: "Easter Quests" # Name
  required-permission: "" # Required permission
  required-completed: [] # Required completed categories i.e. ["week-1, event-xyz"] requires to complete 1st week & XYZ event before accessing this event
  show-without-permission: true # Show event even if player doesn't have required permission
  see-quests-when-not-active: true # Allow players to see event quests when event isn't active
  item: # Event display icon
    material: "EGG"
    amount: 1
    name: "&6Easter Quests"
    lore:
      - "&eSpecial quests for easter event"
      - "&e14/04/2025 - 27/04/2025"
      - ""
      - "%status%" # %status% will be replaced with messages from lang file: Starts in ..., Ends in..., Ended, No permission
```


# Boosters

Boosters system allows adding booster for certain amount of time by admin. Booster can boost progress, points or rewards. It has a lot of possible areas where it affects.

### **Bungee Compatibility**

To make boosters work in bungee network, just set `bungee-fix: true` in `settings.yml`. Boosters will refresh every `auto-save-interval` from `settings.yml`

### New Commands

```
/bpa boosters add <player/all> <PROGRESS/POINTS/REWARDS> <percent> <hours> <affects> - Adds booster
/bpa boosters clear <player/all> - Removes boosters

/bp boosters - List of all active boosters
```

* hours can be decimal. I.e. 0.5 means 30 minutes

### **Possible "affects" arg**

```
Possible cases (split with ,): [PROGRESS/POINTS]
- all
- daily
- week
- week-W
- daily-Q
- week-W-Q

W - ID of week
Q - ID of quest

Example: week-1,week-2-2,daily
Booster will affect quests from week 1, quest with ID 2 from week 2 and all daily quests

Possible cases (split with ,): [REWARDS]
- all
- reward-R
- tier-T

R - ID of reward
T - ID of tier

Example: tier-1,reward-2,reward-4
Booster will affect rewards with ID 2 and 4
```

### %booster% arg in reward's variables

To make boosters work in rewards, we need to use new placeholder - `%booster%`

Example:

```
  variables:
    value: "(2 * %tier%) * (1 + (%booster% / 100))"
```

### Quest ID in menu

When `menu-show-id: true`, players with permission `battlepass.debug.id` will see quest's ID in battlepass menu

### Boosters strategy

Boosters have 3 different strategies. It's important when player has more than 1 active booster at once

`boosters-strategy` in `settings.yml`

```
# SUM - If player has multiple boosters, plugin will sum them
# Example:
# - Server booster +10%
# - Player booster +7%
# - Player booster +5%
# Final booster: 10 + 7 + 5 = 22%
#
# SUM_DIFFERENT - If player has multiple boosters, highest server booster will be added to the highest player booster
# Example:
# - Server booster +10%
# - Player booster +7%
# - Player booster +5%
# Final booster: 10 + 7 = 17%
#
# HIGHEST - If player has multiple boosters, plugin will use the highest booster
# Example:
# - Server booster +10%
# - Player booster +7%
# - Player booster +5%
# Final booster: 10%
```

### Permission Boosters

You can configure "permission boosters" in `plugins/BattlePass/settings.yml` in `permission-boosters` section.

```yaml
# Permission based boosters
# Players with permission `battlepass.booster.<booster-id>` will get the booster
# IMPORTANT: This boosters work only for ONLINE players.
permission-boosters:
    "extra25": #  Permission 'battlepass.booster.extra25'
        percent: 25.0
        affects: all
        type: PROGRESS
```


# Menu Actions

BattlePass is powered in a lot of places by menu actions. Be aware that options like the next page may only be available in menus. The same goes for other dependent options.&#x20;

## Menu Action

The menu action can be used to open a menu for a player anywhere or if they have a menu open, go to the previous or next page.

The menu action also supports conditions. `=` is used to represent something is the same, `!` to represent when something is different.\
\
Additionally, instead of using the menu name, you can also use `close` to close their currently open menu.\
&#x20;Format: `[menu](condition) {menu-name}`\
&#x20;Examples:

```
actions:
  - '[menu](page = 1) {portal}' # If the page is 1, take them to the portal page
  - '[menu](page ! 1) {previous-page}' # If their page is not 1, take them to the previous page
  - '[menu] {next-page}' # Conditions are not required
  - '[menu] {close}' # Closes their currently opened menu
```

## Message Action

The message action is simple and can be used to send a message to a player.\
Where appropriate, you can use the %tier% placeholder such as in the default config.\
&#x20;Format: `[message] {message}`\
&#x20;Example:\
&#x20;![](https://zak.pink/2020/08/Thin-Hairstreak-8604.jpg)

## Sound Action

This will play a sound for a player. You can find a list of sounds for your version by googling Minecraft sound enum.\
\
You can optionally specify the volume and pitch of the sound (it doesn't work for all due to the way Minecraft works).\
&#x20;Format: `[sound]{sound:volume:pitch}` where you can remove volume/or pitch.\
&#x20;Examples:

```
actions:
  - '[sound] {BLOCK_ANVIL_USE}'
  - '[sound] {BLOCK_ANVIL_USE:2}'
  - '[sound] {DOOR_CLOSE:3:2}'
```

## Title/Subtitle Action

This will execute a Title or Subtitle to the player. You can use %player% to use the player's name.\
Format: `[title] {message}`\
&#x20;             `[subtitle] {message}`\
&#x20;Examples:

```
actions:
  - '[title] {Hello World!}'
  - '[subtitle] {Hello %player%}'
```

## Command Action (Since v3.4)

This will execute a command as the player it's triggered for.\
&#x20;You can use %player% to use the player's name.\
&#x20;Format: `[command] {the command}`\
&#x20;Examples:

```
actions:
  - '[command] {bp menu rewards}'
  - '[command] {some-command %player%}'
```

## Console Command Action (Since v3.4)

This will execute a command **as the console**.\
You can use %player% to use the triggered player's name.\
&#x20;Format: `[console-command] {some console command}`\
&#x20;Examples:

```
actions:
  - '[console-command] {bc &c%player% did some thing. IDK what.}'
  - '[console-command] {lp user %player% parent add some-group server="skyblock"}'
```


# Commands

## /bp (/battlepass)

* `/bp help` -> Gives available battlepass commands.
* `/bp stats` -> Gives your BattlePass stats, set in the lang.yml.
* `/bp open <menu name>` -> Opens the specified menu.
* `/bp open week <week number>` -> Opens week menu of specified week.
* `/bp leaderboard` -> Opens leaderboard menu
* `/bp leaderboard tier` -> Shows tier leaderboard
* `/bp leaderboard quests` -> Shows quests leaderboard
* `/bp boosters` -> Shows current boosters

## /bpa (/battlepassadmin)

* `/bpa reload` -> Reloads all the reloadable files.
* `/bpa give balance <player> <amount>` - Give a player internal balance (used with internal method on reward-excess-points).
* `/bpa giveall balance <amount>` - Give internal balance to all players (used with internal method on reward-excess-points).
* `/bpa remove balance <player> <amount>` - Takes away a player's internal balance (used with internal method on reward-excess-points).
* `/bpa set balance <player> <amount>` - Sets a player's internal balance (used with internal method on reward-excess-points).
* `/bpa set pass <player> <pass type>` -> Sets a players pass type.
* `/bpa set pass online/all <pass type>` -> Mass set lots of players' pass types.
* `/bpa set points <player> <points>` -> Set a players points.
* `/bpa give points <player> <points>` -> Give a player points.
* `/bpa giveall points <points>` -> Give points to all players.
* `/bpa delete user <player>` -> Delete all data of a user.
* `/bpa quest ids <week>` -> List all of the weeks quest ids and their names.
* `/bpa daily quest ids` -> List all of the daily quest ids and their names.
* `/bpa reset quest <player> <week> <id>` -> Resets a specific quest of a player.
* `/bpa sync daily quests` -> Sync daily quest across bungee network
* `/bpa progress quest <player> <week> <quest id> <amount>` -> Progress a specific quest of a player.
* `/bpa progress daily quest <player> <quest id> <amount>` -> Progress a specific quest of a player.
* `/bpa refresh daily quests` -> Refresh daily quests.
* `/bpa new season` -> Resets user tiers, pending rewards and points.
* `/bpa material <block/item>` -> Get the config name of the item you're holding or block you're looking at.
* `/bpa bypass locked quests <player>` -> Allows the player to bypass week locks and complete quests anyway.
* `/bpa editor` - Open quests editor
* `/bpa boosters add <player/all> <PROGRESS/POINTS/REWARDS> <percent> <hours> <affects>` - Adds booster ([Read More](/features/boosters))
* `/bpa boosters clear <player/all>` - Removes boosters

## /bpd (/battlepassdebug)

* `/bpd start` - Starts debug logging until it is stopped.
* `/bpd stop` - Stops debug logging.
* `/bpd create` - Dumps a debug log including data for every online user.
* `/bpd create <player>` - Creates a debug log including data for the specified player only.
* `/bpd clear` - Clears the contents of the current debug logger.


# Permissions

## `battlepass.use`

Give access to all default commands (/bp)

## `battlepass.block`

Blocks player from completing quests (requires `enable-ban-permission` enabled in `settings.yml`)

## `battlepass.admin`

Gives access to all admin commands (/bpa)

## Pass permission

Set the premium pass permission in the premium.yml as follows. Make sure to remove the `#` to enable the required-permission configuration.

**Example:**

```yaml
name: 'Premium :)'
default-points-required: 100
required-permission: 'battlepass.premium'
```

It will disable `/bpa set pass` command and will give premium pass to all players with `battlepass.premium` permission


# PlaceholderAPI Placeholders

## `%battlepass_points%`

Gives the amount of points a player currently has.

## `%battlepass_points_formatted%`

Gives the formatted amount of points a player currently has.

## `%battlepass_balance%` or `%battlepass_currency%`

Gives the formatted amount of currency a player currently has.

## `%battlepass_balance_base%` or `%battlepass_currency_base%`

Gives the amount of currency a player currently has.

## `%battlepass_tier%`

Gives the current tier of the player.

## `%battlepass_pass_type%`

Gives the name of the pass the player currently has.

## `%battlepass_pass_id%` - Since 3.0.1

Gives the ID of the pass the player currently has (internal name).

## `%battlepass_completed_quests%` - Since 3.10

Displays the amount of quests a user has currently completed.

## `%battlepass_completed_quests_CATEGORY%` - Since 3.10

Displays the amount of quests a user has currently completed in a specific category. If in a menu where the %week% placeholder is available, it is sometimes possible to do `%battlepass_completed_quests_week-%week%%` to display quests done in that week.

## `%battlepass_quest_amount%` - Since 3.10

Gives the total amount of quests in the battlepass.

## `%battlepass_week%` - Since 3.10

Gives the current week of the battlepass

## `%battlepass_time_to_daily_reset%` - Since 3.10

Gives a formatted time until daily quests reset.

## `%battlepass_time_to_next_week%` - Since 3.10

Gives a formatted time until the next week unlocks.

## `%battlepass_time_to_season_end%` - Since 3.10

Gives a formatted time until the season ends.

## `%battlepass_next_tier_points_total_free%`

Gives the amount of points the user currently have for the next tier.

## `%battlepass_next_tier_points_required_free%`

Gives the amount of points the user needs in order to tier up.

## `%battlepass_next_tier_points_total_premium%`

Gives the amount of points the user currently have for the next tier. (premium pass)

## `%battlepass_next_tier_points_required_premium%`

Gives the amount of points the user needs in order to tier up. (premium pass)

## `%battlepass_has_unclaimed_rewards%`

Checks if player has any unclaimed rewards. Returns `yes` or `no`

## %battlepass\_has\_booster\_\<SERVER/PLAYER/ANY>*\<PROGRESS/POINTS/REWARDS/ANY>*\<PERCENT\*/ANY>\_\<AFFECTS\*/ANY>%

Check whether a booster is active

* PERCENT - Booster percent
* AFFECTS - Affects condition same as in booster command

Examples:

1. %battlepass\_has\_booster\_player\_any\_any\_week-1-2% - Returns `true` if player has any booster which affects exactly 2nd quest in 1st week.
2. %battlepass\_has\_booster\_player\_POINTS\_10\_all% - Returns `true` if player has points booster which adds 10% to all quests
3. %battlepass\_has\_booster\_SERVER\_ANY\_100\_ANY% - Returns `true` if server has any booster which adds 100%


# Custom Items/Heads In Menus and Rewards

Currently, there are 3 types of custom items which you can use in menus and rewards.

## Heads

### BattlePass supports both **base64** custom heads and **player names**.

To set custom heads in menus, it's as simple as setting correct material. Material format would be `head:<value>`, example with a player head:

```yaml
menu:
  4:
    item:
      material: "head:GC"
      name: '&eSeason 1 Battle Pass'
      lore:
        - '&7%pass_type% Battle Pass'
        - ''
        - '&7Week &f%week%'
        - ''
        - '&eStatistics'
        - '&f&l * &7Tier &f%tier%'
        - '&f&l * &7Points &f%points%&8/&f%required_points%'
```

Example with **base64** (custom head/skin):

```yaml
menu:
  '4':
    item:
      material: "head:ewogICJ0aW1lc3RhbXAiIDogMTYyMzA4MTY3Nzk3MSwKICAicHJvZmlsZUlkIiA6ICIzNDQzMzliMGZhMmI0ZDU2OGQ5MmM3NmI5NzgyNmExYSIsCiAgInByb2ZpbGVOYW1lIiA6ICJ0b2phcGlrYWN6dSIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9mZTVhMTBlOWJiODU4MjYzMDAyMjI1M2UyOTAwNmIxNTEyNTVkODQ3ODQ0ODc0ODFhYTczOGY4YTAzNzNiN2YzIgogICAgfQogIH0KfQ=="
      name: '&eSeason 1 Battle Pass'
      lore:
        - '&7%pass_type% Battle Pass'
        - ''
        - '&7Week &f%week%'
        - ''
        - '&eStatistics'
        - '&f&l * &7Tier &f%tier%'
        - '&f&l * &7Points &f%points%&8/&f%required_points%'
```

### Player's head in GUI

Since 3.12.5, you are able to shown the user which opened the gui head. The format for material is using PlaceholderAPI, and you must have the `Player` ecloud extension.

```yaml
menu:
  '4':
    item:
      material: "head:%player_name%"
      name: '&ePlayer Head'
```

Useful links:

* <https://mineskin.org> - Create base64 textures from custom player skins
* <https://minecraft-heads.com> - Database of custom skins

## Exact copy of item - Base64

If you want to make exact copy of item in your hand and use it in menu or as reward (useful for custom items), firstly use `/bpa material b64` command in your game. After that, click on output to copy B64 of this item. After that use it as material with `b64:` prefix. Example:

```yaml
material: "b64:rO0ABXNyABpvcmcuYnVra2l0LnV0aWwuaW8uV3JhcHBlcvJQR+zxEm8FAgABTAADbWFwdAAPTGphdmEvdXRpbC9NYXA7eHBzcgA1Y29tLmdvb2dsZS5jb21tb24uY29sbGVjdC5JbW11dGFibGVNYXAkU2VyaWFsaXplZEZvcm0AAAAAAAAAAAIAAkwABGtleXN0ABJMamF2YS9sYW5nL09iamVjdDtMAAZ2YWx1ZXNxAH4ABHhwdXIAE1tMamF2YS5sYW5nLk9iamVjdDuQzlifEHMpbAIAAHhwAAAABHQAAj09dAABdnQABHR5cGV0AARtZXRhdXEAfgAGAAAABHQAHm9yZy5idWtraXQuaW52ZW50b3J5Lkl0ZW1TdGFja3NyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAA9zdAALUExBWUVSX0hFQURzcQB+AABzcQB+AAN1cQB+AAYAAAAHcQB+AAh0AAltZXRhLXR5cGV0AAxkaXNwbGF5LW5hbWV0AARsb3JldAAIZW5jaGFudHN0AAlJdGVtRmxhZ3N0AAtza3VsbC1vd25lcnVxAH4ABgAAAAd0AAhJdGVtTWV0YXQABVNLVUxMdABNeyJ0ZXh0IjoiIiwiZXh0cmEiOlt7InRleHQiOiI6KSIsIml0YWxpYyI6ZmFsc2UsImNvbG9yIjoiZ29sZCIsImJvbGQiOnRydWV9XX1zcgATamF2YS51dGlsLkFycmF5TGlzdHiB0h2Zx2GdAwABSQAEc2l6ZXhwAAAAA3cEAAAAA3QAfnsidGV4dCI6IiIsImV4dHJhIjpbeyJ0ZXh0IjoiWWVhaCwgcmVhZGluZyB3aWtpIGlzIGltcG9ydGFudCIsIml0YWxpYyI6ZmFsc2UsInVuZGVybGluZWQiOnRydWUsImNvbG9yIjoieWVsbG93IiwiYm9sZCI6dHJ1ZX1dfXQAAiIidABBeyJ0ZXh0IjoiIiwiZXh0cmEiOlt7InRleHQiOiJ+IEJhdHRsZVBhc3MgRGV2IiwiY29sb3IiOiJ3aGl0ZSJ9XX14c3IAN2NvbS5nb29nbGUuY29tbW9uLmNvbGxlY3QuSW1tdXRhYmxlQmlNYXAkU2VyaWFsaXplZEZvcm0AAAAAAAAAAAIAAHhxAH4AA3VxAH4ABgAAAAF0ABJtaW5lY3JhZnQ6aW5maW5pdHl1cQB+AAYAAAABc3EAfgAOAAAAAXNxAH4AHwAAAAF3BAAAAAF0AA1ISURFX0VOQ0hBTlRTeHNxAH4AAHNxAH4AA3VxAH4ABgAAAARxAH4ACHQACHVuaXF1ZUlkdAAEbmFtZXQACnByb3BlcnRpZXN1cQB+AAYAAAAEdAANUGxheWVyUHJvZmlsZXQAJDczOGU5Zjg5LWNmZjktNDQzNS1hYTVmLTQ5ZjNhYWVkYTAwNHQABktQR19UQnNxAH4AHwAAAAF3BAAAAAFzcgAXamF2YS51dGlsLkxpbmtlZEhhc2hNYXA0wE5cEGzA+wIAAVoAC2FjY2Vzc09yZGVyeHIAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAADHcIAAAAEAAAAANxAH4AMHQACHRleHR1cmVzdAAFdmFsdWV0AlRld29nSUNKMGFXMWxjM1JoYlhBaUlEb2dNVGN5T0RjMU5USTNNemN6TkN3S0lDQWljSEp2Wm1sc1pVbGtJaUE2SUNJM016aGxPV1k0T1dObVpqazBORE0xWVdFMVpqUTVaak5oWVdWa1lUQXdOQ0lzQ2lBZ0luQnliMlpwYkdWT1lXMWxJaUE2SUNKTFVFZGZWRUlpTEFvZ0lDSnphV2R1WVhSMWNtVlNaWEYxYVhKbFpDSWdPaUIwY25WbExBb2dJQ0owWlhoMGRYSmxjeUlnT2lCN0NpQWdJQ0FpVTB0SlRpSWdPaUI3Q2lBZ0lDQWdJQ0oxY213aUlEb2dJbWgwZEhBNkx5OTBaWGgwZFhKbGN5NXRhVzVsWTNKaFpuUXVibVYwTDNSbGVIUjFjbVV2T0Roa1pqZ3lZelpsTTJZeE9USTVaRFZqTWpZeVl6WmlNRGxoWVdaaE16RTRNVGt4TW1WaU56UTJNbU5pWXpreU16SmtNRFZpWWpjeU5tUmlNakl4WmlJS0lDQWdJSDBzQ2lBZ0lDQWlRMEZRUlNJZ09pQjdDaUFnSUNBZ0lDSjFjbXdpSURvZ0ltaDBkSEE2THk5MFpYaDBkWEpsY3k1dGFXNWxZM0poWm5RdWJtVjBMM1JsZUhSMWNtVXZNak0wTUdNd1pUQXpaR1F5TkdFeE1XSXhOV0U0WWpNell6SmhOMlU1WlRNeVlXSmlNakExTVdJeU5EZ3haREJpWVRka1pXWmtOak0xWTJFM1lUa3pNeUlLSUNBZ0lIMEtJQ0I5Q24wPXQACXNpZ25hdHVyZXQCrFNzNmxxb2RDYmF1VWEzQVVoaXhXQkZzMVBWcVk5QXdlS1RiSnhXcTVabnF5TVlXYlYyQjZwUnpZTEs3UkR2M3NJMHhSSlZObGhHWWhpWVYvQnJCRjYvQjFnWDNVZ3htMVVZYnBvMHp6SzMrMDR4dVNLZHZjZVcrOUp3V2dZblFQR2NPeEcxMW1NYy9RM0pCSkJZV0FLVlVpbDJQSk0zbGxtQzhSQkQ2bGJyRFYyVXJEeUltMnZDVm5aamh1OGJFVCtFZDJWdFpTcmkvTmxXNzNnRGVxbEVMSERndlhiNlJXb05DOUFyMEd2U001N0xnVTFaampwbGx6WHFXbUptRDhDbTNHVFNSZ1VmQ29qam9UYzBTVTl1eGJyVnM3SEhpbGx0ZEhuT0RFQjNYaXoycmYxcnkxQTFYUnlDTXZaTE44TElTSEVJSU5KRlk5ZzMyNDExTTkvNUpsRzNVbXFwQVo4cEFVWE9ITHVuYkhvTkM0eENXNTE1UndEUG56aHlwcW9laElYWnZxR05rN1FZZU5obXNvWXZQR0xJWWlLNDVEcDZFREJwZGdoRlkwaVkzeGQ3S2h2akMzQXliekpBeUxjbGdzZG82TERCM05WTHB6ZithYUlrb1hHaWxCdEVtV1R5SmRrajVLSnRGdHlIY2ZlVUVmMzFhTTl4d2ROUUMwNWJtbDlPNWxyOXQvekZ2SUNJMzNlN1MxMEdMK1p3c29uMWFKMWV6QUgzTGJLL2ZKVkhCNEFvdEhPK3IzOW10cGtPU3JIZkR4NDlEMFNBcDdmUTlxc3pQU3ppc1ZOc1VKQnRRS1ZmaDFyc3hjajRUdVA1cm5VaUdvTWxDQnE1amUwN3hEZXhzOUhWODF3UWs1bTJMRnFnYWNUN04wZjVWMHFRQktLeGlrdS9vPXgAeA=="
```

## ItemsAdder

To use item from itemsadder, set material as id of that item with `itemsadder:` prefix.

```yaml
material: "itemsadder:my_item"
```


# Implementing API

The API must be implemented through a local JAR file at the moment. There is no external repository. Here are two ways of doing so:

## Implementing using Gradle:

```gradle
dependencies {
    compileOnly files('path/to/file.jar')
}
```

## Implementing using Maven

```xml
<dependencies>
    <dependency>
        <groupId>io.github.battlepass</groupId>
        <artifactId>BattlePass</artifactId>
        <version>LATEST</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/path/to/file.jar</systemPath>
    </dependency>
</dependencies>
```

***

You may also want to read:

* [Developer API - Creating Your Own Quest Types](/developer-api/developer-api-creating-your-own-quest-types)
* [Developer API - General API Methods](/developer-api/developer-api-general-api-methods)


# Creating Your Own Quest Types

With BattlePass v4, creating your own quest types is quick and simple but there are still a few steps.

1\) Make sure you depend on BattlePass (or soft depend). If you're soft depending, remember to check if the plugin is enabled.

2\) Make a class for your quest and have it extend `ExternalActionContainer`. Use your IDE to automatically implement the required constructor.

3\) Do whatever you wish and use the execute method to actually trigger the event with all the values with wish.

Use this example to explain the rest (most should be explained just by viewing available inputs anyway):

**Don't forget to change `your_plugin_name` and `quest_name`**

```java
public class BlockBreakQuest extends ExternalActionContainer {

    public BlockBreakQuest(JavaPlugin plugin) {
        super(plugin, "your_plugin_name");
    }

    @EventHandler(ignoreCancelled = true)
    public void onBlockBreak(BlockBreakEvent event) {
        Player player = event.getPlayer();
        Block block = event.getBlock();

        super.executionBuilder("quest_name") // Create execution
                .player(player) // Set player
                .root(block) // Set root
                .progressSingle() // Add 1 progress
                .buildAndExecute();  // Execute
    }
}

```

\*\*This example will create quest with type `your_plugin_name_quest_name` \*\*

4\) Now you need to actually register the quest. To do this, you first need to get the quest registry as such:

```java
ActionRegistry actionRegistry = BattlePlugin.getPlugin().getActionRegistry();
```

5\) Now, you can use the `quest` method to register the quest. If it depends on an external plugin, use the `hook` method (checks if the plugin is enabled).

Internal:

```java
actionRegistry.quest(BlockBreakQuest::new);
```

External:

```java
actionRegistry.hook("pluginname", BlockBreakQuest::new);
```

## Useful `ActionExecutionBuilder` methods

* `player(Player player)` - Set player
* `overrideUpdate()` - Set progress to override entire progress
* `canBeAsync()` - Execute asynchronously (don't use when root/subroot uses blocks,items or entities)

***

* `root(String root)` - Set root to string
* `root(Block root)` - Set root to block
* `root(ItemStack root)` - Set root to itemstack
* `root(Entity root)` - Set root to entity
* `root(Material root)` - Set root to material
* `root(Predicate<Object> root)` - Manually create root checking method which takes String, ItemStack, Entity or Material as parameter and returns true if root is correct or false.

***

* `subRoot(String key, String value)` - Add subroot with string
* `subRoot(String key, Material value)` - Add subroot with material
* `subRoot(String key, ItemStack value)` - Add subroot with itemstack
* `subRoot(String key, Block value)` - Add subroot with block
* `subRoot(String key, Entity value)` - Add subroot with entity
* `subRoot(String key, Predicate<Object> value)` - Manually create subroot checking method which takes String, ItemStack, Entity or Material as parameter and returns true if root is correct or false.
* `subRoot(ItemStack itemStack)` - Add `item` subroot with itemstack

***

* `progressSingle()` - Add 1 progress
* `progress(BigInteger progress)` - Add progress
* `progress(int progress)` - Add progress
* `progress(double progress)` - Add progress


# General API Methods

`BattlePlugin.getPlugin().getActionRegistry()` -> Returns the ActionRegistry which should be used to register internal & external quests.

`CompletableFuture<Optional<User>> getUser(UUID)` -> Returns a completable future of a user (the optional will be present/not present based on whether they were in the cache)

`CompletableFuture<User> getOrLoadUser(UUID)` -> Returns a completable future of a user from the cache, loaded or created (since v3.13).

`Optional<Reward<?>> getReward(String id)` -> Returns a Reward if a command or Reward if an item wrapped in an optional. It will not be present if the reward could not be found.

`long currentWeek()` -> Returns the current week of the battlepass.

`void setPassId(User user, String passId)` -> Sets the pass type of the specified user and gives rewards if set to premium.

`Tier getTier(int tier, String passId)` -> Gets the Tier object for the specified tier and pass type.

`int getRequiredPoints(int tier, String passId)` -> Gets the number of points required to reach the specified tier of a specified pass type.

`void givePoints(User user, int points)` -> Gives the set amount of points to the user.

`void reward(User user, int tier, boolean ignoreRestrictions)` -> Gives the rewards of a specified tier for every pass type to the user (it verifies they have that pass type).

`void reward(User user, String passId, int tier, boolean ignoreRestrictions)` -> Gives the rewards of a specified tier for a specific pass type to the user (it verifies they have that pass type).


# Enchants

Make sure all enchants are uppercase and follow the format \<enchant-name>:\<level>

* PROTECTION
* FIRE\_PROTECTION
* FEATHER\_FALLING
* BLAST\_PROTECTION
* PROJECTILE\_PROTECTION
* RESPIRATION
* AQUA\_AFFINITY
* THORNS
* DEPTH\_STRIDER
* FROST\_WALKER
* BINDING\_CURSE
* SHARPNESS
* SMITE
* BANE\_OF\_ARTHROPODS
* KNOCKBACK
* FIRE\_ASPECT
* LOOTING
* SWEEPING
* EFFICIENCY
* SILK\_TOUCH
* UNBREAKING
* FORTUNE
* POWER
* PUNCH
* FLAME
* INFINITY
* LUCK\_OF\_THE\_SEA
* LURE
* LOYALTY
* IMPALING
* RIPTIDE
* CHANNELING
* MULTISHOT
* QUICK\_CHARGE
* PIERCING
* MENDING
* VANISHING\_CURSE
* SOUL\_SPEED


# Custom Enchants

Make sure all enchants are lowercase and follow the format \<enchant-name>:\<level>

BattlePass Rewards also support custom enchants from [AdvancedEnchantments](https://advancedplugins.net/item/AdvancedEnchantments.1)!


# Harvesting Crops

Tutorial on how to set up quests for crops harvesting for 1.15 or higher

Crop block types have changed since 1.15. We're going to be explaining how to set up harvest quests using `block-break` quest.

## Crops Names

First off, new crop block names are ([find full list of materials here](https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Material.html)):

<table><thead><tr><th width="249.33333333333331"></th><th></th><th>States (Min-Max)</th></tr></thead><tbody><tr><td>Beetroots</td><td>BEETROOTS</td><td>0-3</td></tr><tr><td>Carrot</td><td>CARROTS</td><td>0-7</td></tr><tr><td>Chorus Flower</td><td>CHORUS_FLOWER</td><td>0-5</td></tr><tr><td>Wheat</td><td>WHEAT</td><td>0-7</td></tr><tr><td>Nether Wart</td><td>NETHER_WART</td><td>0-3</td></tr><tr><td>Potatoes</td><td>POTATOES</td><td>0-7</td></tr></tbody></table>

## States

Now, most crops have states. All crops listed above do have grow states.

States: 0-7, 0 being when crop is just planted, 7 is when crop is fully grown. Examples:

### State 0 (Just Planted):

![](https://957189450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVKgJtPKw7gQhR_Osin%2Fuploads%2F16jc9rnJq9pollAd7wX3%2Fimage.png?alt=media\&token=14ec45a6-f096-411c-a72e-a81daadaced2)

### State 7 (Fully Grown):

![](https://957189450-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MVKgJtPKw7gQhR_Osin%2Fuploads%2FwQG7BRLXcrNBapaC935u%2Fimage.png?alt=media\&token=4a650211-7cdc-453b-9bc3-1bbf22064b5d)

## Quest Examples

### Example #1 (using `harvest-crops`)

With this example, you are required to break 10 fully grown potato plants

```yaml
quests:
  1:
    name: 'Daily - Farmer'
    type: harvest-crops
    variable: potatoes
    required-progress: 10
    points: 10
    item:
      material: diamond_pickaxe:0
      amount: 1
      name: '&eFarmer'
      lore:
        - '&7Mine &e10 Potatoes'
        - ''
        - '&7Progress &e%total_progress%&7/&e%required_progress%'
```

### Example #2 (using `block-break`)

In this example, we're harvesting 10 of fully grown nether warts. Since it's maximum age state is 3, for fully grown nether warts we're using `nether_wart{age:3}`

```yml
quests:
  1:
    name: 'Daily - Farmer'
    type: block-break
    variable: "nether_wart{age: 3}"
    required-progress: 10
    points: 10
    item:
      material: nether_wart:0
      amount: 1
      name: '&#x26;eFarmer'
      lore:
        - '&#x26;7Mine &#x26;e10 Nether Warts'
        - ''
        - '&#x26;7Progress &#x26;e%total_progress%&#x26;7/&#x26;e%required_progress%'
```


# Custom Model Data

How to set custom model data for items with examples

Just add `customModelData: <data>` to any item under material, example:

```yaml
items:
  doesnt-have-pass-item: # The item if a player does not have the premium pass.
    material: 'minecart:0'
    customModelData: 0 #Set custom model data
    name: '&eTier %tier%'
    lore:
      - ''
      - '&7Rewards:'
      - '%lore_addon%'
      - ''
      - '&7Status: &eNot Eligible'
      - '&cPurchase the battle pass to'
      - '&cbe able to earn premium rewards.'
```


# Timezones

These are all the timezones you can use for BattlePass. We recommend using CTRL + F (search within page) the find the timezone you're looking for. If you can't find it, you may also be able to find it using Google, just make sure it's also on this page.

\
&#x20;Etc/GMT+12 (UTC-12:00) \
&#x20;Pacific/Pago\_Pago (UTC-11:00) \
&#x20;Pacific/Samoa (UTC-11:00) \
&#x20;Pacific/Niue (UTC-11:00) \
&#x20;US/Samoa (UTC-11:00) \
&#x20;Etc/GMT+11 (UTC-11:00) \
&#x20;Pacific/Midway (UTC-11:00) \
&#x20;Pacific/Honolulu (UTC-10:00) \
&#x20;Pacific/Rarotonga (UTC-10:00) \
&#x20;Pacific/Tahiti (UTC-10:00) \
&#x20;Pacific/Johnston (UTC-10:00) \
&#x20;US/Hawaii (UTC-10:00) \
&#x20;SystemV/HST10 (UTC-10:00) \
&#x20;Etc/GMT+10 (UTC-10:00) \
&#x20;Pacific/Marquesas (UTC-09:30) \
&#x20;Etc/GMT+9 (UTC-09:00) \
&#x20;Pacific/Gambier (UTC-09:00) \
&#x20;America/Atka (UTC-09:00) \
&#x20;SystemV/YST9 (UTC-09:00) \
&#x20;America/Adak (UTC-09:00) \
&#x20;US/Aleutian (UTC-09:00) \
&#x20;Etc/GMT+8 (UTC-08:00) \
&#x20;US/Alaska (UTC-08:00) \
&#x20;America/Juneau (UTC-08:00) \
&#x20;America/Metlakatla (UTC-08:00) \
&#x20;America/Yakutat (UTC-08:00) \
&#x20;Pacific/Pitcairn (UTC-08:00) \
&#x20;America/Sitka (UTC-08:00) \
&#x20;America/Anchorage (UTC-08:00) \
&#x20;SystemV/PST8 (UTC-08:00) \
&#x20;America/Nome (UTC-08:00) \
&#x20;SystemV/YST9YDT (UTC-08:00) \
&#x20;Canada/Yukon (UTC-07:00) \
&#x20;US/Pacific-New (UTC-07:00) \
&#x20;Etc/GMT+7 (UTC-07:00) \
&#x20;US/Arizona (UTC-07:00) \
&#x20;America/Dawson\_Creek (UTC-07:00) \
&#x20;Canada/Pacific (UTC-07:00) \
&#x20;PST8PDT (UTC-07:00) \
&#x20;SystemV/MST7 (UTC-07:00) \
&#x20;America/Dawson (UTC-07:00) \
&#x20;Mexico/BajaNorte (UTC-07:00) \
&#x20;America/Tijuana (UTC-07:00) \
&#x20;America/Creston (UTC-07:00) \
&#x20;America/Hermosillo (UTC-07:00) \
&#x20;America/Santa\_Isabel (UTC-07:00) \
&#x20;America/Vancouver (UTC-07:00) \
&#x20;America/Ensenada (UTC-07:00) \
&#x20;America/Phoenix (UTC-07:00) \
&#x20;America/Whitehorse (UTC-07:00) \
&#x20;America/Fort\_Nelson (UTC-07:00) \
&#x20;SystemV/PST8PDT (UTC-07:00) \
&#x20;America/Los\_Angeles (UTC-07:00) \
&#x20;US/Pacific (UTC-07:00) \
&#x20;America/El\_Salvador (UTC-06:00) \
&#x20;America/Guatemala (UTC-06:00) \
&#x20;America/Belize (UTC-06:00) \
&#x20;America/Managua (UTC-06:00) \
&#x20;America/Tegucigalpa (UTC-06:00) \
&#x20;Etc/GMT+6 (UTC-06:00) \
&#x20;Pacific/Easter (UTC-06:00) \
&#x20;Mexico/BajaSur (UTC-06:00) \
&#x20;America/Regina (UTC-06:00) \
&#x20;America/Denver (UTC-06:00) \
&#x20;Pacific/Galapagos (UTC-06:00) \
&#x20;America/Yellowknife (UTC-06:00) \
&#x20;America/Swift\_Current (UTC-06:00) \
&#x20;America/Inuvik (UTC-06:00) \
&#x20;America/Mazatlan (UTC-06:00) \
&#x20;America/Boise (UTC-06:00) \
&#x20;America/Costa\_Rica (UTC-06:00) \
&#x20;MST7MDT (UTC-06:00) \
&#x20;SystemV/CST6 (UTC-06:00) \
&#x20;America/Chihuahua (UTC-06:00) \
&#x20;America/Ojinaga (UTC-06:00) \
&#x20;Chile/EasterIsland (UTC-06:00) \
&#x20;US/Mountain (UTC-06:00) \
&#x20;America/Edmonton (UTC-06:00) \
&#x20;Canada/Mountain (UTC-06:00) \
&#x20;America/Cambridge\_Bay (UTC-06:00) \
&#x20;Navajo (UTC-06:00) \
&#x20;SystemV/MST7MDT (UTC-06:00) \
&#x20;Canada/Saskatchewan (UTC-06:00) \
&#x20;America/Shiprock (UTC-06:00) \
&#x20;America/Panama (UTC-05:00) \
&#x20;America/Chicago (UTC-05:00) \
&#x20;America/Eirunepe (UTC-05:00) \
&#x20;Etc/GMT+5 (UTC-05:00) \
&#x20;Mexico/General (UTC-05:00) \
&#x20;America/Porto\_Acre (UTC-05:00) \
&#x20;America/Guayaquil (UTC-05:00) \
&#x20;America/Rankin\_Inlet (UTC-05:00) \
&#x20;US/Central (UTC-05:00) \
&#x20;America/Rainy\_River (UTC-05:00) \
&#x20;America/Indiana/Knox (UTC-05:00) \
&#x20;America/North\_Dakota/Beulah (UTC-05:00) \
&#x20;America/Monterrey (UTC-05:00) \
&#x20;America/Jamaica (UTC-05:00) \
&#x20;America/Atikokan (UTC-05:00) \
&#x20;America/Coral\_Harbour (UTC-05:00) \
&#x20;America/North\_Dakota/Center (UTC-05:00) \
&#x20;America/Cayman (UTC-05:00) \
&#x20;America/Indiana/Tell\_City (UTC-05:00) \
&#x20;America/Mexico\_City (UTC-05:00) \
&#x20;America/Matamoros (UTC-05:00) \
&#x20;CST6CDT (UTC-05:00) \
&#x20;America/Knox\_IN (UTC-05:00) \
&#x20;America/Bogota (UTC-05:00) \
&#x20;America/Menominee (UTC-05:00) \
&#x20;America/Resolute (UTC-05:00) \
&#x20;SystemV/EST5 (UTC-05:00) \
&#x20;Canada/Central (UTC-05:00) \
&#x20;Brazil/Acre (UTC-05:00) \
&#x20;America/Cancun (UTC-05:00) \
&#x20;America/Lima (UTC-05:00) \
&#x20;America/Bahia\_Banderas (UTC-05:00) \
&#x20;US/Indiana-Starke (UTC-05:00) \
&#x20;America/Rio\_Branco (UTC-05:00) \
&#x20;SystemV/CST6CDT (UTC-05:00) \
&#x20;Jamaica (UTC-05:00) \
&#x20;America/Merida (UTC-05:00) \
&#x20;America/North\_Dakota/New\_Salem (UTC-05:00) \
&#x20;America/Winnipeg (UTC-05:00) \
&#x20;America/Cuiaba (UTC-04:00) \
&#x20;America/Marigot (UTC-04:00) \
&#x20;America/Indiana/Petersburg (UTC-04:00) \
&#x20;Chile/Continental (UTC-04:00) \
&#x20;America/Grand\_Turk (UTC-04:00) \
&#x20;Cuba (UTC-04:00) \
&#x20;Etc/GMT+4 (UTC-04:00) \
&#x20;America/Manaus (UTC-04:00) \
&#x20;America/Fort\_Wayne (UTC-04:00) \
&#x20;America/St\_Thomas (UTC-04:00) \
&#x20;America/Anguilla (UTC-04:00) \
&#x20;America/Havana (UTC-04:00) \
&#x20;US/Michigan (UTC-04:00) \
&#x20;America/Barbados (UTC-04:00) \
&#x20;America/Louisville (UTC-04:00) \
&#x20;America/Curacao (UTC-04:00) \
&#x20;America/Guyana (UTC-04:00) \
&#x20;America/Martinique (UTC-04:00) \
&#x20;America/Puerto\_Rico (UTC-04:00) \
&#x20;America/Port\_of\_Spain (UTC-04:00) \
&#x20;SystemV/AST4 (UTC-04:00) \
&#x20;America/Indiana/Vevay (UTC-04:00) \
&#x20;America/Indiana/Vincennes (UTC-04:00) \
&#x20;America/Kralendijk (UTC-04:00) \
&#x20;America/Antigua (UTC-04:00) \
&#x20;America/Indianapolis (UTC-04:00) \
&#x20;America/Iqaluit (UTC-04:00) \
&#x20;America/St\_Vincent (UTC-04:00) \
&#x20;America/Kentucky/Louisville (UTC-04:00) \
&#x20;America/Dominica (UTC-04:00) \
&#x20;America/Asuncion (UTC-04:00) \
&#x20;EST5EDT (UTC-04:00) \
&#x20;America/Nassau (UTC-04:00) \
&#x20;America/Kentucky/Monticello (UTC-04:00) \
&#x20;Brazil/West (UTC-04:00) \
&#x20;America/Aruba (UTC-04:00) \
&#x20;America/Indiana/Indianapolis (UTC-04:00) \
&#x20;America/Santiago (UTC-04:00) \
&#x20;America/La\_Paz (UTC-04:00) \
&#x20;America/Thunder\_Bay (UTC-04:00) \
&#x20;America/Indiana/Marengo (UTC-04:00) \
&#x20;America/Blanc-Sablon (UTC-04:00) \
&#x20;America/Santo\_Domingo (UTC-04:00) \
&#x20;US/Eastern (UTC-04:00) \
&#x20;Canada/Eastern (UTC-04:00) \
&#x20;America/Port-au-Prince (UTC-04:00) \
&#x20;America/St\_Barthelemy (UTC-04:00) \
&#x20;America/Nipigon (UTC-04:00) \
&#x20;US/East-Indiana (UTC-04:00) \
&#x20;America/St\_Lucia (UTC-04:00) \
&#x20;America/Montserrat (UTC-04:00) \
&#x20;America/Lower\_Princes (UTC-04:00) \
&#x20;America/Detroit (UTC-04:00) \
&#x20;America/Tortola (UTC-04:00) \
&#x20;America/Porto\_Velho (UTC-04:00) \
&#x20;America/Campo\_Grande (UTC-04:00) \
&#x20;America/Virgin (UTC-04:00) \
&#x20;America/Pangnirtung (UTC-04:00) \
&#x20;America/Montreal (UTC-04:00) \
&#x20;America/Indiana/Winamac (UTC-04:00) \
&#x20;America/Boa\_Vista (UTC-04:00) \
&#x20;America/Grenada (UTC-04:00) \
&#x20;America/New\_York (UTC-04:00) \
&#x20;America/St\_Kitts (UTC-04:00) \
&#x20;America/Caracas (UTC-04:00) \
&#x20;America/Guadeloupe (UTC-04:00) \
&#x20;America/Toronto (UTC-04:00) \
&#x20;SystemV/EST5EDT (UTC-04:00) \
&#x20;America/Argentina/Catamarca (UTC-03:00) \
&#x20;Canada/Atlantic (UTC-03:00) \
&#x20;America/Argentina/Cordoba (UTC-03:00) \
&#x20;America/Araguaina (UTC-03:00) \
&#x20;America/Argentina/Salta (UTC-03:00) \
&#x20;Etc/GMT+3 (UTC-03:00) \
&#x20;America/Montevideo (UTC-03:00) \
&#x20;Brazil/East (UTC-03:00) \
&#x20;America/Argentina/Mendoza (UTC-03:00) \
&#x20;America/Argentina/Rio\_Gallegos (UTC-03:00) \
&#x20;America/Catamarca (UTC-03:00) \
&#x20;America/Cordoba (UTC-03:00) \
&#x20;America/Sao\_Paulo (UTC-03:00) \
&#x20;America/Argentina/Jujuy (UTC-03:00) \
&#x20;America/Cayenne (UTC-03:00) \
&#x20;America/Recife (UTC-03:00) \
&#x20;America/Buenos\_Aires (UTC-03:00) \
&#x20;America/Paramaribo (UTC-03:00) \
&#x20;America/Moncton (UTC-03:00) \
&#x20;America/Mendoza (UTC-03:00) \
&#x20;America/Santarem (UTC-03:00) \
&#x20;Atlantic/Bermuda (UTC-03:00) \
&#x20;America/Maceio (UTC-03:00) \
&#x20;Atlantic/Stanley (UTC-03:00) \
&#x20;America/Halifax (UTC-03:00) \
&#x20;Antarctica/Rothera (UTC-03:00) \
&#x20;America/Argentina/San\_Luis (UTC-03:00) \
&#x20;America/Argentina/Ushuaia (UTC-03:00) \
&#x20;Antarctica/Palmer (UTC-03:00) \
&#x20;America/Punta\_Arenas (UTC-03:00) \
&#x20;America/Glace\_Bay (UTC-03:00) \
&#x20;America/Fortaleza (UTC-03:00) \
&#x20;America/Thule (UTC-03:00) \
&#x20;America/Argentina/La\_Rioja (UTC-03:00) \
&#x20;America/Belem (UTC-03:00) \
&#x20;America/Jujuy (UTC-03:00) \
&#x20;America/Bahia (UTC-03:00) \
&#x20;America/Goose\_Bay (UTC-03:00) \
&#x20;America/Argentina/San\_Juan (UTC-03:00) \
&#x20;America/Argentina/ComodRivadavia (UTC-03:00) \
&#x20;America/Argentina/Tucuman (UTC-03:00) \
&#x20;America/Rosario (UTC-03:00) \
&#x20;SystemV/AST4ADT (UTC-03:00) \
&#x20;America/Argentina/Buenos\_Aires (UTC-03:00) \
&#x20;America/St\_Johns (UTC-02:30) \
&#x20;Canada/Newfoundland (UTC-02:30) \
&#x20;America/Miquelon (UTC-02:00) \
&#x20;Etc/GMT+2 (UTC-02:00) \
&#x20;America/Godthab (UTC-02:00) \
&#x20;America/Noronha (UTC-02:00) \
&#x20;Brazil/DeNoronha (UTC-02:00) \
&#x20;Atlantic/South\_Georgia (UTC-02:00) \
&#x20;Etc/GMT+1 (UTC-01:00) \
&#x20;Atlantic/Cape\_Verde (UTC-01:00) \
&#x20;Pacific/Kiritimati (UTC+14:00) \
&#x20;Etc/GMT-14 (UTC+14:00) \
&#x20;Pacific/Fakaofo (UTC+13:00) \
&#x20;Pacific/Enderbury (UTC+13:00) \
&#x20;Pacific/Apia (UTC+13:00) \
&#x20;Pacific/Tongatapu (UTC+13:00) \
&#x20;Etc/GMT-13 (UTC+13:00) \
&#x20;NZ-CHAT (UTC+12:45) \
&#x20;Pacific/Chatham (UTC+12:45) \
&#x20;Pacific/Kwajalein (UTC+12:00) \
&#x20;Antarctica/McMurdo (UTC+12:00) \
&#x20;Pacific/Wallis (UTC+12:00) \
&#x20;Pacific/Fiji (UTC+12:00) \
&#x20;Pacific/Funafuti (UTC+12:00) \
&#x20;Pacific/Nauru (UTC+12:00) \
&#x20;Kwajalein (UTC+12:00) \
&#x20;NZ (UTC+12:00) \
&#x20;Pacific/Wake (UTC+12:00) \
&#x20;Antarctica/South\_Pole (UTC+12:00) \
&#x20;Pacific/Tarawa (UTC+12:00) \
&#x20;Pacific/Auckland (UTC+12:00) \
&#x20;Asia/Kamchatka (UTC+12:00) \
&#x20;Etc/GMT-12 (UTC+12:00) \
&#x20;Asia/Anadyr (UTC+12:00) \
&#x20;Pacific/Majuro (UTC+12:00) \
&#x20;Pacific/Ponape (UTC+11:00) \
&#x20;Pacific/Bougainville (UTC+11:00) \
&#x20;Antarctica/Macquarie (UTC+11:00) \
&#x20;Pacific/Pohnpei (UTC+11:00) \
&#x20;Pacific/Efate (UTC+11:00) \
&#x20;Pacific/Norfolk (UTC+11:00) \
&#x20;Asia/Magadan (UTC+11:00) \
&#x20;Pacific/Kosrae (UTC+11:00) \
&#x20;Asia/Sakhalin (UTC+11:00) \
&#x20;Pacific/Noumea (UTC+11:00) \
&#x20;Etc/GMT-11 (UTC+11:00) \
&#x20;Asia/Srednekolymsk (UTC+11:00) \
&#x20;Pacific/Guadalcanal (UTC+11:00) \
&#x20;Australia/Lord\_Howe (UTC+10:30) \
&#x20;Australia/LHI (UTC+10:30) \
&#x20;Australia/Hobart (UTC+10:00) \
&#x20;Pacific/Yap (UTC+10:00) \
&#x20;Australia/Tasmania (UTC+10:00) \
&#x20;Pacific/Port\_Moresby (UTC+10:00) \
&#x20;Australia/ACT (UTC+10:00) \
&#x20;Australia/Victoria (UTC+10:00) \
&#x20;Pacific/Chuuk (UTC+10:00) \
&#x20;Australia/Queensland (UTC+10:00) \
&#x20;Australia/Canberra (UTC+10:00) \
&#x20;Australia/Currie (UTC+10:00) \
&#x20;Pacific/Guam (UTC+10:00) \
&#x20;Pacific/Truk (UTC+10:00) \
&#x20;Australia/NSW (UTC+10:00) \
&#x20;Asia/Vladivostok (UTC+10:00) \
&#x20;Pacific/Saipan (UTC+10:00) \
&#x20;Antarctica/DumontDUrville (UTC+10:00) \
&#x20;Australia/Sydney (UTC+10:00) \
&#x20;Australia/Brisbane (UTC+10:00) \
&#x20;Etc/GMT-10 (UTC+10:00) \
&#x20;Asia/Ust-Nera (UTC+10:00) \
&#x20;Australia/Melbourne (UTC+10:00) \
&#x20;Australia/Lindeman (UTC+10:00) \
&#x20;Australia/North (UTC+09:30) \
&#x20;Australia/Yancowinna (UTC+09:30) \
&#x20;Australia/Adelaide (UTC+09:30) \
&#x20;Australia/Broken\_Hill (UTC+09:30) \
&#x20;Australia/South (UTC+09:30) \
&#x20;Australia/Darwin (UTC+09:30) \
&#x20;Etc/GMT-9 (UTC+09:00) \
&#x20;Pacific/Palau (UTC+09:00) \
&#x20;Asia/Chita (UTC+09:00) \
&#x20;Asia/Dili (UTC+09:00) \
&#x20;Asia/Jayapura (UTC+09:00) \
&#x20;Asia/Yakutsk (UTC+09:00) \
&#x20;Asia/Pyongyang (UTC+09:00) \
&#x20;ROK (UTC+09:00) \
&#x20;Asia/Seoul (UTC+09:00) \
&#x20;Asia/Khandyga (UTC+09:00) \
&#x20;Japan (UTC+09:00) \
&#x20;Asia/Tokyo (UTC+09:00) \
&#x20;Australia/Eucla (UTC+08:45) \
&#x20;Asia/Kuching (UTC+08:00) \
&#x20;Asia/Chungking (UTC+08:00) \
&#x20;Etc/GMT-8 (UTC+08:00) \
&#x20;Australia/Perth (UTC+08:00) \
&#x20;Asia/Macao (UTC+08:00) \
&#x20;Asia/Macau (UTC+08:00) \
&#x20;Asia/Choibalsan (UTC+08:00) \
&#x20;Asia/Shanghai (UTC+08:00) \
&#x20;Antarctica/Casey (UTC+08:00) \
&#x20;Asia/Ulan\_Bator (UTC+08:00) \
&#x20;Asia/Chongqing (UTC+08:00) \
&#x20;Asia/Ulaanbaatar (UTC+08:00) \
&#x20;Asia/Taipei (UTC+08:00) \
&#x20;Asia/Manila (UTC+08:00) \
&#x20;PRC (UTC+08:00) \
&#x20;Asia/Ujung\_Pandang (UTC+08:00) \
&#x20;Asia/Harbin (UTC+08:00) \
&#x20;Singapore (UTC+08:00) \
&#x20;Asia/Brunei (UTC+08:00) \
&#x20;Australia/West (UTC+08:00) \
&#x20;Asia/Hong\_Kong (UTC+08:00) \
&#x20;Asia/Makassar (UTC+08:00) \
&#x20;Hongkong (UTC+08:00) \
&#x20;Asia/Kuala\_Lumpur (UTC+08:00) \
&#x20;Asia/Irkutsk (UTC+08:00) \
&#x20;Asia/Singapore (UTC+08:00) \
&#x20;Asia/Pontianak (UTC+07:00) \
&#x20;Etc/GMT-7 (UTC+07:00) \
&#x20;Asia/Phnom\_Penh (UTC+07:00) \
&#x20;Asia/Novosibirsk (UTC+07:00) \
&#x20;Antarctica/Davis (UTC+07:00) \
&#x20;Asia/Tomsk (UTC+07:00) \
&#x20;Asia/Jakarta (UTC+07:00) \
&#x20;Asia/Barnaul (UTC+07:00) \
&#x20;Indian/Christmas (UTC+07:00) \
&#x20;Asia/Ho\_Chi\_Minh (UTC+07:00) \
&#x20;Asia/Hovd (UTC+07:00) \
&#x20;Asia/Bangkok (UTC+07:00) \
&#x20;Asia/Vientiane (UTC+07:00) \
&#x20;Asia/Novokuznetsk (UTC+07:00) \
&#x20;Asia/Krasnoyarsk (UTC+07:00) \
&#x20;Asia/Saigon (UTC+07:00) \
&#x20;Asia/Yangon (UTC+06:30) \
&#x20;Asia/Rangoon (UTC+06:30) \
&#x20;Indian/Cocos (UTC+06:30) \
&#x20;Asia/Kashgar (UTC+06:00) \
&#x20;Etc/GMT-6 (UTC+06:00) \
&#x20;Asia/Almaty (UTC+06:00) \
&#x20;Asia/Dacca (UTC+06:00) \
&#x20;Asia/Omsk (UTC+06:00) \
&#x20;Asia/Dhaka (UTC+06:00) \
&#x20;Indian/Chagos (UTC+06:00) \
&#x20;Asia/Qyzylorda (UTC+06:00) \
&#x20;Asia/Bishkek (UTC+06:00) \
&#x20;Antarctica/Vostok (UTC+06:00) \
&#x20;Asia/Urumqi (UTC+06:00) \
&#x20;Asia/Thimbu (UTC+06:00) \
&#x20;Asia/Thimphu (UTC+06:00) \
&#x20;Asia/Kathmandu (UTC+05:45) \
&#x20;Asia/Katmandu (UTC+05:45) \
&#x20;Asia/Kolkata (UTC+05:30) \
&#x20;Asia/Colombo (UTC+05:30) \
&#x20;Asia/Calcutta (UTC+05:30) \
&#x20;Asia/Aqtau (UTC+05:00) \
&#x20;Etc/GMT-5 (UTC+05:00) \
&#x20;Asia/Samarkand (UTC+05:00) \
&#x20;Asia/Karachi (UTC+05:00) \
&#x20;Asia/Yekaterinburg (UTC+05:00) \
&#x20;Asia/Dushanbe (UTC+05:00) \
&#x20;Indian/Maldives (UTC+05:00) \
&#x20;Asia/Oral (UTC+05:00) \
&#x20;Asia/Tashkent (UTC+05:00) \
&#x20;Antarctica/Mawson (UTC+05:00) \
&#x20;Asia/Aqtobe (UTC+05:00) \
&#x20;Asia/Ashkhabad (UTC+05:00) \
&#x20;Asia/Ashgabat (UTC+05:00) \
&#x20;Asia/Atyrau (UTC+05:00) \
&#x20;Indian/Kerguelen (UTC+05:00) \
&#x20;Iran (UTC+04:30) \
&#x20;Asia/Tehran (UTC+04:30) \
&#x20;Asia/Kabul (UTC+04:30) \
&#x20;Asia/Yerevan (UTC+04:00) \
&#x20;Etc/GMT-4 (UTC+04:00) \
&#x20;Asia/Dubai (UTC+04:00) \
&#x20;Indian/Reunion (UTC+04:00) \
&#x20;Indian/Mauritius (UTC+04:00) \
&#x20;Europe/Saratov (UTC+04:00) \
&#x20;Europe/Samara (UTC+04:00) \
&#x20;Indian/Mahe (UTC+04:00) \
&#x20;Asia/Baku (UTC+04:00) \
&#x20;Asia/Muscat (UTC+04:00) \
&#x20;Europe/Volgograd (UTC+04:00) \
&#x20;Europe/Astrakhan (UTC+04:00) \
&#x20;Asia/Tbilisi (UTC+04:00) \
&#x20;Europe/Ulyanovsk (UTC+04:00) \
&#x20;Asia/Aden (UTC+03:00) \
&#x20;Africa/Nairobi (UTC+03:00) \
&#x20;Europe/Istanbul (UTC+03:00) \
&#x20;Etc/GMT-3 (UTC+03:00) \
&#x20;Europe/Zaporozhye (UTC+03:00) \
&#x20;Israel (UTC+03:00) \
&#x20;Indian/Comoro (UTC+03:00) \
&#x20;Antarctica/Syowa (UTC+03:00) \
&#x20;Africa/Mogadishu (UTC+03:00) \
&#x20;Europe/Bucharest (UTC+03:00) \
&#x20;Africa/Asmera (UTC+03:00) \
&#x20;Europe/Mariehamn (UTC+03:00) \
&#x20;Asia/Istanbul (UTC+03:00) \
&#x20;Europe/Tiraspol (UTC+03:00) \
&#x20;Europe/Moscow (UTC+03:00) \
&#x20;Europe/Chisinau (UTC+03:00) \
&#x20;Europe/Helsinki (UTC+03:00) \
&#x20;Asia/Beirut (UTC+03:00) \
&#x20;Asia/Tel\_Aviv (UTC+03:00) \
&#x20;Africa/Djibouti (UTC+03:00) \
&#x20;Europe/Simferopol (UTC+03:00) \
&#x20;Europe/Sofia (UTC+03:00) \
&#x20;Asia/Gaza (UTC+03:00) \
&#x20;Africa/Asmara (UTC+03:00) \
&#x20;Europe/Riga (UTC+03:00) \
&#x20;Asia/Baghdad (UTC+03:00) \
&#x20;Asia/Damascus (UTC+03:00) \
&#x20;Africa/Dar\_es\_Salaam (UTC+03:00) \
&#x20;Africa/Addis\_Ababa (UTC+03:00) \
&#x20;Europe/Uzhgorod (UTC+03:00) \
&#x20;Asia/Jerusalem (UTC+03:00) \
&#x20;Asia/Riyadh (UTC+03:00) \
&#x20;Asia/Kuwait (UTC+03:00) \
&#x20;Europe/Kirov (UTC+03:00) \
&#x20;Africa/Kampala (UTC+03:00) \
&#x20;Europe/Minsk (UTC+03:00) \
&#x20;Asia/Qatar (UTC+03:00) \
&#x20;Europe/Kiev (UTC+03:00) \
&#x20;Asia/Bahrain (UTC+03:00) \
&#x20;Europe/Vilnius (UTC+03:00) \
&#x20;Indian/Antananarivo (UTC+03:00) \
&#x20;Indian/Mayotte (UTC+03:00) \
&#x20;Europe/Tallinn (UTC+03:00) \
&#x20;Turkey (UTC+03:00) \
&#x20;Africa/Juba (UTC+03:00) \
&#x20;Asia/Nicosia (UTC+03:00) \
&#x20;Asia/Famagusta (UTC+03:00) \
&#x20;W-SU (UTC+03:00) \
&#x20;EET (UTC+03:00) \
&#x20;Asia/Hebron (UTC+03:00) \
&#x20;Asia/Amman (UTC+03:00) \
&#x20;Europe/Nicosia (UTC+03:00) \
&#x20;Europe/Athens (UTC+03:00) \
&#x20;Africa/Cairo (UTC+02:00) \
&#x20;Africa/Mbabane (UTC+02:00) \
&#x20;Europe/Brussels (UTC+02:00) \
&#x20;Europe/Warsaw (UTC+02:00) \
&#x20;CET (UTC+02:00) \
&#x20;Europe/Luxembourg (UTC+02:00) \
&#x20;Etc/GMT-2 (UTC+02:00) \
&#x20;Libya (UTC+02:00) \
&#x20;Africa/Kigali (UTC+02:00) \
&#x20;Africa/Tripoli (UTC+02:00) \
&#x20;Europe/Kaliningrad (UTC+02:00) \
&#x20;Africa/Windhoek (UTC+02:00) \
&#x20;Europe/Malta (UTC+02:00) \
&#x20;Europe/Busingen (UTC+02:00) \
&#x20;Europe/Skopje (UTC+02:00) \
&#x20;Europe/Sarajevo (UTC+02:00) \
&#x20;Europe/Rome (UTC+02:00) \
&#x20;Europe/Zurich (UTC+02:00) \
&#x20;Europe/Gibraltar (UTC+02:00) \
&#x20;Africa/Lubumbashi (UTC+02:00) \
&#x20;Europe/Vaduz (UTC+02:00) \
&#x20;Europe/Ljubljana (UTC+02:00) \
&#x20;Europe/Berlin (UTC+02:00) \
&#x20;Europe/Stockholm (UTC+02:00) \
&#x20;Europe/Budapest (UTC+02:00) \
&#x20;Europe/Zagreb (UTC+02:00) \
&#x20;Europe/Paris (UTC+02:00) \
&#x20;Africa/Ceuta (UTC+02:00) \
&#x20;Europe/Prague (UTC+02:00) \
&#x20;Antarctica/Troll (UTC+02:00) \
&#x20;Africa/Gaborone (UTC+02:00) \
&#x20;Europe/Copenhagen (UTC+02:00) \
&#x20;Europe/Vienna (UTC+02:00) \
&#x20;Europe/Tirane (UTC+02:00) \
&#x20;MET (UTC+02:00) \
&#x20;Europe/Amsterdam (UTC+02:00) \
&#x20;Africa/Maputo (UTC+02:00) \
&#x20;Europe/San\_Marino (UTC+02:00) \
&#x20;Poland (UTC+02:00) \
&#x20;Europe/Andorra (UTC+02:00) \
&#x20;Europe/Oslo (UTC+02:00) \
&#x20;Europe/Podgorica (UTC+02:00) \
&#x20;Africa/Bujumbura (UTC+02:00) \
&#x20;Atlantic/Jan\_Mayen (UTC+02:00) \
&#x20;Africa/Maseru (UTC+02:00) \
&#x20;Europe/Madrid (UTC+02:00) \
&#x20;Africa/Blantyre (UTC+02:00) \
&#x20;Africa/Lusaka (UTC+02:00) \
&#x20;Africa/Harare (UTC+02:00) \
&#x20;Africa/Khartoum (UTC+02:00) \
&#x20;Africa/Johannesburg (UTC+02:00) \
&#x20;Europe/Belgrade (UTC+02:00) \
&#x20;Europe/Bratislava (UTC+02:00) \
&#x20;Arctic/Longyearbyen (UTC+02:00) \
&#x20;Egypt (UTC+02:00) \
&#x20;Europe/Vatican (UTC+02:00) \
&#x20;Europe/Monaco (UTC+02:00) \
&#x20;Europe/London (UTC+01:00) \
&#x20;Etc/GMT-1 (UTC+01:00) \
&#x20;Europe/Jersey (UTC+01:00) \
&#x20;Europe/Guernsey (UTC+01:00) \
&#x20;Europe/Isle\_of\_Man (UTC+01:00) \
&#x20;Africa/Tunis (UTC+01:00) \
&#x20;Africa/Malabo (UTC+01:00) \
&#x20;GB-Eire (UTC+01:00) \
&#x20;Africa/Lagos (UTC+01:00) \
&#x20;Africa/Algiers (UTC+01:00) \
&#x20;GB (UTC+01:00) \
&#x20;Portugal (UTC+01:00) \
&#x20;Africa/Sao\_Tome (UTC+01:00) \
&#x20;Africa/Ndjamena (UTC+01:00) \
&#x20;Atlantic/Faeroe (UTC+01:00) \
&#x20;Eire (UTC+01:00) \
&#x20;Atlantic/Faroe (UTC+01:00) \
&#x20;Europe/Dublin (UTC+01:00) \
&#x20;Africa/Libreville (UTC+01:00) \
&#x20;Africa/El\_Aaiun (UTC+01:00) \
&#x20;Africa/Douala (UTC+01:00) \
&#x20;Africa/Brazzaville (UTC+01:00) \
&#x20;Africa/Porto-Novo (UTC+01:00) \
&#x20;Atlantic/Madeira (UTC+01:00) \
&#x20;Europe/Lisbon (UTC+01:00) \
&#x20;Atlantic/Canary (UTC+01:00) \
&#x20;Africa/Casablanca (UTC+01:00) \
&#x20;Europe/Belfast (UTC+01:00) \
&#x20;Africa/Luanda (UTC+01:00) \
&#x20;Africa/Kinshasa (UTC+01:00) \
&#x20;Africa/Bangui (UTC+01:00) \
&#x20;WET (UTC+01:00) \
&#x20;Africa/Niamey (UTC+01:00) \
&#x20;GMT (UTC+00:00) \
&#x20;Etc/GMT-0 (UTC+00:00) \
&#x20;Atlantic/St\_Helena (UTC+00:00) \
&#x20;Etc/GMT+0 (UTC+00:00) \
&#x20;Africa/Banjul (UTC+00:00) \
&#x20;Etc/GMT (UTC+00:00) \
&#x20;Africa/Freetown (UTC+00:00) \
&#x20;Africa/Bamako (UTC+00:00) \
&#x20;Africa/Conakry (UTC+00:00) \
&#x20;Universal (UTC+00:00) \
&#x20;Africa/Nouakchott (UTC+00:00) \
&#x20;UTC (UTC+00:00) \
&#x20;Etc/Universal (UTC+00:00) \
&#x20;Atlantic/Azores (UTC+00:00) \
&#x20;Africa/Abidjan (UTC+00:00) \
&#x20;Africa/Accra (UTC+00:00) \
&#x20;Etc/UCT (UTC+00:00) \
&#x20;GMT0 (UTC+00:00) \
&#x20;Zulu (UTC+00:00) \
&#x20;Africa/Ouagadougou (UTC+00:00) \
&#x20;Atlantic/Reykjavik (UTC+00:00) \
&#x20;Etc/Zulu (UTC+00:00) \
&#x20;Iceland (UTC+00:00) \
&#x20;Africa/Lome (UTC+00:00) \
&#x20;Greenwich (UTC+00:00) \
&#x20;Etc/GMT0 (UTC+00:00) \
&#x20;America/Danmarkshavn (UTC+00:00) \
&#x20;Africa/Dakar (UTC+00:00) \
&#x20;America/Scoresbysund (UTC+00:00) \
&#x20;Africa/Bissau (UTC+00:00) \
&#x20;Etc/Greenwich (UTC+00:00) \
&#x20;Africa/Timbuktu (UTC+00:00) \
&#x20;UCT (UTC+00:00) \
&#x20;Africa/Monrovia (UTC+00:00) \
&#x20;Etc/UTC (UTC+00:00)<br>


# Premade Configurations

All known premade configurations will be linked here. Want to have your configuration added? Request it via our Discord ( https\://advancedplugins.net/discord )

The configuration below is created by a ex-staff member BroEdits#1707. It is updated frequently and best of all, support is easily accessible by joining his very own support discord [here](https://discord.gg/QyBPQKUKsN), or joining the advanced plugins discord [here](https://discord.com/invite/tm9QzqvmQA).

* [<mark style="color:blue;">**BATTLE PASS CONFIGURATION ✯ 132+ TIERS ✯ 144+ QUESTS ✯ 1-7 WEEKLY QUESTS ✯ 2 SEASONS ✯**</mark>](https://builtbybit.com/resources/battle-pass-configuration-132-tiers-144-quests-1-7-weekly-quests-2-seasons.20975/)


# Using with Citizens NPCs

Setting up NPCs to access menus!

Integrate the BattlePass plugin functionalities with NPCs using the Citizens plugin to enhance player interaction and engagement on your Minecraft server.

## Required Plugins

* **BattlePass** plugin
* **Citizens** Plugin

## Steps

### 1. Create NPCs

First, create NPCs for each BattlePass menu you wish to integrate:

```
/npc create <NPC Name> --type PLAYER
```

### 2. Assign Commands to NPCs

Assign the following commands to your NPCs to enable players to access various BattlePass menus by interacting with them.

| Command                                  | Description              |
| ---------------------------------------- | ------------------------ |
| /npc command add bp open portal -p       | Open main menu           |
| /npc command add bp open daily-quests -p | Open daily quests' menu  |
| /npc command add bp open quests -p       | Open weekly quests' menu |
| /npc command add bp open rewards -p      | Open rewards menu        |

### 3. That's all!

As simple as that - set up NPCs with BattlePass!


# Quest Specific Regions

For any quests that you would like the progress it not be progressed in, simple add `blacklisted-regions` to the quest you desire as shown below.

```
quests:
  1: # Quest id
    name: 'Daily - Miner' # The name given to the quest.
    type: block-break # The type of quest
    variable: coal_ore:0 # The block the player must break.
    required-progress: 10 # The amount of times the player should break the coal ore block.
    points: 10 # The amount of points that will be rewarded
    blacklisted-regions: #The regions where the quest will not progress
      - 'no-mining-region'
      - 'noCoalRegion'
    item: # The item that will be displayed in menus.
      material: diamond_pickaxe:0
      amount: 1
      name: '&eMiner'
      lore:
        - '&7Mine &e10 coal'
        - ''
        - '&7Progress &e%total_progress%&7/&e%required_progress%'
```

#### Compatibility

* WorldGuard


# Setting Up Rewards

Follow a step by step tutorial to create a reward by yourself.

There are three types of reward formats you can use: command format, money format or item format. You may use any plugin's command's in them as long as you use the "%player%" placeholder.

**COMMAND FORMAT BREAKDOWN**

Before we start you need to understand what you are editing and what each line of the format means and what it does. Below is a explanation next to each section of the format.

```yaml
'1': #(The reward id used to link it to a tier) (DONT USE THE SAME NUMBER TWICE)
  type: command #(Reward type)
  name: "Announces you achievement" #(Name for booster message)
  lore-addon: #(Reward description)
    - '&6 - Announces you achievement.' #(Reward description)
  commands: #(Item or Command being excuted when reward is claimed)
    - 'broadcast &6%player% reached a key BattlePass tier!!' 
```

**COMMAND FORMAT:**

Here is a example using a ExcellentCrates command to give a key to the player.

```yaml
'1':
  type: command # You can still use commands to give items :)
  name: "1 Common Key" 
  lore-addon:
    - '&6 - &e1 Common Key'
  commands:
    - 'crate key give %player% Common 1'
```

**ITEM FORMAT BREAKDOWN**

Before we start you need to understand what you are editing and what each line of the format means and what it does. Below is a explanation next to each section of the format.

```yaml
'1': #(The reward id used to link it to a tier) (DONT USE THE SAME NUMBER TWICE)
  type: item #(Reward type)
  name: "Something cool" #(Name for booster message)
  lore-addon: #(Reward description)
    - '&7 - &eWOAH! Something cool' #(Reward description)
  items: #(List of items it will give the player)
    '1': # The first item reward (required) #
      material: diamond_block:0 #(Block/item you want to give)
      amount: 1 #(Amount of block/item you want to give)
      name: '' #(Custom block/item name) (Can be left null for default name) 
      lore: [] #(Custom block/item description) (Can be left null for default name) 
      glow: true #(If the block/item will have a enchantment glow)
    '2': # The second item reward (not required) -> You can have more than two.
      material: coal_block:0 #Block/item you want to give)
      amount: 1 #(Amount of block/item you want to give)
      name: '' #(Custom block/item name) (Can be left null for default name) 
      lore: #(Custom block/item description) (Can be left null for default name) 
        - '&7An &bawesome &7lore, for an &eawesome &7coal block' #(Description)
```

{% hint style="info" %}
In `item` rewards you can also use exact copy of item. [Read more](/general/custom-item-types)
{% endhint %}

**ITEM FORMAT:**

Here is a example of giving a diamond sword with a custom name and lore to the player.

```yaml
'1':
  type: item
  name: "Something cool"
  lore-addon:
    - '&7 - &eWOAH! Something cool'
  items:
    '1':
      material: diamond_sword:0
      amount: 1
      name: '&4MIGHTY SWORD'
      lore:
        - '&7Used to slay foes!' 
```

**MONEY FORMAT BREAKDOWN**

{% hint style="warning" %}
Money rewards require Vault and economy plugin which is compatible with Vault
{% endhint %}

Before we start you need to understand what you are editing and what each line of the format means and what it does. Below is a explanation next to each section of the format.

```yaml
'1': #(The reward id used to link it to a tier) (DONT USE THE SAME NUMBER TWICE)
  type: money #(Reward type)
  name: "$100" #(Name for booster message)
  lore-addon: #(Reward description)
    - '&6 - $100' #(Reward description)
  value: 100 #(Money given to player)
```

**MONEY FORMAT:**

Here is a example where player get $250

```yaml
'1':
  type: command # You can still use commands to give items :)
  name: "$250"
  lore-addon:
    - '&6 - $250'
  value: 250
```

## Reward variables (+ boosters support)

Sometimes, you want to create one reward for multiple tiers. Let's say that you want to create reward which gives money to player (`money` type). This reward should be increased by $100 on every tier, so on 5th tier player get $500, on 8th $800 etc. You can create that using variables.

```yaml
'1': # The unique id of the reward
  type: money 
  name: "$%value%"
  variables: # List of variables
    value: "(100 * %tier%) * (1 + (%booster% / 100))" # %value% reward
  lore-addon:
    - '&7 - &eMoney ($%value%)'
  value: '%value%' # Given money - %value% variable
```

In this case player gets `(100 * %tier%) * (1 + (%booster% / 100))` money.

* `(100 * %tier%)` - $100 multiplied by tier
* `* (1 + (%booster% / 100))` - [Reward boosters](/features/boosters) support

Ofc, you can create multiple variables with custom names in the same reward

#### ADDING ENCHANTMENTS

Make sure to use lowercase for enchantment IDs. You can also add enchantments from AdvancedEnchantments.

```yaml
'1':
  type: item
  name: "Jben's Sword"
  lore-addon:
    - '&7 - &eForged in the Abyss, the Shadowrend Blade is a weapon of immense power.
  items:
    '1':
      material: netherite_sword:0
      amount: 1
      name: '&4Shadowrend Blade'
      lore:
        - '&7Forged in the Abyss'
      enchants:
        - 'unbreaking:1'
        - 'strike:1'
```


# Linking Rewards To Tiers

Follow a step by step tutorial to link your rewards to tiers by yourself.

There are two passes called free and premium. You will use the same rewards.yml for each but you can pick and chose which go in what passes.

**UNDERSTANDING THE TIER SYSTEM**

Below is the default "free" pass all players have. At the bottom you have a list of tiers under "tiers:"    Please view this config below and read each explanation of what code does what.

```yaml
name: 'Free' #
default-points-required: 100 #
dont-give-premium-free-rewards: false # This will mean that premium users will not receive free rewards

items:
  doesnt-have-pass-item: # This is ONLY shown/used if you have dont-give-premium-free-rewards: true. This is used to make it so premium users can only have premium rewards.
    material: 'minecart:0' #(Tier block/item displayed in GUI)
    name: '&eTier %tier%' #(Tier name)
    lore: #(Tier description)
      - '' #(Tier description)
      - '&cYou can only claim premium rewards' #(Tier description)
  locked-tier-item: #(What is displayed when tier is lockedin GUI)
    material: 'furnace_minecart:0' #(Tier block/item displayed in GUI)
    name: '&eTier %tier%' #(Tier name)
    lore: #(Tier description)
      - '' #(Tier description)
      - '&7Rewards:' #(Tier description)
      - '%lore_addon%' #(Tier description)
      - '' #(Tier description)
      - '&7Status: &cLocked' #(Tier description)
  unlocked-tier-item: #(What is displayed when tier is unlocked in GUI)
    material: 'chest_minecart:0' #(Tier block/item displayed in GUI)
    name: '&aTier %tier%' #(Tier name)
    lore: #(Tier description)
      - '' #(Tier description)
      - '&7Rewards:' #(Tier description)
      - '%lore_addon%' #(Tier description)
      - '' #(Tier description)
      - '&7Status: &aUnlocked' #(Tier description)
  claimed-tier-item: #(What is displayed when tier is claimed in GUI)
    material: 'minecart:0' #(Tier block/item displayed in GUI)
    name: '&aTier %tier%' #(Tier name)
    lore: #(Tier description)
      - '' #(Tier description)
      - '&7Rewards:' #(Tier description)
      - '%lore_addon%' #(Tier description)
      - '' #(Tier description)
      - '&7Status: &aClaimed' #(Tier description)

tier-up-actions: #(What happens when a player goes up a tier)
  - '[message] {&7You reached tier &e%tier%}' #(message sent when on new tier)

tiers: #
  '2': #(The tier number)(This would be the second tier in the free pass and reward 1 in rewards.yml is in that place))
    rewards: ['1'] #(The reward numbers to give to the player see rewards.yml)
    required-points: 120 #(The amount of points the player must get to advance to the tier)
  '4':
    rewards: ['4', '2']
  '10':
    rewards: ['1', '2', '3', '4']
    required-points: 500
    locked-tier-item: # You can specify any of the items in the 'items' section above per tier. They're completely optional for each tier.
      material: 'barrier:0'
      name: '&eTier %tier%'
      lore:
        - ''
        - '&7Rewards:'
        - '%lore_addon%'
        - ''
        - '&7Status: &cSpecial Locked Item'
```

The way to format the Premium pass is the exact same as the free example above.

**ADDING TIERS TO THE CONFIG**

Here you will see the exact way and format to add more tiers to your free or premium passes. For example we have are default tiers '2','4' and '10'. Lets add a tier in at 7 with a reward here is how. Copy and paste one of the tiers, I copied '4' and change the 4 to your desired tier number and change the reward they will receive so I chose reward 1. Make sure everything is aligned and formatted correctly. Once you are happy with amount of tiers you have made save and exit then restart your server or reload the plugin.

```yaml
tiers:
  '2': # The tier number
    rewards: ['1'] # The reward numbers to give to the player (see rewards.yml).
    required-points: 120 # The amount of points the player must get to advance to the tier.
  '4':
    rewards: ['4', '2']
  '7':
    rewards: ['1']  
  '10':
    rewards: ['1', '2', '3', '4']
    required-points: 500
    locked-tier-item: # You can specify any of the items in the 'items' section above per tier. They're completely optional for each tier.
      material: 'barrier:0'
      name: '&eTier %tier%'
      lore:
        - ''
        - '&7Rewards:'
        - '%lore_addon%'
        - ''
        - '&7Status: &cSpecial Locked Item'
```

<mark style="color:orange;">Side note -</mark> You can also add more then one reward please follow the format above to do so.


