This fixes an issue where aliases would not show up in transaction
messages when the aliases item's string was shortened.
Also remove an unnecessary string length calculation from the
MaterialUtil getName method if there was no max width set.
Reasoning why this is part of the core and not a separate addon:
The impact of this function is extremely lightweight when (almost) no
aliases are defined so someone who isn't using this should not have a
worse experience.
Additionally including it in the core (similarly to the discounts,
taxes and restrictions) promotes it's availability while not massively
increasing the maintainability.
As for the OddItem removal:
That plugin hasn't been developed for over 7 years and such unique
plugin support should really be added via separate addon using the
events system which, with the new ItemStringQueryEvent, now actually
supports doing that from an external plugin.
If someone really managed to run their own private fork of OddItem for
all those years then they should be able to also provide such a simple
addon.
This protects people that use valid player names as admin shop names
from people with the same username as well as other cases where the API
is used to manage access to shops with certain special names.
This adds a new config option ENSURE_CORRECT_PLAYERID which lets one
disable the check whether or not a player's UUID version matches the
server's online/offline mode UUID version. Due to potential issues with
offline players which might occur when this isn't checked disabling
this can't really be supported and any issues should first be tested if
they still occur with this option enabled.
This also forces the UUID to version 4 if the server runs in online mode
as it should not be necessary in any normal setup to detect the UUID
version dynamically in that case. (Dynamic detection is only necessary
for offline mode which might potentially run behind a proxy)
This has caused lots of confusion in the past regarding the first time
setup and might be a feature that people don't even want to have.
(e.g. to allow coloring of the signs with dyes)
Message configs are now selected based on the client's language (can be
toggled in the config) and will use MineDown formatting to allow
display of component messages as well as usage of RGB colors in 1.16.
If found the legacy local.yml will be used instead of the per-language
files. Move your local.yml to the correct lang config to if you want to
use the per-client language option.
Version was also changed to 3.11 due to the many internal changes that
have accumulated over time
This should improve compatibility with other plugins that handle left
click interactions too and shouldn't apply to shop signs you don't have
access to.
Also includes a small improvement to not run the same permission check
twice in certain cases.