Plots & districts

The plots module connects Eternal with PlotSquared for CityBuild servers. Besides the flag GUI (/plotflags) and the plot border (/rand), it divides the plot world into districts – rings around the spawn plot – and makes /plot merge cost coins, with fixed or dynamic prices per district. In the dashboard, the page „Grundstücke“ ("Plots") shows all plots, districts and paid merges.

Note

License: plots needs an EternalSystem license. Free in the base by default are core, punishments, reports and lobby; which modules are free can change – the dashboard shows locked modules grayed out.

Enabling

  • Module key: plots, included in the citybuild and full presets (see Modules & Presets). PlotSquared itself comes from the plugin library of the Eternal Cloud.
  • Districts and the paid merge need PlotSquared 7, i.e. Minecraft from 1.13 (see Versions & compatibility).
  • The paid merge charges coins and therefore needs the economy module (see Coins & market).

Districts

Districts are rings around the spawn plot.

  1. An admin stands on the spawn plot – this may also be a merged one, e.g. 3 × 3 – and runs /district setspawn.
  2. The rectangle of this plot is the spawn: district 0 „Spawn“.
  3. Rows count outward from its edge: row 1 directly touches the spawn.

Default rings:

DistrictRows
0 „Spawn“the spawn plot
1rows 1–3
2 – 115 rows each (rows 4–53)
from 1210 rows each, endlessly

The rings can be changed in the dashboard settings: a list of rows per district (ringRows) and the row count for all further districts (repeatRows).

For players

  • When walking into another district, "You enter <name>" appears with the district's motto below it.
  • /district (alias /bezirk) shows the district you are standing in and your home district – the district of your own plot closest to the spawn.
  • /district rings shows the ring table with the price per m² and per plot.
  • The scoreboard has the placeholders {district} (home district) and {district_here} (district you are standing in) as well as the element „District“.

/plot merge costs coins:

  1. The first /plot merge shows a quote: district, up to how many plots are added, price per plot, maximum total and price mode – plus a clickable [Bestätigen] ("Confirm").
  2. Confirm by clicking or by running /plot merge again within confirmSeconds (default 30 s).
  3. After confirming, Eternal holds back the maximum total. Once PlotSquared has merged the plots, only the plots actually added are charged; the rest is refunded.
  4. If the merge does not happen within 20 s, everything is refunded.

If the coins are not enough, the merge is denied. With eternal.plots.merge.free, merging is free (default: nobody).

Prices

Prices are kept per m². The area of one plot (plotArea, e.g. 32 × 32 = 1,024 m²) is reported by the CityBuild server from PlotSquared. The price is calculated per added plot = price per m² × plot area. The basis is the district price per m²:

district price/m² = pricePerM2 × districtFactor^(d − 1)
                    (never below minFactor × pricePerM2)
district price    = district price/m² × plotArea

d is the district number. A fixed price per m² can be entered for individual districts; it replaces this calculation. Older settings (price per plot) are converted to m² automatically when loaded.

ModePrice per plot
fixedDistrict price
dynamic (default, "like the stock market")see formula below
price per plot = district price
               × size ^ sizeExponent
               × ((scarcityReference + 1) / (plot groups of this size + 1)) ^ scarcityWeight
               × (paid merges in the district in the last 7 days + 1) ^ demandWeight

Size is the size after the merge. So larger groups cost more per plot, rare sizes are more expensive than common ones, and high demand in the district raises the price.

ValueDefaultMeaning
pricePerM2≈ 4.88Price per m² in district 1 (coins, two decimals)
plotAreafrom the serverArea of one plot in m²
districtFactor0.85Factor per district further out
minFactor0.1Lower limit as a share of basePrice
sizeExponent0.25Weight of the size
scarcityWeight0.3Weight of the scarcity
scarcityReference10This many groups of one size count as normal: fewer → dearer, more → cheaper
demandWeight0.15Weight of the demand
confirmSeconds30Validity of the quote

Mortgages (/hypothek)

Players can borrow against their own plot. Eternal values it, pays part of the value out at once as a loan, and then debits one installment every day.

For players:

  1. Stand on your own plot and run /hypothek scan. The scan counts every block on the plot. It works once every 24 hours.
  2. The chat shows the value, the offer and the terms. Clicking [Hypothek aufnehmen] (or /hypothek annehmen) within 60 minutes pays the loan into the wallet.
  3. From then on an installment is debited automatically every 24 hours (real days, counted from signing).

Value and loan:

PartHow
Landarea in m² × the district's price per m² (see Prices)
Blocksevery block on the plot × its AdminShop sell price, otherwise the market base value
Loan80 % of land + blocks, rounded down to whole coins
To repayloan + 10 % interest, split into 30 equal daily installments

Stone, dirt, grass blocks, bedrock, air, water and technical blocks are worth nothing. The list can be changed in the dashboard.

When an installment is missed:

WhenWhat happens
Installment due, not enough moneyEvery container on the plot is locked at once (chests, barrels, shulkers, furnaces, hoppers …). As soon as there is enough money, Eternal debits all open installments and unlocks them. /hypothek zahlen does it right away.
7 days after the oldest open installmentThe plot is seized: it belongs to the server, helpers and members are removed, the player can no longer enter. /hypothek tilgen with the whole rest gives it back exactly as it was.
30 days after the oldest open installmentThe plot is deleted (cleared and unclaimed).

