Skip to content

Level#

Level lets your players compete to have the top island! Place blocks and increase the island level!

Created and maintained by tastybento.

Installation#

  1. Place the level addon jar in the addons folder of the BentoBox plugin
  2. Restart the server
  3. The addon will create a data folder and inside the folder will be a config.yml
  4. Edit the config.yml how you want. The config specifies how much blocks are worth (see below)
  5. Restart the server if you make a change

Configuration#

Level addon has 3 general configuration things:

  • config.yml file contains default addon configuration files.
  • blockconfig.yml file contains value for each block.
  • /panels/ contains files that manages player GUI's

config.yml#

Config file contains main functions for the addon.

The latest config.yml can be found here.

This section defines a number of overall settings for the add-on.

disabled-game-modes

Allows to specify in which GameModeAddons Level addon should not operate.

Level will NOT hook into these game mode addons.

Default: []

log-report-to-console

Allows to see a level report if command is executed from console.

Default: true

concurrent-island-calcs

Allows to specify how many island level calculations can be happening at once.

If your CPU can handle it, you can run parallel island calcs if there are more than one in the queue.

Default: 1

calculation-timeout

Allows to specify the amount of minutes when level calculation should be stopped.

Generally, calculation should only take a few seconds, so if this ever triggers then something is not right.

Default: 5

zero-new-island-levels

Allows to specify if starting blocks should be included in island level.

If true, Level will calculate the starter island's level and remove it from any future level calculations. Player level may go into negative values if all starting blocks are removed.

If this is false, the player's starter island blocks will count towards their level.

Default: true

donations-only

If true, the island block scan is skipped entirely and the island level is computed only from blocks donated via /island donate. This removes the per-recalculation CPU cost of scanning the island.

/island level, /island top, /island value, and /island donate continue to work. /island detail is not registered in this mode, since there are no scanned blocks to break down. The top-ten panel's viewer button no longer shows "Click to view" or opens the detail panel.

The zero-island scan that runs on island creation/reset still runs when zero-new-island-levels: true, so the starter-island handicap is recorded into initialCount and applied correctly if an admin later turns donations-only off. While donations-only is on, the stored initialCount is ignored at /island level time, so flipping the mode on for a server with existing islands does not push players to wildly negative levels.

Requires BentoBox 3.16.0 or later.

Default: false

login

Allows to set that island level is calculated on player login.

This silently calculates the player's island level when they login.

Default: false

nether

Allows to include nether island in level calculation.

Warning: Enabling this mid-game will give players with an island a jump island level. New islands will be correctly zeroed.

Default: false

end

Allows to include the end island in level calculation.

Warning: Enabling this mid-game will give players with an island a jump island level. New islands will be correctly zeroed.

Default: false

include-chests

Allows to include chest content in level calculation.

Warning: level calculation will be longer and server performance may be affected.

Default: false

underwater

Allows to specify underwater block multiplier.

If blocks are below sea-level, they can have a higher value. e.g. 2x. Promotes under-water development if there is a sea. Value can be fractional.

Default: 1.0

levelcost

Allows to specify value of one island level.

Default: 100

Minimum: 1

level-calc

Allows to specify the formula for level calculation.

  • blocks - the sum total of all block values, less any death penalty
  • level_cost - in a linear equation, the value of one level

This formula can include +,=,*,/,sqrt,^,sin,cos,tan,log (natural log). Result will always be rounded to a long integer.

For example, an alternative non-linear option could be: 3 * sqrt(blocks / level_cost)

Default: blocks / level_cost

levelwait

Allows to specify cool down between level requests in seconds.

Default: 60

deathpenalty

Allows to specify the death penalty.

How many block values a player will lose per death. Default value of 100 means that for every death, the player will lose 1 level (if levelcost is 100).

Set to zero to not use this feature.

Default: 100

sumteamdeaths

Allows to sum all team members for the death penalty.

If false, only the leader's deaths counts.

Default: false

shorthand

Allows to show shorter island level numbers.

Shows large level values rounded down, e.g., 10,345 -> 10k

Default: false

blockconfig.yml#

Block config file contains values for blocks.

The latest blockconfig.yml can be found here.

This section defines values for blocks and limits for them.

Tip

Values in this file supports only integers -> full numbers.

Tip

The correct material names can be found in Spigot material page.

Note: this is latest spigot material list: MATERIALS

limits

This section lists the limits for any particular block. Blocks over this amount are not counted. This limit applies to all game modes and is not world-specific.

