TheAuctionHouse » 1.20 - 1.21.10 | NEW [50% FLASH SALE] icon

TheAuctionHouse » 1.20 - 1.21.10 | NEW [50% FLASH SALE] -----

An updated AuctionHouse with legit anti-duping, a graph price tracker GUI, and more!




TheAuctionHouse is not your
average Auction House plugin.

From an advanced price graph GUI, to an
unbeatable anti-dupe system that puts
the control back into YOUR HANDS!

[​IMG]

Anti-Dupe - How?

The duplication glitches are simply
impossible to stay ahead of and
that just isn't changing anytime
soon. So don't. That's right...
don't. Track the Auction House
item economy instead. A new
and unique approach for a
broad and decade old issue.

Someone duped! Now what?

Available options:
1. Delete the item.
2. Remove the item from the player. It goes
into a special GUI that requires a staff
member to approve or deny the item.
3. Nothing.

There is also an optional chat broadcast
message for staff members that can be
clicked in chat to easily view the item that
the player is being accused of duping.

Have a suggestion?
Join the Resource Discord and suggest it!
TheAuctionHouse has an active developer!

[​IMG]

Items that are sold on the Auction House
are recorded for the market graph. This
is a GUI that accurately displays the price,
date, and time that an item was sold at, with
a page system to navigate different time ranges.

[​IMG]

Item tracking system »

TheAuctionHouse goes above and beyond
to prevent any duping with items that ever
touch any of the GUIs. From the main auction
house menu, to the expired items menu each
item is tracked and accurately compared to a
known legit items list that is automatically and
secretly added to any of the Auction House items.
This ensures that no new items of the same
unique ID exists. This prevents false positives!

[​IMG]

Add your own economies!
+
Supports multiple economies at once!

[​IMG]

PlaceholderAPI »
Placeholder Description Returns
%theauctionhouse_total_auctions% Total number of active auction listings across the server. Integer (e.g. 42)
%theauctionhouse_tracked_items% Total number of unique tracked item IDs currently stored by the tracking system. Integer (e.g. 1287)
%theauctionhouse_tracking_events% Total number of tracking events recorded across all tracked items. Integer (e.g. 50492)
%theauctionhouse_player_listed% Number of active auction listings created by the player using this placeholder. Integer (e.g. 3) — requires player context
%theauctionhouse_player_mailbox_count% Number of items currently waiting in the player's Auction House mailbox. Integer (e.g. 1) — requires player context

Permissions »
Permission Description Default
theauctionhouse.ah.use Use the Auction House. true
theauctionhouse.ah.sell Sell items on the Auction House. true
theauctionhouse.ah.expired Access your expired listings. true
theauctionhouse.ah.mail Access your AH mailbox. true
theauctionhouse.track.inspect Inspect tracked items. op
theauctionhouse.track.history View tracked item history. op
theauctionhouse.track.find Find a tracked item by UUID. op
theauctionhouse.track.stats View tracking system stats. op
theauctionhouse.track.reload Reload tracking configuration. op
theauctionhouse.dupe.alert Receive anti-dupe staff broadcasts and open the dupe review GUI. op

Commands »

[​IMG]

[​IMG]

Files »
Code (YAML):
################################################################################
#                               THE AUCTION HOUSE                              #
#                                   config.yml                                 #
################################################################################
# Notes:
# - This plugin has two big subsystems:
#     1) Tracking / Anti-Dupe (global item tracking & reconciliation)
#     2) Auction House (listings, mailbox, history, etc.)
#
# - Many values are performance-sensitive. Read the comments before
#   lowering limits or enabling aggressive scanning on large servers.
################################################################################

################################################################################
#                             TRACKING & ANTI-DUPE                             #
################################################################################
tracking
:
  # Master switch for the entire tracking system.
  # If disabled, items will not be tagged or reconciled,
  # and anti-dupe protections will not run.
  enabled
: true

  # If true, items that fail tracking validation will be blocked
  # from being listed on the Auction House.
  require-valid-items-for-auctions
: false

  # Max number of events kept in memory (and on disk/DB) per tracked ID.
  # Oldest events are dropped once the cap is reached.
  max-events-per-item