Any time: /hypothek tilgen pays the whole rest at once and ends the mortgage. While a mortgage is open, the plot cannot be deleted, cleared, unlinked, merged, moved, swapped or given to another player.

Note

Locking containers needs the container locks module (locks). Installments are debited by the server that runs the plot world. If it is off, it catches up as soon as it runs again.

Dashboard: mortgages

Grundstücke ("Plots") → Hypotheken (permission eternal.web.plots):

  • Totals: running loans, open installments, seized plots and how much is still outstanding.
  • Loans: every mortgage with player, plot, loan, paid, rest, installment, next installment and state, filterable. Erlassen (forgive) ends an open mortgage without further payment: the CityBuild server unlocks the containers and gives a seized plot back.
  • Settings:
SettingDefaultEffect
Loan in % of value80share that is paid out
Interest %10on the whole loan, spread over all installments
Term30number of daily installments
Highest loanunlimitedcap per mortgage
Scan every … hours24wait between two scans of a player
Offer valid … minutes60how long the player can accept
Seize after … days7from the oldest open installment
Delete after … days30from the oldest open installment
Blocks count at %100share of the block value
Mortgages per player1open at the same time
Container lockHardHard: cannot be opened. Soft: opens, nothing can be taken out. Breaking is refused in both cases.
Blocks without valueground, technicalmaterial names, comma separated

Dashboard: Grundstücke ("Plots")

Page „Grundstücke“ ("Plots", permission eternal.web.plots):

  • Totals across all plots
  • Table per district: name, prestige, rows, plots, owners, merges, median price per m² over 7/30/90/365 days, land value (base price per m²) and current price per m² (per plot below)
  • Plot list with search – a snapshot the CityBuild server writes every 5 minutes
  • Recent paid merges
  • Settings: price per m², factors, fixed m² prices, modes, rings, preview (per m² and per plot)

District pages

Clicking a district opens its own page:

  • Name, motto and description – editable in the dashboard (pencil icon). Without own text a fitting default is used: Prachtviertel ("the most exclusive quarter") for the innermost rings, then Innenstadt, Mittelstadt, Vorstadt and, furthest out, the Grenzland. Name and motto also show in-game when entering.
  • Prestige from 5 to 1 stars – the closer to the spawn, the more.
  • Figures: price per m² now, land value, median of the m² prices paid, occupancy (owned plots of all plots in the ring) and neighbourhood (residents, area, merges this week).
  • Biggest land owners as a podium, ranks 4–10 below.
  • Neighbourhood badges from the numbers, e.g. Beste Adresse, Fast ausverkauft, Heiß begehrt, Schnäppchen-Lage, Geheimtipp, Anwesen (biggest plot) or "name regiert hier".
  • All plots of the district with owner, size and m², searchable, plus the recent merges.
  • The arrows at the top switch to the previous / next district.

The player page shows a district badge and the player's plots.

Commands

CommandAliasesPermissionDescription
/district/bezirk–District here and home district
/district rings/bezirk rings–Ring table with price per plot
/district setspawn/bezirk setspawneternal.plots.adminSet the plot below you as the spawn (district 0)
/plot merge–PlotSquared; free with eternal.plots.merge.freeShow the quote, confirm the second time
/plotflags [Seite]/pflags, /plotflageternal.plots.flagsGUI of all PlotSquared flags of the plot ([Seite] = page)
/rand [Block|gui]/plotrand, /bordereternal.plots.borderSet the plot border
/hypothek/mortgage, /hypothekeneternal.plots.mortgageOwn mortgages, next installment
/hypothek scan–eternal.plots.mortgageValue the plot (every 24 h; no wait with eternal.plots.mortgage.admin)
/hypothek annehmen–eternal.plots.mortgageAccept the last scan's offer
/hypothek zahlen–eternal.plots.mortgageDebit open installments now
/hypothek tilgen–eternal.plots.mortgagePay the whole rest, buy a seized plot back

Permissions

PermissionDefault levelPurpose
eternal.plots.flagsAll/plotflags
eternal.plots.borderAll/rand
eternal.plots.adminAdmin/district setspawn; flag GUI and /rand on other players' plots too
eternal.plots.merge.freeOff/plot merge without costs
eternal.plots.mortgageAll/hypothek
eternal.plots.mortgage.adminAdmin/hypothek scan without the 24-hour wait
eternal.web.plotsAdminDashboard page „Grundstücke“ ("Plots")

See Permissions reference.

API

MethodPathPurpose
GET/plotsPlot list
GET/plots/summary?days=Totals and district table
GET/plots/trades?days=Paid merges
GET · PUT/plots/pricingRead · save the price settings
GET/players/{name}/plotsPlots of a player
GET · PUT/plots/mortgages/configRead · save the mortgage settings
GET/plots/mortgages?state=&q=Mortgages (state: open, ACTIVE, SEIZED, PAID, DELETED, CANCELLED) and totals
POST/plots/mortgages/{id}/forgiveForgive a mortgage

Common pitfalls

  • No districts: PlotSquared 7 is missing (only available from 1.13), or /district setspawn has not been run yet.
  • Merge denied: the coins are not enough. The maximum total of the quote is held back first – the player must have that much, even if less is charged in the end.
  • Quote expired: the confirmation is only valid for confirmSeconds – run /plot merge again.
  • Plot list in the dashboard is outdated: the CityBuild server only writes it every 5 minutes.