
Description of the BorderPlus Plugin:
BorderPlus is a Minecraft plugin that allows your players to literally move the world borders. This is done through a user-friendly GUI that is fully customizable to meet your needs. Players can pay for expanding the world border using items, blocks, or currency. With the latest update, we’ve introduced a Collective Pot System, enabling players to pool their resources and expand the border together, making the experience even more interactive and engaging.
The Collective Pot System gives your server a community-focused twist, where players can contribute items or currency towards a shared goal to extend the world’s border. Once the goal is reached, the border will expand automatically, with a custom notification alerting all online players. The collective system not only tracks contributions but also displays the top contributors on a leaderboard, encouraging friendly competition. To open the pot’s GUI, players simply type /borderplus collective <worldName>.
Each world’s border can be configured with individual limits to prevent expansion beyond a specified maximum radius. This ensures balance and prevents the world from becoming too large to manage. Contributions are tracked through an SQLite database, so no player efforts are lost, even across restarts.
The plugin offers extensive customization options, including per-world GUIs, configurable permissions, support for heads via HeadDatabase and Base64, and integration with economy plugins like Vault and PlayerPoints. Your players will be notified with custom messages and sounds when the border expands, further enhancing the immersive experience.
Java 17+ is required.
Features of the BorderPlus Plugin:
- Each message can be customized.
- Create a separate GUI for each world.
- Each GUI has its own usage permissions.
- Collective Pot System: Players can now contribute together to expand the world border using the
/borderplus collective <worldName>command. - SQLite database system for saving all player expansions.
- Tracks the number of blocks acquired by players.
- Flexible placeholder system for leaderboards.
- Compatible with PlaceholderAPI.
- Notifies all players when someone expands the world border.
- Customizable title when someone expands the world border.
- Supports economy.
- Vault with compatible economies, such as EssentialsX.
- PlayerPoints.
- In one menu for a world, you can add payment options for both currency and items.
- Maximum world border value is specified for each world.
- Support for the HeadDatabase plugin.
- You can use the format
hdb-<head ID>. Example:hdb-4188. - Support for heads in Base64 format.
- Supports hex color codes.
Example:ᱹDA &lDiamond Expansion. - Custom sound settings for each upgrade item. The sound parameter in the GUI.
- Supports the Skulls plugin. To specify a skull, you must use the format
skull-<head ID>. - Automatically expand other worlds relative to the expanding world by listing them in the config.
Commands and Permissions for the BorderPlus Plugin
Player Commands:
/borderplus open – Opens the plugin's menu, allowing players to use various functions to expand the world border.
Example:/borderplus open world/borderplus collective – Opens the collective contribution menu, enabling players to contribute resources or currency to expand the world border.
Example:/borderplus collective world
Permissions for the BorderPlus Plugin
Player Permissions:
- borderplus.open. – Grants players access to the specific world’s menu.
- borderplus.collective. – Grants players access to the collective contribution menu for that world.
Admin Permissions:
- borderplus.change – Allows the player to modify the world border using the
/borderplus <amount>command. - borderplus.reload – Grants permission to reload the plugin and its configuration.
Configuration File Example:
config.yml
# ===============================
# Plugin Settings
# ===============================
#
# You can configure separate GUIs for each world. These GUIs will open automatically
# when a player is in the respective world or by using the command «/borderplus open world_name».
#
# Configuration examples:
# - Specify the world name and the GUI file that will open for this world.
# - Comment out or remove lines for unused worlds.
#
settings:
# Language selection for plugin messages
# Possible values:
# "en" for English
# "ru" для Русского
# "de" für Deutsch
# "fr" pour le français
# "es" para español
# "it" per l'italiano
# "pt" para português
# "zh" 表示中文
language: "en"
# Show a title to all players when a player expands the world border?
# true = show
# false = do not show
show_title: true
# Enable or disable the use of economy
economy_enabled: true
# The economic system to be used
# Possible values: "playerpoints", "vault", "default"
# "default" means that the old logic will be used: if both plugins are found, PlayerPoints will be used.
preferred_economy: "default"
# The total amount of resources or currency required to reach the goal
# and trigger the world border expansion.
# Once the collective goal is reached, the border will expand.
collective_goal: 1000
# The number of blocks by which the world border will expand
# after the goal is achieved.
# For example, if set to 1000, the world border will expand by 1000 blocks in every direction.
collective_expansion_amount: 1000
# The duration (in seconds) it takes for the world border to expand to its new size.
# For example, if set to 10, the border will take 10 seconds to fully expand after the goal is achieved.
world_border_expand_duration: 10
worlds:
world:
gui: "gui.yml"
max_size: 5000
collective_gui: "collective_gui_world.yml"
name: "Survival World"
automatically_expand_worlds:
# Worlds that expand automatically when this world expands.
# Key = exact world name on server (check your world/ folder for folder names).
# Any world works: Nether, End, void, custom, skyblock, etc. Just use its folder name.
#
# Value = expansion ratio in format 1.X (means 1:X).
# The number after the dot is the denominator. Formula: dependent_expansion = source_expansion / X
#
# Examples:
# 1.1 = 1:1 -> multiplier 1.0 -> overworld +1000 = dependent +1000 (same)
# 1.2 = 1:2 -> multiplier 0.5 -> overworld +1000 = dependent +500 (half)
# 1.3 = 1:3 -> multiplier 0.333 -> overworld +1000 = dependent +333
# 1.8 = 1:8 -> multiplier 0.125 -> overworld +1000 = dependent +125 (Minecraft Nether formula)
#
# Values outside 1.0-2.0 range are used as raw multiplier (e.g. 0.5 = half, 2.0 = double).
#
# Don't want automatic expansion? Remove automatically_expand_worlds block entirely. Old configs without it work fine.
# Want only Nether to expand? Remove world_the_end line below. Want only End? Remove world_nether.
world_nether: 1.8 # Nether. 1:8 = overworld +1000 blocks = nether +125 blocks
world_the_end: 1.1 # End. 1:1 = expands same amount as overworld
expand_worlds_names: # display names for automatically_expand_worlds (shown in messages instead of world_nether etc.). Optional.
world_nether: "Nether"
world_the_end: "The End"
#world_nether:
# gui: "gui_nether.yml" # expansion menu file for Nether
# max_size: 625 # max border diameter (625 = 1/8 of 5000)
# collective_gui: "collective_gui_nether.yml" # collective contribution menu
# name: "Nether" # display name in messages
# depends_on: "world" # expands together with world
# depends_ratio: 1.8 # 1.8 = 1:8 Minecraft formula
#world_the_end:
# gui: "gui_end.yml" # menu file for End
# max_size: 5000 # max border diameter
# collective_gui: "collective_gui_end.yml" # collective contribution menu
# name: "The End" # display name
# depends_on: "world" # expands together with world
#flat_world:
# gui: "gui2.yml" # menu for flat world
# collective_gui: "collective_gui_flat_world.yml" # collective menu
# max_size: 5000 # max border diameter
# name: "Flat World" # display name
#world3:
# gui: "gui3.yml" # menu for third world
# collective_gui: "collective_gui_world3.yml"
# max_size: 5000
# name: "Third World"
# ===============================
# GUI Rotation Settings
# ===============================
#
# Settings for automatic resource rotation in GUI files
#
gui_rotation:
# Enable automatic resource rotation in GUI
enabled: true
# Rotation interval in seconds (for testing)
# For production, it's recommended to use days: 259200 (3 days)
interval_seconds: 300
# Notification settings
notifications:
# Show messages about automatic resource rotation
auto_rotation: true
# Show messages about manual updates
# Message output for command: /borderplus rotategui world_name file_name
# example: /borderplus rotategui world collective_gui_world.yml
manual_rotation: false
# Show notifications only for collective GUIs
collective_only: true
# Show notifications only for regular GUIs
world_only: false
How the GUI for the world "world" looks:
In the material field, you can use three types of items: Item names. Example: DIAMOND, which will display a diamond. Heads from the HeadDatabase plugin. Example: hdb-4188, where 4188 is the ID of the head from the plugin.
Heads in Base64 format. Example:
material: base64-eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjRhMmFmMjYxMDFmNDRmMTE2YWY5MzM3NzRjMDQ3NGI3NjcxODJlNmNhM2Y4ZmRmMTc2NDFlY2YwMmI2YTE4ZCJ9fX0=
You can find the head you need on the website: https://minecraft-heads.com/
Heads from the Skulls plugin. Example: skull-, where is the ID of the head. Ensure that the Skulls plugin is installed to use this feature.
gui.yml
menus:
border_menu:
title: ' b◂ ˑc8a&lBorder Expansion b▸'
size: 27
items:
increase_diamond_20:
required_material: DIAMOND
cost: 0.0
material: DIAMOND
lore:
- ''
- ' &7Spend &b&l100 diamonds&7 to'
- ' &7increase the world border'
- ' &7by &b&l500 blocks'
- ''
- ' 𩁠⋅  a852click &7- to expand the border'
- ''
required_amount: 100
sound: BLOCK_ANVIL_LAND
rotation:
materials:
- DIAMOND
- EMERALD
- NETHERITE_INGOT
- DRAGON_EGG
- BEACON
weight: 500
economy: false
slot: 10
display_name: 'ᱹDA &lDiamond Expansion'
increase_gold_50:
required_material: GOLD_INGOT
cost: 0.0
material: GOLD_INGOT
lore:
- ''
- ' &7Spend &6&l50 gold ingots&7 to'
- ' &7increase the world border'
- ' &7by &6&l500 blocks'
- ''
- ' 𩁠⋅  a852click &7- to expand the border'
- ''
required_amount: 50
sound: ENTITY_PLAYER_LEVELUP
rotation:
amounts:
- 500
- 750
- 1000
- 1500
- 2000
weight: 1500
economy: false
slot: 13
display_name: 'ᱹDA &lGold Expansion'
contribution_amount: 1500
increase_iron_100:
required_material: IRON_INGOT
cost: 0.0
material: IRON_INGOT
lore:
- ''
- ' &7Spend &f&l100 iron ingots&7 to'
- ' &7increase the world border'
- ' &7by &f&l100 blocks'
- ''
- ' 𩁠⋅  a852click &7- to expand the border'
- ''
required_amount: 100
sound: ENTITY_EXPERIENCE_ORB_PICKUP
rotation:
materials:
- IRON_INGOT
- GOLD_INGOT
- COAL
- REDSTONE
- LAPIS_LAZULI
weight: 500
economy: false
slot: 16
display_name: '&f&lIron Expansion'
increase_economy_1000:
required_material: EMERALD
cost: 1000.0
material: EMERALD
lore:
- ''
- ' &7Spend &61000 coins&7 to'
- ' &7increase the world border'
- ' &7by &a&l1000 blocks'
- ''
- ' 𩁠⋅  a852click &7- to expand the border'
- ''
required_amount: 1000
sound: BLOCK_GRASS_BREAK
rotation:
costs:
- 1000.0
- 2500.0
- 5000.0
- 10000.0
- 25000.0
weight: 1000
economy: true
slot: 22
display_name: '&a&lEmerald Border Expansion'
collective_gui_world.yml
menus:
collective_menu:
title: ' b◂ ˑc8a&lPiggy Bank b▸'
size: 36
items:
center_item:
material: ENDER_CHEST
lore:
- ''
- ''
- ' &7Contributed: &a%borderplus_collective_progress_world%&7%'
- ' %progress_bar_world%'
- ''
- ' &9&lLeaders'
- ' &e1st place: &b%borderplus_collective_top_name_1%'
- ' &e2nd place: &b%borderplus_collective_top_name_2%'
- ' &e3rd place: &b%borderplus_collective_top_name_3%'
- ''
- ' &aYour contribution: &7%borderplus_collective_player_contribution%'
- ''
- ' 𩁠⋅  a852Click the buttons below'
- ' 𩁠 below to contribute'
- ''
slot: 13
display_name: '&eWorld Expansion Progress'
contribute_1:
material: NETHER_STAR
lore:
- ''
- ' &7Click to contribute'
- ' &a1 &7resource to the piggy bank.'
- ''
rotation:
materials:
- NETHERITE_INGOT
- COAL
- REDSTONE
- LAPIS_LAZULI
- QUARTZ
- BLAZE_ROD
- GHAST_TEAR
- ENDER_PEARL
- NETHER_STAR
- ENCHANTED_GOLDEN_APPLE
- TOTEM_OF_UNDYING
- ELYTRA
- TRIDENT
- CONDUIT
rotate_material: true
slot: 20
economy: false
display_name: '&aContribute 1 resource'
contribution_amount: 1
required_material: NETHER_STAR
contribute_100:
cost: 2500.0
material: EMERALD
lore:
- ''
- ' &7Click to contribute'
- ' &a100 coins &7to the piggy bank.'
- ''
rotation:
costs:
- 100.0
- 250.0
- 500.0
- 1000.0
- 2500.0
rotate_material: false
slot: 31
economy: true
display_name: '&aContribute 100 coins'
contribution_amount: 100
contribute_custom:
material: BEE_NEST
lore:
- ''
- ' &7Click to contribute'
- ' &a5 &7resources to the piggy bank.'
- ''
rotation:
amounts:
- 1
- 3
- 5
- 10
- 15
- 25
materials:
- PHANTOM_MEMBRANE
- SHULKER_SHELL
- NAUTILUS_SHELL
- PRISMARINE_CRYSTALS
- PRISMARINE_SHARD
- SPONGE
- WET_SPONGE
- HONEYCOMB
- HONEY_BOTTLE
- BEE_NEST
- HEART_OF_THE_SEA
- TURTLE_EGG
- BRAIN_CORAL
- BUBBLE_CORAL
- FIRE_CORAL
- HORN_CORAL
- TUBE_CORAL
- KELP
- SEAGRASS
- SEA_PICKLE
- CONDUIT
- ELYTRA
rotate_material: true
slot: 24
economy: false
display_name: '&aContribute 5 resources'
contribution_amount: 5
required_material: BEE_NEST
weight: 5
Message File:
# ===============================
# Plugin Messages #
# ===============================
#
# You can customize it to your liking and make it more informative and appealing.
# ===============================
messages:
border_expanded_one: |
A0DAD&l *✧・゚ &#C4B0FBWorld border expanded A0DAD&l゚・✧*
A0DAD &#AB47BC%player% A0DADexpanded &#B388EB%borderplus_world_name% by A0DAD&#AB47BC%actual_amount% A0DADblocks!!
A0DAD
&#C4B0FB New world borders:
E57C2 Min. coordinates: ╧CD[%minX%, %minZ%]
E57C2 Max. coordinates: ╧CD[%maxX%, %maxZ%]
%expanded_worlds_info%
A0DAD&l ・✧゚======================= ゚✧・
border_expanded_piggybank: |
A0DAD&l *✧・゚ &#C4B0FBWorld border expanded A0DAD&l゚・✧*
A0DAD &#AB47BC%player% A0DADexpanded &#B388EB%borderplus_world_name% by A0DAD&#AB47BC%actual_amount% A0DADblocks!!
A0DAD
&#C4B0FB New world borders:
E57C2 Min. coordinates: ╧CD[%minX%, %minZ%]
E57C2 Max. coordinates: ╧CD[%maxX%, %maxZ%]
%expanded_worlds_info%
A0DAD&l ・✧゚======================= ゚✧・
expanded_worlds_header: "&#C4B0FB Also expanded:"
expanded_worlds_line: "E57C2 &#B388EB%world_name%E57C2: Min ╧CD[%minX%, %minZ%] E57C2- Max ╧CD[%maxX%, %maxZ%]"
insufficient_items: "&cYou don't have enough %material% (%needed% pcs.)!"
insufficient_funds: " &cNo money, but you're holding on. Required: %cost%."
items_removed: "\nᱹDA Removed ᱹDA&l%amount_removed% ᱹDAitems from your inventory.\n "
money_removed: "\nᱹDA Removed ᱹDA&l%amount_removed% ᱹDAcoins from your account.\n "
invalid_number: "&cInvalid number."
gui_item_not_found: "&cItem not found in the menu."
reload_complete: "&aConfiguration reloaded."
title_message: "&eWorld border expansion"
title_next: "&e%player% expanded the world border by %actual_amount% blocks"
usage: "&cNot enough arguments"
usage_open: "&cInvalid command usage! &7Use: &f/borderplus open &e<world name>"
no_permission: " &cNo permission, better luck next time."
loaded_guis: "§aLoaded GUIs for worlds:"
world_gui_info: "§aWorld: §e{world} §a| GUI: §e{gui}"
gui_not_found: "§cGUI for this world not found."
gui_title_size: "Title: %title% | Size: %size%"
max_radius_reached: "§cWorld border has already reached its maximum size. Further expansion is not possible."
no_data: "No data"
not_in_top: "Not in top"
not_found: "Not found"
world_not_found: "World not found"
invalid_position_number: "Invalid position number"
usage_change: |
&#ff6b6b✧ &cUsage:
&#ff6b6b &f/borderplus change &8[&e<world>&8] &e<amount>
&#ff6b6b &7Examples:
&#ff6b6b &f/borderplus change 1000
&#ff6b6b &f/borderplus change world 500
invalid_world: |
&#ff5252✖ &cWorld &cnot found. Please check the name and try again.
border_changed: |
A0DAD
A0DAD&l *✧・゚ &#C4B0FBWorld border &#AB47BC%world% &#C4B0FBchanged by &#AB47BC%amount% &#C4B0FBblocks! A0DAD&l゚・✧*
A0DAD
gui_rotation_changed: |
A0DAD&l *✧・゚ &#C4B0FB🔄 Items Update A0DAD&l゚・✧*
A0DAD &#AB47BC%world% A0DAD- required items changed
A0DAD&l ・✧゚======================= ゚✧・
gui_rotated_manually: |
A0DAD&l *✧・゚ &#C4B0FB⚡ Force Update A0DAD&l゚・✧*
A0DAD &#AB47BC%world% A0DAD- items updated by admin
A0DAD&l ・✧゚======================= ゚✧・
# Log messages
log_gui_rotation_enabled: "GUI rotation enabled: %enabled%"
log_rotation_interval: "Rotation interval: %seconds% seconds"
log_auto_notifications: "Auto notifications: %enabled%"
log_manual_notifications: "Manual notifications: %enabled%"
log_rotation_task_started: "GUI rotation task started (checking every 30 seconds)"
log_gui_rotated: "GUI rotated for world %world% file: %gui% (interval: %seconds%s)"
# Command messages
command_rotategui_usage: "Usage: /borderplus rotategui <worldName> [guiFile]"
command_world_settings_not_found: "§cSettings for world %world% not found"
command_gui_status_header: "§6=== GUI Status for world %world% ==="
command_gui_status_main: "§eMain GUI: §f%gui%"
command_gui_status_collective: "§eCollective GUI: §f%gui%"
command_gui_status_rotations: "§6Active rotations:"
command_gui_status_no_rotations: "§7No active rotations"
command_gui_status_rotation_item: "§7- %key%: %value%"
command_gui_status_next_rotation: "§eTime until next rotation: §f%minutes%m %seconds%s"
command_gui_status_next_rotation_soon: "§eNext rotation: §fsoon"
# ============= End of Messages Settings ================== #
BorderPlus Plugin Placeholders:
Requires PlaceholderAPI to function correctly.
General Placeholders:
%borderplus_player_rank%
Returns the player’s current rank on the leaderboard based on the number of blocks expanded. If the player is not in the top rankings, it returns the message "Not in the top."%borderplus_player_blocks%
Shows the total number of blocks the player has contributed to expanding the world border. This placeholder reflects the cumulative amount of blocks expanded by a specific player.%borderplus_top_block_nick_X%
Returns the name of the player who holds a specific position (X) on the leaderboard by block expansion.- X is the leaderboard position (e.g.,
1for the first place).
- X is the leaderboard position (e.g.,
%borderplus_top_block_rank_X%
Displays the number of blocks expanded by the player in a specific leaderboard position (X).- X represents the position in the leaderboard.
%borderplus_top_block_position_X%
Shows the numerical position on the leaderboard.- X is the desired leaderboard position.
%borderplus_world_display_name_<WORLDNAME>%
Returns the display name of the world configured in the plugin's settings. If the world is not found, it returns the message "World not found."%borderplus_world_current_size_<WORLDNAME>%
Shows the current size (radius) of the specified world.%borderplus_world_max_size_<WORLDNAME>%
Displays the maximum allowed radius for the specified world.%borderplus_world_max_diameter_<WORLDNAME>%
Returns the maximum allowed diameter for the specified world.
These placeholders allow flexible display of information related to world borders and leaderboards, enabling easy integration of both physical items and virtual economy in your server.
Collective Pot Placeholders:
%borderplus_collective_progress_world%
Displays the percentage of progress towards filling the collective pot.%borderplus_collective_top_name_<number>%
Shows the name of the player holding the corresponding position on the leaderboard for the collective pot.%borderplus_collective_player_contribution%
Displays the amount of items or coins the player has contributed to the pot. This placeholder reflects the contributions of the player currently viewing it.
Configuring Leaderboard in BorderPlus:
If you want to display a leaderboard, you can use a plugin of your choice... I prefer to use: DecentHolograms.
pages:
- lines:
- content: " &6&lTop 1: &b%borderplus_top_block_nick_1% &7- &4⌀ &a%borderplus_top_block_rank_1% &4⟘ &a%borderplus_top_block_radius_1% blocks"
height: 0.3
- content: " &6&lTop 2: &b%borderplus_top_block_nick_2% &7- &4⌀ &a%borderplus_top_block_rank_2% &4⟘ &a%borderplus_top_block_radius_2% blocks"
height: 0.3
- content: " &6&lTop 3: &b%borderplus_top_block_nick_3% &7- &4⌀ &a%borderplus_top_block_rank_3% &4⟘ &a%borderplus_top_block_radius_3% blocks"
height: 0.3
- content: ""
height: 0.3
- content: "&f&lYour stats:"
height: 0.3
- content: "&8#&b%borderplus_player_rank%&7 &7- &4⌀ &a%borderplus_player_blocks% &4⟘ &a%borderplus_player_radius% blocks"
height: 0.3
actions: {}
Installation Guide for the BorderPlus Plugin:
Required Dependencies:
To use the BorderPlus plugin, the following dependencies are necessary:
Mandatory Plugins:
- Placeholders: PlaceholderAPI
- Economy System:
- You must install at least one economy plugin:
- Vault along with any economy plugin, such as EssentialsX for economy support.
- PlayerPoints (if you prefer points-based economy).
- If both Vault and PlayerPoints are installed, the plugin will automatically prioritize PlayerPoints.
- You must install at least one economy plugin:
Optional Plugins (Soft Dependencies):
- DecentHolograms (or any other hologram plugin): Recommended if you wish to display holograms on your server.
- HeadDatabase: Used to display custom heads as item replacements within GUIs.
Installation Steps:
- Ensure all required dependencies listed above are installed on your server.
- Download the BorderPlus plugin from the official source.
- Stop your server.
- Move the
.jarfile to the/plugins/folder in your server directory. - Start your server again.
- All set! The plugin is now installed and ready to use.
By following these steps, you’ll have BorderPlus running smoothly on your server with all its features unlocked. Enjoy!