Topper

This is a wiki to demonstrate all projects of Topper, a project / framework to handle single-value data tables.

Check the sidebar and choose a project to see more details.

Subsections of Topper

Chapter 1

Topper (Spigot)

The documentation for the Spigot plugin of Topper.

Where to find the plugin:

Subsections of Topper (Spigot)

Quick Start

This will quickly introduce you to the basics of the plugin, by creating a simple leaderboard.

Add a Top Holder

The unit that stores and manages the leaderboard data is called a Top Holder. Inside the Top Holder, you can define a Value Provider, which is responsible for providing the value of each entry in the leaderboard.

We will start by creating a Top Holder named jump and defining a Value Provider to count the number of times the player jumps. The Value Provider we will use is called Statistic Provider.

Open the config.yml file from the plugin’s folder (plugins/Topper/config.yml), head to the holders section, and add the following configuration:

holders:
  jump: # The name of the Top Holder
    type: statistic # The type of the Value Provider, which in this case is a Statistic Provider
    statistic: jump # The name of the statistic that will be used to count the number of jumps

That is all you need to do, now the plugin is ready to start counting the number of jumps.

Open your server terminal and type /reloadtop to apply the changes.

Display the Top Holder

There are several ways to display the leaderboard of a Top Holder. In this case, we will simply display the top 10 players in the chat.

To do this, type the following command:

/gettop jump 10

gettop gettop

Add another Top Holder

Now, let’s add another Top Holder to show the amount of diamond ores a player has mined.

Open the config.yml file from the plugin’s folder (plugins/Topper/config.yml), head to the holders section, and add the following configuration:

holders:
  jump:
    type: statistic
    statistic: jump
  mine:
    type: statistic
    statistic: mine_block
    material: diamond_ore

mine_block needs a block material to work. Hence, we added the material field to specify the block material, which in this case is diamond_ore.

Open your server terminal and type /reloadtop to apply the changes.

Now, you can display the top 10 players who have mined the most diamond ores by typing the following command:

/gettop mine 10

gettop gettop

What’s next?

This is just the beginning. You can check the other pages in the documentation to learn more about the plugin and its features. There could be something that you might find interesting for your server.

Happy building! 🚀

Commands & Permissions

CommandPermissionDescription
gettop <holder>topper.topGet the top 10 players of a leaderboard provided by the specified <holder>
gettop <holder> <number>topper.topGet the top <number> players of a leaderboard provided by the specified <holder>
gettop <holder> <from_index> <to_index>topper.topGet the players from the specified index range of a leaderboard provided by the specified <holder>
reloadtoptopper.reloadReload the plugin

Config

# The type of storage the plugin will use to store the value
# Available: FLAT, YAML, JSON, SQLITE, NEW-SQLITE, MYSQL
storage-type: yaml

# The settings for the Top Holders
holders: {}

# Should the plugin load all offline players when the server starts
load-all-offline-players: false
task:
  save:
    # How many entries should be saved per tick
    entry-per-tick: 10
    # How many ticks should the plugin wait before saving the leaderboard
    delay: 0
  update:
    # How many entries should be updated per tick
    entry-per-tick: 10
    # How many ticks should the plugin wait before updating the leaderboard
    delay: 0

Frequently Asked Questions

I set my Value Provider, but it’s laggy

In most cases, you’d better enable async (Tutorial) so that your provider is run on an asynchronous thread that doesn’t affect your main server thread. However, some providers may not support asynchronous run and require to run on the main thread. In that case, either you have to find one that supports and test it or ask the author of that provider to add support for that.

I set my PlaceholderAPI’s placeholder but it is not showing the value in the Top Holder

  • Make sure that the placeholder you are using is valid and that the plugin that provides the placeholder is installed and working correctly.
  • Try running the command /papi parse me <placeholder> to see if the placeholder is working as expected.
  • Check if the placeholder is for online players only. If so, set the online option to true in the configuration.
  • Try setting show-errors to true to see if there are any errors when parsing the placeholder. (Tutorial)
  • If the placeholder is still not working, ask for help in the plugin’s support channel or forum (remember to enable show-errors and provide the logs to them for better support).

My placeholder gives a formatted value (e.g., 1,000.00 instead of 1000). Can I use it in the provider?

No, the placeholder provider only supports numerical values (only numbers and decimal separator . (dot) ). You must use a placeholder that returns a raw number without formatting, if possible. If the plugin that provides the placeholder does not have an option to return a raw number, you can try using a different placeholder or ask the plugin developer to add support for raw numbers.

