Custom Borders

Makes setting custom borders in minecraft possible with a simple command! Perfect for PvP events and other events on SMPs .

9

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.

ADS