Format: MATERIAL: NUMBER

blocks

This section lists the value of a block in all game modes (worlds). To specific world-specific values, use the next section. Any blocks not listed will have a value of 0. AIR is always zero.

Format: MATERIAL: NUMBER

Custom blocks from Oraxen, Nexo, ItemsAdder, and CraftEngine are also supported. Use their namespaced ID as the key:

blocks:
  mynamespace:my_block: 50
  mynamespace:custom_ore: 3

As of Level 2.27.0, custom blocks are no longer filtered out of /level value, render with their real texture/model data and display name in /level detail and the value panel, and can be donated via /island donate hand, /island donate inv, and the donation panel. CraftEngine items are resolved via BentoBox 3.16.0's CraftEngineHook.getItemId / getItemStack helpers — earlier BentoBox versions will refuse to load Level 2.27.0+.

worlds

List any blocks that have a different value in a specific world. If a block is not listed, the default value will be used from the blocks section. Prefix with world name. The values will apply to the associated nether and the end if they exist.

Example:

    worlds:
      AcidIsland_world:
        SAND: 0
        SANDSTONE: 0
        ICE: 0

In this example, AcidIsland will use the same values as BSkyBlock for all blocks except for sand, sandstone and ice.

Customizable GUI's#

BentoBox 1.17 API introduced a function that allows to implement customizable GUI's. We tried to be as simple as possible for customization, however, some features requires explanation. You can find more information how BentoBox custom GUI's works here: Custom GUI's

How can I customize GUI's

To customize Level Addon GUI's you need to have version 2.10.0. This is a first version that has implemented them. Addon will create a new directory under /plugins/bentobox/addons/level with a name panels

Currently you can customize 3 GUI's:

  • Top panel: top_panel - allows to see top 10 islands.
  • The detail block panel: detail_panel - allows to view detailed list block values in game.
  • The block value panel: value_panel - allows to view each block value in game.

Each GUI contains functions that is supported only by itself.

What does PREVIOUS|NEXT button type?

This button is available in detail_panel and value_panel. The PREVIOUS and NEXT button types allows creating automatic paging, when you have more blocks than spaces in GUI. These types have extra parameters under data:

  • indexing - indicates if button will show page number.

Example:

    icon: tipped_arrow[potion_contents={custom_color:11546150}]
    title: level.gui.buttons.previous.name
    description: level.gui.buttons.previous.description
    data:
      type: PREVIOUS
      indexing: true
    action:
      left:
        tooltip: level.gui.tips.click-to-previous

What does TOP button type?

This button is available in top_panel. It shows island at the top X by island level.

The icon by default will be PLAYER_HEAD with a proper player skin. Enabling it will replace it with specified material.

index in the data field allows to specify which place of Top 10 should be showed in current spot.

Top panel has 2 implemented actions which funstion requires extra addon:

  • warp - requires Warps addon. Will be shown only if warp sign exists on players island.
  • visit - requires Visit addon. Will be shown only if visiting is allowed on players island.

Fallback allows to change background icon, when there are no player in top spot.

Example:

    #icon: PLAYER_HEAD
    title: level.gui.buttons.island.name
    description: level.gui.buttons.island.description
    data:
      type: TOP
      index: 1
    actions:
      warp:
        click-type: LEFT
        tooltip: level.gui.tips.click-to-warp
      visit:
        click-type: RIGHT
        tooltip: level.gui.tips.right-click-to-visit
    fallback:
      icon: LIME_STAINED_GLASS_PANE
      title: level.gui.buttons.island.empty

What does VIEW button type?

This button is available in top_panel. It shows viewer island level.

The icon by default will be PLAYER_HEAD with a proper player skin. Enabling it will replace it with specified material.

The action view allows to see detailed menu of players island.

Example:

    #icon: PLAYER_HEAD
    title: level.gui.buttons.island.name
    description: level.gui.buttons.island.description
    data:
      type: VIEW
    actions:
      view:
        click-type: unknown
        tooltip: level.gui.tips.click-to-view

What does BLOCK button type?

This button is available in detail_panel and value_panel. This button shows given material as icon.

Example:

  #icon: STONE
  title: level.gui.buttons.value.name
  description: level.gui.buttons.value.description
  data:
    type: BLOCK

Commands#

Tip

