Skip to content
RitomasssCommunity
Product documentation

NexaAuctions Documentation

NexaAuctions is a Java 25 auction platform for Paper 1.21.x-26.1.x with BIN listings, bidding, bulk sales, SQL storage, Redis-ready cache invalidation, mailbox recovery, staff intelligence menus, configurable Triumph GUI files, economy fees, migration surfaces and public API events.

25Java target
Paper 1.21-26.1Server target
24 menusPlayer and admin GUI files
SQL + RedisStorage and sync posture

Overview#

Product purpose, target audience, system boundaries and quick links.

Quick links: Auction Engine, Transactions, Player Flow, Listing Removal & Refunds, Admin Ops, Installation, Commands, Permissions, Configuration, GUI, Economy, Protection, Storage, Network, Integrations, Migration, API and Troubleshooting.

What is NexaAuctions?#

A configurable auction platform for servers that need safe sales, bid handling, mailbox recovery and operator tooling.

Who is it for?#

SMP, Lifesteal, Prison, SkyBlock and network owners who need a premium market layer with clear admin recovery paths.

Truthful scope#

Redis currently handles heartbeat, cache invalidation and lock helpers. SQL remains the authoritative source of auction state.

Main features#

  • BIN, normal bid and bulk BIN listing models.
  • Mailbox claim flow for purchases, cancels, expirations and recovery returns.
  • Transaction locks, idempotency records, optimistic state transitions and payout retry queue.
  • SQL storage with auctions, transactions, bids, mailbox, logs, notifications and payouts.
  • Twenty-four YAML menus covering market, creation, confirmations, history, statistics and admin panels.
  • YAML fees, currencies, limits, categories, item rules, webhooks, messages and network settings.
  • Admin integrity, cleanup, logs, suspicious transaction, performance, player view and migration commands.

Dependencies#

  • Java 25 and Paper or Purpur 1.21.x-26.1.x.
  • Vault and an economy plugin recommended for money currency.
  • PlaceholderAPI, PlayerPoints, Discord webhook and custom item plugins are optional.
  • MySQL/MariaDB and Redis are recommended for network mode testing.

Auction Engine#

How the product models listings, prices, durations, categories and lifecycle state.

NexaAuctions stores the auction type, seller, item snapshot, category id, currency id, price, optional remaining amount and timestamps as first-class listing data.

Listing types#

  • BIN: fixed-price purchase flow.
  • Normal bid: competitive bidding and settlement path.
  • Bulk BIN: amount-aware fixed-price selling for stacked items.

Input parsers#

  • Price shorthand: 1k, 2.5m, 1b, 1t.
  • Duration input: seconds, minutes, hours, days and weeks.
  • Command shortcuts for fast BIN and explicit auction type creation.

Item snapshot#

  • Material and amount.
  • Display name and lore.
  • Custom model data.
  • Serialized item payload and hash metadata.

State model#

  • Listed listings are visible to players.
  • Purchase and bid pending states isolate in-progress operations.
  • Sold, cancelled and expired flows route items or payouts to the correct owner.

Category matching#

Categories can be matched from item data and used by browsing, limits, fee rules and search filters.

API validation#

Lifecycle events let external plugins cancel or react before final item and money movement happens.

Recommended listing tests checklist
  • Create a cheap BIN listing and purchase it from another account.
  • Create a normal bid listing, place a bid, wait for expiration and verify settlement.
  • Enable amount trading, create a bulk listing, buy part of it, then verify the remaining amount.
  • Use admin cancel on a test listing and verify the seller can claim the returned item.
  • Try blocked items, invalid prices, invalid durations and missing permissions.

Transaction Safety#

Money and item movement is split into explicit services so failures can be audited and recovered.

Do not test duplicate purchase or claim scenarios only on a live production server. Reproduce them on staging with the same database, Redis and economy stack.

Idempotency#

Transaction idempotency records reduce the chance of duplicate processing when commands, menu clicks or network retries overlap.

