JP Plugins
All plugins

JPAuction

Configurable auction house plugin for Paper servers.

Economy plugin, version 1.0.0

Downloads open soon.

Features

  • Auction house menu with categories, search and sorting
  • List items with /ah sell, buy with one click, collect unsold items and money later
  • Listing limits per permission, sales tax, blacklisted items
  • Admin tools and maintenance mode
  • Imports listings from other auction plugins
  • Uses any Vault economy

Requirements

  • Paper 26.1 or newer (Java 25)
  • Optional:
    • Vault: money (any Vault economy)
    • PlaceholderAPI: placeholders in texts, and this plugin's own placeholders

Installation

  1. Put JPAuction-<version>.jar in your server's plugins folder.
  2. Restart the server. plugins/JPAuction/ is created with the config and messages.
  3. Change what you want in the files, then reload or restart.

Type /jp as an operator to see every JP plugin you have installed, its version and which optional plugins it found.

Commands

CommandDescriptionPermission
/ah [sell|search|category|claims|mine|history|reload|admin]
Aliases: /auctionhouse
Open the auction house or use admin and trade subcommands.jpauction.use

Permissions

PermissionDefaultDescription
jpauction.useeveryoneUse the auction house.
jpauction.selleveryoneCreate auction listings.
jpauction.claimeveryoneClaim stored items and earnings.
jpauction.manage.owneveryoneView and cancel your own auction listings.
jpauction.adminoperatorsReload the auction house configuration.
jpauction.limit.vipnobodyExample larger listing limit permission.
jpauction.limit.mvpnobodyExample highest listing limit permission.

Placeholders

Needs PlaceholderAPI.

PlaceholderShows
%jpauction_active_listings%listings in the auction house right now
%jpauction_own_active%the player's own active listings
%jpauction_listing_limit%how many listings the player may have
%jpauction_pending_claims%sold or expired items waiting to be collected
%jpauction_pending_money%money waiting to be collected
%jpauction_category_<category>%listings in a category

Configuration

All files are in plugins/JPAuction/. Files: config.yml, messages.yml.

When you update the plugin, new options are added to your config.yml by themselves, with their comments. Your own settings stay as they are, and the old file is kept as config.old-v<number>.yml.

Languages: English, Spanish, Portuguese, French and German. Set language: in config.yml (en, es, pt, fr or de).

Default config.yml
# Used to add new options to this file after an update. Don't change it.
config-version: 1

# ╔══════════════════════════════════════════════════════════════════╗
# ║                     JPAuction  ·  config.yml                     ║
# ╚══════════════════════════════════════════════════════════════════╝
# Auction house: /ah to browse, /ah sell <price> [hours] to list the item in your hand.
# Texts live in messages.yml. Apply changes with /ah reload.
#
# Colours (everywhere): &a codes, &#RRGGBB hex and MiniMessage (<gradient:#a:#b>...).
# Needs Vault and an economy plugin.

# Language of the messages: en (messages.yml), es, pt, fr or de (lang/<code>.yml).
# Your own language: copy a file in the lang folder to lang/<code>.yml, translate it
# and set its code here (for example it for lang/it.yml).
language: en

# Replace messages.yml with the new design when the plugin is updated.
# Your old file is kept as messages.old-vX.yml. false = never touch it.
auto-update-style: true

storage:
  # SQLITE = a local file (no setup). MYSQL = a database server (needed to share
  # the auction house between several servers).
  type: SQLITE
  # Prefix for the table names, handy when several plugins share one database.
  table-prefix: jpauction_
  # Only used when type is MYSQL.
  mysql:
    host: localhost
    port: 3306
    database: jpauction
    username: root
    password: change-me
    parameters: useSSL=false&characterEncoding=utf8&serverTimezone=UTC
  # Database connection pool. The defaults are fine for almost every server.
  pool:
    maximum-pool-size: 10
    minimum-idle: 2
    maximum-lifetime-ms: 1800000
    connection-timeout-ms: 10000