: 25

  # If true, the tracker will log extra debugging info to console.
  debug
: false

  ##############################################################################
  #                              ANTI-DUPE ENGINE                              #
  ##############################################################################
  anti-dupe
:
    # Master switch for anti-duplication reconciliation.
    enabled
: true

    # How often the reconciliation task runs (in ticks).
    # 20 ticks = 1 second. 40 = every ~2 seconds.
    # Increase this on large servers if you see TPS impact.
    reconcile-interval-ticks
: 40

    # ---- WHAT TO SCAN --------------------------------------------------------
    # Player inventories & hotbars.
    scan-players
: true

    # Player ender chests.
    scan-ender-chests
: true

    # Dropped item entities in loaded chunks.
    scan-item-entities
: true

    # Containers in loaded chunks (chests, shulkers, barrels, etc.).
    scan-block-containers
: true

    # How to scan containers when enabled:
    #  ROUND_ROBIN = only scan a slice of loaded chunks each run (recommended).
    #  ALL         = scan every loaded chunk every run (only for tiny servers/testing).
    container-scan-mode
: "ROUND_ROBIN"

    # For ROUND_ROBIN mode: maximum number of loaded chunks to scan per run (per world).
    # If you notice TPS issues, try reducing this (e.g. 10).
    container-chunks-per-run
: 25

    # ---- SAFETY BUDGETS ------------------------------------------------------
    # Hard cap on how many tracked stacks we even LOOK at per run.
    # If exceeded, scanning stops early; the next run will continue.
    max-scanned-stacks-per-run
: 20000

    # Hard cap on how many different tracked IDs we try to "fix" per run.
    max-ids-per-run
: 500

    # What to do when a suspicious duplication is detected:
    #  NONE   = log + alerts only, do not modify items.
    #  DELETE = automatically delete extra copies down to baseline.
    #  QUEUE  = move extras into staff review GUI for manual approval.
    action
: "DELETE"

    # Staff broadcast when a duplication incident is detected.
    staff-broadcast
:
      enabled
: true
      # Permission required to receive these alerts.
      permission
: "theauctionhouse.dupe.alert"
      # This message is processed through color codes,
      # but NOT through PlaceholderAPI by default.
      # Placeholders:
      #  %id%    = tracking UUID
      #  %extra% = number of suspicious extra items
      message
: "&c[AntiDupe] &fSuspected duplicated item &e%id% &7(extra: &c%extra%&7). &fClick to inspect."

    # Cap on how many individual item stacks we actually modify/remove per run.
    # This prevents a single run from touching thousands of stacks at once.
    max-fixes-per-run
: 50

  ##############################################################################
  #                             STACKABLE BEHAVIOR                             #
  ##############################################################################
  stackables
:
    enabled
: true

    # If true, prevent any merge between two tracked stacks with different IDs.
    # This stops dupers from "hiding" duplicates by stacking them together.
    prevent-different-id-merge
: true

    # If true, prevent merges between tracked and untracked stacks.
    # Keeps the tracked ecosystem isolated from untracked items.
    prevent-tracked-untracked-merge
: true

    # Materials that, once tracked, are effectively treated as "non-stackable":
    # any attempt to stack them to amount > 1 is cancelled.
    # Useful for high-value items (tokens, currency items, netherite, etc.).
    force-single-stack-materials
:
     - BEDROCK
      # - PLAYER_HEAD

################################################################################
#                                AUCTION HOUSE                                 #
################################################################################
auction
:
  # Master switch for the Auction House system.
  enabled
: true

  # Unique ID for this server/instance.
  # Used when running multiple servers on the same database.
  # For single-server setups, "default" is fine.
  server-id
: "default"

  # If true, AH listings can be viewed across all servers that point to the same DB.
  # If false, each server only sees its own listings (by server-id).
  cross-server-mode
: false

  # Max active listings a single player can have at once.
  max-active-listings-per-player
: 10

  # Default listing duration in minutes if the player doesn't specify one.
  default-duration-minutes
: 60

  # Maximum duration in minutes allowed for one listing.
  max-duration-minutes
: 1440

  # Tax percentage taken from each sale.
  # Example: 5.0 = 5% of the sale price.
  tax-percent
