Tested that and perfectly working ! Results are interesting and offer a fantastic decrease of the used performance. (With the startCheck() task, 13% to 0 - 1% according to Paper's timings).
Explainations:
I had to deal with this problem for a while and haven't received a satisfactory answer on your Discord (just "You have to recode the plugin"). So I decided to analyze your code to improve it and I found a great solution! This method reads lines in the data file but doesn't necessarily have to save the file since it's in most cases unchanged. So I added a boolean that goes true when changes are made, forcing the data file being saved ;).
Enjoy
Added:
- New options to disable and enable the Selling and Bidding features.
- New messages in the Messages.yml.
Changes:
- Recoded how the whole messaging system works.
- Recoded the file system and how all yml files are accessed and controlled.
Bug Fixes:
- A blank line from Crazy Auctions would appear randomly in Console due to old MCUpdate class.
- Damaged leather armor could be sold in the CA even if damaged items are turned off.
- Trying to bid on an item that has just expired causes an error in console.
Changes:
- Bunch of code cleanup.
- Switched from the old MCUpdate class to the new MassiveStats class.
Added:
- New permission to force end auctions. "crazyauctions.force-end"