Orderium
Orderium is a plugin that adds an order system, allowing players on your server to request items from other players and give them money as a reward. (Basically an auction house plugin but "reversed") It is inspired by DonutSMP.
Features
- Create orders for a specific item and deliver them to get money;
- Support items with different NBT data variants like enchantment books, potions, etc;
- Add custom items from plugins like ItemsAdder, Nexo, CraftEngine, etc;
- Blacklist certain items you do not want your players to create orders with;
- Highly configurable settings; messages, texts, sounds, etc. are configurable;
- Use SQLite or MySQL as storage method.
Why this plugin
There are many plugins that embed this system into your server. However, many of them are vibe-coded, which creates a number of security possibilities.
Besides, Orderium is also open-source, you can see the source code and contribute to the project if you found it helpful. As well as supports for custom items and items with different NBT variants, Orderium is preferred than other plugins with similar idea.
Requirements
Orderium needs these dependencies to operate:
- Vault
- An economy plugin
- packetevents
Compatibility
- Compatible versions: 1.21.7+
- Compatible software: Paper, Folia
Need help?
Create a discussion in Orderium Discussions!
Contact
Contact me for anything else related to this plugin, including vulnerability reports.
Email: karven@atomicmail.io
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
|
B
2.5.0
|
11h ago | 1 | |||
|
R
2.4.1
|
11h ago | 1 | |||
|
R
2.4.0
|
11h ago | 1 | |||
|
R
2.3.0
|
11h ago | 1 | |||
|
B
2.2.0
|
11h ago | 1 | |||
|
R
2.1.0
|
11h ago | 1 | |||
|
A
2.0.0
|
11h ago | 1 | |||
|
R
1.7.0
|
11h ago | 1 | |||
|
R
1.6.1
|
11h ago | 1 | |||
|
R
1.6.0
|
11h ago | 1 | |||
|
R
1.5.0
|
11h ago | 1 | |||
|
R
1.4.0
|
11h ago | 1 | |||
|
R
1.3.7+1
|
11h ago | 1 | |||
|
R
1.3.7
|
11h ago | 1 | |||
|
R
1.3.6
|
11h ago | 1 | |||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 | ||||
| 11h ago | 1 |
- Allow using order placeholders in
receive-deliverymessage - Storage system refactor with MySQL support
- bStats is removed
Patches to some duping exploits/vulnerabilities
Incompatibility on 26.3
### Feature
Search dialog, as an alternative for sign GUI.
Sign GUI is deprecated and will soon be removed.
This version fixes a lot (I mean A LOT) of issues in the plugin.
<br>
Updating is recommended to provide a more stable experience.
### Fixes
- Similarity check only accepts valued data component types
- Possible exploit with interacting choose item GUI
- Race condition when logging money transactions
- Duplicating keys when storing money transactions
- Thread-safety issues with search GUI and delivery confirm dialog
- Possible undefined behavior because of access of
Bukkit.getOnlinePlayers()asynchronously - Thread-safety issues when modifying order values
- Possible race condition when deducting money (more like Vault Implementer's job but eh)
- Orders never get deleted in storage
- Items that represent orders in main and your orders GUI don't have expires time updated unless their values are changed
- Possible issue with byte array comparison for orders and order items
- Possible exception when orders failed to load
- Updates to orders are not atomic and don't have proper locking
- Connection changes are not rolled back on exception in storage
### News
- Item of an order now shows its tooltip on hover when sent as a text message
### License
License is now GPL-3.0 for both the GitHub repository and Modrinth project, as required by ConfigurationMaster's license.
### Disclosure
As to adapt to Modrinth's new project disclosures system, Orderium now has disclosures.
<br>
You can view this on the main page of the Modrinth project.
### Discord
My Discord account has been permanently suspended. For more information, see the Discord server link of this Modrinth project.
This version mainly improves the performance impact of the plugin to servers.
## The issue
1. A bottleneck in Orderium was that strings are constantly getting deserialized to MiniMessage text components. At first, this does not sound very resource-intensive, just deserializing a string. However, it starts to create a performance impact when this happens more often. Every page, every item, every lore lines, custom name, all of them are deserialized when you execute
/order command.2. The plugin makes
Bukkit.getOfflinePlayer(UUID) calls for **all** active orders whenever a player uses search. This method tends to be resource-intensive.## The solution
For the first problem, I used 2 methods to solve it:
1. Lazy loading: whenever a player executes
/order, it generates all the pages, even if the player only accesses the first or second page. This version no longer generates all the pages, it only does when the player moves to the next page, minimizing the amount of inventories need to be created as well as ItemStacks.2. Caching: The orders used to create a new
ItemStack then deserialize the lore lines with placeholders. Now, it only creates the ItemStack every time the placeholder values change or the config reloads.For the second problem, I also simply cache
OfflinePlayer and only call Bukkit.getOfflinePlayer(UUID) once when the server starts for each order.<hr>
You can see that a lot of changes have been made. Therefore, bugs might appear in this version, because optimizing is always scary. If you found any, feel free to report an issue on the Github repository :)
- cancel order gui config is missing
- API events are not called when delivering for an order
- Orders can be canceled even if it's already completed
### News
- Webhook support
- Order limits for different permissions
- Show cost when creating order and reward when cancelling order
This update has many changes, please read the changelog carefully before updating.
## Config Overhaul
The plugin should automatically migrate to the new formats for you.
Each GUI now has its own config file instead of putting everything in
config.yml.<br>
The config files of the GUIs are under
gui/ directory.gui.main > main.yml<br>
gui.your-orders > your-orders.yml<br>
gui.choose-item > choose-items.yml<br>
gui.search-sign > search.yml<br>
gui.delivery > deliver.yml<br>
gui.enchant-item > enchant.yml<br>
gui.new-order > new-order-dialog.yml<br>
gui.confirm-delivery > confirm-delivery.yml<br>
gui.manage-order > manage-order.ymlIn container GUIs, you can now specify the amount of rows.
<br>
For main, your orders, choose items, enchant item GUIs, you can now specify a list of slots where the
orders/items/enchantment books should be put in respectively.
<br>
Buttons now have 2 keys,
item and slot; name, lore, item model of the button is now moved to the item key, undercomponents, providing a more vanilla format.<br>
name-prefix in enchant GUI's config is changed to name.active and name.inactivesort-prefix and sort-types are now merged to sorts-display, allowing you to set the text for each sort type whenit is active and inactive.
## FastStats
The plugin now uses [FastStats](https://faststats.dev/) to collect anonymous data.
Besides default metrics it collects, Orderium also tracks errors at different places, and these data:
- API Usage: a boolean determines if your server is using API from Orderium
- Experimental features: a string array contains names of experimental features being used
- Order amount: an integer shows the amount of orders have been created
- Items collected: an integer shows the amount of items collected from all orders
- Removed empty items.db file
- Fix bStats not working correctly with config option
- Fix packetevents listeners spamming errors if the plugin is disabled
- Fix not recognizing economy plugin if it enables after Orderium
- Fix commands not unregistered if the plugin is disabled
- Add permission
orderium.usefor executing commandorders
- Fixed an issue with false warning of downgrading plugin.
If you didn't downgrade the plugin, you can safely ignore the message.
- Items are now obtained from the server (nms)
- Default blacklisted items are removed
- Added aliases for the
orderscommand
- Add minimum price to config
- Fix various bugs
- Better Folia compatibility
- Reduced plugin jar file size
- Some optimizations
- Java requirement is now 21
item-model- Preserve order of items in shulker when ordering
- Make click action in custom items GUI more psychological
- Preserve original persistent data of items for compatibility with resourcepacks
- feat: add enchant item gui
- feat: add config version
you need the latest build of packetevents for 26.1. (https://ci.codemc.io/job/retrooper/job/packetevents/)
- Add edit order GUI, allowing you to edit certain orders with permission
- Patched a dupe exploit