Previously, we checked if the target player was null, before checking if
their ID was out of bounds, so the check was moved to be first.
We now check if the buff being applied is within bounds.
We introduce `AddPlayerBuffWhitelist` to replace `WhitelistBuffMaxTime`,
which allows us to specify a maximum amount of ticks a buff can be
applied to another player for, and if it can be applied without the
target being in PvP. If a buff is not within this array, it is *not*
allowed to be applied by other players.
When rejecting from `OnPlayerBuff`, we send a `PlayerBuff` instead of
`PlayerAddBuff`, to sync the current buffs of the target, without
syncing the rejected one.
This would cause all `PlayerAddBuff` packets to always be rejected,
causing desync, and general annoyance, as it meant any PvP items that
applied buffs never worked.
When using a Bunny Cannon, an Explosive Bunny item (which is also a
critter release item) is used to create an Explosive Bunny projectile,
which will later (in the future) release an Explosive Bunny NPC, by the
release critter packet. The existing checks required that the player be
actively selecting the item to create the critter, however this didn't
make sense for Explosive Bunnies, as they would be released in the
future, possibly when the player was no longer selecting that item.
This commit relaxes the restrictions on Explosive Bunny critter
releases, now requiring either holding the release item, or having
recently created an Explosive Bunny projectile, and that the release
coordinates are within the area of one of their Explosive Bunny
projectiles.
The previous language was true but slightly unhelpful to non-native
English speakers and users who aren't familiar with server software.
When a fatal startup exception occurs now, TShock tells you what this
means and that it won't be able to start until this is resolved.
There is a slight change the the way QueryResult works in order to satisfy the variances in the new library.
Disposing of the command with the reader appears to solve this, and hopefully, with minimal impact to plugins.