
eco 6.77.0
Powerful spigot development library that supercharges your plugins
- Dummy entities are now instance of a new DummyEntity interface (Delegated Entity internally) rather than CraftZombie
- Reworked Item and Entity lookup systems to share code into a new Lookups system; This includes Segment Parsers for more complex / powerful options: ? denotes an if check: if the left statement is not validated (ie empty item, dummy entity) then the right statement will be used instead. These can be chained together and have existed in the previous version. || denotes a group, so you can have multiple options for an item or entity. For items, this will always choose the first valid item to display/give, whereas for entities it will always choose a random entity to spawn.
- Generalized TestableItem and TestableEntity into new Testable<T> interface.
- Lookups are now handled by a new LookupHandler interface.
- Updated ExecutableItems depednency
- Build changes with tests (fixed dependencies)
- Added StringUtils#toNiceString, replacing the now-deprecated StringUtils#internalToString
- Added StringUtils#splitAround, which will split a string on a substring separated by spaces (eg " ? " and " || ", used in lookups)
- Removed requirements from backend, adding warnings into static initializers. These will be removed in 6.27.0.
- Fixed equipment and name arg parsers for entites and items
- Moved supported versions into ProxyConstants
- Various minor changes / fixes
- Rewrote MySQL data handler, bringing massive performance improvements, splitting off server data to be in a separate table (finally)
- Persistent Data Keys are now registered on first use, allowing for eco to dynamically categorize keys as either player or server keys, to put them in the right place (previously, the server was treated as a player, which was a problem in MySQL as the columns were added for all players). Persistent Data Keys can be registered on creation by calling .server() or .player() on them - this is preferred for performance reasons.
- Fixed Persistent Data Keys not having .equals() and .hashCode() methods, causing weird bugs.
- eco will save Persistent Data Keys serialized in data.yml for MySQL users; moving the load to startup.
- Fixed underflow bug with shift-clicking stacked recipes (Thanks Casper!)
- Switched SkullProxy NMS Implementation off to use lazy initializers (Thanks Racci!)
- Fixed internal Profile saveAll method causing bugs
- Updated shadow to 7.1.2
- Added entity arg parsers for equipment slots: head, chest, legs, feet, hand, off_hand
- Deprecated SlotModifier, replaced with SlotUpdater
- Player-only commands can now have non player-only subcommands
- Added kotlin ubilder for commands and PlayerUtils#runExempted
- Added kotlin extensions for NumberUtils
- Renamed FastItemStack methods, deprecating old names
- Added more kotlin utilities for lists and NamespacedKeys
- Added safer NamespacedKey creation, used in FastItemStack to mitigate broken keys
- Deprecated and marked requirement system for removal
- Deprecated TeamUtils#getMaterialColorTeam
- Changed Proxy error handling to be more consistent and understandable; Deprecated UnsupportedVersionException in favour of UnsupportedVersionError, changed ProxyError from Exception to Error
- Improved durability utils
- Added props system: instead of specifying plugin properties in the constructor, you can now opt to use eco.yml - check the eco source code (eco-core/core-plugin) to find out how to use it; also added EcoPlugin#mutateProps to enforce certain properties for libraries such as libreforge
- Deprecated MaskMaterials in favour of MaskItems
- Added more utility methods to Items
- Updated build logic to move kotlin to root project, updated to kotlin 1.6.10
- Fixed several javadoc issues
- Fixed several minor errors and tweaked internal naming
- Added API extensions in Kotlin for: Utility Classes, FastItemStack, Profiles (Data), and GUI (type-safe builders)
- Added option to display extension load stack-traces for developers
- Various misc changes
- Added RPGHorses Integration (Thanks OfTeN!)
- Fixed WorldGuard integration (Thanks OfTeN!)
- Added silent arg parser for entities (Thanks OfTeN!)
- Added caches for JSON <-> Legacy conversion, Placeholders, and String lookups with Caffeine
- Fixed CrashClaim integration not being loaded
- Added ServerProfile to store persistent data on the server
- Rewrote Custom Recipe listener in Kotlin, finally removing the last bit of java from the backend
- Added CustomCrafting support (Thanks OfTeN!)
- Rewrote Item cache to use Caffeine, removed ttl option from config
- Improved performance of ShopGUI+ Hook by improving custom item cache (Thanks NicoNeko!)
- Switched PersistentDataKeyType from an enum to a functionally indentical class with static fields (in order to infer types better in kotlin)
- Reworked backend of NamespacedKey creation: to get around the slow performance of the NamespacedKey constructor, eco will now use Objenesis to create a blank key and then set the fields reflectively - this is potentially unsafe, and so there is an option in config to disable it (however that shouldn't be a problem unless you royally screw up your config)
- Disabled async-display.ratelimit by default
- Improved stability of async display: packets now deep clone the itemstack rather than shallow cloning the packet, and packet sending is now ran catching and errors (if any) should be logged properly
- Added ExecutableItems support (Thanks OfTeN!)
- Added CustomCrafting support (Thanks OfTeN!)
- Fixed DropQueue giving the wrong amount of experience while telekinetic (Thanks OfTeN!)
- Improved performance of Items#isCustomItem and Items#getCustomItem (Fixes ShopGUI+ Lag)
- Placeholders should now specify a plugin
- Removed arg parsers marked for removal several versions ago