Locks#

Transaction and auction locks guard purchase, bid, cancel, expire and claim flows. Redis lock helpers can be used in network mode.

Optimistic state#

Listings must move from the expected current state into the next state. Invalid movement is rejected instead of silently overwriting state.

Mailbox#

Purchases, cancellations, expirations and recovery returns can move through mailbox records that are claimed with /ah claim.

Payout retry#

Seller deposits that cannot be completed immediately can be queued and retried when the economy provider is available again.

Integrity scanner#

Admin integrity checks surface pending auctions and stale transactions before they turn into unresolved support cases.

Player Experience#

Player-facing commands and menus are designed around repeated marketplace use.

Use menu screenshots in the showcase after testing these flows in-game: main market, create auction, auction action, confirm purchase and history.

Main market#

  • Open from /ah.
  • Browse active auctions.
  • Open create, search, history and personal auction pages.

Create flow#

  • Hold item.
  • Choose command or GUI path.
  • Validate price, duration, currency, limits and item rules.
  • Charge listing fee after final approval.

Purchase flow#

  • Open detail page.
  • Confirm expensive purchases where configured.
  • Move item to buyer mailbox and payout/tax to seller path.

Bid flow#

  • Place bid on normal auctions.
  • Record bid history.
  • Settle winning bid on expiration.

History#

  • My listings.
  • My bids.
  • Purchases.
  • Sold items.
  • Expired items.
  • Transaction history.

Claiming#

/ah claim is the player recovery path for purchased, returned, expired and staff-recovered items.

Listing Removal & Refunds#

Players can remove their own active listings through a confirmation screen. Staff can delist any active listing, while the existing mailbox delivery path protects the seller's remaining item.

A removal only succeeds while the listing is LISTED. If a purchase, bid settlement or expiration wins the state race first, the removal is rejected and no duplicate refund is created.

Player cancellation#

  1. Open /ah profile and choose My Listings.
  2. Click the listing item to open the cancellation confirmation menu.
  3. Review the item and remaining amount, then select Confirm Cancellation.
  4. The item is queued through the seller mailbox and can be claimed with /ah claim.

Admin delist#

  • /ahadmin cancel <auctionId> safely force-cancels an active listing.
  • /ahadmin delete <auctionId> <reason> records a moderation reason.
  • Both operations preserve the listing snapshot and route the remaining item to the seller.
  • Use recovery tools for already-pending or historical records instead of bypassing transaction state.

Refund delivery#

  • Online players may receive the item immediately when inventory space is available.
  • Offline players, full inventories and delivery retries remain in the mailbox.
  • Delivery records are idempotent per auction removal.
  • The listing is not treated as fully removed until a durable delivery record exists.
Removal state flow race-safe sequence
LISTED
  ├─ purchase wins  → PURCHASE_PENDING → SOLD
  ├─ expiry wins    → EXPIRED → seller mailbox
  └─ removal wins   → CANCELLED / DELETED_BY_ADMIN → refund mailbox

If the item is sold at the same moment the seller clicks cancel, the first state transition wins. The buyer is compensated if money was withdrawn before a failed purchase transition; the seller receives only the unsold remaining quantity.
Item-loss prevention checklist operator expectations
  1. Keep the serialized item snapshot until the delivery row is confirmed.
  2. Use the same auction lock and state transition path as purchase and expiration.
  3. Never enqueue a second refund when the same removal is retried after a timeout.
  4. Ask the player to run /ah claim after an offline or full-inventory removal.

Admin Operations#

Staff tools follow the same operational style as the other local premium plugins: inspect first, act second, keep recovery visible.

Give admin and bypass permissions only to trusted staff. Bypass nodes can skip economy, world, limit, cooldown, blacklist or mute protections.

Health checks#

  • /ahadmin menu
  • /ahadmin hooks
  • /ahadmin storage
  • /ahadmin network
  • /ahadmin performance