: 0.0

  # Minimum and maximum allowed prices to prevent obvious scams.
  min-price
: 1.0
  max-price
: 1000000.0 # 1 million

  # If true, selling price MUST be between min-price and max-price.
  enforce-price-bounds
: true

  anti-scam
:
    # Master switch for the anti-scam rules.
    # If missing, we fall back to "auction.basic-anti-scam" (boolean).
    enabled
: true

    # 1) Hard blocks based on how "plain" the item is
    # -----------------------------------------------------------------
    # Block completely unmodified items:
    #  - no display name
    #  - no lore
    #  - no enchants
    block-unmodified-items
: false

    # Require a custom display name to list the item.
    require-display-name
: false

    # Require lore to list the item.
    require-lore
: false

    # 2) Enchantment-based checks
    # -----------------------------------------------------------------
    # Minimum number of enchantments required if the listing price is
    # at or above the threshold below.
    min-enchants
: 0

    # Only apply the "min-enchants" rule when price >= this value.
    # Set to 0 to always apply when min-enchants > 0.
    min-price-for-enchant-check
: 10000.0

    # 3) Material-level blocks
    # -----------------------------------------------------------------
    # Materials that are NEVER allowed to be listed.
    blocked-materials
:
     - BEDROCK
      # - STONE
      # - PAPER

    # 4) Name & lore keyword filters
    # -----------------------------------------------------------------
    # If any of these keywords appear in the item's DISPLAY NAME
    # (case-insensitive), the listing is blocked.
    name-blacklist
:
     - "fake"
      - "scam"
      - "not real"

    # If any of these keywords appear anywhere in the LORE
    # (case-insensitive), the listing is blocked.
    lore-blacklist
:
     - "no buy this"
      - "worthless"

  # GUI / browser settings for the main Auction GUI.
  browser
:
    # How many listing slots per page.
    # Typically 45 means first 5 rows for listings, last row for controls.
    listings-per-page
: 45

  # Price history / trend graphs.
  price-history
:
    enabled
: true

    # How many recent sales we keep per material (for graphs & averages).
    max-samples-per-material
: 50

    # Number of columns/buckets in the price history graph (max 9 for a single row).
    buckets
: 9

################################################################################
#                                  DATABASE                                    #
################################################################################
database
:
  # Valid values:
  #  MYSQL = use MySQL for persistent storage.
  #  YAML  = file-based storage only (no DB needed).
  type
: YAML

  host
: "127.0.0.1"
  port
: 3306
  database
: "theauctionhouse"
  username
: "root"
  password
: "password"

  # Enable SSL if your MySQL server requires it.
  use-ssl
: false

  # Max pool size for a future pool implementation (for now, informational).
  max-pool-size
: 10

################################################################################
#                                  STORAGE                                     #
################################################################################
# Controls where each subsystem saves its long-term data.
#  YAML  = local .yml files in the plugin folder.
#  MYSQL = MySQL tables via the database section above.
################################################################################
storage
:
  # Item tracking + anti-dupe data:
  #  - tracked IDs
  #  - events
  #  - last observed amounts
  tracking
: "YAML"   # MYSQL or YAML

  # Auction data:
  #  - active listings
  #  - expired listings
  #  - mailbox entries
  auctions
: "YAML"   # MYSQL or YAML

Code (YAML):
################################################################################
#                               THE AUCTION HOUSE                              #
#                                  messages.yml                                #
################################################################################
# Color codes: use & for colors (e.g. &a, &c, &7).
# Placeholders:
#   %prefix%  - from the "prefix" key below
#
# PlaceholderAPI (if installed):
#   %theauctionhouse_total_auctions%
#   %theauctionhouse_tracked_items%
#   %theauctionhouse_tracking_events%
#   %theauctionhouse_player_listed%
#   %theauctionhouse_player_mailbox_count%
################################################################################

# Chat prefix used in most messages. Ends in &f so following text is white by default.
prefix
: "&dᴀᴜᴄᴛɪᴏɴʜᴏᴜꜱᴇ&f"

################################################################################
#                             GENERIC / CORE MESSAGES                          #
################################################################################
no-permission
: "%prefix% &cYou don't have permission to use that."
player-only
: "%prefix% &cOnly players may use this command."