If the value is a simple formatted number, you can try Handling the Formatted Value.

How can I know if a placeholder works with Topper?

Here is a rough list of criteria that a placeholder should have in order to work with Topper:

  • The placeholder should only returns raw number
    • That means it should only have digits and one . (dot) as a decimal separator
      • Work: 100, 100.00, 100.123
      • Won’t work: abc, 1,000,000, 100,000.122, 100.000.000, 1 000 000
  • The placeholder should work with both online and offline players
  • If the placeholder doesn’t work with offline players, it should return an empty string or the placeholder itself
  • If there is any error in the logic of the placeholder, it should return an empty string or the placeholder itself
Chapter 5

Value Provider

A unit that provides values to the Top Holder. Continue reading to learn more about the built-in value providers.

Subsections of Value Provider

Statistic

This is a provider that provides statistic values of a player to the Top Holder.

Format

holders:
  <holder-name>:
    # The type of the provider
    type: statistic
    # The name of the statistic
    statistic: <statistic>
    # The name of the material. Used for some statistics that require an item.
    material: <material>
    # The name of the entity. Used for some statistics that require an entity.
    entity: <entity>
  • Available values for <statistic> can be found here
  • Available values for <material> can be found here
  • Available values for <entity> can be found here

Behavior

  • If the statistic is a Generic type, the material and entity fields are ignored. The provider will return the value of the statistic for the player.

  • If the statistic is a Material type, the material field will be used:

    • If the material is not specified, the provider will return the value of the statistic for all materials.
    • If the material is specified, the provider will return the value of the statistic for the specified material.
    • The material field can be a string or a list of strings.
material: STONE

material:
  - STONE
  - COBBLESTONE
  • If the statistic is an Entity type, the entity field will be used:
    • If the entity is not specified, the provider will return the value of the statistic for all entities.
    • If the entity is specified, the provider will return the value of the statistic for the specified entity.
    • The entity field can be a string or a list of strings.
entity: ZOMBIE

entity:
  - ZOMBIE
  - SKELETON

Example

holders:
  # Holder that shows the number of times a player has jumped
  jump:
    type: statistic
    statistic: JUMP
  # Holder that shows the number of blocks mined by a player
  mine:
    type: statistic
    statistic: MINE_BLOCK
  # Holder that shows the number of times a player has killed a zombie
  zombie:
    type: statistic
    statistic: KILL_ENTITY
    entity: ZOMBIE
  # Holder that shows the number of times a player has mined diamond ore
  diamond:
    type: statistic
    statistic: MINE_BLOCK
    material: DIAMOND_ORE
  # Holder that shows the number of times a player has mined diamond ore or gold ore
  diamond_or_gold:
    type: statistic
    statistic: MINE_BLOCK
    material:
      - DIAMOND_ORE
      - GOLD_ORE
  # Holder that shows the number of times a player has killed a zombie or a skeleton
  zombie_or_skeleton:
    type: statistic
    statistic: KILL_ENTITY
    entity:
      - ZOMBIE
      - SKELETON

Placeholder

Note

This is a provider that allows you to use PlaceholderAPI placeholders as values in the Top Holder.

Format

holders:
  <holder-name>:
    # The type of the provider
    type: placeholder
    # The placeholder used to get the value
    placeholder: <placeholder>
    # Whether the placeholder should be parsed for online players only. Default is false (all players)
    online: <true/false>

Example

holders:
  # Holder that shows the amount of money a player has
  # Use the Vault expansion: /papi ecloud download Vault
  money:
    type: placeholder
    placeholder: "%vault_eco_balance%"
  # Holder that shows the number of diamonds a player has mined
  # Use the Statistic expansion: /papi ecloud download Statistic
  diamonds:
    type: placeholder
    placeholder: "%statistic_mine_block:DIAMOND_ORE%"
    online: true # Only get the value for online players

MiniPlaceholder

Note

This is a provider that allows you to use MiniPlaceholders placeholders as values in the Top Holder.

Format

holders:
  <holder-name>:
    # The type of the provider
    type: mini-placeholder
    # The placeholder used to get the value
    placeholder: <placeholder>

Example

holders:
  # Holder that shows the amount of money a player has
  # Use the Vault expansion: https://modrinth.com/plugin/miniplaceholders-vault-expansion
  money:
    type: mini-placeholder
    placeholder: "<vault_eco_balance>"