Investigation#

  • /ahadmin logs [limit]
  • /ahadmin suspicious [limit]
  • /ahadmin view <player|uuid>
  • /ahadmin integrity

Intervention#

  • /ahadmin cancel <auctionId>
  • /ahadmin delete <auctionId> <reason>
  • /ahadmin recover <auctionId> <player>
  • /ahadmin cleanup

Export#

/ahadmin logs export <csv|json> gives staff a review artifact for chargebacks, duping reports and support tickets.

Migration#

Scan, preview and start commands are separated so data can be inspected before any import writes NexaAuctions listings.

Admin menus#

Admin overview, logs, suspicious, recovery, player listings, network and performance menus give visual staff entry points.

Installation#

Installation gets the plugin to boot. First Setup prepares it for production use.

Do not replace plugin jars while the server is running. Always make a backup before updating.
Run Paper or Purpur 1.21.x-26.1.x on Java 25.Confirm server runtime before installing economy or menu dependencies.
Stop the server and upload NexaAuctions to /plugins.Never hot-swap the jar on a live production server.
Start once to generate files, then stop again.The plugin folder will contain config, messages, menus and runtime YAML.
Set license-key, storage and economy provider settings.Placeholder license values are rejected by the startup check.
Restart and run admin status commands.Use /ahadmin menu, /ahadmin storage, /ahadmin hooks and /ahadmin network.

First Setup#

Recommended first configuration pass after the plugin has generated its files.

Make one change at a time, reload or restart, then test the full sell, buy, bid and claim workflow with a normal player account.

Setup checklist#

  1. Set a real LicenseGate key.
  2. Choose SQLite for single server or MySQL/MariaDB for network mode.
  3. Install Vault and confirm the default currency is available.
  4. Tune fees, limits and blocked item rules.
  5. Open the main menu, create a test listing, buy it and claim the item.
  6. Run admin integrity and storage checks.

Production notes#

  • Give permissions through LuckPerms or your permission manager.
  • Back up YAML files and SQL databases before updates.
  • Use a staging server before enabling Redis/network mode.
  • Do not advertise full Folia support until the exact stack is region-thread tested.

Commands#

Each command includes purpose, permission, example and when to use it.

Command entries are based on plugin.yml and command classes in this product build.
/ahPlayer
Description

Open the auction house menu.

Permission

nexaauctions.use

Example

/ah

When to use

Default player entry point.

/ah sell <price>Player
Description

Create a BIN listing from the full held stack.

Permission

nexaauctions.sell

Example

/ah sell 25000

When to use

Fast listing flow.

/ah sell <bin|normal|bulk> <price> [amount] [duration]Player
Description

Create a specific auction type, with optional amount input when amount trading is enabled.

Permission

nexaauctions.sell.bin / .normal / .bulk

Example

/ah sell bulk 10k 8 3d

When to use

Bid or bulk workflows.

/ah cancel <auctionId>Player
Description

Open the confirmation screen to cancel your own active listing.

Permission

nexaauctions.cancel

Example

/ah cancel 6d1...

When to use

Remove an unsold listing and receive the remaining item back.

/ah buy <auctionId> [amount] [confirm]Player
Description

Purchase the full stack, or a partial amount when amount trading is enabled.

Permission

nexaauctions.buy

Example

/ah buy 6d1... 8 confirm

When to use

BIN and bulk purchases.

/ah bid <auctionId> <price>Player
Description

Place a bid on a normal auction.

Permission

nexaauctions.bid

Example

/ah bid 6d1... 25k

When to use

Competitive listings.

/ah search <query>Player
Description

Search listings by text or filters.

Permission

nexaauctions.search

Example

/ah search diamond seller:Steve

When to use

Find specific listings.

/ah claimPlayer
Description

Claim pending mailbox items.

Permission

nexaauctions.claim

Example

/ah claim

When to use

After purchases, cancels or expirations.