# /ahtrack base usage line (fallback if ahtrack-help is missing)
# Commands = yellow, brackets / separators = gray, variables = aqua.
command-usage
: "%prefix% &7Usage: &e/ahtrack &8<&einspect&8|&ehistory&8|&efind&8|&estats&8|&ereload&8|&eeconomy&8|&eeconomysearch&8|&edupe&8>"

################################################################################
#                               INSPECT COMMAND                                #
################################################################################
# /ahtrack inspect
inspect-no-item
: "%prefix% &fYou must be &bholding an item &fin your main hand."
inspect-not-tracked
: "%prefix% &fThat item is &cnot &ftracked. Try picking it up or re-logging."

inspect-header
: "&8&m------------------&r &bItem Inspect &8&m------------------"
inspect-id
: "&fID: &b%id%"
inspect-first-seen
: "&fFirst Seen: &b%first_seen%"
inspect-event-count
: "&fEvents Recorded: &b%event_count%"
inspect-known
: "&fKnown in database: &aYes"

################################################################################
#                               HISTORY COMMAND                                #
################################################################################
# /ahtrack history
history-header
: "&8&m------------------&r &bItem History &8(&fPage &b%page%&f/&b%max_page%&8)&m------------------"
history-line
: "&7#&b%index% &f%time% &8- &b%type% &8(&7%details%&8)"
history-empty
: "%prefix% &fNo history recorded for that item."
history-footer
: "&8&m--------------------------------------------------"

################################################################################
#                             ID / INPUT VALIDATION                            #
################################################################################
invalid-uuid
: "%prefix% &cThat is not a valid UUID."
unknown-id
: "%prefix% &fNo tracking data found for ID &b%id%&f."

################################################################################
#                              TRACKING STATISTICS                             #
################################################################################
# /ahtrack stats
# Placeholders:
#   %item_count%     - total tracked IDs on this server
#   %total_events%   - total events across all IDs on this server
#   %theauctionhouse_tracked_items%    - PAPI global value (if installed)
#   %theauctionhouse_tracking_events%  - PAPI global value (if installed)
stats-header
: "&8&m------------------&r &bTracking Stats &8&m------------------"
stats-line-items
: "&7Tracked Items (this server): &b%item_count% &8| &7PAPI:&b %theauctionhouse_tracked_items%"
stats-line-events
: "&7Total Events (this server): &b%total_events% &8| &7PAPI:&b %theauctionhouse_tracking_events%"

# /ahtrack reload
reload-done
: "%prefix% &aConfiguration files reloaded. &7(Some tracking options apply on restart.)"

################################################################################
#                         DUPE DETECTION / STAFF REVIEW                        #
################################################################################
# Admin log when strict removal is ON.
# Placeholders:
#   %id%        - tracking UUID
#   %extra%     - number of extra (removed) items
#   %now%       - remaining amount after fix
#   %locations% - summary of where items were found
dupe-detected-admin
: "%prefix% &c[AntiDupe] &fID &b%id% &fhad &b%extra% &fextra items removed (now &b%now%&f). &7Locations: &f%locations%"

# Log message when strict removal is OFF (log-only mode).
dupe-detected-log-only
: "%prefix% &e[AntiDupe] &fID &b%id% &fappears duplicated (extra &b%extra%&f), but strict removal is &cOFF&f. &7Locations: &f%locations%"

# Staff-facing broadcast when a duped item is detected / queued.
# Placeholders:
#   %id%    - tracking UUID
#   %extra% - number of extra items detected
dupe-broadcast
: "%prefix% &c[AntiDupe] &fSuspected duplicated item &b%id% &7(extra: &c%extra%&7). &fClick to inspect."

# When a staff member tries to open a dupe review entry that no longer exists.
dupe-not-found
: "%prefix% &fNo queued duplication review entry found for &b%id%&f."

# Title for the Dupe Review GUI.
# Placeholders:
#   %short_id% - shortened/pretty version of ID (if implemented)
dupe-open-title
: "Dupe Check: %short_id%"

