* Bumped version to 2.10.0-SNAPSHOT.
* Added zombified piglin, piglin, hoglin, zoglin and strider to the by default enabled mob types. If you are updating, you will have to manually add these to your config's 'enabled-living-shops' setting.
* During my quick initial testing I did not encounter any major issues with these new mobs, but there are some oddities you might want to be aware of:
* We don't support changing the baby property of piglin and zoglin shopkeepers yet. However, we at least ensure that they always spawn as adult.
* The zombified piglin, hoglin and strider already support changing the baby property.
* The strider constantly shakes when being spawned outside the nether and randomly spawns with saddle.
* The pig zombie mob type has been removed from the by default enabled mob types. If you are updating to MC 1.16, it will get automatically removed from your config. To prevent your config from losing its comments and formatting during this small migration, consider manually removing this mob type before your update.
* If you are updating to MC 1.16, your pig zombie shopkeepers get automatically converted to zombified pigman shopkeepers.
* Internal: Any internal references to the pig zombie mob type have been removed to prevent any kind of binary problems to arise.
Other changes:
* Improved/Fixed: Some mobs randomly spawn with passengers. We remove those passengers now.
Those will only be available when run on a Spigot-based server.
Other changes:
* Added a few new utility methods to TextUtils.
* Slightly changed how TextUtils#getPlayerString deals with a missing player name.
* Made CollectionUtils#getIdealHashMapCapacity public.
Internally this new format uses Bukkit's item serialization for parsing
the item data, which allows it to support the specification of arbitrary
item data and hopefully not require any major updating/maintenance for
future minecraft versions. At the same time it tries to stay (slightly)
more user-friendly than Bukkit's item serialization by omitting any data
that can be restored by the plugin, by avoiding one level of nesting
between the item type and item data, by translating ampersand ('&')
color codes in display name and lore, and by offering a compact
representation for specifying an item only by its type.
This change also allows a more detailed specification of some of the
editor button items. However, many editor buttons still miss
corresponding config settings. Also keep in mind that the display name
and lore for these button items get specified via corresponding message
settings, so any specified item display name and lore will get replaced
by that.
When checking if an in-game item matches the item data specified in the
config, only the specified data gets compared. So this does not check
for item data equality, but instead the checked item is able to contain
additional data but still get matched (like before, but previously this
was limited to checking display name and lore).
The previous item data gets automatically migrated to the new format
(config version 2).
Other changes:
* Internal: Moved config migrations into a separate package.
* Internal: Moved some function(s) into ConfigUtils.
* Internal: Slightly changed how the plugin checks whether the high
currency is enabled.
* Internal: Avoiding ItemStack#hasItemMeta calls before getting an
item's ItemMeta, since this might be heavier than simply getting the
ItemMeta directly and performing only the relevant checks on that.
Internally ItemStack#hasItemMeta checks emptiness for all item
attributes and might (for CraftItemStacks) even first copy all the
item's data into a new ItemMeta object. And even if the item actually
has no data (Bukkit ItemStack with null ItemMeta), ItemStack#getItemMeta
will simply create a new empty ItemMeta object without having to copy
any data, so this is still a similarly lightweight operation anyways.
* Internal: Added ItemData tests. Unfortunately this requires
CraftBukkit as test dependency.
ShopkeepersAPI.
Adjusted Eclipse classpath to make tests work. There seems to be
something off with the maven setup for the individual child modules
though.
* Bumped Bukkit dependency to 1.14.3.
* Changed: With MC 1.14.3 custom merchants will no longer display the
'Villagers restock up to two times per day' message when hovering over
the out of stock icon.
of trades.
* Made updateTrades slightly more generic by retrieving the merchant
from the open inventory.
* The trading UI handler also retrieves the open merchant from the
player's open inventory now instead of manually keeping track of it.
* Changed the visibility of UIHandler#isWindow to protected and added
UIHandler#isOpen.