/ahadminAdmin
Description

Admin tools for license, storage, network, recovery and migration.

Permission

nexaauctions.admin

Example

/ahadmin storage

When to use

Operational support and moderation.

/ah browse
/ah category
/ah bids
/ah selling
/ah cancel <auctionId>
/ah sold
/ah purchases
/ah expired
/ah history
/ah stats
/ah help
/ahadmin menu [overview|logs|suspicious|recovery|players|network|performance]
/ahadmin reload
/ahadmin debug
/ahadmin hooks
/ahadmin storage
/ahadmin network
/ahadmin logs [limit]
/ahadmin logs export <csv|json>
/ahadmin suspicious [limit]
/ahadmin view <player|uuid>
/ahadmin cancel <auctionId>
/ahadmin delete <auctionId> <reason>
/ahadmin recover <auctionId> <player|uuid>
/ahadmin integrity
/ahadmin cleanup
/ahadmin performance
/ahadmin performance clear
/ahadmin migrate <scan|preview|start> <source>
/ahadmin migrate rollback

Permissions#

Permission nodes are based on plugin.yml. Assign admin and bypass permissions carefully.

/lp group default permission set nexaauctions.use true
/lp group admin permission set nexaauctions.admin true
nexaauctions.use

Allows opening the auction house.

Default: truePlayers
nexaauctions.sell

Allows creating auction listings.

Default: truePlayers
nexaauctions.cancel

Allows opening the confirmation flow for your own active listings.

Default: truePlayers
nexaauctions.sell.bin

Allows BIN listings.

Default: truePlayers
nexaauctions.sell.normal

Allows bidding listings.

Default: truePlayers
nexaauctions.sell.bulk

Allows bulk BIN listings.

Default: truePlayers
nexaauctions.buy

Allows purchasing listings.

Default: truePlayers
nexaauctions.bid

Allows bidding on listings.

Default: truePlayers
nexaauctions.claim

Allows claiming mailbox items.

Default: truePlayers
nexaauctions.admin

Allows full NexaAuctions administration.

Default: opOwner/Admin
nexaauctions.admin.recover

Allows item recovery commands.

Default: opOwner/Admin
nexaauctions.bypass.tax

Bypasses listing and sale fee reductions.

Default: opBypass
nexaauctions.limit.vip

Example VIP listing limit permission.

Default: falseRank

Configuration#

Configuration YAML files below contain short bundled default excerpts, not full files.

Validate YAML indentation before restarting the server.
config.yml short excerpt

Main runtime settings, license, storage, network, auction behavior, safety and integrations.

debug: false
license-key: "LICENSE"
color-format: "MINIMESSAGE"

settings:
  default-language: "en_US"
  default-auction-type: "BIN"
  default-duration: "3d"
  default-currency: "vault"
  confirm-purchases: true
  confirm-expensive-sell: true

storage:
  type: "sqlite"
  sqlite:
    file: "storage/nexaauctions.db"
    wal: true

network:
  enabled: false
  server-id: "server-1"
  redis:
    enabled: false
    channel: "nexaauctions:sync"

safety:
  transaction-timeout-seconds: 20
  startup-integrity-scan: true
  ghost-cleanup: true
  tps-guard:
    enabled: true
    minimum-tps: 17.5
Top-level keys

debug, license-key, settings, storage, network, auction, input, safety, integrations, license

Production handling

Restart after changing license or storage. Runtime reload can handle messages, menus, hooks and most YAML surfaces.

currencies.yml short excerpt

Defines currency ids, provider mapping, display names and selector materials.

currencies:
  vault:
    enabled: true
    provider: "VAULT"
    display-name: "Money"
    material: "GOLD_INGOT"
    default: true
  points:
    enabled: true
    provider: "PLAYER_POINTS"
    display-name: "Points"
    material: "EMERALD"
fees.yml short excerpt

Controls listing fees, sale tax, bid fees, price ranges and permission reductions.

