Tags
Creators
Details
2.2.0
Compatibility
Changes
Optimizations
This version mainly improves the performance impact of the plugin to servers.
The issue
- 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
/ordercommand. - 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:
- 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 asItemStacks. - Caching: The orders used to create a new
ItemStackthen deserialize the lore lines with placeholders. Now, it only creates theItemStackevery 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.
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 :)
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:EH2l9h8i:gvBQ1agy"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:EH2l9h8i:gvBQ1agy"
}![Orderium [Order System]](https://cdn.modrinth.com/data/EH2l9h8i/b8588f4efad9cc563b50d8568cb3c6ee3629a336_96.webp)