Query

This page provides information about the query system, which is used to retrieve data from the Top Holder.

Format

The format of a query is as follows:

<holder>;<type>;<args>
  • <holder>: The Top Holder to query.
  • <type>: The type of data to retrieve.
  • <args>: Additional arguments for the query.

If the <type> does not require any arguments, the query can be simplified to:

<holder>;<type>

Types

TypeArgumentDescriptionExampleExplanation
top_name<position>The name of the player at the specified position.money;top_name;1Retrieve the name of the player at the first position in the Top Holder named money
top_key<position>The UUID of the player at the specified position.money;top_key;1Retrieve the UUID of the player at the first position in the Top Holder named money
top_value<position>The value of the player at the specified position.money;top_value;1Retrieve the value of the player at the first position in the Top Holder named money
top_value<position>;<format>The formatted value of the player at the specified position.money;top_value;1;#,###Retrieve the formatted value of the player at the first position in the Top Holder named money
top_value_raw<position>The raw value of the player at the specified position.money;top_value_raw;1Retrieve the raw value of the player at the first position in the Top Holder named money
top_rankThe rank of the player.money;top_rankRetrieve the rank of the player in the Top Holder named money
top_rank<format>The formatted rank of the player.money;top_rank;#,###Retrieve the formatted rank of the player in the Top Holder named money
top_sizeThe amount of entries in the Top Holder.money;top_sizeRetrieve the amount of entries in the Top Holder named money
valueThe value of the player.money;valueRetrieve the value of the player in the Top Holder named money
value<format>The formatted value of the player.money;value;#,###Retrieve the formatted value of the player in the Top Holder named money
value_rawThe raw value of the player.money;value_rawRetrieve the raw value of the player in the Top Holder named money
Chapter 7

Hook

Details about the hooks provided by the plugin.

Subsections of Hook

MiniPlaceholders

Note

The plugin provides a MiniPlaceholders placeholder to allow you to query data from the Top Holder.

Usage

<topper_global:<query>>
<topper_player:<query>>

Check the Query section for more information about how to set the <query>.

Example

<topper_global:money;top_name;1>
<topper_global:money;top_value;1>
<topper_global:money;top_value;1;#,###>
<topper_player:money;top_rank>

PlaceholderAPI

Note

The plugin provides a PlaceholderAPI placeholder to allow you to query data from the Top Holder.

Usage

%topper_<query>%

Check the Query section for more information about how to set the <query>.

Example

%topper_money;top_name;1%
%topper_money;top_value;1%
%topper_money;top_value;1;#,###%
%topper_money;top_rank%
Chapter 8

Extra

Extra tutorials for common features and tasks.

Note

Parts of the tutorials in this section assume that you’ve done the Quick Start. If there is anything you don’t understand from the tutorials, you may want to go back and do the Quick Start.

Subsections of Extra

Create a Hologram

Note

Requires PlaceholderAPI and a hologram plugin that supports PlaceholderAPI such as DecentHolograms

You can use the top_name and top_value placeholders to display players in the leaderboard.

Here is an example of a hologram that displays the top 5 players in the leaderboard:

&b&lJUMP LEADERBOARD
&7#1 &f%topper_jump;top_name;1% &7- &b%topper_jump;top_value;1%
&7#2 &f%topper_jump;top_name;2% &7- &b%topper_jump;top_value;2%
&7#3 &f%topper_jump;top_name;3% &7- &b%topper_jump;top_value;3%
&7#4 &f%topper_jump;top_name;4% &7- &b%topper_jump;top_value;4%
&7#5 &f%topper_jump;top_name;5% &7- &b%topper_jump;top_value;5%

hologram hologram

Create a Top Block

Note

Create a Top Skull

  1. Prepare a skull template named jump_skull that returns the UUID of the player at the specific {index} of the jump leaderboard
/varblocks template add jump_skull %topper_jump;top_key;{index}%
  1. Place the skull skull1 skull1

  2. While looking at the skull, run the following command to assign the jump_skull template to the skull

/varblocks block add jump_1 skull jump_skull
  1. Set the {index} of the skull to 1 to display the top player
/varblocks block argument jump_1 index 1
  1. Create another skull for the second player
/varblocks block add jump_2 skull jump_skull
/varblocks block argument jump_2 index 2

skull2 skull2