[player_command] and [admin_command] are commands that differ depending on the gamemode you are running. The Gamemodes' config.yml file contains options that allows you to modify these values. As an example, on BSkyBlock, the default [player_command] is island, and the default [admin_command] is bsbadmin.

  • /[player_command] top: access to the top panel. Requires [gamemode].island.top permission.
  • /[player_command] level: triggers level calculation for player. Requires [gamemode].island.level permission.
  • /[player_command] value [material]: allows to check block value. Requires [gamemode].island.value permission.
  • /[player_command] donate: opens a chest-style GUI to donate blocks directly to your island's level. Donated points survive future level recalculations. Requires [gamemode].island.level.donate permission.
  • /[player_command] donate hand [amount]: donates the item currently held in the player's hand (or the specified amount of it) directly to island level without opening the GUI. Requires [gamemode].island.level.donate permission.
  • /[player_command] donate inv: lists every donatable block in the player's inventory with per-material values and a running total, then on confirm donates them all and runs a level recalc. Items with no configured value and non-blocks stay in the inventory. Requires [gamemode].island.level.donate permission.
  • /[admin_command] level <player>: triggers level calculation for player. Requires [gamemode].admin.level permission.
  • /[admin_command] levelstatus: shows how many islands are in the queue. Requires [gamemode].admin.levelstatus permission.
  • /[admin_command] sethandicap <player> <number>: allows to set initial number of island level. Requires [gamemode].admin.level.sethandicap permission.
  • /[admin_command] top: shows the top 10 islands in chat. Requires [gamemode].admin.top permission.
  • /[admin_command] top remove <player>: allows to remove player from the top. Requires [gamemode].admin.top.remove permission.

Permissions#

Tip

[gamemode] is a prefix that differs depending on the gamemode you are running. The prefix is the lowercased name of the gamemode, i.e. if you are using BSkyBlock, the prefix is bskyblock. Similarly, if you are using AcidIsland, the prefix is acidisland.

  • [gamemode].intopten - (default: true) - Lets the player be in top 10 panel.
  • [gamemode].island.level - (default: true) - Allows player to use the /[player_command] level command.
  • [gamemode].island.top - (default: true) - Allows player to use the /[player_command] top command.
  • [gamemode].island.value - (default: true) - Allows player to use the /[player_command] value command.
  • [gamemode].island.level.details.blocks - (default: true) - Allows player to see detailed list of blocks for island.
  • [gamemode].island.level.details.spawners - (default: false) - Allows player to see detailed list of spawners for island.
  • [gamemode].island.level.details.underwater - (default: false) - Allows player to see detailed list of underwater blocks for island.
  • [gamemode].island.level.details.above-sea-level - (default: false) - Allows player to see detailed list of above the sea level blocks for island.
  • [gamemode].island.level.donate - (default: true) - Allows player to use the /[player_command] donate command.
  • [gamemode].admin.level - (default: op) - Let the player use the /[admin_command] level <player> command.
  • [gamemode].admin.levelstatus - (default: op) - Let the player use the /[admin_command] levelstatus command.
  • [gamemode].admin.level.sethandicap - (default: op) - Let the player use the /[admin_command] sethandicap <player> <number> command.
  • [gamemode].admin.top - (default: op) - Allows the access to /[admin_command] top command.
  • [gamemode].admin.top.remove - (default: op) - Allows the access to /[admin_command] top remove <player> command.
Something is missing?

You can find the comprehensive list of permissions in the addon.yml file of this addon.
If something is indeed missing from the list below, please let us know!

Placeholders#

Tip

[gamemode] is a prefix that differs depending on the gamemode you are running.

The prefix is the lowercased name of the gamemode, i.e. if you are using BSkyBlock, the prefix is bskyblock.

Properly translated placeholders for each gamemode can be found:

Please read the main Placeholders page.

