Easyland

Easyland — a high-performance PaperMC land-claim plugin for Minecraft (Paper 1.21.x, Java 21). Provides land creation/claiming, trust management, flexible protection rules, visual boundary display, and multi-language support.

171

Easyland

Easyland

Version

Minecraft

Java

Paper

A high-performance PaperMC land management plugin that covers land creation, access control, protection rules, and particle-based visualization.

> [!note] > When updating to version 2.0.0, please use the `migrate` command to migrate data from older versions!

✨ Highlights

- 🏗️ Built-in Localization: Create, claim, abandon, list, rename, and teleport to lands. - 🏘️ Built-in Localization: Create smaller sub-areas within your land for finer control. - 👥 Built-in Localization: Flexible member management with pre-trust support. - 🛡️ Built-in Localization: Block, explosion, container, player, and Built-in Localization protection. - 💾 Built-in Localization: Powered by SQLite for secure and efficient data handling. - 🌈 Built-in Localization: Particle effects render land borders directly in-game. - 🌍 Built-in Localization: Chinese, English, and Japanese translations included.

🛠️ Command Overview

Main command: `/easyland` (aliases: `/el`, `/land`)

| Subcommand | Description | Permission | | :--- | :--- | :--- | | `select` | Get selection tool | easyland.select | | `create [id]` | Create land | easyland.create | | `claim [id]` | Claim land | easyland.claim | | `abandon [id]` | Abandon land | easyland.abandon | | `subcreate <parent> [name]` | Create sub-claim | easyland.subcreate | | `trust <land> <player>` | Trust player | easyland.trust | | `untrust <land> <player>` | Untrust player | easyland.trust | | `trustlist <land>` | View trust list | easyland.trust | | `info [land]` | View land info | easyland.info | | `show [land] [time]` | Show boundaries | easyland.show | | `list [page]` | List lands | easyland.list | | `rename <land> <new_name>` | Rename land | easyland.rename | | `setspawn` | Set land spawn | easyland.setspawn | | `tp <land>` | Teleport to land | easyland.tp | | `delete <id>` | Delete land | easyland.delete | | `rule [land] [rule] [on/off]` | Manage rules | easyland.rule | | `reload` | Reload config | easyland.admin | | `migrate` | Migrate data | easyland.admin.migrate | | `help` | View help | None |

🔐 Permission Nodes

| Permission | Description | Default | | :--- | :--- | :--- | | easyland.select | Get selection tool | true | | easyland.create | Create land | op | | easyland.claim | Claim land | true | | easyland.abandon | Abandon land | true | | easyland.subcreate | Create sub-claim | true | | easyland.trust | Manage trust | true | | easyland.info | View info | true | | easyland.show | Show boundaries | true | | easyland.list | View list | true | | easyland.rename | Rename land | true | | easyland.setspawn | Set spawn | true | | easyland.tp | Teleport to land | true | | easyland.rule | Manage rules | true | | easyland.delete | Delete land | true | | easyland.admin | Admin bundle | op |

`easyland.admin` inherits every sub-permission above—no extra assignment required.

⚙️ Core Configuration

| Key | Purpose | Default | | :--- | :--- | :--- | | `land.max-per-player` | Max lands per player | 10 | | `land.max-area` | Max area per land | 10000 | | `land.min-area` | Min area per land | 100 | | `land.min-distance` | Min distance between lands | 5 | | `visualization.default-duration` | Boundary show duration (s) | 10 | | `sub-claim.max-per-land` | Max sub-claims per land | 5 | | `sub-claim.max-depth` | Max sub-claim depth | 2 |

Protection Rules

Each rule provides two flags:

- `enable`: Whether the rule is available on the server - `default`: Default state for newly created lands

| Rule Name | Description | | :--- | :--- | | `build` | Allow building/placing blocks | | `break` | Allow breaking blocks | | `interact` | Allow interaction (chests/doors) | | `use` | Allow item usage | | `pvp` | Allow PvP | | `pve` | Allow PvE (mob damage) | | `explosions` | Allow explosions | | `fire_spread` | Allow fire spread | | `enter` | Allow entry | | `mob_spawning` | Allow mob spawning |

🌍 Localization

Set the `language` value in `config.yml` to switch the UI language:

```yaml

Supported values: zh_cn, en_us, ja_jp

language: en_us ```

| Code | Language | | ------- | ----------- | | `zh_cn` | Simplified Chinese | | `en_us` | English | | `ja_jp` | Japanese |

Community translations are welcome—send a PR to add your language.

📦 Deployment

Environment

- Server: Paper 1.21.x - Java: 21 or newer

Installation

1. Download the latest `easyland-2.0.0.jar` build. 2. Drop the plugin into your server's `plugins` directory. 3. Start or restart the server to generate configuration files. 4. Adjust `config.yml` and permission nodes as needed.

Build from Source (Optional)

1. Clone the repository: `git clone https://github.com/railgun19457/Easyland.git`. 2. Run `mvn clean package` in the project root to produce artifacts. 3. Deploy `target/easyland-2.0.0.jar` to your Paper server.

📝 Changelog

v2.0.0 · Major Refactor

- 🔄 Localization Sync: Complete rewrite of the codebase for better architecture and performance. - 💾 Localization Sync: Replaced file storage with SQLite database for improved security and efficiency. - 🏘️ Localization Sync: Added support for sub-claims to manage smaller areas within a land. - 🚫 Localization Sync: Added `enter` protection rule to prevent unauthorized entry (with knockback and visual feedback). - 📍 Localization Sync: Added `/el setspawn` and `/el tp` for easy travel. - ✏️ Localization Sync: Added `/el rename` command. - 📢 Localization Sync: Comprehensive Action Bar notifications for clearer feedback. - 🌍 Localization Sync: Full support for Chinese, English, and Japanese.

v1.4.1

- 🌍 Introduced a full i18n system - 🐛 Fixed infinite resource duplication caused by vein-miner style plugins - ➕ Added `reload` and `help` commands

v1.4 · Paper 1.21.8 Compatibility

- 🚀 Updated to support Paper 1.21.8 and Java 21 - 🐛 Fixed `LandEnterListener` NullPointerException - ⚡ Streamlined explosion protection checks - 🛡️ Player protection no longer includes natural damage (falling, etc.) - ♻️ Remains compatible with Paper 1.20.4+

v1.3.1

- 📈 Spatial index optimization improves lookup performance by 60–80% - 🔒 Adopted `ConcurrentHashMap` throughout for thread safety - 💾 Reduced memory usage by 20–30% - 🧹 Refactored configuration to remove hard-coded values

v1.3

- 🔁 Completely overhauled the land protection system - 🆕 Added the `/easyland rule` command flow - 🗂️ Stored protection rules per land instead of globally - 🧱 Upgraded configuration structure

v1.2

- 🗃️ Introduced the configuration management system - 🛠️ Added an administrator permission group - 🎯 `show` command supports custom durations

v1.1

- 👥 Trust system now supports pre-trusting players - 📋 Added the `trustlist` command

v1.0

- 🎉 Delivered the core land management feature set

📄 License

Released under the MIT License. Please retain copyright and license notices when redistributing.

🤝 Support

- ⭐ Star the repository to support the project - 🐛 Report issues via GitHub Issues - 💬 Contribute features or translations through Pull Requests

---

Thanks for choosing Easyland—have fun building thriving communities!

ADS