Create a Top Sign

  1. Prepare a sign template named jump_sign that displays the player’s name and value at the specific {index} of the jump leaderboard
/varblocks template add jump_sign
/varblocks template add jump_sign &6#{index}&7: &f%topper_jump;top_name;{index}%
/varblocks template add jump_sign &e%topper_jump;top_value;{index}%
/varblocks template add jump_sign
  1. Place the sign sign1 sign1

  2. While looking at the sign, run the following command to assign the jump_sign template to the sign

/varblocks block add jump_sign_1 sign jump_sign
  1. Set the {index} of the sign to 1 to display the top player
/varblocks block argument jump_sign_1 index 1
  1. Create another sign for the second player
/varblocks block add jump_sign_2 sign jump_sign
/varblocks block argument jump_sign_2 index 2

sign2 sign2

Create an NPC

Note
  1. Create a player NPC
/npc create %topper_jump;top_name;1%
  1. Set the skin of the NPC
/npc skin %topper_jump;top_name;1%

The NPC will display the skin of the top player of the jump leaderboard.

Customize Value Provider

Asynchronous Provider

You can set async to true to make the provider asynchronous, meaning it will be executed in a separate thread. This can be useful if the provider is slow or if it performs a lot of calculations.

holders:
  jump:
    <your other settings>
    async: true

Default Values

You can change the default values, returned by some queries and commands, by adding some settings to your holder settings.

holders:
  jump:
    <your other settings>
    null-name: "---" # Default value for the name
    null-uuid: "---" # Default value for the uuid
    null-value: "---" # Default value for the value
    line: "&7[&b{index}&7] &b{name} &7- &b{value}" # Default format for the top line in the top list

Reversed Leaderboard

By default, the leaderboard is measured by the player with the highest value first. If you want to change that (e.g. show the player with the least value first), you can set reverse to true.

holders:
  jump:
    <your other settings>
    reverse: true

Handle Formatted Values

If the output of a Value Provider (Placeholder for example) is a formatted value and you are confident that you can get the raw value from it with a simple method of taking only numbers and the decimal separator, you can enable the formatted option in your Holder Setting.

holders:
  example-formatted-value-provider:
    <your other settings>
    formatted: true
    formatted-settings: # Optional settings for the formatted value
      decimal-separator: "." # Change this to the decimal separator of the formatted value

Show Errors

By default, any errors that occur during the execution of a provider will be truncated. If you want to show the errors instead, you can set show-errors to true.

holders:
  jump:
    <your other settings>
    show-errors: true

Ignore Permission

You can specify a set of permissions so that the Holder will skip updating the value of the player if they have one of the permissions.

holders:
  jump:
    <your other settings>
    ignore-permission: exclude.permission
Note

In some Value Providers like Placeholder, you may need to ensure that it would take the value of online players only (For example, by setting online to true in Placeholder Value Provider)

Migrate from 2.X

  1. Download and install Topper 3.0.0 here
  2. Install VarBlocks if you use Top Signs or Top Skulls here
  3. Run the server and let Topper convert your data
  4. You’re done! Enjoy the new features of Topper 3.0.0!

Playtime Leaderboard

This will guide you on how to create an unreliable playtime leaderboard for your server using the built-in Statistic Value Provider and format the value using Value Display.

Add the Holder

Open the config.yml file and add the following holder:

holders:
  playtime:
    type: statistic
    statistic: PLAY_ONE_MINUTE # Or PLAY_ONE_TICK if your server is running on 1.12 or below

This will create a holder named playtime that shows the total playtime of a player in ticks.

But the value is in ticks, which is not human-readable. So, we need to format it. Add the following line:

holders:
  playtime:
    type: statistic
    statistic: PLAY_ONE_MINUTE
    line: "&7[&b{index}&7] &b{name} &7- &b{value_time:pattern=HH:mm:ss&type=duration&unit=ticks}"

We added the line setting to the holder and override the default line. The {value_time:pattern=HH:mm:ss&type=duration&unit=ticks} will format the value to a human-readable time format.

Now when you save and restart the server, you should see the playtime leaderboard in the /gettop playtime command.

Command output Command output

Display the Leaderboard

We will display it in a hologram

Here is an example of a hologram that displays the top 5 players in the leaderboard:

&b&lPLAYTIME LEADERBOARD
&7#1 &f%topper_playtime;top_name;1% &7- &b%topper_playtime;top_value;1;time:pattern=HH:mm:ss&type=duration&unit=ticks%
&7#2 &f%topper_playtime;top_name;2% &7- &b%topper_playtime;top_value;2;time:pattern=HH:mm:ss&type=duration&unit=ticks%
&7#3 &f%topper_playtime;top_name;3% &7- &b%topper_playtime;top_value;3;time:pattern=HH:mm:ss&type=duration&unit=ticks%
&7#4 &f%topper_playtime;top_name;4% &7- &b%topper_playtime;top_value;4;time:pattern=HH:mm:ss&type=duration&unit=ticks%
&7#5 &f%topper_playtime;top_name;5% &7- &b%topper_playtime;top_value;5;time:pattern=HH:mm:ss&type=duration&unit=ticks%

hologram hologram

Value Display

Some places like {value} in line and the value and top_value queries can be expanded to format the value in a more readable way. This is done by specifying some settings for them like:

  • {value_<format>}
  • <holder>;value;<format>
  • <holder>;top_value;<position>;<format>

The following section will guide you through the available formats to replace <format>, we will use the <holder>;value;<format> query as an example.

Available Formats

Decimal Format

Format: decimal:setting1=value1&setting2=value2

SettingDescriptionDefaultExample
decimalSeparatorThe character used to separate the integer part from the fractional part.decimalSeparator=.
groupingSeparatorThe character used to separate groups of digits to the left of the decimal separatorgroupingSeparator=,
groupingSizeThe number of digits in each group to the left of the decimal separatorgroupingSize=3
maximumFractionDigitsThe maximum number of digits allowed in the fractional part of the numbermaximumFractionDigits=2

Example: jump;value;decimal:decimalSeparator=,&groupingSeparator=.&groupingSize=3&maximumFractionDigits=2

Time Format

Format: time:setting1=value1&setting2=value2

SettingDescriptionDefaultExample
patternThe pattern describing the date and time formatHH:mm:sspattern=HH:mm:ss
typeThe type of the time: duration or timedurationtype=duration
unitThe unit of the time: ticks, nanoseconds, microseconds, milliseconds, seconds, minutes, hours, dayssecondsunit=seconds

Example: playtime;value;time:pattern=HH:mm:ss&type=duration&unit=ticks

Chapter 2

TimedTopper

The documentation for TimedTopper, a Spigot plugin for timely leaderboards.

Where to find the plugin:

Subsections of TimedTopper

Config

# The type of storage the plugin will use to store the value
# Available: YAML, SQLITE, MYSQL
storage-type: yaml

# The settings for each holder
holders:
  jump_daily:
    top: jump
    cron: DAILY
    rewards:
      ?:
        - give {name} stone 1
      1:
        - give {name} diamond 1
        - say {name} got a diamond for jumping the most
      2:
        - give {name} iron 1
        - say {name} got iron for jumping the second most

task:
  save:
    # How many entries should be saved per tick
    entry-per-tick: 10
    # How many ticks should the plugin wait before saving the leaderboard
    delay: 0
Chapter 2

Holder

This will guide you to set up a Timed Holder

Subsections of Holder

Link a Top Holder

First, you add some settings to link a Top Holder to this Timed Holder, which means the Timed Holder will listen to the Top Holder for value changes and updates.

holders:
  jump_daily: # The timed holder name
    top: jump # The top holder it will be based on

This example will set that the Timed Holder jump_daily will listen to the Top Holder jump (Click here if you don’t know what jump is).

Continue reading to learn how to set up time settings.

Set time interval

Now you will set the duration of the Timed Holder. When the duration of the Timed Holder is over, the holder will be reset.

Format

cron: <cron-expression>

The cron is a QUARTZ expression, which is usually an expression with 7 parts.

You can go to this page to generate your own cron expression.

Built-in

The plugin provides some built-in cron expressions in case you don’t want to make the expression yourself:

  • HOURLY: The holder would be reset at the start of the next hour
  • DAILY: The holder would be reset at the start of the next day
  • WEEKLY: The holder would be reset at the start of the next week
  • MONTHLY: The holder would be reset at the start of the next month
  • YEARLY: The holder would be reset at the start of the next year

Example

holders:
  # The holder that resets every day
  jump_daily:
    top: jump
    cron: DAILY
  # The holder that resets every month
  jump_monthly:
    top: jump
    cron: MONTHLY
  # The holder that resets every half of the month
  jump_custom_time:
    top: jump
    cron: 0 0 0 1,15 * ? *

