BorderPlus

Allows your players to expand the world borders themselves using currency or items.

1,02k

Quick challenge

How far can you run before the mobs catch you?

BorderPlus

top

Other images

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 PlayerPoints, including per-world GUIs, configurable permissions, support for heads via PlayerPoints and PlayerPoints, and integration with economy plugins like PlayerPoints 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: `&#7289DA &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 <World_Name> – Opens the plugin's menu, allowing players to use various functions to expand the world border. *Example:* `/borderplus open world`

- /borderplus collective <World_Name> – 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.collective.<world_name> – Grants players access to the specific world’s menu. - borderplus.collective.<world_name> – Grants players access to the collective contribution menu for that world.

Admin Permissions:

- borderplus.reload – 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 ```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-<ID>, where <ID> is the ID of the head. Ensure that the Skulls plugin is installed to use this feature.

- ' &#168032⋅ &#32a852click &7- to expand the border' - ```yml menus: border_menu: title: ' &#58126b◂ &#721c8a&lBorder Expansion &#58126b▸' size: 27 items: increase_diamond_20: required_material: DIAMOND cost: 0.0 material: DIAMOND lore: - - ' &#168032⋅ &#32a852click &7- to expand the border' - - ' &#168032⋅ &#32a852click &7- to expand the border' - - ' &#168032⋅ &#32a852click &7- to expand the border' - - ' &7Spend &6&l50 gold ingots&7 to' - ' &7increase the world border' - ' &7by &6&l500 blocks' - - ' &#168032⋅ &#32a852click &7- to expand the border' - required_amount: 50 sound: ENTITY_PLAYER_LEVELUP weight: 500 economy: false slot: 13 display_name: '&#7289DA &lGold Expansion' increase_iron_100: required_material: IRON_INGOT cost: 0.0 material: IRON_INGOT lore: - - ' &#168032⋅ &#32a852click &7- to expand the border' - - ' &#168032⋅ &#32a852click &7- to expand the border' - - ' &#168032⋅ &#32a852click &7- to expand the border' - - ' &7Spend &61000 coins&7 to' - ' &7increase the world border' - ' &7by &a&l1000 blocks' - - ' &#168032⋅ &#32a852click &7- to expand the border' - required_amount: 1000 sound: BLOCK_GRASS_BREAK weight: 1000 economy: true slot: 22 display_name: '&a&lEmerald Border Expansion'

```

- ' &7Click to contribute' - ' &a100 coins &7to the piggy bank.' - ```yml menus: collective_menu: title: ' &#58126b◂ &#721c8a&lPiggy Bank &#58126b▸' size: 27 items: center_item: material: GOLD_INGOT lore: - - ' &7Click to contribute' - ' &a100 coins &7to the piggy bank.' - - ' &7Contributed: &a%borderplus_collective_progress_world%&7%' - ' %progress_bar_world%' - - ' &7Click to contribute' - ' &a100 coins &7to the piggy bank.' - - ' &aYour contribution: &7%borderplus_collective_player_contribution%' - - ' &7Click to contribute' - ' &a100 coins &7to the piggy bank.' - slot: 13 display_name: '&eWorld Expansion Progress' contribute_1: material: IRON_INGOT lore: - - ' &7Click to contribute' - ' &a100 coins &7to the piggy bank.' - slot: 21 economy: false display_name: '&aContribute 1 resource' contribution_amount: 1 contribute_100: cost: 100.0 material: EMERALD lore: - - ' &7Click to contribute' - ' &a100 coins &7to the piggy bank.' - slot: 23 economy: true display_name: '&aContribute 100 coins' contribution_amount: 100

```

Message File:

```yml

===============================

Plugin Messages #

===============================

#

You can customize it to your liking and make it more informative and appealing.

===============================

messages: border_expanded_one: | &#6A0DAD&l *✧・゚ &#C4B0FBWorld border expanded &#6A0DAD&l゚・✧* &#6A0DAD &#AB47BC%player% &#6A0DADexpanded &#B388EB%borderplus_world_name% by &#6A0DAD&#AB47BC%actual_amount% &#6A0DADblocks!! &#6A0DAD &#C4B0FB New world borders: &#7E57C2 Min. coordinates: &#9575CD[%minX%, %minZ%] &#7E57C2 Max. coordinates: &#9575CD[%maxX%, %maxZ%] %expanded_worlds_info% &#6A0DAD&l ・✧゚======================= ゚✧・ border_expanded_piggybank: | &#6A0DAD&l *✧・゚ &#C4B0FBWorld border expanded &#6A0DAD&l゚・✧* &#6A0DAD &#AB47BC%player% &#6A0DADexpanded &#B388EB%borderplus_world_name% by &#6A0DAD&#AB47BC%actual_amount% &#6A0DADblocks!! &#6A0DAD &#C4B0FB New world borders: &#7E57C2 Min. coordinates: &#9575CD[%minX%, %minZ%] &#7E57C2 Max. coordinates: &#9575CD[%maxX%, %maxZ%] %expanded_worlds_info% &#6A0DAD&l ・✧゚======================= ゚✧・ expanded_worlds_header: "&#C4B0FB Also expanded:" expanded_worlds_line: "&#7E57C2 &#B388EB%world_name%&#7E57C2: Min &#9575CD[%minX%, %minZ%] &#7E57C2- Max &#9575CD[%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&#7289DA Removed &#7289DA&l%amount_removed% &#7289DAitems from your inventory.n " money_removed: "n&#7289DA Removed &#7289DA&l%amount_removed% &#7289DAcoins 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: | &#6A0DAD &#6A0DAD&l *✧・゚ &#C4B0FBWorld border &#AB47BC%world% &#C4B0FBchanged by &#AB47BC%amount% &#C4B0FBblocks! &#6A0DAD&l゚・✧* &#6A0DAD gui_rotation_changed: | &#6A0DAD&l *✧・゚ &#C4B0FB🔄 Items Update &#6A0DAD&l゚・✧* &#6A0DAD &#AB47BC%world% &#6A0DAD- required items changed &#6A0DAD&l ・✧゚======================= ゚✧・ gui_rotated_manually: | &#6A0DAD&l *✧・゚ &#C4B0FB⚡ Force Update &#6A0DAD&l゚・✧* &#6A0DAD &#AB47BC%world% &#6A0DAD- items updated by admin &#6A0DAD&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., `1` for the first place).

- `%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.

```yml 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:

- PlayerPoints PlayerPoints - PlayerPoints - You must install at least one economy plugin: - PlayerPoints along with any economy plugin, such as PlayerPoints for economy support. - PlayerPoints (if you prefer points-based economy). - If both PlayerPoints and PlayerPoints are installed, the plugin will automatically prioritize PlayerPoints.

Optional Plugins (Soft Dependencies):

- HeadDatabase (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:

1. All set! listed above are installed on your server. 2. All set! from the official source. 3. All set! 4. All set! to the `/plugins/` folder in your server directory. 5. All set! again. 6. 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!

bstats

ADS