Placeholder Description Level version
%Level_[gamemode]_island_level% Island level of the player's island 1.9.0
%Level_[gamemode]_visited_island_level% Island level of the island the player is standing on 1.9.0
%Level_[gamemode]_top_value_<number>% Island level of the <number>-th island in the Top 10 1.9.0
%Level_[gamemode]_top_name_<number>% Island owner's name of the <number>-th island in the Top 10 1.9.0
%Level_[gamemode]_top_island_name_<number>% Name of the <number>-th island in the Top 10 2.11.0
%Level_[gamemode]_top_members_<number>% List of the members of the `-th island in the Top 10 2.11.0
%Level_[gamemode]_top_weighted_value_<number>% Weighted island level (level/number of members) of the <number>-th island in the Top 10 2.12.0
%Level_[gamemode]_top_weighted_name_<number>% Weighted island level name (level/number of members) of the <number>-th island in the Top 10 2.12.0
%Level_[gamemode]_top_weighted_members_<number>% Weighted island members (level/number of members) of the <number>-th island in the Top 10 2.12.0
%Level_[gamemode]_top_weighted_island_name_<number>% Weighted island name (level/number of members) of the <number>-th island in the Top 10 2.12.0
%Level_[gamemode]_points_to_next_level% Points to the next level for player 2.3.3
%Level_[gamemode]_rank_value% Displays island rank value 2.7.2
%Level_[gamemode]_island_level_raw% Unformatted island level 2.8.1
%Level_[gamemode]_island_total_points% Total number of points counted before applying level formula 2.10.0
%Level_[gamemode]_island_level_max% Maximum level this island has ever been. Current level maybe lower. 2.10.0

FAQ#

Can you add a feature X?

Please add it to the list here.

How to make that level-cost increases after each level?

The level-cost setting is a fixed value and cannot be made to increase iteratively per level, because BentoBox calculates island levels by applying a single formula to the total block count — not by iterating level by level.

The way to achieve increasing level costs is to use the level-calc formula. For example, to make each level 50% harder to reach than the previous one (i.e., level 1 costs 100 blocks, level 2 costs 150, level 3 costs 225, etc.), the formula is:

level-calc: 2.4661 * log(blocks) - (2.4661 * log(level_cost) - 1)

where level_cost is the number of blocks required to reach level 1.

Here's the graph for that progression:

template

Warning

This formula begins to asymptote around level 25 — reaching level 26 or 27 requires an extremely large number of blocks, which may cause most players to converge on the same maximum level over time. Consider this when choosing your progression curve.

Deriving a custom formula

To build a formula tailored to a specific progression curve:

  1. Create a table of target levels and their corresponding block costs in a spreadsheet (e.g., Excel or Google Sheets).
  2. Plot an X/Y graph of the table.
  3. Right-click the graph and add a trend line. Choose the approximation type (linear, logarithmic, exponential, etc.) that best fits the curve, then enable "Display equation on chart".
  4. In the resulting equation, substitute blocks for x and use that as the level-calc value.

For example, the 50% progression above was derived this way and yields:

level-calc: 2.4661 * log(blocks) - 10.357

template template

Changelog#

What's new in v2.23.0

Released: 2026-02-21

  • Oraxen and Nexo furniture/custom block support. Level can now count Oraxen furniture mechanics and Nexo custom blocks and furniture towards island level. These integrations are in beta — enable them if you have either plugin installed.
  • New per-block placeholders: [gamemode]_island_count_<block> (count of a specific block on the island), [gamemode]_island_value_<block> (value of a block type), and [gamemode]_island_limit_<block> (configured block limit). Block keys use underscores, e.g. _island_count_minecraft_stone.

Release v2.23.0

What's new in v2.24.0 — action required

Released: 2026-04-12

  • Block donation system. Players can now permanently donate blocks to their island's level via /[player_command] donate (GUI) or /[player_command] donate hand [amount] (quick donate from hand). Donated points are stored per-island and re-added after every level recalculation.
  • New ISLAND_BLOCK_DONATION protection flag controls who can donate. Default is owner-only; can be extended down to Member rank.
  • New DONATED tab in detail_panel.yml showing the island's donation history.
  • New island_members variable available in the level-cost formula for handicapping larger teams.
  • Admin level report now includes a donated-blocks breakdown.
  • All locale files migrated to MiniMessage formatting.
  • 🆕 Russian (ru.yml) locale added.
  • Top ten ordering fix under concurrent writes.
  • Block icons for hanging signs, vines, and cave vines now render correctly.

🔺 Delete plugins/BentoBox/addons/Level/panels/detail_panel.yml before restarting so the new DONATED tab template is generated. The file is not overwritten on upgrade.

🔡 Regenerate locale files if you have customisations — the old & color codes are no longer valid.

Release v2.24.0

What's new in v2.25.0

Released: 2026-04-26

  • CraftEngine custom block support. CraftEngine blocks are now counted during island level calculations. Add them to blockconfig.yml using their namespaced IDs (e.g. mynamespace:my_block: 50). Requires BentoBox 3.15.0+. CraftEngine can be disabled with disabled-plugin-hooks: [CraftEngine] in config.yml.
  • Localizable hand keyword. The hand argument in /island donate and /island value is now translatable via a new island.donate.hand.keyword locale key. English hand is always accepted as a fallback.
  • 🔡 All 16 non-English locale files updated to include missing keys.
  • 🔡 Ukrainian locale now fully translated.

🔡 Regenerate locale files to pick up the new island.donate.hand.keyword key.

Release v2.25.0

What's new in v2.26.0

Released: 2026-05-04

  • Configurable donation panel. The donate GUI is now fully template-driven via a new panels/donation_panel.yml, matching the value, detail, and top-ten panels. Admins can resize the panel from 1 to 6 rows, relocate the four named buttons (INFO, CANCEL, PREVIEW, CONFIRM), swap their icons, and add decorative items. The donation grid auto-fills every cell that isn't a border or named button.
  • force-shown: [1,2,3,4] controls how many rows the panel uses (1–6 supported). The four required buttons are placed by data.type. If the template is missing or any required button is absent, the panel falls back to the previous hardcoded 4-row layout.
  • 🐛 Decorative template items now actually render in the inventory; the custom title: on the donation panel is now respected; force-shown is parsed as a list (consistent with other panel YAMLs).
  • No API breaks, no locale changes, no config.yml migrations.

⚙️ Donation panel layout. A new panels/donation_panel.yml is shipped on first launch — leave it alone to keep the 2.25.0 layout, or edit it to customise.

Release v2.26.0

What's new in v2.27.0 — action required

Released: 2026-05-13

🔺 Requires BentoBox 3.16.0 or later. This release bumps the api-version in addon.yml to 3.16.0 and depends on the new CraftEngineHook.getItemId / getItemStack helpers. Older BentoBox versions will refuse to load the addon.

  • ⚙️ Donations-only mode. New donations-only option in config.yml (default false). When true, the per-recalculation chunk scan is skipped entirely and the island level is computed from donated points alone using the configured level-calc formula. /island detail is not registered in this mode and the top-ten viewer button stops opening the detail panel. The stored initialCount is ignored at /island level time, so flipping the mode on for a server with existing islands does not push players to wildly negative levels.
  • 💎 /island donate inv — donate everything from inventory. New confirmable inv subcommand: lists every donatable block in the player's inventory with per-material values and a running total, then on confirm donates them all and runs a level recalc. Items with no configured value and non-blocks stay in the inventory. Tab-complete now suggests hand / inv for the first arg, and the held-item count after hand.
  • 🧱 Custom block support across value, detail, and donate menus. Oraxen, Nexo, ItemsAdder, and CraftEngine custom blocks are no longer filtered out of /level value or rendered as nameless PAPER icons in /level detail. The value panel and details panel look up the real custom-block ItemStack from each plugin's registry, so the configured texture/model data and display name are preserved. /island value hand on a held custom item now reports the configured value and display name. Donation paths (/island donate hand, /island donate inv, the donation panel) accept custom-block items and record donations under the custom ID.
  • 🐛 Negative progression fix. Non-linear level-calc formulas (e.g. 3 * sqrt(blocks / level_cost)) no longer dip below zero between levels. Thanks @msmith-codes!
  • Performance. tidyUp() no longer walks up to 10M points linearly on the primary thread when computing point boundaries — the forward and backward scans now use binary search (~23 iterations instead of millions).

🔡 Locales updated. All 18 shipped locales gained new island.donate.inv.* keys (keyword, confirm-header, confirm-line, confirm-total). If you have customised locale files in plugins/BentoBox/addons/Level/locales/, copy the new donate.inv block into them or the new /island donate inv flow will show raw keys.

Release v2.27.0

Translations#

Help us keep translations accurate

Most BentoBox and addon translations are now generated with the help of AI, so the bulk of the work is already done — but AI is not perfect. What we really need from the community is error reports and corrections.

  • Spotted a mistake or awkward phrasing? Open an issue or a PR on the relevant repository at bentobox.world (a short link to our GitHub org), or tell us on Discord.
  • Want to add a brand-new language? Open a PR adding a new locale file to src/main/resources/locales/ in the relevant repo, or ask on Discord and we'll get you started.
Language Language code Progress
English (United States) en-US 100% (Default)
Chinese, China zh-CN 100%
Czech cs 100%
Dutch nl 100%
French fr 100%
German de 100%
Hungarian hu 100%
Indonesian id 100%
Korean ko 100%
Latvian lv 100%
Polish pl 100%
Portuguese pt 100%
Russian ru 100%
Spanish es 100%
Turkish tr 100%
Ukrainian uk 100%
Vietnamese vi 100%

API#

Since Level 2.7.2 and BentoBox 1.17 other plugins can access to the Level addon data directly. However, addon requests are still a good solution for a plugins that do not want to use too many dependencies.

Maven Dependency#

Level provides an API for other plugins. This covers Level 2.8.1 and onwards.

Note

Add the Level dependency to your Maven POM.xml:

    <repositories>
        <repository>
            <id>codemc-repo</id>
            <url>https://repo.codemc.io/repository/bentoboxworld/</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>world.bentobox</groupId>
            <artifactId>level</artifactId>
            <version>2.8.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

Use the latest Level version.

Then you can obtain the level for a player by asking Level once you have the world that the island is in and confirming that the player is the owner of an island in that world.

The JavaDocs for Level can be found here.

Events#

Description

Event that is triggered when player level is calculated.

Link to the class: IslandLevelCalculatedEvent

Variables

  • Island island - the island object.
  • UUID targetPlayer - id of the player who calculated level.
  • Results results - the calculated island results.

Code example

@EventHandler(priority = EventPriority.MONITOR)
public void onLevelCalculated(IslandLevelCalculatedEvent event) {
    UUID user = event.getTargetPlayer();
    Island island = event.getIsland();
    Results results = event.getResults();

    // death handicap from results.
    int deathHandicap = event.getDeathHandicap();

    // the island initial level from results.
    long initialLevel = event.getInitialLevel();

    // the island level from results.
    long level = event.getLevel();

    // this will overwrite island level to 100.
    event.setLevel(100);

    // number of points required to next level
    long pointsToNextLevel = event.getPointsToNextLevel();

    // the report text from results.
    List<String> report = event.getReport();
}

Description

Event that is triggered before player level is calculated.

Link to the class: IslandPreLevelEvent

Variables

  • Island island - the island object.
  • UUID targetPlayer - id of the player who calculated level.

Code example

@EventHandler(priority = EventPriority.LOW)
public void beforeLevelCalculated(IslandPreLevelEvent event) {
    UUID user = event.getTargetPlayer();
    Island island = event.getIsland();
}

Addon Request Handlers#

This API is no longer needed because Level is now loaded as a Bukkit Plugin so its methods can be accessed directly. The JavaDocs for Level can be found here. If you want a player's level for example, you can get it directly from the LevelsManager class methods. However, this documentation is being kept for legacy reasons.

More information about addon request handlers can be found here

Description

Returns the level of this player's island in the given world.

Input

  • world-name: String - the name of the world.
  • player: UUID - the UUID of the player.

Output

The player's island level or 0L if the input was invalid or if this player does not have an island in this world.

Failure

This handler will return 0L if the world-name has not been provided or if the world-name does not exist or is not a gamemode world.

Code example

    /**
     * Returns the level of this player's island in the given world.
     * @param playerUUID UUID of the player, not null.
     * @param worldName Name of the world (Overworld) the island is in, not null.
     * @return the player's island level or {@code 0L} if the input was invalid or
     *         if this player does not have an island in this world.
     */
    public long getIslandLevel(UUID playerUUID, String worldName) {
        return (Long) new AddonRequestBuilder()
            .addon("Level")
            .label("island-level")
            .addMetaData("world-name", worldName)
            .addMetaData("player", playerUUID)
            .request();
    }

Description

Returns the players whose island they own is in the Top 10 mapped to the level of their island.

Input

  • world-name: String - the name of the world.

Output

Map<UUID, Long> containing the UUIDs of the island owners whose island is in the Top 10, mapped to the level of their island.

Failure

This handler will return empty map if the world-name has not been provided or if the world-name does not exist or is not a gamemode world.

Code example

    /**
     * Returns the players whose island they own is in the Top 10 mapped to the level of their island.
     * @param worldName Name of the world (Overworld) the island is in, not null.
     * @return a Map containing the UUIDs of the island owners whose island is in the Top 10, mapped to the level of their island,
     *         or an empty map if the specified world doesn't exist or doesn't contain islands.
     */
    public Map<UUID, Long> getTopTen(String worldName) {
        return (Map<UUID, Long>) new AddonRequestBuilder()
            .addon("Level")
            .label("top-ten-level")
            .addMetaData("world-name", worldName)
            .request();
    }

Last update: May 17, 2026 19:09:15