Tags
Creators
Details
1.2.0
Compatibility
Changes
Quality of Life & Marketplace Expansion Update
Feature 1 — Permission-Based Auction Limits
Configurable permission-based auction limits with highest-permission-wins resolution.
New permissions:
donutauction.limit.5(default: true)donutauction.limit.10donutauction.limit.25donutauction.limit.50donutauction.limit.100donutauction.limit.unlimited(-1)
New command: /ah limit — displays your current limit, active listings, and remaining slots.
Config:
auction-limits:
enabled: true
default-limit: 5
permissions:
donutauction.limit.10: 10
donutauction.limit.25: 25
donutauction.limit.50: 50
donutauction.limit.100: 100
donutauction.limit.unlimited: -1
Feature 2 — Preserve Original Item Lore
New configurable lore system that preserves original item lore from custom item plugins.
Lore modes:
APPEND— Adds auction info below existing lore (default)REPLACE— Replaces lore entirely (legacy behavior)DISABLED— Does not modify lore at all
Config:
auction-lore:
mode: APPEND
separator: true
Compatible with: MMOItems, Oraxen, ItemsAdder, EcoItems, ExecutableItems, MythicMobs, and any custom item plugin using ItemMeta/NBT.
Feature 3 — Fast Buy System
Instant purchase mode that skips the confirmation GUI.
New permission: donutauction.fastbuy
New command: /ah fastbuy — toggles fast buy mode.
Config:
fast-buy:
enabled: true
default-state: false
require-permission: true
Behavior:
- Normal: Click item → Confirm Purchase → Purchase Complete
- Fast Buy: Click item → Purchase Complete
- Setting persists across reconnects and server restarts.
Feature 4 — Fast Sell System
Instant listing mode that uses stored settings.
New permission: donutauction.fastsell
New command: /ah fastsell — toggles fast sell mode.
Config:
fast-sell:
enabled: true
default-state: false
require-permission: true
Behavior:
- Normal:
/ah sell <price>→ Sell GUI for duration/category selection - Fast Sell:
/ah sell <price>→ Listed immediately using last settings - Automatically remembers last duration, category, and price.
Feature 5 — Shulker Box Support
Full shulker box support with content preview.
Config:
shulker-support:
enabled: true
preview-contents: true
Features:
- Preserves all contents, NBT, names, lore, enchantments, colors, and custom metadata.
- Right-click any shulker box in the auction to preview its contents.
- Read-only preview GUI prevents extraction while listed.
- No duplication exploits.
Feature 6 — Modrinth Update Checker
Modern update checker using the Modrinth API.
Config:
update-checker:
enabled: true
notify-console: true
notify-admins: true
check-interval-hours: 12
New permission: donutauction.update.notify
Behavior:
- Checks asynchronously, never blocks startup.
- Caches results, handles rate limits and API downtime.
- Notifies console on enable if update available.
- Notifies admins on join if update available.
Feature 7 — Auction Slot Expansion
Additional monetization-friendly slot permissions.
New permissions:
donutauction.slots.10donutauction.slots.25donutauction.slots.50donutauction.slots.100
Config:
auction-slots:
enabled: true
permissions:
donutauction.slots.10: 10
donutauction.slots.25: 25
donutauction.slots.50: 50
donutauction.slots.100: 100
Performance Improvements
- All database operations now use the plugin's named async executor instead of the default ForkJoinPool.
- Operation lock cleanup prevents memory leaks from accumulated auction locks.
- Fire-and-forget DB updates now include exception logging.
- Search performance optimized with cached plain-text names.
Security & Stability Fixes
- CRITICAL: Fixed item duplication exploit where server crash during purchase could duplicate items.
- CRITICAL: Fixed item duplication exploit where server crash during cancellation could duplicate items.
- CRITICAL: Fixed item duplication exploit where server crash during item collection could duplicate items.
- All inventory/economy actions now happen after database persistence succeeds.
- Failed purchases now refund money automatically.
- Failed cancellations now restore auction state automatically.
- Failed collections now restore auction state automatically.
New Permissions Summary
| Permission | Description |
|---|---|
donutauction.use |
Access to the auction house |
donutauction.sell |
Allows selling items |
donutauction.admin |
Administrative controls |
donutauction.fastbuy |
Toggle fast buy mode |
donutauction.fastsell |
Toggle fast sell mode |
donutauction.update.notify |
Update notifications |
donutauction.limit.5 |
5 listing limit |
donutauction.limit.10 |
10 listing limit |
donutauction.limit.25 |
25 listing limit |
donutauction.limit.50 |
50 listing limit |
donutauction.limit.100 |
100 listing limit |
donutauction.limit.unlimited |
Unlimited listings |
donutauction.slots.10 |
10 slot expansion |
donutauction.slots.25 |
25 slot expansion |
donutauction.slots.50 |
50 slot expansion |
donutauction.slots.100 |
100 slot expansion |
New Commands Summary
| Command | Description |
|---|---|
/ah limit |
View your auction limit and remaining slots |
/ah fastbuy |
Toggle fast buy mode |
/ah fastsell |
Toggle fast sell mode |
Migration Notes from 1.1.0 → 1.2.0
- Existing configs are safely updated with new defaults on startup.
- A new
player_preferencestable is created automatically for fast buy/sell settings. - Existing
donutcore.*permissions continue to work alongside newdonutauction.*permissions. - Existing auction data is fully compatible — no data migration required.
- The lore system defaults to
APPENDmode. Set toREPLACEto preserve 1.1.0 behavior.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:8XgyeSRH:6M7etBnI"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:8XgyeSRH:6M7etBnI"
}