Set up Reward

Now you will set the rewards to give to the players when the Timed Holder is reset.

Format

rewards:
  ?: # Rewards for all players in the holder
    - "command_1"
    - "command_2"
    - ...
  1: # Rewards for the 1st player
    - "command_1"
    - "command_2"
    - ...
  2: # Rewards for the 2nd player
    - "command_1"
    - "command_2"
    - ...
  3: # Rewards for the 3rd player
    - "command_1"
    - "command_2"
    - ...
  4: # Rewards for the 4th player
    - "command_1"
    - "command_2"
    - ...
  <more ranks>

?, 1, 2, 3, etc. are optional. You don’t have to set all of them.

Reward Variable

The plugin provides some variables to apply in the reward commands

  • {name}: The name of the player
  • {uuid}: The UUID of the player
  • {rank}: The rank of the player, starts from 1
  • {initial}: The initial value of the player in the holder
  • {current}: The current value of the player in the holder
  • {value}: The value of the player in the holder - The distance between {initial} and {current}

Example

holders:
  jump_daily:
    top: jump
    cron: DAILY
    rewards:
      ?:
        - give {name} stone 1
      1:
        - give {name} diamond 1
        - say {name} got a diamond for jumping the most
      2:
        - give {name} iron 1
        - say {name} got iron for jumping the second most

Query

The query system is the same as the one used in Topper, with the addition that the <holder> is the name of the Holder speficied in the configuration file of TimedTopper.

Refer to the Topper Query page for more information.

New Types

TypeArgumentDescriptionExampleExplanation
remain_timeThe remaining time in millis until the next reset.money;remain_timeRetrieve the remaining time in millis until the next reset of the Holder named money
remain_time<format>The remaining time until the next reset.money;remain_time;HH:mm:ssRetrieve the remaining time until the next reset of the Holder named money
end_timeThe time of the next reset in epoch millis.money;end_timeRetrieve the time of the next reset in epoch millis of the Holder named money
end_time<format>The time of the next reset.money;end_time;yyyy-MM-dd HH:mm:ssRetrieve the time of the next reset of the Holder named money
Chapter 4

Hook

Details about the hooks provided by the plugin.

Subsections of Hook

PlaceholderAPI

The plugin provides a PlaceholderAPI placeholder to allow you to query data from the Holder.

Usage

%timedtopper_<query>%

Check the Query section for more information about how to set the <query>.

Example

%timedtopper_money;top_name;1%
%timedtopper_money;top_value;1%
%timedtopper_money;top_value;1;#,###%
%timedtopper_money;top_rank%
%timedtopper_money;remain_time;HH:mm:ss%
%timedtopper_money;end_time;yyyy-MM-dd HH:mm:ss%
Chapter 3

GroupTopper

The documentation of GroupTopper, a Spigot plugin for group leaderboards

Where to find the plugin:

Subsections of GroupTopper

Config

# The type of storage the plugin will use to store the value
# Available: YAML, SQLITE, MYSQL
storage-type: sqlite
# The settings for each group holders
holders:
  jump_group: # The group holder name
    top: jump # The top holder it will be based on

    type: placeholder # Group settings
    owner: '%player_uuid%'
    display: '%player_name%'
    online: true
task:
  save:
    # How many entries should be saved per tick
    entry-per-tick: 10
    # How many ticks should the plugin wait before saving the leaderboard
    delay: 0
Chapter 2

Holder

This will guide you to set up a Group Holder

Subsections of Holder

Link a Top Holder

First, you add some settings to link a Top Holder to this Group Holder, which means the Group Holder will listen to the Top Holder for value changes and updates.

holders:
  jump_group: # The group holder name
    top: jump # The top holder it will be based on

This example will set that the Group Holder jump_group will listen to the Top Holder jump (Click here if you don’t know what jump is).

Continue reading to learn how to set up group settings.

Chapter 2

Set up Group settings

Now you will set up some settings for the type of Group.

Continue reading to learn how to set up based on the Group plugin you desire. Check the sidebar for a list of supported Group plugins.

Subsections of Set up Group settings

BentoBox

Note

Requires BentoBox and one or more Gamemode addons

Format

type: bentobox
gamemode: <gamemode> # the name of the gamemode

Example

holders:
  jump_group:
    top: jump

    type: bentobox
    gamemode: bskyblock

FactionsUUID

Note