fees:
  bin:
    listing-fee-percent: 2.5
    sale-tax-percent: 5.0
  normal:
    listing-fee-percent: 1.5
    sale-tax-percent: 5.0
    bid-tax-percent: 1.0
  bulk:
    listing-fee-percent: 2.0
    sale-tax-percent: 5.0
  permission-reductions:
    vip:
      permission: "nexaauctions.tax.vip"
      reduction-percent: 25.0
limits.yml short excerpt

Controls active listing count, active bid count, price/duration limits, permission tiers, category limits and world restrictions.

limits:
  default:
    active-auctions: 10
    active-bids: 20
    min-price: 1
    max-price: 1000000000
    min-duration: "10m"
    max-duration: "7d"
  permissions:
    vip:
      permission: "nexaauctions.limit.vip"
      active-auctions: 25
      active-bids: 50
      max-duration: "14d"
categories.yml short excerpt

Defines menu categories and material/name matching rules.

categories:
  weapons:
    enabled: true
    display-name: "<red>Weapons"
    material: "DIAMOND_SWORD"
    slot: 10
    match:
      materials:
        - "DIAMOND_SWORD"
        - "BOW"
  misc:
    enabled: true
    display-name: "<gray>Misc"
    material: "CHEST"
    slot: 15
    fallback: true
item-rules.yml short excerpt

Blocks dangerous materials and named staff/admin items by default.

item-rules:
  mode: "blacklist"
  inspect-shulker-contents: true
  blacklist:
    bedrock:
      material: "BEDROCK"
    command-blocks:
      materials:
        - "COMMAND_BLOCK"
        - "CHAIN_COMMAND_BLOCK"
    staff-items:
      name-contains:
        - "Admin"
        - "Staff"

Messages & Language#

Translation and formatting guidance based on messages.yml.

Keep placeholders such as <auction>, <price> and <currency> intact when translating.

How to edit messages#

Edit the generated messages.yml in the plugin folder, preserve keys and placeholders, then run /ahadmin reload or restart for startup-level changes.

Formatting#

<green>Listed <white><item></white></green>
<gradient:#22d3ee:#a855f7>NexaAuctions</gradient>
&cLegacy color fallback
messages.yml selected keys
prefix: "<gradient:#22d3ee:#a855f7>NexaAuctions</gradient> <dark_gray>| "
auction-created:
  enabled: true
  type: "chat"
  text: "<green>Listed <white><item></white> for <gold><price></gold> <yellow><currency></yellow> <gray>(<duration>)</gray>."
purchase-success:
  enabled: true
  type: "chat"
  text: "<green>Purchase transaction completed for <white><amount>x <item></white> at <gold><price></gold> <yellow><currency></yellow>."
storage-status:
  enabled: true
  type: "chat"
  text: "<gray>Storage: <white><type></white> ..."

GUI / Menus#

