A new command for signs. Refreshing them, cleaning them, and verifying
them. Changed up some internal apis, if you were using them sorry for
breaking it. Also, really update the signs when we jail someone who is
offline via a new event.
After someone reloads the plugin and they've switched the storage system
then put the data, if any exists, into the new storage system. This
means a player can go from flatfile to mysql or from mysql to flatfile
without having to do any manual work.
We was saving everything again when the players stop creating anything,
this was causing issues with duplicate cells when using any storage with
SQL (due to insert and no primary key).
Also, added a hasChanged to the cell class which will prevent resaving
things in sql if it hasn't changed.
In the PrisonerManager you can now provide either AnyCell or NoCell and
it'll select a cell or not based upon the provided one. This is breaking
because it changes the required types in the methods and the new cells
don't have anything implemented and throw exceptions.
The variables possible are:
* %player% - the player's last known name
* %uuid% - the player's uuid, or what can fit on a sign
* %reason% - the reason the player was jailed
* %jailer% - the person/thing who jailed this player
* %afktime% - the amount of time the player has been afk
* %timeinminutes% - the amount of remaining time the player has in
minutes
If the player is jailed forever, then it pulls from the language file
`jailedforeversign` property.
1. In the player move event we looped through the jailed players more
than once which really is an issue when you have several hundred jailed
and since the move event is called several times a second, that was a
huge performance hit.
2. Don't save the prisoner data as soon as they are jailed, we take care
of that else where with the shutting down and counting down time.
The cache listens to a lot of events and custom events to ensure the
cache is up to date, this way we don't have to loop through all the
prisoners in a jail every single time they move or something but instead
just check the cache.
I want to get fully away from blocking methods and instead make the
user/player/prisoner/whatever wait to get an answer while we retrieve
the uuid information asynchronously.
While doing this I deleted one method that I shouldn't have, so going to
revert that. Next I have to build a method or two which will allow me to
do last known names lookups, etc. Might switch to using a library to
handle getting names async so we don't block the server up, doing this
will result in us having to recode some of the commands internally.
If you have any suggestions or questions, I'm open.
time from a prisoner's sentence.
This command could be useful for commandblocks or something else, as it
does not need a player context. This closes Bukkit Dev Ticket:
http://dev.bukkit.org/bukkit-plugins/jail/tickets/432/