Requires FactionsUUID

Format

type: factionsuuid

Example

holders:
  jump_group:
    top: jump

    type: factionsuuid

HuskTowns

Note

Requires HuskTowns

Format

type: husktowns

Example

holders:
  jump_group:
    top: jump

    type: husktowns

KingdomsX

Note

Requires KingdowsX

Format

type: kingdoms
kingdoms-type: <KINGDOM/NATION> # The type of the kingdoms to get, KINGDOM for the kingdom of the player, NATION for the capital kingdom of the nation of the player

Example

holders:
  jump_group:
    top: jump

    type: kingdoms
    kingdoms-type: KINGDOM

Lands

Note

Requires Lands

Format

type: lands
lands-type: <LAND/NATION> # The type of the kingdoms to get, KINGDOM for the kingdom of the player, NATION for the capital kingdom of the nation of the player

Example

holders:
  jump_group:
    top: jump

    type: lands
    lands-type: LAND

PlaceholderAPI

Note

Requires PlaceholderAPI and some placeholders to fetch the required group values

Format

type: placeholderapi
owner: "<owner-placeholder>" # The placeholder to get the owner of the group (could be player name or uuid)
display: "<display-placeholder>" # The placeholder to get the display name of the group
online: <true/false> # Whether or not to handle the value for online players only

Example

holders:
  jump_group:
    top: jump

    type: placeholder
    owner: '%player_uuid%'
    display: '%player_name%'
    online: true

SuperiorSkyblock

Note

Format

type: superiorskyblock

Example

holders:
  jump_group:
    top: jump

    type: superiorskyblock

Towny

Note

Requires Towny

Format

type: towny

Example

holders:
  jump_group:
    top: jump

    type: towny

Query

The query system is the same as the one used in Topper, with the addition that:

  • the <holder> is the name of the Group Holder speficied in the configuration file of GroupTopper.
  • the top_name query returns the name of the Group
  • the top_key query returns the UUID of the owner of the Group

Refer to the Topper Query page for more information.

Chapter 4

Hook

Details about the hooks provided by the plugin.

Subsections of Hook

PlaceholderAPI

The plugin provides a PlaceholderAPI placeholder to allow you to query data from the Group Holder.

Usage

%grouptopper_<query>%

Check the Query for more information about how to set the <query>

Example

%grouptopper_jump_group;top_name;1%
%grouptopper_jump_group;top_value;1%
%grouptopper_jump_group;top_value;1;#,###%
%grouptopper_jump_group;top_rank%
Chapter 4

Cachy

The documentation of Cachy, a plugin that stores data of online players

Subsections of Cachy

Config

# The settings for each holder
holders:
  player-name:
    type: player
    data-type: NAME
  jump:
    type: placeholder
    placeholder: '%statistic_jump%'
  mine:
    type: statistic
    statistic: mine_block
    material: diamond_ore

# The type of storage the plugin will use to store the value
# Available: FLAT, YAML, JSON, SQLITE, NEW-SQLITE, MYSQL
storage-type: flat

Query

This page provides information about the query system, which is used to retrieve data from the Cache Holder.

Format

The format of a query is as follows:

<holder>;<type>;<args>
  • <holder>: The Top Holder to query.
  • <type>: The type of data to retrieve.
  • <args>: Additional arguments for the query.

If the <type> does not require any arguments, the query can be simplified to:

<holder>;<type>

Types

TypeArgumentDescriptionExampleExplanation
name<name>Get the value of the player based on their <name>jump;name;HSGamerRetrieve the value of the player named HSGamer at the Cache Holder named jump
uuid<uuid>Get the value of the player based on their <uuid>jump;uuid;7acc67dc-8b84-4f8d-b7ad-ec81e758f5a1Retrieve the value of the player with the UUID 7acc67dc-8b84-4f8d-b7ad-ec81e758f5a1 at the Cache Holder named jump
Chapter 4

Hook

Details about the hooks provided by the plugin.

Subsections of Hook

PlaceholderAPI

The plugin provides a PlaceholderAPI placeholder to allow you to query data from the Group Holder.

Usage

%cachy_<query>%

Check the Query for more information about how to set the <query>

Example

%cachy_jump;name;HSGamer%
%cachy_jump;uuid;7acc67dc-8b84-4f8d-b7ad-ec81e758f5a1%
%cachy_jump;name;{player_name}%
%cachy_jump;uuid;{player_uuid}%