auction:
  # How long a listing stays up when the player does not type a duration.
  default-duration-hours: 24
  # Longest duration a player can choose with /ah sell <price> <hours>.
  max-duration-hours: 72
  # How often expired listings are moved to the seller's claims.
  expiration-check-interval-seconds: 60
  # How many listings a player may have at once.
  listing-limit-default: 4
  # Higher limits by permission. The highest one the player has is used.
  # Give them to ranks in LuckPerms, e.g. /lp group vip permission set jpauction.limit.vip
  listing-limit-permissions:
    jpauction.limit.vip: 8
    jpauction.limit.mvp: 12
  # Sales tax, taken from what the seller receives (the buyer pays the listed price).
  # tax = price × percentage / 100 + flat-fee, but never less than minimum.
  tax:
    enabled: true
    percentage: 5.0
    flat-fee: 0.0
    minimum: 0.0
  # Items that can never be listed.
  blacklisted-materials:
    - BEDROCK
    - BARRIER
    - COMMAND_BLOCK
    - CHAIN_COMMAND_BLOCK
    - REPEATING_COMMAND_BLOCK
  # Listings per page. Limited by gui.listing-slots (21 by default).
  browse-page-size: 21
  # Allowed price range for listings. Prices accept 1500, 1.5k, 2m, 1b.
  min-price: 1.0
  max-price: 1000000000.0

gui:
  title: '&8ᴀᴜᴄᴛɪᴏɴ ʜᴏᴜꜱᴇ'
  # Ask for confirmation before buying a listing.
  confirm-purchases: true
  confirm-title: '&8ᴄᴏɴꜰɪʀᴍ ᴘᴜʀᴄʜᴀꜱᴇ'
  # Menu height, 3 to 6 rows (9 slots per row). 5 rows = 45 slots.
  rows: 5
  # Glass used for the menu frame.
  filler-material: BLACK_STAINED_GLASS_PANE
  # Slot numbers start at 0 (top-left) and go left to right; the bottom row of
  # a 5-row menu is 36-44. Where the listings go (the rest is filled with glass):
  listing-slots: [10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34]
  # Category tabs sit in the top row:
  category-slots:
    all: 0
    weapons: 1
    armor: 2
    tools: 3
    blocks: 4
    food: 5
    materials: 6
    misc: 7
    search: 8
  # Buttons in the bottom row.
  control-slots:
    previous: 36
    my-listings: 38
    info: 40
    refresh: 41
    claims: 42
    next: 44

sounds:
  # false = no auction sounds at all.
  enabled: true
  # Format: SOUND or SOUND:volume:pitch (volume 0-1, pitch 0.5-2).
  success: ENTITY_EXPERIENCE_ORB_PICKUP
  failure: ENTITY_VILLAGER_NO
  click: 'UI_BUTTON_CLICK:0.5:1'
  purchase: 'ENTITY_PLAYER_LEVELUP:0.6:1.6'
  claim: 'ENTITY_PLAYER_LEVELUP:0.6:1.4'

features:
  # Register the %jpauction_...% placeholders when PlaceholderAPI is installed.
  placeholderapi: true
  # Tell players on join that they have money or items waiting in /ah claims.
  notify-pending-claims-on-join: true
  # /ah sell
  sell-command: true
  # Search button and /ah search
  search: true
  # /ah history
  history: true
  # Message the seller (if online) when an item sells.
  notify-seller-on-sale: true
  # Message the seller (if online) when a listing expires unsold.
  notify-seller-on-expire: true

maintenance:
  # Expired listings handled per check (keeps big servers from lagging).
  expiration-batch-size: 100
  # Delete sold/expired/claimed records older than this many days. 0 = keep forever.
  history-retention-days: 14

format:
  # How money is shown (Java DecimalFormat). Examples: '$#,##0.00', '#,##0 coins'.
  currency-pattern: '$#,##0.00'
  # How dates are shown in history (Java date pattern), e.g. 'dd/MM/yyyy HH:mm'.
  date-pattern: yyyy-MM-dd HH:mm

Support

Guides and the docs of every JP plugin are on the JP Plugins website. Questions, bugs or ideas? Join the JP Plugins Discord.

License

JPAuction is free to use on any server, including servers that make money, but it is not open source. Don't reupload, sell or share modified copies of it. The full terms are in LICENSE.txt, which is also inside the jar.