Skip to content

Configuration

Jack edited this page Jun 6, 2026 · 3 revisions

Configuration

GPExpansion uses config.yml for all plugin settings.

File Location

plugins/GPExpansion/config.yml

The config is auto-migrated from older versions on first load with the new server version. A backup of the old config is created before migration.

Core

debug:
  enabled: false

messages:
  show-permission-details: true
  • debug.enabled — Verbose bridge/logging for claim detection and GP compatibility
  • messages.show-permission-details — Show the exact missing permission node in denial messages (e.g., "Missing: griefprevention.sign.rent.money")

Claim Blocks and Accruals

accruals:
  enabled: true
  pause-while-afk: false
  pause-while-vanished: true
  require-survival-mode: false
  notify-on-cap: true
  groups:
    - name: default
      blocks-per-hour: 100
      max-blocks: 80000
      max-claims: 0
    - name: vip
      blocks-per-hour: 200
      max-blocks: 250000
      max-claims: 10
    - name: elite
      blocks-per-hour: 500
      max-blocks: 1000000
      max-claims: 20
      permission: elite-reward
  world-blacklist: []
  world-multipliers:
    world: 1.0
    world_nether: 0.5
    world_the_end: 0.5

Groups are matched by permission (griefprevention.accruals.<group>). The optional permission: field adds an extra gate.

Player Commands

player-commands:
  - claims
  - claim.name
  - claim.name.anywhere
  - claim.description
  - ...
  - claim.cancelrent
  - claim.cancelrent.anywhere
  - ...

Permissions in this list are dynamically assigned to the gpx.player permission.

Permission Tracking

permission-tracking:
  enabled: true
  check-interval: 5

Periodically rechecks player permissions so sign limits and accrual profiles update without a relog.

Signs

Rent

signs:
  rent:
    enabled: true
    allow-renewals: true
    allow-item-payments: true
    allow-money-payments: true
    allow-claimblock-payments: true
    allow-experience-payments: true
    require-container-for-item-payments: true
    prevent-owner-breaking-active-rental: true
    auto-remove-expired-signs: false
    clear-on-abandon: true
    max-rent-duration: 30d
    sign-formats:
      inputs:
        - "[rent]"
        - "[rent claim]"
      outputs:
        header: "&a&l[Rent Claim]"
        display-claim-id: true
    hanging-sign-formats:
      inputs:
        - "[rent]"
      outputs:
        header: "&a&l[Rent]"
        display-claim-id: true
    limits:
      max-signs: 5
      count-expired-rentals: true
      count-inactive-signs: true
      bypass-permission: griefprevention.sign.rent.limit.bypass
    renewal:
      max-click-renewals: 5
      deny-renewal-when-eviction-pending: true
      too-close-to-max-window: 1h
    trust:
      grant-container-trust: false
      grant-access-trust: false
      clear-renter-trust-on-expire: true
      clear-renter-trust-on-evict: true
    eviction:
      notice-period: 14d
      allow-owner-cancel: true
      allow-admin-cancel: true
      require-standing-in-claim: true
      block-sign-break-until-effective: true
      notify-renter-on-start: true
      notify-owner-on-complete: true
      restore-snapshot-on-evict: false
      remove-renter-trust-on-start: false
      remove-renter-trust-on-complete: true
    snapshots:
      max-per-claim: 5
      auto-create:
        on-rent-sign-create: false
        on-rental-start: false
        before-eviction-complete: false
      auto-restore:
        on-rental-expire: false
        on-eviction-complete: false

Sell

  sell:
    enabled: true
    allow-item-payments: true
    allow-money-payments: true
    allow-claimblock-payments: true
    allow-experience-payments: true
    clear-trust-on-sale: true
    transfer-global-listing: false
    transfer-spawn-point: true
    require-confirmation: true
    remove-sign-after-sale: true
    sign-formats:
      inputs:
        - "[sell]"
        - "[sell claim]"
        - "[buy]"
        - "[buy claim]"
      outputs:
        header: "&a&l[Buy Claim]"
        display-claim-id: true
    hanging-sign-formats:
      inputs:
        - "[sell]"
        - "[buy]"
      outputs:
        header: "&a&l[Buy]"
        display-claim-id: true
    limits:
      max-signs: 5
      count-inactive-signs: true
      bypass-permission: griefprevention.sign.sell.limit.bypass

Mailbox

  mailbox:
    enabled: true
    allow-self-mailboxes: true
    require-container-attached: true
    allow-stacked-mailboxes: true
    allow-hoppers: false
    allow-owner-quick-collect: true
    protocol: virtual
    virtual:
      update-mode: snapshot
      snapshot-update-interval: 0
      allow-multiple-depositors: false
      return-items-when-full: true
      save-on-close-only: true
    sign-formats:
      inputs:
        - "[mailbox]"
        - "[mbox]"
      outputs:
        header: "&9&l[Mailbox]"
        display-claim-id: false
    limits:
      max-signs: 5
      max-self-mailboxes-per-claim: 1
      count-inactive-signs: true
      bypass-permission: griefprevention.sign.mailbox.limit.bypass
    storage-warnings:
      enabled: true
      thresholds:
        - 75
        - 90
        - 100
    sounds:
      open: block.chest.open
      close: block.chest.close
      deposit: entity.item.pickup
      full: block.note_block.bass
  • protocolvirtual (snapshot-based, works with all GP versions) or real (subdivision + container trust, requires GP3D)
  • virtual.update-modesnapshot, live-preview, or live-commit