################################################################################
#                         ITEM ECONOMY BROWSER / GUI                           #
################################################################################
# When a player opens the item economy browser GUI.
# Includes PAPI placeholder for total auctions.
economy-open
: "%prefix% &fOpening &bItem Economy Browser &7(Active auctions: &b%theauctionhouse_total_auctions%&7)…"

# When no tracked items match the current filters in the economy GUI.
economy-no-results
: "%prefix% &7No tracked items match your current filters."

################################################################################
#                         AUCTION SUMMARY / QUICK INFO                         #
################################################################################
# Example line you can send on /ah, /ahtrack stats, or in GUIs.
# Placeholders (via PlaceholderAPI):
#   %theauctionhouse_total_auctions%        - total active auctions
#   %theauctionhouse_player_listed%         - how many active listings the player has
#   %theauctionhouse_player_mailbox_count%  - items in their AH mailbox
auction-summary-line
: "%prefix% &fActive auctions: &b%theauctionhouse_total_auctions% &8| &fYour listings: &b%theauctionhouse_player_listed% &8| &fMailbox: &b%theauctionhouse_player_mailbox_count%"

################################################################################
#                               AUCTION MESSAGES                               #
################################################################################

# When the Auction House has no economy hooked.
auction-no-economy
: "%prefix% &cAuction House is not configured with an economy."

# When a player lacks permission to sell.
auction-no-permission-sell
: "%prefix% &cYou do not have permission to create auction listings."

# Reached max active listings.
# %max% = max listings per player
auction-max-listings
: "%prefix% &cYou have reached your max active listings (&b%max%&c)."

# Must hold item in hand to list.
auction-must-hold-item
: "%prefix% &fYou must hold an item in your main hand to list it."

# Price <= 0
auction-price-must-be-positive
: "%prefix% &cPrice must be greater than zero."

# Price below min.
# %min_price% = configured minimum price
auction-min-price
: "%prefix% &cMinimum listing price is &b%min_price%&c."

# Price above max.
# %max_price% = configured maximum price
auction-max-price
: "%prefix% &cMaximum listing price is &b%max_price%&c."

# When a listing is successfully created.
# %price%    = listing price
# %tax%      = tax amount
# %duration% = duration in minutes
auction-listing-created
: "%prefix% &aListed item for &b%price% &a(&ctax: &b%tax%&a, duration: &b%duration% &amin)."

# When listing is no longer available.
auction-buy-not-available
: "%prefix% &cThat listing is no longer available."

# Trying to buy own listing.
auction-buy-own-listing
: "%prefix% &fYou cannot buy your own listing."

# Not enough money to buy.
# %price% = price required
auction-buy-not-enough-money
: "%prefix% &cYou don't have enough balance (&b%price%&c needed)."

# Buyer success message when item fits in inventory.
# %price% = price paid
auction-buy-success
: "%prefix% &aYou bought this item for &b%price%&a."

# Buyer message when item was sent to mailbox due to full inventory.
# %price% = price paid
auction-buy-sent-mailbox
: "%prefix% &eYour inventory was full; the item was sent to your &bAH mailbox &7(for &b%price%&7)."

# Seller notification when their listing is sold.
# %price%  = price paid
# %amount% = amount after tax
auction-seller-notify-sold
: "%prefix% &aYour listing was sold for &b%price% &a(you received &b%amount%&a after tax)."

# Mailbox claim errors / success.
auction-mailbox-no-space
: "%prefix% &cYou do not have enough inventory space to claim this item."
auction-mailbox-claimed
: "%prefix% &aYou claimed an item from your Auction House mailbox."

# Auction listing removal (right-click + confirm flow).
# %item%  = item display name or material
# %price% = listing price
ah-remove-not-owner
: "%prefix% &cYou can only remove your own listings."
ah-remove-confirm-base
: "%prefix% &eYou are about to remove your listing for &f%item% &epriced at &a%price%&e."
ah-remove-confirm-click
: "&c&l[Click to confirm removal]"
ah-remove-confirm-hover
: "&7Click to confirm removing this listing."
ah-remove-no-pending
: "%prefix% &cYou don't have any listing removal pending confirmation."
ah-remove-error-manager-null
: "%prefix% &cCould not remove listing: the Auction House manager is unavailable."
ah-remove-missing
: "%prefix% &cThat listing no longer exists."
ah-remove-success
: "%prefix% &aYour auction listing has been removed."

