Skip to content

Releases: HoshiKurama/TicketManager

5.0.0 Release

14 Jul 23:11
38a8831
Compare
Choose a tag to compare

Oh boy was TicketManager 5 a bitch and a half to write, but I finally got the base version finished! Despite 5.0.0 only adding one new feature (I promise it's good), pretty much all changes have taken place under the hood. If V4 was the Kotlin update, then V5 is the performance update!

For those still waiting for new features, I'm sorry. After finding more and more issues with TM's performance, improving that area became my number one priority. New features are still always being considered and might even come in a future V5 update!

Anyways, here's the changelog!

Changelog:

Plugin Startup and Reloads:

  • Startup and reloads are now performed asynchronously.
  • Several startup and reload instructions are now performed in parallel.
    This is great since it cuts down on server start times and reload times!

Command responsiveness:

  • Nearly all ticket commands are faster.
    Some commands are only faster by a marginal amount, but other commands like creating tickets or commenting on one should have a noticeable speed increase (MySQL users will notice the largest change)
  • List and listassigned command times have been IMMENSELY improved for servers with a large number of tickets open.
  • history and search command times should improve marginally or immensely depending on the type of query being made.
  • Database can now be hammered with requests without affectings the server's TPS or even the plugin itself.
    Basically, don't worry about a large number of users or one spamming user overwhelming the plugin.

New Features:

  • Added new database type (More later)
  • New config file

Other:

  • Paper and Spigot have split versions (more later)
  • MySQL 8.0+ databases' default caching_sha2_password is not supported by the new MySQL connection engine. If you are running MySQL 8.0+, please set your database to mysql_native_password or use an earlier database. (5.7- users don't need to worry about this)

New Database Type

Throughout testing, I desired for something faster. After a large amount of time, work, and research, I am proud to announce that TicketManager now supports a third option for ticket storage: in-memory!

By selecting the new "Memory" option in the new config file, end users will be able to take advantage of the lightning-fast RAM their servers use! Pretty much every command is nearly instant in this mode. Furthermore, TicketManager still maintains the same level of hammering without impacting the plugin or server like any other TM database option!

During reloads, shutdowns, and at regular intervals of your choosing, TicketManager will serialize the entire database to a flat file and use that as either a backup or to pick back up where it left off. That way, tickets persist after shutdowns!

Despite the insane performance of the memory option, there is a downside: It's stored in RAM. Like any other data in RAM, it gets wiped with the loss of power. TicketManager exacerbates this issue by losing data if the server gets forcefully closed or the server crashes. However, TicketManager has taken this into account. Users can select how often their data is backed up, so in the even something goes wrong, the server will only lose any data beyond the last save point.

Another issue with the memory option is that it takes up valuable RAM space. However, this effect is negligible unless you have hundreds of thousands of tickets. In my testing, having thousands of tickets created only results in a few megabytes of RAM being used. So unless you have hundreds of thousands of in-depth tickets, don't worry about it. You can also get an estimate of the space by simply looking at how big the storage file is!

SQLite will still remain the default option for TicketManager for its ability to work without any configuration and for its data robustness, but I am confident in the memory option. For those of you willing to take the risk of potentially losing a few minutes worth of tickets, the reward is WELL worth it. Like the other databases, Memory is now a valid option for database migration using the commands, so have fun!

Paper and Spigot Versions

Paper and Spigot now have two different versions. There's a number of reasons for this, but a large one is that the Paper version uses Kyori Adventure components for text while the Spigot version still uses normal Spigot Chat Components. The paper version also uses an asynchronous tab completion while Spigot still uses a synchronous tab completion system. There's a few other slight tweaks and variations, but the biggest reason why I split the two up is for a secret reason that'll remain secret until I actually do it! :p

That being said, the Spigot version will happily run on Paper, but not vice-versa. If your server runs Paper, I HIGHLY recommend you use the Paper version despite either working. The Paper version is just more tuned for Paper while the Spigot version is tuned for Spigot.

End Notes

This update took me a pretty long time to pull off, so I really hope the time was well worth it. I think it was. If you like the update, please leave a rating on my plugin as it helps other people see it too. Now that performance has been taken care of, more features can be focused on for the future!

TicketManager 4.1.0 Feature Update

19 Jun 23:26
Compare
Choose a tag to compare

New Requirements:

  • Java 16+
  • Spigot/Paper 1.17+

Changelog

