AstraAuction is a player-to-player marketplace plugin for Lumi. The plugin preserves full item NBT, stores data in a database, and provides a clean and convenient GUI with search, sorting, and lot management.
- NBT preservation — items are sold exactly as they were owned by the seller.
- Asynchronous database — all queries run in the background without blocking the main thread.
- Transaction fee — configurable tax percentage.
- Return storage (claims) — unsold lots and payments for offline sellers are stored until expiration.
- GUI market — buying, confirmation dialogs, and page navigation.
- Sorting and search — sort by price and search by item name.
- Manage your lots — view and cancel active lots via GUI.
- Flexible database support — SQLite / MySQL.
- Localization — built-in support for
eng,rus,ukr,jpn, with the ability to add custom languages.
| Main market page | My lots page |
|---|---|
![]() |
![]() |
| Return storage page | Purchase confirmation page |
|---|---|
![]() |
![]() |
| Command | Description | Permission |
|---|---|---|
/ah |
Open the market | astraauction.use |
/ah open [page: int] |
Open the market at a specific page | astraauction.use |
/ah sell <price: int> |
List the item in hand | astraauction.use |
/ah view <nickname: str> [page: int] |
View lots of a specific player | astraauction.use |
/ah search <query: str> [page: int] |
Search lots by name | astraauction.use |
/ah force_buy <id: int> |
Force-buy a lot (processed like a normal purchase) | astraauction.force |
/ah force_expire <id: int> |
Force-expire a lot | astraauction.force |
Command aliases: /auction, /auc.
astraauction.use— access to basic commands (granted to everyone by default).astraauction.force— access to force commands (granted to operators only by default).
Main configuration file: config.yml
| Parameter | Description | Default |
|---|---|---|
database.type |
Database type: sqlite / mysql |
sqlite |
language.value |
Language mode: eng / rus / ukr / jpn / autodetect / server |
autodetect |
language.default |
Default language | eng |
auction.duration-seconds |
Lot lifetime (seconds) | 172800 (48h) |
auction.tax-percent |
Transaction fee (%) | 10.0 |
auction.round-prices |
Round prices to whole numbers | false |
auction.max-slots |
Max active lots (0 = unlimited) | 6 |
auction.claim-expire-seconds |
Claims storage duration (seconds) | 604800 (7d) |
auction.gui.page-size |
GUI page size (up to 45) | 45 |
auction.gui.open-delay-ticks |
GUI open delay (ticks) | 10 |
auction.gui.sort-default |
Default sorting | price_asc |
- EconomyAPI — required for purchases and payouts.
- FakeInventories — required for GUI support.
- JOOQConnector — database support via JOOQ ORM.
- Polyglot — localization engine for dynamic language loading (shaded).
- Install JDK 21+.
- Clone the repository and open the project directory.
- Run the build command:
./gradlew build - The compiled JAR will be located in
build/libs.
The repository contains two build.gradle files:
one main file (using fallback repositories via jitpack.io) and another with the .old suffix (with original Lumi repositories).
If Lumi repositories are temporarily unavailable (e.g. HTTP 500 errors) and the build fails, just use the current build.gradle as-is.
Alternatively, to use the original Lumi repositories, remove or move the current build.gradle, and rename build.gradle.old by removing the .old suffix.