ah-player-only
: "%prefix% &cOnly players may use this command."
ah-no-permission
: "%prefix% &cYou do not have permission to use the Auction House."
ah-disabled
: "%prefix% &cThe Auction House system is currently disabled."
ah-opening-main
: "%prefix% &7Opening the &dAuction House &7browser..."

ah-help
:
 - "%prefix% &bAuction House Help:"
  - "&8● &e/ah &7- Open the main Auction House browser"
  - "&8● &e/ah sell &e<price> [minutes] &7- List the item in your hand"
  - "&8● &e/ah search &e<term> &7- Search auctions by name"
  - "&8● &e/ah expired &7- View your expired listings"
  - "&8● &e/ah mail &7- Open your AH mailbox"
  - "&8● &e/ah history &7- View price history of the held item"

ah-no-permission-sell
: "%prefix% &cYou don't have permission to sell items."
ah-no-permission-search
: "%prefix% &cYou don't have permission to search auctions."
ah-no-permission-expired
: "%prefix% &cYou don't have permission to view expired auctions."
ah-no-permission-mail
: "%prefix% &cYou don't have permission to view AH mail."
ah-no-permission-history
: "%prefix% &cYou don't have permission to view price history."

ah-sell-usage
: "%prefix% &7Usage: &e/ah sell &e<price> [minutes]"
ah-sell-invalid-price
: "%prefix% &cThat is not a valid price."

ah-history-no-item
: "%prefix% &fYou must be &bholding an item &fto view its price history."
ah-history-disabled
: "%prefix% &cPrice history is currently disabled for this server."

ah-search-usage
: "%prefix% &7Usage: &e/ah search &e<term>"

################################################################################
#                          PRICE HISTORY / TRENDS                              #
################################################################################
# Generic "no history recorded at all" message (global viewer).
price-history-none
: "%prefix% &fNo price history has been recorded yet."

# No history for a specific material (per-material view or middle-click).
# %material% - the Bukkit material name (e.g. DIAMOND_SWORD)
price-history-none-for-material
: "%prefix% &fNo price history exists for &b%material%&f."

################################################################################
#                           AUCTION ANTI-SCAM MESSAGES                         #
################################################################################
# All of these are used by passesAntiScamChecks in AuctionManager.

# %material%, %price%
auction-anti-scam-unmodified
: "%prefix% &eYou cannot list completely unmodified &b%material% &eitems due to anti-scam settings."

# %material%, %price%
auction-anti-scam-missing-name
: "%prefix% &eThis item must have a custom &bdisplay name &eto be listed."

# %material%, %price%
auction-anti-scam-missing-lore
: "%prefix% &eThis item must have &blore &eto be listed."

# %material%, %price%, %required%, %actual%, %threshold%
auction-anti-scam-enchants
: "%prefix% &eItems priced at &b%threshold%+ &emust have at least &b%required% &eenchants (&b%actual% &efound)."

# %material%, %price%, %keyword%
auction-anti-scam-name-blacklist
: "%prefix% &cYou cannot list items whose name contains &b\" %keyword%\"&c."

# %material%, %price%, %keyword%
auction-anti-scam-lore-blacklist
: "%prefix% &cYou cannot list items whose lore contains &b\" %keyword%\"&c."

# %material%, %price%
auction-anti-scam-blocked-material
: "%prefix% &cItems of type &b%material% &care not allowed to be listed."

tracking-disabled
: "%prefix% &cItem tracking is currently disabled."

ahtrack-economysearch-usage
: "%prefix% &7Usage: &e/ahtrack economysearch &e<term> &7[&epage&7]"

history-console-usage
: "%prefix% &cConsole must use: &e/ahtrack find &e<uuid> [page]"

ahtrack-dupe-usage
: "%prefix% &7Usage: &e/ahtrack dupe &e<uuid>"