Internal Changes:

  • Moved to API 1.17. This means Spigot/Paper 1.17+ is required
  • Compiled to Java 16. This version will ONLY work on Java 16+
  • Slight optimisations made to ticket searches
  • All dependencies have been unshaded. Paper and Spigot 1.17 now have the ability to download required libraries at runtime. TicketManager 4.1.0 is now only 425KB! (down from 13MB)

Feature Updates:

  • Added Update Checker - Server will alert certain users on login that a new plugin update is available. This feature can be toggled in the new config section.
    -- For users upgrading from a previous TicketManager version, you will need to manually add "Allow_UpdateChecking: true/false" to their config file (unless you want to generate a new one with the added documentation). Not updating this results in a default value of false.
    -- For people who have tinkered with the localization files, note that Notify_Event_PluginUpdate has been added. Check example.yml to see the placeholders.
    -- New permission: ticketmanager.notify.pluginUpdate has been added. Users with this node will see if there is a plugin update (when there is one) on login. It refreshes every server restart or on plugin reload. Users with ticketmanager.notify.* will also see the message.
  • Added new ticket search constraints: closedby and lastclosedby! Usage can be found in the TicketManager 4 wiki

End Notes

I apologize for people having to always change their config file! The YAML parser that comes with Spigot and Paper removes all comments when modifying the file from the code, so that's why I don't do it.

For people still running 1.16, you're not missing out on much with this version, so no need to fret if you can't switch to 1.17 quite yet! TicketManager 4.0.1 is still essentially identical as far as most functionality goes.

For users who block outgoing connections, future releases for the forseeable future will also release with a self-contained JAR with all dependencies baked in!

TicketManager 4.0.1

09 Jun 16:29
Compare
Choose a tag to compare

Changelog

  • Fixed bug where TicketManager would not run on Spigot.
  • Fixed bug where TicketManager would not register commands or tab-completion when force-locale was set to true in config.
  • Fixed bug where the levels were not shown when tab-completing setpriority command.

TicketManager 4.0.0 Release

08 Jun 23:15
Compare
Choose a tag to compare

TicketManager 4 has finally released! A great amount of time has been spent writing this version because it internally shares no similarities with any previous versions. The entire code base was written from scratch and in Kotlin; the database version is new and vastly different from the V2 version, and even the config file is new! Kotlin really has made this project better in so many ways, and quite frankly without Kotlin, TicketManager 4 would still only be a hated idea. Anyways, enough of me advertising Kotlin, here are the changes:

NOTE: PLEASE scroll to the bottom of this release to the section labeled "Important Information For Returning Users" If you are currently using a prior version of TicketManager.

Main Changelog

  • Tickets can now be assigned to groups! To do so, use the format ::<group>. For example, the group Developer would be ::Developer.
  • Full Localization and multi-language support! Everything about TicketManager with exception to a few things are localized! More on this is explained in the new V4 wiki. Currently the only locales supported are UK English, Canadian English, and American English, but more support could be added in the future! (provided someone took the time to write a translated file and maybe translate the wiki to that language too)
  • TicketManager now records the actions users take on a ticket! This includes the time the modification occurred, the type of modification, and the message if applicable.
  • There are now two ways to view tickets due to ticket actions being more advanced.
    /ticket view: shows the basic ticket with only the comments. Useful if you only need the conversation and the basic information about the ticket.
    /ticket deepview: shows the ticket information along with every action that has been performed on a ticket.
  • Permissions have been overhauled. Please read the section for users with a previous TicketManager version.
  • Basic colour changing has been added! The main colour can now be changed in config.
  • Tab completion and the help command now only show the commands a user has permission for.
  • Tab completion behaviour is overhauled. More information in next section.
  • Players can receive messages based on the type of modification now

Paper vs. Spigot

In previous versions of TicketManager, running Paper of Spigot made no difference in how the code behaved. This changes in TicketManager 4. Paper supports asynchronous execution of tab completions while Spigot does not. Because of this, TicketManager will alter its behaviour based on the type of server it's being ran on. While this may or may not make a noticeable difference in performance, it brings up the question of who the target audience this plugin is for.

TicketManager 4 and onwards will first and foremost be made for Paper. Spigot support will be continued, but Spigot-only code will not receive any optimizations.

Important Information For Returning Users

TicketManager 4 appears to be an iteration of previous versions on the surface, but internally it is very, very different. With great change also comes the ability fix past mistakes, and version 4 is unapologetic in this regard. Users starting out with V4 have no use for this section, but if you are currently running TicketManager 2 or 3, then please read this section carefully. It's incredibly important to the proper functioning of the plugin, not to mention other things that will be explained.

