Configuration defaults: Values shown for operator-configurable settings are the bundled defaults, and can be changed in the module’s configuration or definitions. The server’s active settings take precedence, so costs, speeds, ranges, durations, chances, effects, recipes, limits and enabled features may differ. Command examples illustrate syntax; fixed mechanics and validation bounds are not configuration defaults.
Property maps WorldGuard regions to owned parent parcels, child plots, sale listings and guarded leases. Use Suite installation; retain the existing Property data and legacy migration backups.
Recommended property setup workflow
Create and verify the WorldGuard parent region before registering it. Register that region to the owning player, then let the landlord create child rental plots with the Property wand. Left-click sets corner one and right-click sets corner two; the selection is rejected and cleared immediately if it leaves the parent parcel, crosses someone else's managed property, or overlaps an existing plot.
For a rental listing, set both price and duration before advertising it. Give tenants the full guarded command including expected price and expected duration so a changed listing cannot charge them silently. Purchased listings become ordinary parent properties and can hold new child rentals.
Rental lifecycle
Rent payment uses Economy when its compatible API is active, otherwise the registered Vault provider. On a successful lease, the tenant is synchronized into the child WorldGuard region as a member. Renewal repeats the expected-terms check and extends the lease according to the configured behavior. Expiry removes membership but never resets blocks, empties containers, or teleports the former tenant.
Active leases protect both the Property record and its WorldGuard region from removal. A landlord or administrator must wait for or otherwise resolve the lease. Quick deletion additionally refuses collateral, parent parcels with children, and other unsafe states.
Sales, ownership, and nested plots
/prop buy <name> [expected-price] transfers the listing to the buyer after payment. The result is a parent-capable owned property, not a lease. Property synchronizes landlord ownership to WorldGuard and preserves active child lease behavior. Staff teleport is an administrative convenience only; the plugin has no automatic home or landlord teleport system.
Economy integration
When Economy is active, Property registers the property collateral type and property-tax provider. Parent parcels count by default; ALL_PROPERTIES includes child plots. Collateral locking prevents unsafe transfer or deletion. Seizure transfers landlord ownership while preserving active tenants rather than evicting them or resetting their builds.
Utilities and industrial ownership
Utilities uses the Property landlord UUID as each machine's owner. Tenancy or WorldGuard membership alone does not grant machine operation. Owners explicitly add operators with /utilities access add <player-or-UUID>. Ownership changes clear delegated operators and remove links touching affected machines.
One Utilities meter serves each registered plot. Infrastructure staff connect that meter to a named grid. Staff separately approve machinery with /utilities industrial on; this is plot authorization, not chunk loading. All machinery except meters requires approval. Registered street lamps and meters may serve ordinary properties.
Entry notices while driving
Property entry is checked for moving passengers as well as walking players. The three-second property action-bar notice has priority over vehicle telemetry, so the region name remains visible to a driver until the notice expires. Ordinary telemetry then resumes. Entry messages still use the configurable property-enter-actionbar message with {property} and {region} placeholders.
Current boundaries
Property manages records, payment, ownership/member synchronization, and safety rules. It does not restore terrain, clear inventories, reset rented builds, create homes, or migrate money between incompatible Economy providers. The legacy command aliases exist for compatibility, but new instructions should use /prop and property.*.
Selection, listing, and pricing workflow
Register a pre-existing parent region with /prop admin register <region> <player>. The landlord obtains /prop wand: left-click selects corner one, right-click corner two. Feet-position pos1/pos2 are fallbacks. The whole cuboid must stay within the landlord's parent, avoid another owner's managed property and avoid plot overlaps; invalid selections clear both points. Complete WorldEdit/FAWE cuboids are accepted only when a complete Property selection is absent.
Create child rental with /prop plot create <name> <price> <duration>. Staff can register existing sale/rental regions or use quick commands to create one from a selection. Set complete terms before advertising. Rent and renew require expected price and duration; inspect the listing first. Price changes cannot silently charge stale terms. Sale optionally accepts expected price.
Configuration and persistence
Review limits, durations, taxation scope, collateral and entry notices in Property configuration/messages. Current canonical command is /prop, permissions are property.*; legacy areashop.* permission checks remain accepted. Public APIs provide ownership/collateral rather than restoring terrain. Entry notices identify the innermost plot and retain action-bar priority for three seconds while driving. Database and matching WorldGuard region state must be backed up together.
SQLite and MySQL storage
SQLite remains the default, including for existing config files without database.type. Set database.type: MYSQL and configure database.mysql.host, port, database, username, and password to use a pre-created MySQL database. MySQL 8+ and MariaDB use InnoDB transactions and the bundled Connector/J driver. Core tables have a core_ prefix and Property tables have a property_ prefix, so both can share the Economy database without overlapping its tables.
database.mysql.use-ssl: true requires encrypted transport. For a local database without TLS, explicitly set it to false. allow-public-key-retrieval defaults to false; enable it only when the configured MySQL authentication needs it. Connection/backend changes require a server restart. Switching backends does not copy or delete existing records: a fresh remote database starts empty. Keep the existing SQLite files if you might switch back. SQLite file, busy-timeout, startup backup and integrity-check settings apply only to SQLite; arrange server-side backups for MySQL. The configuration schema remains config-version: 1.
Reading command syntax
Configuration defaults: Values shown for operator-configurable settings are the bundled defaults, and can be changed in the module’s configuration or definitions. The server’s active settings take precedence, so costs, speeds, ranges, durations, chances, effects, recipes, limits and enabled features may differ. Command examples illustrate syntax; fixed mechanics and validation bounds are not configuration defaults.
<argument> is required; [argument] is optional. Replace the placeholder, including its brackets, with your value. Choices separated by a vertical bar mean choose one. ... accepts the remaining words. Do not type quotation marks around multiword names unless the command specifically requires them. A bare command has no required arguments. Examples use sample players/IDs: substitute entries from your server and use Tab for configured IDs.
player means a username; operational actions usually require that player online. amount and price are currency values such as 25.00, unless the row specifies items, levels, or units. reason, memo, message, name, and statement accept text where supported. duration uses the module's duration format (for example 10m, 2h, or 7d); it is not a bare number of minutes unless stated. id is the exact identifier displayed by that system, not its friendly name. Permissions and ownership/state/location checks both apply.
Property commands
Operations use your current world and require an in-game player for selections/listings. A name/region is a region/property ID in that world. Prices are nonnegative currency; durations such as 7d are parsed lease times. Canonical permission prefix is property; legacy areashop equivalents remain accepted.
| Syntax | Purpose / arguments | Permission |
|---|
/prop or /prop help | Help | Entry access |
/prop wand | Issue landlord selection wand | property.select |
/prop pos1, /prop pos2 | Select corner at feet; no arguments | property.select |
/prop plot create <name> <price> <duration> | Create child rental from safe selection | property.plot.create; landlord |
/prop plot terms <name> <price> <duration> | Update child terms | property.plot.terms; landlord |
/prop plot remove <name> | Remove eligible child plot | property.plot.remove; landlord |
/prop buy <name> [expected-price] | Buy listing, optionally guarding advertised price | property.buy |
/prop rent <name> <expected-price> <expected-duration> | Pay guarded lease; all three values required | property.rent |
/prop renew <name> <expected-price> <expected-duration> | Extend own lease with current terms | property.renew |
/prop vacate <name> | End own tenancy | property.vacate |
/prop info <name> | Inspect owner, type and terms | property.info |
/prop list [all or available or rented or mine] | List current-world properties; defaults all | property.list |
/prop create <rent or buy> <name> | Register existing WG region as listing | property.admin.create |
/prop delete <name> | Unregister eligible property, leave WG region | property.admin.delete |
/prop quickbuy <name> [price] | Create selected sale region; omitted price creates unpriced listing | property.admin.quick |
/prop quickrent <name> [price duration] | Create selected rental; supply both optional terms together | property.admin.quick |
/prop quickdelete <name> | Remove eligible record and created region; refuses leases, collateral, children | property.admin.quick; aliases quickdel, qd |
/prop setprice <price> <name> | Set listing price; price precedes name | property.admin.terms |
/prop setduration <duration> <name> | Set lease duration | property.admin.terms |
/prop admin register <region> <player> | Register parent to landlord | property.admin.register |
/prop admin unregister <region> | Unregister eligible managed region | property.admin.unregister |
/prop admin landlord <region> <player> | Change landlord; related ACL/ownership integrations refresh | property.admin.landlord |
/prop admin tp <region> | Staff teleport | property.admin.teleport |
/prop admin reload | Reload module configuration/messages | property.admin.reload |
Example: /prop info apartment_1, then /prop rent apartment_1 250.00 7d using exactly its displayed terms. Renew uses the same arguments. The shorthand /rent is a root alias, so use its full subcommand syntax; prefer /prop rent to avoid ambiguity.
Root commands and aliases
These are the registered command entry points. The subcommand tables above describe their complete operations. Alias names use the same arguments as their root.
| Syntax | Purpose | Permission / aliases |
|---|
/prop help | Manage properties, rentals, sales, and player-created plots. | Checked by operation; aliases: /property, /areashop, /rent |