Menus are loaded from menus/*.yml and rendered through Triumph GUI.

Menu items support material, amount, name, lore, slots, permission visibility, model data, item flags and actions such as [open], [command], [sound] and [close].

Main#

Main player market menu.

  • Title: NexaAuctions | Market
  • Size: 54
  • Actions: browse, sell, search, my auctions, history, close

Create Auction#

Listing creation preview and command handoff menu.

  • Title: NexaAuctions | Create
  • Size: 54
  • Focus: item slot and back action

Auction Action#

Shared view and buy entry for a listed auction.

  • Title: NexaAuctions | Auction
  • Size: 45
  • Actions: confirm purchase for BIN, bid hint for auctions, back

Confirm Purchase / Bid / Cancel#

Safety screens before purchase, bid or listing removal.

  • Purchase and bid: configurable confirmation menus
  • Cancel: runtime five-row confirmation menu from My Listings
  • Purpose: avoid accidental money movement or item removal

Player History#

Player-oriented lists for bids, listings, purchases, sold and expired items.

  • Menus: my-listings, my-bids, purchases, sold-items, expired-items
  • Size: 54

Admin Menus#

Operator menus for overview, logs, suspicious transactions, recovery, network and performance.

  • Admin overview size: 54
  • Network/performance size: 45
Full menu inventory 24 files
menus/main.yml
menus/categories.yml
menus/auction-detail.yml
menus/create-auction.yml
menus/duration-selector.yml
menus/currency-selector.yml
menus/price-editor.yml
menus/confirm-purchase.yml
menus/confirm-bid.yml
menus/my-listings.yml
menus/my-bids.yml
menus/purchases.yml
menus/sold-items.yml
menus/expired-items.yml
menus/transaction-history.yml
menus/statistics.yml
menus/shulker-preview.yml
menus/admin-overview.yml
menus/admin-network.yml
menus/admin-performance.yml
menus/admin-logs.yml
menus/admin-suspicious.yml
menus/admin-recovery.yml
menus/admin-player-listings.yml
Showcase image plan recommended captures

Save real in-game screenshots into showcase/assets/ with these names so the showcase page fills automatically.

showcase/assets/main-market.png
showcase/assets/create-auction.png
showcase/assets/auction-detail.png
showcase/assets/confirm-purchase.png
showcase/assets/admin-overview.png
showcase/assets/admin-network.png

Economy#

Currencies and fees are independent YAML surfaces.

Vault is the default currency id. Register or install the matching provider before opening sales to players.

Currency providers#

  • Vault provider
  • PlayerPoints provider
  • YAML fallback provider
  • Unavailable placeholders for several economy plugins

Fee types#

  • Listing fee
  • Sale tax
  • Purchase tax
  • Bid fee
  • Cancel fee
  • Duration fee
  • Range/category/currency tax

Payout handling#

Seller payouts that cannot be deposited immediately can be queued and retried. This protects offline or temporarily unavailable economy flows.

Protection#

Safety checks run before auction creation and transaction state changes.

Bypass permissions should only be assigned to trusted staff accounts.

Runtime guards#

  • TPS guard
  • Ping guard
  • Create cooldown
  • Transaction timeout
  • Ghost cleanup

Player limits#

  • Active auction limit
  • Active bid limit
  • Min/max price
  • Min/max duration
  • Per-category active limit

Item rules#

  • Blacklist mode
  • Shulker content inspection
  • Blocked bedrock and command blocks
  • Name/lore/enchant/PDC match support

Storage#

Storage docs explain SQLite, MySQL, MariaDB and backup expectations.

Always back up before changing storage type or updating a production server.

Storage recommendation#

Use SQLite with WAL for a small single server. Use MySQL or MariaDB before enabling network mode, Redis locks or multi-server cache invalidation.

Backup checklist#

  • Stop the server before copying live SQLite files.
  • Export SQL databases before updates.
  • Keep plugin, server and schema version in backup notes.
  • Test migration on a copy first.

Network#

Network mode is designed for SQL-backed multi-server operation.

Do not market full cross-server safety without testing Redis, MySQL/MariaDB and duplicate claim scenarios on your exact network topology.

Redis heartbeat#

Publishes server heartbeat data so admins can inspect known network members.

Cache invalidation#

Publishes listing changes so other servers can invalidate cached auction views.

Distributed locks#

Claim and expiration guards can use Redis lock helpers with token-based release.

network:
  enabled: true
  server-id: "survival-1"
  require-production-database: true
  redis:
    enabled: true
    host: "localhost"
    port: 6379
    channel: "nexaauctions:sync"
    lock-ttl-ms: 5000

Integrations#

Optional hooks are detected and summarized at runtime.

Run /ahadmin hooks after installing or removing dependencies.
PlaceholderAPI optional hook

Provides auction placeholders for scoreboards, menus and external displays.

%nexaauctions_active_listings%
%nexaauctions_total_listings%
%nexaauctions_transactions%
%nexaauctions_storage%
%nexaauctions_network_mode%
%nexaauctions_player_active%
%nexaauctions_player_sold%
%nexaauctions_player_bought%
Discord Webhook optional hook

Can send create, bought, sold, cancel, bid and recover event payloads with retry settings in webhooks.yml.

Economy Providers currency hooks

Vault is the primary money provider, PlayerPoints can be used for point economies and the YAML provider surface is useful for development or simple local balances. Keep the configured currency id aligned between currencies.yml, fees.yml and auction commands.

Custom Items hook registry

Resolver hook points exist for ItemsAdder, Oraxen, Nexo, MMOItems, EcoItems, ExecutableItems, ExecutableBlocks, MythicCrucible, Slimefun, HeadDatabase, CraftEngine, Nova and CustomCrafting. Provider-specific ID extraction should be validated per plugin API before marketing it as complete support.

Moderation and Permissions optional hooks

LuckPerms permission facade and LiteBans/AdvancedBan mute hook points are available for safer player messaging and command behavior.

Network Services Redis / RabbitMQ surface

Redis heartbeat, cache invalidation and distributed lock helpers are the documented production-ready network surface. RabbitMQ and proxy sync classes exist as future-ready boundaries and should not be sold as fully configured production sync until implemented and tested for the target network.

Placeholders#

Use these PlaceholderAPI values in scoreboards, holograms, menus or external displays.

Install PlaceholderAPI, enable the integration in config and run /ahadmin hooks to confirm registration.

Global placeholders#

%nexaauctions_active_listings%
%nexaauctions_total_listings%
%nexaauctions_transactions%
%nexaauctions_storage%
%nexaauctions_network_mode%

Player placeholders#

%nexaauctions_player_active%
%nexaauctions_player_sold%
%nexaauctions_player_bought%

Example scoreboard lines#

<gray>Market: <white>%nexaauctions_active_listings% active
<gray>Sold: <green>%nexaauctions_player_sold%
<gray>Bought: <aqua>%nexaauctions_player_bought%

Operational use#

Show %nexaauctions_storage% and %nexaauctions_network_mode% only to staff or debug panels. Player-facing boards usually only need active listings and personal stats.

Migration & Recovery#

Migration and recovery tools are designed for safe review before data changes.

Use scan and preview before start. Keep backups and test on a copy of production data.

Migration sources#

zAuctionHouse, AuctionMaster, DeluxeAuctions, CrazyAuctions, ExcellentAuction, JSON, SQL and CSV providers are registered as migration surfaces.

Recovery flow#

Admin delete and recover commands can move item data into a player's mailbox, then the player claims it with /ah claim.

Audit flow#

Logs, suspicious reports, player views, performance status and integrity scans help staff investigate support cases.

API & Events#

External plugins can consume or extend auction behavior.

NexaAuctionsAPI is registered through Bukkit ServicesManager and AuctionApiProvider.get().

Public API#

  • Create, purchase, bid, cancel and claim methods.
  • Auction query and immutable view models.
  • Economy provider registry access.
  • Custom item resolver registration.

Events#

  • AuctionCreateEvent
  • AuctionCancelEvent
  • AuctionPurchaseEvent
  • AuctionBidEvent
  • AuctionExpireEvent
  • AuctionClaimEvent
  • AuctionRecoverEvent
  • AuctionPriceCalculateEvent
  • AuctionItemValidateEvent
  • AuctionPreviewEvent

Common Setups#

Ready-to-follow scenarios reduce support tickets and make the product easier to configure.

Tune durations, limits, prices and permissions with the YAML files above.

SMP Economy Setup#

Use SQLite, Vault currency, conservative fees, default limits and clear item blacklist rules for community survival servers.

Prison Marketplace Setup#

Use higher listing limits for rank groups, PlayerPoints currency if needed and strict suspicious price thresholds.

Network Auction Setup#

Use MySQL/MariaDB, Redis cache invalidation, unique server ids and staged duplicate purchase/claim testing.

Troubleshooting#

Start with console logs, config diffs, plugin version and reproduction steps.

The first error in console is usually more useful than repeated follow-up errors.
Plugin disables on startup issue

Check license-key, placeholder values, SQL credentials and whether network mode requires MySQL/MariaDB.

Menus do not open issue

Verify menu file names, root section names, valid materials and console errors during /ahadmin reload.

Purchases or bids fail issue

Confirm the configured currency provider is available, the buyer has funds and the listing state is still LISTED.

Players cannot create listings issue

Review permissions, cooldown, TPS guard, ping guard, world restrictions, limits, duration, price and item-rules.yml.

Network mode does not activate issue

Use MySQL/MariaDB, verify Redis host/port/password/channel and inspect /ahadmin network output.

FAQ#

Short answers for common buyer and staff questions.

Does NexaAuctions support old Minecraft versions?#

This docs page targets Paper 1.21.x-26.1.x with Java 25. Legacy 1.8 support is not part of this product page.

Can it run on one server?#

Yes. SQLite is the default and is suitable for development or smaller single-server setups.

Is network sync fully automatic?#

Redis publishes heartbeat and cache invalidation while SQL remains authoritative. Test duplicate purchase and claim cases before production marketing.

Can menus be customized?#

Yes. Edit files under menus/*.yml. Items support materials, slots, lore, permissions and action strings.

Testing & Verification#

Use this checklist before packaging a release or opening the market on a live server.

The project includes MockBukkit coverage for core behavior. HTML/docs changes do not require a jar build.

Automated tests#

  • Plugin bootstrap with MockBukkit.
  • Command registration and basic command behavior.
  • Listing creation with a mocked economy path.
  • Blocked item rule behavior.
  • Cancelled create event fee/item safety.
  • SQL schema migrator behavior.

Manual player flow#

  1. Create a BIN listing.
  2. Open My Listings and cancel a test listing from the confirmation menu.
  3. Claim the returned mailbox item.
  4. Purchase another listing with a second player.
  5. Create a bid auction and place a bid.
  6. Open listings, bids, purchases, sold, expired and history views.
  7. Search by seller, material, category and price.

Manual admin flow#

  1. Run license, hooks, storage and network checks.
  2. Inspect logs and suspicious output.
  3. Run integrity check.
  4. Delete and recover a test listing.
  5. Export logs in CSV or JSON.
  6. Test reload after editing menus and messages.

Network staging#

Before enabling network mode on production, run two test servers against the same MySQL/MariaDB database and Redis instance. Test duplicate purchase, duplicate claim, expiration and cache invalidation behavior.

Economy staging#

Test with the same Vault economy or PlayerPoints version used on production. Verify failed payout retry behavior by temporarily disabling the provider on a staging server.

Open every menu file, verify titles fit, check invalid materials in console, confirm all command/open/sound actions work and capture the showcase screenshots after the final layout is stable.

Changelog#

High-level notes for this local build.

1.0.0 current local build
  • Added core auction service, SQL storage, menus, commands, fees, limits, item rules and API surface.
  • Added player listing cancellation with a confirmation menu and mailbox refund flow.
  • Added LicenseGate startup validation and test-only bypass property.
  • Added MockBukkit tests for bootstrap, commands, listing creation, blacklist and event cancellation fee safety.
  • Added docs and showcase pages aligned with local premium plugin templates.

Support#

Information to collect before asking for help.

Join Discorddiscord.gg/fANhQcyA7X

Send this with reports#

  • Plugin version and server software/version.
  • First console error, not only repeated follow-up lines.
  • Edited YAML files or a config diff.
  • Exact command, player permissions and reproduction steps.

Useful admin commands#

/ahadmin menu
/ahadmin hooks
/ahadmin storage
/ahadmin network
/ahadmin integrity
/ahadmin logs 20
/ahadmin suspicious 20