Database Version

All TicketManager databases have a sort of internal "database version". If you would like to read up on this concept, there is a wiki page entirely dedicated to it (here). For the people who don't care or the people who would like a TLDR, TicketManager 4 uses database V4 while TicketManager 2 and 3 use V2. As a result, the database will require an update.

This update process is entirely automatic, but like any sort of data migration, there is a risk for data loss or corruption. TM2 and TM3 users will only be able to use TM4 if they start a fresh database or allow TM4 to update the database.

Permissions

TicketManager 4 has received a massive overhaul with permission nodes. Users will need to remove every previous permission TicketManager used and replace them with the new ones. I deeply apologize for causing the people who truly customized the plugin this kind of hassle, but with a complete rewrite, it made sense to clean up and set TM4+ for success in the future.

Notification permissions especially received some well-needed attention. I HIGHLY recommend looking at the new V4 permissions to see what has been added and how things have changed.

Config

Config has receive a total overhaul. Previous users MUST remove the old config file from the TicketManager plugin folder and allow the new file to generate. An alternative option is to download the new config file from the repository and upload that after changing it to your liking.

TLDR Instructions For People Who Don't Bother Reading the Above:

First off, shame on you for not reading this stuff I painstakingly wrote in detail for you. Seriously, go read it. For the people who did read it, thank you. Anyways, I know I wrote a lot of detail, so here's a nicely summed up instruction set for how to upgrade from TicketManager 2 and 3 to TicketManager 4:

  • Stop the server.
  • Remove the old config file from the TicketManager plugin folder. You may allow a new one to be generated or download it from this repo and modify it to your liking.
  • Replace the old jar file with the new jar file.
  • Start the server
  • Remove all previous permission nodes and replace them with the new ones
  • (Optional for SQLite users) TM4 stores information in a new database file called TicketManager-SQLite.db. You may delete the old database file if you wish, but it does no harm remaining. It's not deleted in the event something goes awry during the database update.

End Notes

This section is an optional read:

  • I apologize to any individuals who have truly customized this plugin as I know there are a lot of things different, but now that everything has been written, there is no need for it to happen again in the future. I designed these new permission nodes to scale well with the future, so pretty much anything now is here to stay.

  • Just like previous versions, TicketManager 4.0.0 requires Java 11+. However, this requirement will be immediately increased to Java 16+ for the 1.17 version. The 1.16 version will still remain Java 11+ compatible, so don't worry.

  • Please don't report bugs on the Spigot page. It's a LOT easier to properly report them here on GitHub so I can keep it all organized. I expect this version to have most of the kinks worked out, but like any piece of software, end users are gonna find things I didn't.

  • Thank you so much for sticking with me!

TicketManager 3.0.0 Release!

24 Apr 15:42
Compare
Choose a tag to compare

Commands Added:

  • /ticket convertdatabase : Allows user to convert between database types

Permission Nodes:

  • Added ticketmanager.convertdatabase which is by default added to only the wildcard permission
  • ticketmanager.notify.warning now also shows when database is being converted

Features Added:

  • SQLite database support added! Users now have the option of MySQL or SQLite. By default, SQLite is the default database type.
  • Brand new config file. DO NOT USE PREVIOUS CONFIG FILE TYPE!!! Delete old config file and let plugin generate new file. Make sure to store your database information if using MySQL!
  • Update checker can now be toggled on and off. THIS FEATURE HOWEVER IS DISABLED AS SPIGOT DOES NOT ALLOW LARGER JAR FILES!

TicketManager 2.1.1

22 Apr 01:15
Compare
Choose a tag to compare
  • Fixes bug where /ticket claim and /ticket unassign would throw exception when ID was omitted
  • Freed up one extra connection pool connection

TicketManager 2.1.0

14 Apr 19:28
Compare
Choose a tag to compare

Aesthetics:

• Timestamp now shows beneath location when viewing ticket.
• Changed closeall notification to match other notification colours.

Permissions:

• Added two new permissions!
• ticketmanager.notify.update -- See when a new plugin update is available.
• ticketmanager.notify.staff -- Takes on the same permissions as the notify.* node but lacks the warning and plugin update nodes.
• ticketmanager.manage no longer includes ticketmanager.notify.* and has been replaced with ticketmanager.notify.staff

Features:

• bStats has been implemented!
• TicketManager now alerts users with the correct permission node if an update is available!