ScalaPlot
Plot management plugin with custom world generation
ScalaPlot
ScalaPlot
ScalaPlot is a comprehensive plot management plugin for Paper/Folia Minecraft servers. It provides a complete solution for creating, managing, and building in a protected plot world, with extensive features including WorldEdit integration, a web-based map, a GUI manager, player worlds, automated backups, and robust permission controls.
A valid premium key can be bought here
Proof Of Concept
Click to see the images!


Features
- Events Mode: Automatically generates a world with configurable plot and road sizes. - Events Mode: Players can claim, teleport, rename, and get information about plots. - Events Mode: A full GUI panel to manage all plot settings without typing commands. - Events Mode: Plot owners can add or remove trusted players to build together, and ban disruptive players. - Events Mode: Full protection against unauthorized building and griefing, with configurable exploit prevention (pistons, dispensers, liquid flow, etc.). - Events Mode: Use plot flags to control specific actions like block breaking (`break`) and placing (`place`). - Events Mode: Allows players to rate each other's plots on a scale of 1 to 5. - Events Mode: Visit any player's plot by name with `/p visit <player>`. - Events Mode: Set custom weather for your plot (Clear, Rain, Thunder, Snow). - Events Mode: Customize the road material surrounding your plot. - Events Mode: Automatic and manual plot backups with configurable intervals and restore support. - Events Mode: Players can create and manage their own isolated worlds with custom grid sizes. - Events Mode: A suite of WorldEdit commands are built-in, allowing players to use commands like `/p walls`, `/p copy`, and `/p paste` within their plot boundaries. - Events Mode: Players can report inappropriate plots; rewards are issued for valid reports. - Events Mode: Send notifications to Discord on plot claims, ratings, and reports. - Events Mode: Optional Vault integration to set a cost for claiming plots. - Events Mode: An integrated web server that displays a live, browsable map of the plot world. - Events Mode: Manually or automatically render the world to keep the web map up-to-date. - Events Mode: Powerful admin commands for managing any plot. - Events Mode: Designed to run efficiently on modern Folia servers. - Events Mode: Supports 7 languages, easily configurable. - Events Mode:: Protects your server from inappropriate builds. *(Coming soon)* - Events Mode: Player-to-player plot marketplace via Vault. *(Coming soon)* - Events Mode: Streamer/community build events with timer, voting, and leaderboard. *(Coming soon)*
Installation
1. Download the latest release from the releases page. 2. Place the `Plot-X.X.X.jar` file into your server's `plugins` directory. 3. Restart your server. The plugin will generate the necessary configuration files. 4. Configure the plugin by editing `plugins/Plot/config.yml`. 5. *(Optional)* If using a multiverse plugin, ensure the `plot_world` in `config.yml` matches the name of your plot world.
World Setup & Generation
You can generate your plot world using one of the two methods below. Note: Ensure your `plot_world` name in `config.yml` matches the name of the world you create.
Method 1: Manual Generation (Standard)
This is the recommended method if you are not using a world management plugin.
1. Open your server's Delete the existing world folder file. 2. Scroll to the bottom and add the following configuration: ```yaml worlds: world: generator: Plot ``` *(If your world is named something other than "world", replace the name accordingly.)* 3. Delete the existing world folder (e.g., the `/world` folder) while the server is offline to allow the generator to build the plot structure from scratch. 4. Start your server.
Method 2: MultiverseCore
If you want to use a separate world for plots, create it with:
``` /mv create <worldName> normal -g Plot ```
Configuration
After creating the world, open your configuration file and change:
```yaml plot_world: world ```
to:
```yaml plot_world: <worldName> ```
> Make sure `<worldName>` exactly matches the name of the world you created.
Configuration
The main configuration is located in `plugins/Plot/config.yml`.
```yaml
Available languages: de_DE, en_US, fr_FR, it_IT, ru_RU, es_ES, pl_PL
language: en_US
The name of the world where plots are located.
plot_world: world
Plot and road dimensions. Deleting the plot world folder is required for changes to take effect.
plot_size: 100 road_size: 2 road_material: SMOOTH_STONE_SLAB
Max plots a single player can own.
max_ownable_plots: 5
--- Economy (requires Vault) ---
claim_cost: 0 currency: "€" succesfull_report_reward: 100
--- Backup System ---
backup: auto_backup: true interval_minutes: 60 max_backups_per_plot: 5 storage_path: backups backup_on_deletion: true
--- Exploit Prevention ---
unwanted_interactions: trapdoor: true itemframe: true liquid_flow: true dispenser: true piston: true
--- Discord Webhooks ---
claim_webhook_url: "" report_webhook_url: "" star_webhook_url: ""
--- Premium Features ---
A valid key is required to enable premium features.
premium_key: ""
Periodic rendering settings for the web map.
render: auto_start: false interval_minutes: 30
Configuration for the web server.
webserver: enabled: true host: 0.0.0.0 port: 8080
--- Misc ---
debug: false enable_auto_update: true send_statistic: true ```
Commands & Permissions
The main command is `/plot` (or its alias `/p`).
Plot Commands
| Command | Description | Permission | Default | | --- | --- | --- | --- | | `/plot claim` | Claims the nearest available plot. | `plot.claim` | `true` | | `/plot tp` | Teleports to your plot. | `plot.tp` | `true` | | `/plot visit <player>` | Teleports to another player's plot. | `plot.tp` | `true` | | `/plot info` | Shows information about the current plot. | `plot.info` | `true` | | `/plot rename <name>` | Renames your plot. | `plot.rename` | `true` | | `/plot add <player>` | Adds a trusted member to your plot. | `plot.add` | `true` | | `/plot remove <player>` | Removes a trusted member from your plot. | `plot.remove` | `true` | | `/plot ban <player>` | Bans a player from your plot. | `plot.ban` | `true` | | `/plot unban <player>` | Unbans a player from your plot. | `plot.unban` | `true` | | `/plot flag set <flag> <true/false>` | Sets a flag (`break`, `place`) for your plot. | `plot.flag` | `true` | | `/plot rate <1-5>` | Rates the plot you are currently standing in. | `plot.rate` | `true` | | `/plot setweather <weather>` | Sets the weather of your plot. | `plot.setweather` | `true` | | `/plot roadmaterial <material>` | Changes the road material around your plot. | `plot.roadmaterial` | `true` | | `/plot gui` | Opens the plot management GUI. | `plot.gui` | `true` | | `/plot reset` *(beta, can cause crash)* | Resets your plot to its original state. | `plot.reset` | `true` |
Backup Commands
| Command | Description | Permission | Default | | --- | --- | --- | --- | | `/plot backup create` | Creates a manual backup of your plot. | `plot.backup` | `true` | | `/plot backup list` | Lists all backups for your plot. | `plot.backup` | `true` | | `/plot backup restore <name>` | Restores a backup of your plot. | `plot.backup` | `true` |
Player World Commands
| Command | Description | Permission | Default | | --- | --- | --- | --- | | `/plot world create` | Creates a personal player world. | `plot.world` | `true` | | `/plot world list` | Lists your player worlds. | `plot.world` | `true` | | `/plot world visit <name>` | Teleports to a player world. | `plot.world` | `true` | | `/plot worlds` | Browse all public player worlds. | `plot.worlds` | `true` |
WorldEdit Commands
| Command | Description | Permission | Default | | --- | --- | --- | --- | | `/plot wand` | Gives you the WorldEdit selection wand. | `plot.worldedit.wand` | `true` | | `/plot pos1` | Sets your first selection point. | `plot.worldedit.pos1` | `true` | | `/plot pos2` | Sets your second selection point. | `plot.worldedit.pos2` | `true` | | `/plot set <material>` | Sets all blocks in your selection. | `plot.worldedit.set` | `true` | | `/plot walls <material>` | Builds walls around your selection. | `plot.worldedit.walls` | `true` | | `/plot fill <material>` | Fills the entire plot with a material. | `plot.worldedit.fill` | `true` | | `/plot setground <material>` | Sets the ground layer of your plot. | `plot.worldedit.setground` | `true` | | `/plot copy` | Copies your selection. | `plot.worldedit.copy` | `true` | | `/plot paste` | Pastes your copied selection. | `plot.worldedit.paste` | `true` | | `/plot undo` | Undoes your last WorldEdit action. | `plot.worldedit.undo` | `true` |
Admin Commands
| Command | Description | Permission | Default | | --- | --- | --- | --- | | `/plot admin reset` *(beta, can cause crash)* | Resets the plot you are standing in. | `plot.admin` | `op` | | `/plot admin setowner <player>` | Sets a new owner for the current plot. | `plot.admin` | `op` | | `/plot admin delete` *(not working, marked for removal)* | Deletes the plot and its contents. | `plot.admin` | `op` | | `/plot mirror <count>` | Duplicates a plot across a number of nearby plots. | `plot.admin.mirror` | `op` | | `/plot render <start/stop>` | Starts or stops map rendering. | `scalaplot.render` | `op` | | `/plot reload` | Reloads the plugin configuration. | `plot.admin` | `op` | | `/plot update` | Updates the Premium LIB jar. | `plot.admin` | `op` | | *(Bypass)* | Allows building/breaking anywhere in the plot world. | `plot.bypass` | `op` |
Developer API
ScalaPlot exposes a public API for other plugins to interact with the plot system.
```java // Get the API instance PlotAPI api = (PlotAPI) Bukkit.getPluginManager().getPlugin("Plot");
// Retrieve plots IPlot plot = api.getPlotAt(location); List<IPlot> plots = api.getPlotsByOwner(playerUUID);
// Manage trust & bans api.trustPlayer(plot, playerUUID); api.untrustPlayer(plot, playerUUID); api.banPlayer(plot, playerUUID);
// Plot operations api.claimPlot(player); api.resetPlot(plot); api.deletePlot(player, plot);
// Ratings & reports double rating = api.getAverageRating(plot); api.setStatus(plot, ReportStatus.REVIEWED);
// Check premium boolean premium = api.isPremium(); ```
Available methods include full access to: plot retrieval, trust/ban management, claim/reset/delete operations, ratings, report status, and manager instances (`PlotManager`, `WorldEditManager`, `MapManager`).
License & Usage Terms
This plugin is free to use with optional paid features. The source code and all intellectual property remain the exclusive property of the author. All rights are reserved.
Ownership & License
By downloading or obtaining this plugin, you acquire ownership of a limited, non-exclusive, and non-transferable. This license is limited, non-exclusive, and non-transferable. You do not gain rights to the source code or the plugin itself beyond this license.
Restrictions
You may not:
- Redistribute, sell, or share this plugin or its premium features - Modify, decompile, or reverse engineer the plugin - Bypass premium or license systems
Premium Features
Paid features are available under a valid license. Sharing or leaking access is strictly prohibited.
Anti-Piracy & Support
Cracked, leaked, or modified versions are not supported and may stop working at any time. Support is only provided for legitimate copies.
Acceptance
By using this plugin, you agree to these terms. If you do not agree, do not use it.
© 2026 All rights reserved.