Custom Borders
Makes setting custom borders in minecraft possible with a simple command! Perfect for PvP events and other events on SMPs .
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
Custom Borders
CustomBorder
Custom square world borders — fully independent of the vanilla Minecraft border.
Define named, persistent borders anywhere in your world. Players are kept inside with particles, pushback, and instant enforcement. Admins get fine-grained control over bypass, visibility, and settings — all at runtime, no restart needed.
---
✨ Features
- Tab completion — defined by a center point and a radius (half side-length in blocks) - Tab completion — the border spans 10,000 blocks vertically, covering the entire playable range - Tab completion — appears as players approach; each player can set their own visibility distance - Tab completion — players are pushed back toward the center when too close to the wall; can be toggled and tuned at runtime - Tab completion — movement events are intercepted in real-time, preventing any crossing without rubberbanding - Tab completion — if a player ends up outside anyway, they are immediately moved back in - Tab completion — admins can toggle border enforcement for themselves with `/borderop` - Tab completion — command-sourced teleports always cross borders freely, so admins can move players to either side - Tab completion — admins (even with bypass active) can hide the particle wall for themselves - Tab completion — define as many named borders as needed across any world - Tab completion — all borders are saved to `borders.yml` and survive server restarts - Tab completion — does not touch or interact with the vanilla world border in any way - Tab completion — all commands support full tab completion including border names and argument suggestions
---
🗂️ Commands
Player Commands
*(Default: OP only — configurable via permissions)*
| Command | Description | |---|---| | `/border help` | Shows all commands with explanations and your current settings | | `/border list` | Lists all active borders with name, world, center, and radius | | `/border info <name>` | Shows detailed info about a specific border | | `/border view` | Shows your current and the server-default visibility distance | | `/border view <blocks>` | Sets how far away you see the red particle wall (1–256 blocks) | | `/border view reset` | Resets your visibility distance to the server default |
Admin Commands
*(Requires `customborder.admin`)*
| Command | Description | |---|---| | `/border create <name> <radius>` | Creates a square border centered on your current position | | `/border remove <name>` | Permanently deletes a border | | `/border pushback` | Shows current pushback status (enabled, distance, strength) | | `/border pushback on` | Enables the pushback mechanic globally | | `/border pushback off` | Disables the pushback mechanic globally | | `/border pushback distance <blocks>` | Sets how close players must be before getting pushed back | | `/border pushback strength <value>` | Sets the velocity force of the pushback (default: `1.2`) | | `/border particles on` | Shows the particle wall for yourself again | | `/border particles off` | Hides the particle wall for yourself (bypass-independent) | | `/borderop on` | Enables border bypass — you can freely cross all borders | | `/borderop off` | Disables border bypass — borders are enforced for you again |
> Note: `/tp` (and any command-sourced teleport) always crosses borders freely, allowing admins to move players to either side without needing bypass.
---
🔐 Permissions
| Permission | Description | Default | |---|---|---| | `customborder.use` | Use basic commands: `help`, `list`, `info`, `view` | `op` | | `customborder.admin` | Full control: create/remove borders, pushback settings, particles, bypass | `op` |
---
⚙️ Configuration
All settings in `plugins/CustomBorder/config.yml`:
```yaml
Distance (in blocks) at which red particles become visible (server-wide default).
Each player can override this individually with /border view.
particle-visibility-distance: 10.0
Whether the pushback mechanic is active. Toggleable at runtime with /border pushback on|off.
pushback-enabled: true
Distance (in blocks) from the wall at which players start getting pushed back.
pushback-distance: 3.0
Velocity strength of the pushback toward the border center.
pushback-strength: 1.2
How often (in ticks) the proximity check runs. 20 ticks = 1 second.
check-interval: 5
Number of particle points rendered per visible wall per check.
particle-count: 8
Height of the border wall in blocks. 10000 covers the full build range.
border-height: 10000 ```
All pushback settings can be changed at runtime via commands — no need to edit the file or restart the server. Changes are saved immediately.
---
📖 How It Works
1. Stand at the center of where you want the border, then run `/border create <name> <radius>`. - `radius` is the square: a radius of `100` creates a square block area. - The border is square, axis-aligned, and centered on your exact position at the time of creation.
2. Players who approach within their visibility distance see a red particle wall along the border edge.
3. Within `pushback-distance` blocks of the wall, players are continuously pushed back toward the center.
4. If a player somehow ends up outside (e.g. via a plugin teleport), they are immediately teleported back to the nearest safe location inside.
5. Admins can use `/borderop on` to bypass all enforcement for themselves. When done, `/borderop off` re-enables it.
6. Admins can freely teleport players across borders using the standard `/tp` command.
7. Every player can customize how far away they see the particle wall with `/border view <blocks>`, between 1 and 256 blocks.
---
💾 Data & Persistence
Borders are stored in `plugins/CustomBorder/borders.yml` and loaded automatically on startup. The number of loaded borders is logged on enable:
``` [CustomBorder] Loaded 3 border(s) from storage. ```
Per-player settings (visibility distance, particles hidden, bypass) are session-only and reset on restart — this is intentional, as they are considered temporary preferences.
---
🔧 Requirements
- Java: Java: 1.21.1 or compatible fork - Java: 21 or newer
---
🐛 Issues & Source
Found a bug or want to contribute? Open an issue or pull request on the GitHub repository.