The Axe of Regrowth will place a `Saplings` tile object where a tree
used to be, whilst it's `createItem` does not match that of a sapling.
Added an exception to allow this interaction to succeed.
The Rubblemaker is allowed to place echo piles, which will not match
the `createTile` or `placeStyle` of the created piles (except in one
very specific case, I suppose). Added an exception to allow this
interaction to succeed.
The check for the `style` of the placement to match that of
`SelectedItem` was moved to be later on, after checking the tile type,
and only if the two exceptions above weren't triggered. It will also now
sync the tiles upon failure.
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.
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.
Fixes#2485. Bouncer now checks to ensure that RegionProtectGemLocks is
enabled before attempting to reject changes from gem locks from players
that don't have build permissions.