Global

  global:
    enabled: true
    allow-sign-toggle: true
    require-claim-owner: true
    set-spawn-on-create: true
    default-listed: true
    sign-formats:
      inputs:
        - "[global]"
      outputs:
        header: "&b&l[Global]"
        display-claim-id: true
    limits:
      max-claims-per-player: 1
      count-unlisted-claims: true
      bypass-permission: griefprevention.claim.global.limit.bypass

Claim List

claim-list:
  show-owner-list-to-console: true
  show-trusted-claims: true
  show-subclaims: true
  show-world: true
  show-coordinates: true
  show-area: true
  show-name: true
  show-claim-block-summary: true
  page-size: 10

Controls which columns appear in /claimlist output.

Global Claims

global-claims:
  enabled: true
  allow-teleport: true
  require-approval: false
  default-icon: GRASS_BLOCK
  default-sort: newest
  max-name-length: 48
  max-description-length: 256
  teleport-requires-safe-spawn: true
  public-signs-set-spawn: true

Teleport

teleport:
  delay-seconds: 3
  cooldown-seconds: 10
  cancel-on-move: true
  safe-location:
    enabled: true
    search-radius: 8
    allow-nearby-fallback: true
    confirm-unsafe-teleport: true
  effects:
    start-sound: entity.enderman.teleport
    complete-sound: entity.player.levelup
    particles: portal
  bypass:
    cooldown-permission: griefprevention.claim.teleport.bypass.cooldown
    delay-permission: griefprevention.claim.teleport.bypass.delay

Claim Flight

claim-flight:
  passive-mode: false
  enabled: true
  require-toggle-command: true
  consume-time-while-hovering: true
  consume-time-in-creative: false
  default-time: 0
  max-time: 0
  disable-on-pvp: true
  disable-on-damage: false
  disable-on-leaving-claim: true
  landing-grace-seconds: 5
  allow-in-admin-claims: true
  allow-in-public-global-claims: false
  trust-levels:
    owner: true
    manager: true
    builder: true
    container: false
    access: false
  • passive-mode — When true, players with claimfly.use can fly in owned/trusted claims without needing time in their flight bank
  • max-time: 0 — 0 = unlimited bank

Claim Customization

claim-customization:
  names:
    max-length: 48
    allow-colors: true
    allow-formats: true
    allow-minimessage: true
    strip-obfuscated: true
  descriptions:
    max-length: 256
    allow-colors: true
    allow-formats: true
    allow-minimessage: true
    allow-links: false
  icons:
    allow-custom-items: true
    allow-player-heads: true
    deny-materials:
      - BARRIER
      - COMMAND_BLOCK
  bans:
    prevent-entry: true
    prevent-teleport: true
    eject-on-reload: true
    public-ban-permission: griefprevention.claim.ban.public
    admin-bypass-permission: griefprevention.admin

GUI

gui:
  enabled: true

Tax

tax:
  percent: 5
  account-name: "Tax"
  enabled: true
  exempt-permission: griefprevention.tax.exempt
  apply-to:
    rent: true
    sell: true
    mailbox: false
    claim-block-purchases: false
  deposit-mode: npc-account
  round-mode: nearest
  minimum-tax: 0
  notify-payer: true
  notify-payee: true
  ledger:
    enabled: false
    retain-days: 90

Tax is taken as a percentage of rent/purchase payments.

Eviction

eviction:
  notice-period: 14d
  allow-owner-cancel: true
  allow-admin-cancel: true
  require-standing-in-claim: true
  block-sign-break-until-effective: true
  notify-renter-on-start: true
  notify-owner-on-complete: true
  restore-snapshot-on-evict: false
  remove-renter-trust-on-start: false
  remove-renter-trust-on-complete: true

Snapshots

snapshots:
  enabled: true
  max-per-claim: 5
  auto-create:
    on-rent-sign-create: false
    on-rental-start: false
    before-eviction-complete: false
  auto-restore:
    on-rental-expire: false
    on-eviction-complete: false
    on-sale: false
  cleanup:
    enabled: true
    retain-days: 30
    remove-when-claim-deleted: true
  compression: true
  async-restore: true
  max-blocks-per-tick: 5000

Integrations

integrations:
  griefprevention:
    detect-gp3d: true
    prefer-gp3d-3d-claims: true
    use-native-visualizations: true
  vault:
    fail-closed-when-missing: true
    ignore-vault-missing: true
  luckperms:
    sync-dynamic-player-permission: true
  placeholderapi:
    enabled: true
  discord:
    enabled: false
    webhook-url: ""
    events:
      rental-start: true
      rental-expire: true
      eviction-start: true
      eviction-complete: true
      claim-sale: true

Update Checker

version:
  config-version: "1.1.2"
  update-checker:
    enabled: true
    check-interval: 24
    notify-admins: true
    log-to-console: true

Reloading

Use /gpx reload to reload config without restart.

Clone this wiki locally