Skip to content

Notifications

Bazaar’s notification stack now spans three bundled configs under config/bazaar/:

  • messages.conf for string overrides
  • sounds.conf for in-game cue sequences
  • discord-webhooks.conf for event-driven Discord delivery

messages.conf ships empty on purpose. Bazaar now keeps its default player-facing copy in code, and this file exists only for targeted overrides.

strings = {
"notification.ui.toast.itemSoldTitle" = "Sold"
"notification.ui.toast.purchaseCompleteBody" = "Paid {symbol}{price}"
}

Guidelines from the bundled config:

  • Override only the keys you actually want to change.
  • Keep existing placeholder tokens intact unless you know the target format.
  • Do not copy the whole message table unless you want to own future merge work across updates.

Newer Bazaar builds also use built-in chat.announcement.* keys for optional listing announcements. Those only fire when config.conf -> chatAnnouncements.enabled = true.

Common chat-announcement keys:

  • chat.announcement.gts.bin
  • chat.announcement.gts.auction
  • chat.announcement.ah.bin
  • chat.announcement.ah.auction
  • chat.announcement.open
  • chat.announcement.openLabel
  • chat.announcement.openHover

sounds.conf controls Bazaar’s in-game audio. Each cue is a short Ceremony-style sequence with one or more timed steps.

masterVolume = 1.0
masterPitch = 1.0
notifications {
itemSold {
enabled = true
steps = [
{ tick = 0, event = "minecraft:entity.experience_orb.pickup", volume = 0.85, pitch = 1.0 }
{ tick = 6, event = "minecraft:entity.player.levelup", volume = 0.30, pitch = 1.62 }
]
}
}
Cue pathPurpose
notifications.itemSold, notifications.outbid, notifications.auctionWon, notifications.auctionLost, notifications.listingExpired, notifications.buyOrderFilled, notifications.collectionReady, notifications.auctionEndingSoonPlayer-facing event cues
market.purchaseComplete, market.listingCreated, market.bidPlaced, market.buyOrderCreated, market.claimCollection, market.claimAll, market.listingCancelled, market.buyOrderCancelled, market.fillBuyOrderConfirmation and transaction cues
ui.pageOpen, ui.pageBack, ui.error, ui.pickerSelect, ui.pickerCancel, ui.sourceSwitch, ui.filterAdjust, ui.filterToggle, ui.filterReset, ui.filterContinue, ui.textConfirm, ui.cancelPrimedGUI and picker feedback

Set enabled = false on any cue to disable it. Lower masterVolume before muting dozens of individual steps.

Bazaar can also broadcast concise chat messages when new listings are created:

chatAnnouncements {
enabled = false
gtsListings = true
auctionHouseListings = true
}

When enabled:

  • GTS announcements go to players who can browse GTS.
  • AH announcements go to players who can browse the relevant channel.
  • Bazaar includes a clickable Open chip that runs the matching market command.

The line format itself lives in the chat.announcement.* message keys described above, so you can reskin the announcements without touching code.

discord-webhooks.conf is Bazaar’s event-driven Discord integration. It can post new listings, completed sales, buy-order activity, cancellations, expiries, collection claims, and fee or tax events.

Top-level structure:

enabled = false
senderMode = "ORCHESTRATOR"
endpoints = [
{
id = "market"
enabled = true
url = ""
defaultUsername = "Bazaar"
defaultAvatarUrl = null
}
]
rules = [
{
id = "new-listings"
enabled = true
eventTypes = [ "ITEM_LISTED" ]
endpointIds = [ "market" ]
}
]

Sender modes:

ModeBehaviour
ORCHESTRATOROnly the orchestrator emits webhooks. Recommended for clustered setups.
EVENT_SOURCEThe server that handled the event emits the webhook.
ALL_SERVERSEvery server can emit. Usually not recommended.

Useful operational commands called out in the bundled config:

  • /bazaar admin reload discord-webhooks
  • /bazaar admin discord-webhooks test endpoint <id>
  • /bazaar admin discord-webhooks test rule <id>

The placeholder system uses {{...}} tokens in string fields. Common examples from the bundled config include {{event.label}}, {{server.id}}, {{channel.name}}, {{target.name}}, {{money.price_display}}, and {{listing.id}}.