ahtrack-help
:
 - "%prefix% &bItem Tracking & Anti-Dupe:"
  - "&8● &e/ahtrack inspect &7- Inspect the tracked item in your hand"
  - "&8● &e/ahtrack history &7[&epage&7] &7- View history of the held item"
  - "&8● &e/ahtrack find &e<uuid> [page] &7- View history for a specific ID"
  - "&8● &e/ahtrack stats &7- Show tracking statistics"
  - "&8● &e/ahtrack reload &7- Reload tracking configuration"
  - "&8● &e/ahtrack dupe &e<uuid> &7- Open the dupe review GUI (queued entries)"
  - "&8● &e/ahtrack economy &7[&emode&7] [&epage&7] &7- Open Item Economy browser"
  - "&8● &e/ahtrack economysearch &e<term> [page] &7- Search the Item Economy"

Code (YAML):
################################################################################
#                          THE AUCTION HOUSE - GUI                             #
#                             auctionhouse-gui.yml                             #
################################################################################

# Main Auction Browse GUI (example; adjust to match your existing setup)
auction-browse
:
  title
: "&bAuction House"
  size
: 54

  filler-item
:
    enabled
: true
    material
: "GRAY_STAINED_GLASS_PANE"
    name
: " "
    lore
: [ ]

  # Slots used for listings; if empty, plugin will default to first (size - 9) slots
  listing-slots
:
   - 0
    - 1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 7
    - 8
    - 9
    - 10
    - 11
    - 12
    - 13
    - 14
    - 15
    - 16
    - 17
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 27
    - 28
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 36
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 43

  page-items
:
    previous
:
      slot
: 45
      material
: "ARROW"
      name
: "&ePrevious Page"
      lore
:
       - "&7Click to go to the previous page."
    next
:
      slot
: 53
      material
: "ARROW"
      name
: "&eNext Page"
      lore
:
       - "&7Click to go to the next page."
    info
:
      slot
: 49
      material
: "PAPER"
      name
: "&fPage &b%page% &7/ &b%max_page%"
      lore
:
        - "&7Search
: &f%search%"

  info-item
:
    slot
: 50
    material
: "BOOK"
    name
: "&b&lHow This Works"
    lore
:
     - "&7● &eLeft-click &7to &abuy items&7."
      - "&7● &bMiddle-click &7for &fprice history&7 (if enabled)."
      - "&7● &dBottom row &7has quick shortcuts."
      - "&7● All listings are &ctrack-verified&7 against dupes."

  quick-items
:
    my-listings
:
      enabled
: true
      slot
: 46
      material
: "PLAYER_HEAD"
      name
: "&aMy Listings"
      lore
:
       - "&7View and manage your active auctions."
    mailbox
:
      enabled
: true
      slot
: 47
      material
: "CHEST"
      name
: "&6Mailbox"
      lore
:
       - "&7Claim items you've won or sold."
    expired
:
      enabled
: true
      slot
: 51
      material
: "CLOCK"
      name
: "&cExpired"
      lore
:
       - "&7View auctions that have expired."
    price-trends
:
      enabled
: true
      slot
: 52
      material
: "COMPARATOR"
      name
: "&bPrice Trends"
      lore
:
       - "&7Open the global price trends viewer."

# Price Trends GUI (moved from config.yml)
price-trends
:
  title
: "&bAuction House &7- Price Trends &8(&f%material%&8)"
  size
: 54

  filler-item
:
    enabled
: true
    material
: "GRAY_STAINED_GLASS_PANE"
    name
: " "
    lore
: [ ]

  graph
:
    background-material
: "GRAY_CONCRETE"
    bar-material
: "LIME_CONCRETE"
    axis-material
: "BLACK_STAINED_GLASS_PANE"
    # top-left slot of graph area
    top-left-slot
: 10
    columns
: 7
    rows
: 4
    draw-axis
: true

  controls
:
    previous
:
      slot
: 45
      material
: "ARROW"
      name
: "&ePrevious Item"
      lore
:
       - "&7View the previous tracked item."
    next
:
      slot
: 53
      material
: "ARROW"
      name
: "&eNext Item"
      lore
:
       - "&7View the next tracked item."
    close
:
      slot
: 49
      material
: "BARRIER"
      name
: "&cClose"
      lore
:
       - "&7Click to close this menu."
    info
:
      slot
: 50
      material
: "BOOK"
      name
: "&b&lPrice Trend Info"
      lore
