
Topper 4.0.0
Another leaderboard plugin with better features and performance
The update is finally here after a long time of restructuring the codebase to prepare for more purposes of the Topper project and the upcoming cross-platform update. For me, it's just a matter of the separation of concerns, meaning I can now work with the project as a whole without affecting too much on the plugin. For you, this update is just another Quality-of-Life update, meaning there is no breaking change, and your current config remains the same. For other developers, this would be my welcome door for anyone to join in and contribute something. After all, I hope this update will be the first for something bigger. For now, enjoy the update.
- The whole codebase was refactored and separated
There is now the Topper project for common code on various purposes, and the Topper-spigot contains this plugin. - Change the default value to be "null" instead of 0
This mainly fix an issue with reversed leaderboards where the placeholder only works for some players. In previous versions, those players whom the placeholder doesn't work against would be assigned the default value of 0 and get to the top of the leaderboard. This update fix that by assigning null instead of 0 so that the player would be ignored. - Enable "online" option by default in some Value Providers
After dealing with many reports from the support channel, I saw that enabling "online" fixes many issues (performance drop, weird behavior for offline players, etc.). Therefore, the option is enabled by default in this update. - Normalize placeholder syntax in Placeholder Value Provider
Although the wiki has some examples on the placeholder with the percent character "%" at the start and end of the value, some users usually miss it and report back to me saying it's not working. This update attempts to correct the placeholder syntax on the fly, so that users feel at ease. - Add shorten format to the Value Display
OPmasterLEO make a contribution to add a format query to shorten the number (e.g. 1000 to 1k).
More information about the format will be added in the wiki.
In short, you can use the placeholder like "%topper_money;top_value;1;shorten%" to get the shortened number. - ...And a lot of changes
These changes will be described in the wiki when it's updated with new information. Keep an eye at the wiki.
This is a small update before I refactor the project (again). This time, it's more of a preparation for a cross-platform update that, in theory, allows adding support for other server implementations (e.g. Fabric, Forge, Sponge). That would, in theory, make the project platform-independent and increase the popularity. Stay tuned for more updates.
- Fix a rare exception when updating values asynchronously
- de8ef62f - release
- ae96e639 - set only one filter for SnapshotAgent
- c815c18c - add a separated reset-permissions
- 085096d6 - add a way to reset the value if filtered out
- a7de570f - ensure the iterator is synchronous and add more settings for update task
- e2fa1adc - use ConcurrentHashMap for UpdateAgent
- 4c7066fe - prepare for more deformatters
- 09bc82fd - next development
- 866602b - release
- 91b02b8 - final onUpdate on AgentDataHolder
- 48e4f85 - Bump metcalfc/changelog-generator from 4.3.1 to 4.5.0 (#137)
- dae2511 - mark the event as deprecated
- c0b7a1b - optimize imports
- 77596ad - call event from EntryConsumeManager
- 91ba29f - protected method to schedule value on StorageAgent
- a3910c8 - properly get display key for SnapshotQuery
- 2c6773b - correct package for PluginContext
- 59be0b2 - next development
- bb6cdfb - release
- c4ab6c2 - update miniplaceholders usage
- 8c07622 - option to toggle data removal on entry remove
- c7f899b - put a check to ensure that the update task only runs if it's not already updating
- ebe65cc - Bump io.github.miniplaceholders:miniplaceholders-api from 2.2.3 to 2.3.0 (#135)
- 349d483 - more aliases for MiniPlaceholdersValueProvider
- 680f455 - resolve global placeholders
- d31fd97 - get all arguments in minimessage queue to parse as query
- 99f947a - should build in Java 21
- a7dbbe9 - mark as a major version
- aebb91e - add MiniPlaceholders hook... back
- ac2f16a - make QueryManager as Query
- 8db967e - decouple query forward
- fbe8bbf - single ref for Snapshot map
- 482d188 - centralize group name
- 63d6312 - remove entry from storage if it's the default value
- 625d634 - Bump core.version from 4.5.7 to 4.6.0 (#134)
- 558c24d - Bump org.apache.maven.plugins:maven-compiler-plugin (#133)
- 6b37f10 - consume entry on update
- 8cab982 - add EntryConsumeManager
- d7400a9 - display rank
- df71ed9 - option to load storage on entry create
- 96d46d6 - next development
- 502180e - release
- d48c7eb - add NumberStringDeformatter
- 6f9a1de - add method to convert ValueWrapper to Optional
- 156d59f - use switch to get value from ValueProvider
- 0e54d61 - cleanup some useless code in ValueProvider modules
- 1c8d6c3 - mark as a major update
- be515f7 - move ValueProvider to a separated module
- 6391546 - dynamically traverse modules to update project versions
- e88e841 - add ValueState to indicate a value being handled
- 77b43d6 - next development
- 27f4db5 - add top_size query
- e1a6a72 - realize nullability in the query
- a948dae - release
- d72aad8 - static logger in StorageAgent and UpdateAgent
- bff7a1f - remove old placeholder expansion
- e7a80d6 - support ticks in time unit
- 0f29270 - add QueryForwardManager
- 27ae7f4 - add groupingSize to decimal format
- db11919 - add advanced decimal and time format to ValueDisplay
- 496b9c9 - move formatted settings to its own section
- cf84140 - standalone DatabaseConfig
- 7138473 - remove MiniPlaceholders hook
- 8171841 - apply global and player placeholders to MiniPlaceholdersHook
- 62672c0 - add MiniPlaceholders hook
- e877708 - add a workaround for formatted string
- 0e8881c - move common code from PlaceholderValueProvider to NumberStringValueProvider
- 04c0958 - customize separator in SimpleQueryContext
- b530b15 - more adaptive QueryManager
- 57fc8fb - add holder argument to getKeyFromActor
- c2d58e5 - support single holder in QueryManager
- 511a29a - centralize SqlStorageSupplier constructor
- 13b2bb8 - abstract SnapshotAgent
- b06b7c3 - Bump org.jetbrains:annotations from 26.0.1 to 26.0.2 (#131)
- 167f7b4 - add ignore-permission to Spigot plugin
- 547135c - add filter to UpdateAgent
- 85111aa - make standalone DatabaseSetting for more database types
- 0a340fd - modifiable sql type in SimpleValueConverter
- 5a72bcb - just to make sure if there is any breaking change
- 9aa34c6 - next development
- b1b7a7e - release
- 25a50d4 - Update maven-release.yml
- 9339079 - move some connection code to utilize try-with-resource
- 47c180b - use lock when the database is single-threaded only
- 3440263 - add lock to modify sql storage
- 732ffa7 - Revert "try connection per transaction on SQLite"
- 1c439f7 - Revert "move duplicated code in sql storage"
- 79ee0de - move duplicated code in sql storage
- 29c6e91 - commit the table creation
- bab3ea3 - try connection per transaction on SQLite
- 00a3adf - next development