+ Fixed reading & writing of escape char to the Config
+ Processing Server#syncCommands method after registering/unregistering commands (Thanks
@petulikan1)
+ Improved performance when reading InputStream via StreamUtils#fromStream(InputStream/File) method (~2.5x)
+ Added new method to the StreamUtils class:
* String fromStream(InputStream stream, int containerSize)
+ Improved reading & saving of Configs (No longer using LinkedList class)
+ Slightly improved writing of escape char to the YAML file
+ More work-around StringUtils#timeToString method to make it working perfectly
* No longer creating List of disabled TimeFormats
* Correctly converting time in secs to formatted time
* Fixed inf-loop which freezed thread - input '10d1d' or similiar
+ Improved performance of StringUtils#isNumber method & StringUtils#getNumber method
+ Added new method to the StringUtils class:
* String timeToString(long period, TimeFormat... disabled)
- Removed TimeFormat#WEEKS - Bcs isn't used anywhere
+ Fixed reading escape (\) in the Json - {"someText":"{\"mapInString\":\\"to_be_skipped\\"}"}
+ Big improvement of StringUtils methods to parse numbers from String (float, int, double, etc.) - ~2x faster than Java methods
+ Improved methods to generator random Int & Double in the StringUtils class
+ Improved performance of PercentageList#getRandom method
+ Also changed result for PercentageList#getKeys& PercentageList#getValues
- Removed PercentageList#getEntrySet method - No longer using Map. Now using 2 Lists instead.
+ Improved speed of reading of all loaders
+ DataLoaders now caching not used DataLoaders (created instances) to improve speed of "reading"
+ Added new method to the DataLoader:
* Set<String> getPrimaryKeys()
+ Improved of reloading files via method Config#reload
+ Improved performance of methods:
* Config#getKeys
* Config#get
* Config#set
* Config#exists
+ Methods to convert time to String or get from String synced with LuckPerms time:
* 31,556,952 sec = 1year
* 2,629,746 sec = 1month
+ Fixed method Config#remove(sectionName) - Didn't removed sectionName, but only subkeys
+ Improved performance of saving huge YAML files (about 73kb size)
+ Added new methods to the DataLoader class:
* String name() (Returns name of DataType)
* byte[] save(Config config, boolean markSaved)
* String saveAsString(Config config, boolean markSaved)
* Set<Entry<String, DataValue>> entrySet()
+ Added new method to the DataLoaderConstructor interface:
* String name() (Returns name of DataType)
+ Added new method to the Config class:
* boolean isSaving()
* Config save(String dataTypeName)
* byte[] toByteArray(String dataTypeName, boolean markSaved)
* byte[] toByteArray(DataType type)
- Removed old methods from the Config class:
* byte[] toByteArray() (Use Config#toByteArray(DataType.BYTE) instead)
* void addKeys(List<Map<String, String>> list, String key, boolean markSaved) (Moved to the JsonLoader class)
+ Fixed bug when merging 2 files (or InputStreams) doesn't merge comments & values (Thanks
@Dan 28 for bug report)
+ Removed unused field from DataValue class - " boolean removed"
+ Added more methods to convert Config to the String or byte[]:
* Config#toString(String dataTypeName)
* Config#toString(DataType type)
* Config#toByteArray(String dataTypeName)
* Config#toByteArray(DataType type)
+ When reloading Config class via method Config#reload(File) or just Config#reload(), mark Config class as Non-Modified to prevent unused saving of file
+ Added new method to ignore specified sections when merging two Configs via Config#merge(Config, MergeSetting[]) method:
* MergeSetting[] MergeStandards#ignoreSections(String... sections)
(Method requested by
@Dan 28)
+ Fixed merging of header (if in the config exists any section)
+ Fixed creating sub-dirs via Config#save method
+ Method Config#getKeys(String section) now return LinkedHashSet instead of HashSet - Sorted values
+ First convert whole Config to the byte[] before opening File in the Config#save method
+ Optimized saving of Properties, Byte & Json DataTypes
+ Added missing hashCode method to the most used classes
* ItemMaker, BlockDataStorage, Particle, ParticleData, GUI and ItemGUI
+ Improved performance of tab completer for selector Selector#MATERIAL in the CommandStructure
+ Added ID in the XMaterial class to each enum manually to prevent unused loading of legacy materials
+ Added new method append(char[] array) to the StringContainer class
+ Updated XMaterial class to the latest version
+ Added new scoreboard settings to the plugins/TheAPI/config.yml (Bukkit side only) to improve compatibility between 1.13 and 1.12 clients (This setting will fix scoreboard line colors)
+ Improved performance of methods in the StringUtils class:
* colorize(String) - regular colors (&a, &0, etc.) and also hex & gradients!
* calculate(String)
+ Added new method to the StringUtils class:
* double getDouble(String fromString, int start, int end) - No longer have to call String#substring(start, end) method!
- Removed unused method from the StringUtils class:
* boolean containsSpecial(String value)
+ ScoreboardAPI now sending less packets
+ Fixed coloring of formats in the rainbow color (&u) for 1.12.2 & older server versions
+ Fixed method PercentageList#add(V key, double chance) - No longer duplicating keys
+ Added new method to the PercentageList class:
* List<Entry<V, Double>> entrySet()
+ Added new method to the StringUtils class:
* StringUtils#calculate(String, int from, int to) - Do not use substring, use this method!
+ Fixed scoreboard lines ordering
+ No longer creating ItemStack via deprecated constructor in the ItemMaker
+ Improved performance of method XMaterial#matchXMaterialWithData(String name) - No longer removing spaces
+ Added new methods to the Pair class:
* Object setKey(Object newKey)
* Object setValue(Object newValue)
+ Finally, Config#setAutoUpdating method has been reworked into a more stable form using the Java API WatchService (Thanks
@tomikcz987)
+ Added new methods to the ThreadManager class:
* register(Runnable runnable)
* unregister(Runnable runnable)
// After cancelling all running schedulers via Scheduler#cancelAll() (ThreadManager#kill()), all Runnables are called.
+ Added new method to the Scheduler class:
* ThreadManager getManager()
+ Fixed getting of HEX color via method StringUtils#getLastColors(String)
❓ Method API#setEnabled(false) now cancel all running schedules via Scheduler#cancelAll() method
* If you use theAPI library in your own Java program, call the API#setEnabled(false) method after the custom disable logic.
* This change does not affect the Minecraft software (Spigot, Velocity or BungeeCord) - TheAPI calls this method itself in the plugin disable logic
+ Fixed loading NmsProvider on modded server "Ignite" (Reported by
@tomikcz987)
+ No longer loading (registering) PacketHandler if NmsProvider is null
+ Added new method to the Ref class:
* getClass(String className, ClassLoader loader)
+ More work-around MemoryCompiler and now it's finally completely working!
+ Added to the gradient matcher §x(§[0-9A-Fa-f]) pattern
+ Fixed multiple rainbow colorzing in one String &uSome &uText &uTo &uColorize
+ Fixed skipping hex & colors in the rainbow &uRandom gradient &ewith yellow text &uNext gradient
+ Added replacer for &#RRGGBB colors
+ Fixed no perms message in the CommandStructures
+ Added additional message when starting server and NmsProvider isn't provided
+ Prevent killing Main thread if player connection is taking too long
⚠️ From StringUtils class were separated methods for Parsing, Colorizing, Generating random int/double and Time converting into their own classes:
* ColorUtils
* ParseUtils
* TimeUtils
* MathUtils
⚠️ Methods from the StringUtils are scheduled to remove in version 11.2 - Methods are marked as deprecated
+ Also added new methods to the ParseUtils to parse number between certain positions in the String