:
       - "&7Graph shows &faverage sale prices&7 over time."
        - "&7Hover a &aLime bar &7for detailed stats."
    index
:
      slot
: 48
      material
: "PAPER"
      name
: "&fItem &b%current% &7/ &b%total%"
      lore
: [ ]

Developer API Overview

Entry Point Description
Code (Text):
TheAuctionHousePlugin#getApi()
Returns the main
Code (Text):
TheAuctionHouseAPI
instance.
Code (Text):
TheAuctionHouseAPI
Central API: auctions, tracking, price history, and economy manager.
Code (Text):
AuctionEconomy
Interface for custom currencies used by The Auction House.
Code (Text):
AuctionEconomyManager
Register / manage economies and choose the primary one.
Code (Text):
AuctionHouseTrackingApi
Low-level item tracking + anti-dupe events.
Code (Text):
ItemTracker
Access to tracked IDs and event history.
Code (Text):
PriceHistoryManager
Record and inspect sale prices over time.

Custom Economy API

[td>Withdraw funds from a player. Return success/fail with optional message.[/td]
Class / Method Description
Code (Text):
AuctionEconomy
Implement this in your own plugin to expose a custom currency (tokens, gems, etc.).
Code (Text):
String getId()
Unique ID for this economy (e.g.
Code (Text):
"vault"
,
Code (Text):
"tokens"
).
Code (Text):
String getDisplayName()
Human-readable name shown in logs / GUIs.
Code (Text):
int getPriority()
Priority hint when auto-selecting a primary economy. Higher = more preferred.
Code (Text):
boolean isEnabled()
Whether this economy is currently usable.
Code (Text):
double getBalance(OfflinePlayer)
Return the player’s balance in this currency.
Code (Text):
boolean hasBalance(OfflinePlayer, double)
Utility check: does the player have at least X.
Code (Text):
EconomyResult withdraw(OfflinePlayer, double, String)
Code (Text):
EconomyResult deposit(OfflinePlayer, double, String)
Deposit funds to a player.
Code (Text):
String format(double)
Format amounts for chat / GUIs.

Economy Manager

Method Description
Code (Text):
TheAuctionHouseAPI#getEconomyManager()
Obtain the
Code (Text):
AuctionEconomyManager
instance.
Code (Text):
registerEconomy(AuctionEconomy)
Register or replace a custom economy implementation.
Code (Text):
unregisterEconomy(String id)
Unregister a previously registered economy.
Code (Text):
getEconomy(String id)
Get a registered economy by ID.
Code (Text):
getEconomies()
Get all registered economies.
Code (Text):
setPrimaryEconomy(String id)
Set which economy AH should treat as the primary one.
Code (Text):
getPrimaryEconomy()
Get the currently selected primary economy.
Code (Text):
autoSelectPrimaryIfMissing()
Auto-pick the highest-priority enabled economy when none is set.

Tracking / Anti-Dupe API

Method Description
Code (Text):
getTrackingApi()
Access
Code (Text):
AuctionHouseTrackingApi
for low-level tracking hooks.
Code (Text):
ensureTracked(ItemStack)
Apply a signed tracking ID to an item (if missing).
Code (Text):
isTracked(ItemStack)
Checks if the item already has a valid tracking ID + signature.
Code (Text):
getTrackedId(ItemStack)
Get the tracked UUID of the item.
Code (Text):
getItemHistory(UUID)
Get a list of all recorded
Code (Text):
ItemEvent
entries for a given ID.
Code (Text):
getAllTrackedIds()
Get every known tracked UUID on this server.

Requires »
Vault

Support »
The quickest way to get support for any of my resources
would be to join my Resource Discord.
» https://discord.gg/2vUqykD

Note »
Please DO NOT leave bad reviews for any issues
that you have. Please simply PM me or leave it
in the discussion tab. Thank you. (y)

That and reviews are highly appreciated! :alien:

My other plugins

[​IMG] [​IMG] [​IMG] [​IMG] [​IMG]
Resource Information
Author:
----------
Total Downloads: 3
First Release: Dec 8, 2025
Last Update: Today at 1:03 AM
Category: ---------------
All-Time Rating:
0 ratings
Find more info at discord.gg...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings