TheAPI icon

TheAPI -----

[Spigot, BungeeCord, Velocity] Complex API library to make plugin development easier & faster!




Changelog:
  • Update TheAPI-Shared to 13.5.2
  • Now using PermissionChecker to check permissions
----------, Jan 2, 2025

  • Fixed jitpack
  • Clean up
  • Push TheAPI-Shared 13.5
----------, Dec 23, 2024

Changelog
  • Fixed plugin loading on 1.8.8
  • Pull TheAPI-Shared
----------, Nov 12, 2024

Changelog
  • Improved speed of reading lines (Config)
  • Fixed errors when executor isn't loaded (API & Config)
  • Remasted Socket's API
  • Added new method static byte[] getBytes(CharSequence) - (StringContainer)
  • Added new method String decode(byte[]) - (StreamUtils)
  • Added new methods parseToJson(Config) & parseFromJson(Map<String,
    Object>) - (JsonLoader)
  • Fixed (possible) concurrent errors (EventManager)
----------, Nov 7, 2024

Changelog
  • Fixed transfering TheAPI's Component to Adventure's Component (hoverEvent)
  • Improved parsing Component to Json (skipping empty components - without text)
----------, Nov 2, 2024


Changelog
  • Fixed parsing configuration sections which are in the quetos - '1', '-', etc.
  • Code cleanup (removed unused imports, code, etc.)
  • Fixed errors when failed to find primaryKey (Yaml & Toml)
----------, Sep 9, 2024

Changelog
  • Fixed bugs (Saving Config files)
  • Removed unused imports & code duplicates
  • Smaller buffer size for yaml & toml saving to avoid errors
----------, Sep 1, 2024

Changelog:
  • Fixed Paper 1.21.1+ support
  • Removed duplicates
  • Code cleanup
  • Fixed some parts of code (Thanks to @petulikan1)
----------, Aug 16, 2024

Changelog
- API is finally available from Jitpack.io, so you as developer don't have to download jar of plugin anymore! Same for Shared section
- Removed "ModernJsonReader" and "ModernJsonWriter" - Now using only our Custom Json Reader & Writer
----------, Aug 8, 2024

Changelog
  • Loading plugin on STARTUP
  • Fixed parsing server version (Spigot 1.21)
  • Fixed reading files
----------, Jul 26, 2024

Changelog
  • Fixed compatiblity with Paper 1.21
----------, Jul 2, 2024

Changelog
  • Updated XMaterial class to 1.21
  • Added support for 1.21
  • Fixed serializing & deserializing ItemStack & ItemMaker via Json
  • Fixed anvil text (AnvilGUI)
  • ConcurrentLinkedHashMap is now creating Iterator instead of copying whole map in the method keySet() and values()
----------, Jun 29, 2024

Changelog
  • Fixed bug when removing from the Config section with subkeys
  • Fixed AnvilGUI's rename text
----------, Jun 23, 2024

Changelog
  • Fixed compatibility with Spigot 1.20.6
----------, Jun 20, 2024

Changelog
  • Fixed reading skip character (\) in the files -> \" -> "
----------, Jun 19, 2024

Changelog
  • Fixed removing entries from ConcurrentLinkedHashMap via remove method
----------, Jun 9, 2024

Changelog
  • Fixed loading files
----------, Jun 9, 2024

Changelog
  • Improved speed of loading & saving Config files
  • Fixed complete server freeze when trying to load big file (+20MB)
  • Fixed errors when trying to parse array to Object[] (JsonUtils)
  • Fixed parsing Unmodifiable & Immutable maps & collections into json
  • Added new ConcurrentLinkedHashMap class
  • Added new method to append CharSequence (StringContainer)
  • Improved memory usage when loading & saving files
  • Fixed ByteLoader (saving & writing)
----------, Jun 8, 2024

Changelog
  • No longer overriding Bukkit command's HashMap with ConcurrentHashMap (Duo to PaperMC's changes)
  • Fixed bugs in the ItemMaker API for MC 1.20.4+
----------, May 26, 2024

Changelog
  • Fixed Objective packet on MC 1.20.4
  • Added missing enchants into EnchantmentAPI & fixed enchants on 1.20.5+
----------, May 22, 2024

Changelog
  • Overriding Bukkit command's HashMap with ConcurrentHashMap
  • Fixed ComponentAPI formats after colors
----------, May 19, 2024

+ Extended DatabaseAPI:
  • Added new methods to the classes SelectQuery, UpdateQuery and RemoveQuery:
    • where(String key, SelectQuery value)
    • like(String key, String value)
    • like(String key, SelectQuery value)
    • or()
  • Also added new enums to the enum class Sorting for easier manipulation with class:
    • HIGHEST_TO_LOWEST
    • LOWEST_TO_HIGHEST
----------, May 19, 2024

+ Fixed version
+ Removed unused version check from Ref class
+ Remasted Scheduler & TaskManager to improve performance
+ Fixed method Ref#craft(String) on the Paper 1.20.5+
----------, May 14, 2024

+ Fixed downloading of NmsProvider
----------, May 7, 2024

+ Added support for Spigot & PaperMC 1.20.6
+ Removed duplicate code
+ Removed debug
+ Added new public static field into BukkitLoader class which determinates, if plugin(server) is using PaperMC's non obfuscated nms code
* BukkitLoader#NO_OBFUSCATED_NMS_MODE
+
Added new enums to the ResourcePackResult class
+ Added new public static fields into TeamUtils class & changed method fields
----------, May 5, 2024

- Renamed methods in the ServerListPingEvent
+ Fixed SLPE event on versions above 1.19.4
+ Fixed errors when trying to copy ItemMaker with enchants
----------, Apr 21, 2024

+ Static classes inside ItemMaker are now separated from file into each

ComponentAPI class:
- Removed unused & overcomplicated method "fixJsonList"
Component class:
+
Added new static methods for faster access:
* fromString(String input)
* fromString(String input, boolean hexMode)
* fromString(String input, boolean hexMode, boolean urlMode)
+ Added new methods to easier convertion into adventure/bungee component & parse into Map with extras inside:
* asAdventureComponent()
* asBungeeComponent()
* toJsonMapWithExtras() - Special thanks to @petulikan1
----------, Apr 15, 2024

+ Fixed URL parsing
+ Fixed loading files from multiple threads at once
----------, Apr 7, 2024

- Removed methods scheduled for removal in the PacketListener class:
* boolean playOut(String player, Object packet, Object channel)
* boolean playIn(String player, Object packet, Object channel)

+ "New" methods in the PacketListener class are now abstract:
* void playOut(String player, PacketContainer container, ChannelContainer channel
* void playIn(String player, PacketContainer container, ChannelContainer channel)
----------, Mar 11, 2024

+ Fixed 1.7.10 support
----------, Mar 9, 2024

+ Fixed errors when Enchantment doesn't exist (ItemMaker)
+ CommandExecutor now returns Collection<String> instead of List<String>
* So, now, you as developer you are no longer forced to return List<String> in the CallableArgument
* This change can break plugins which are using CommandStructure API!
----------, Mar 2, 2024

+ Fixed compatibility with 1.20.4
----------, Mar 1, 2024

+ Player heads created via ItemMaker using Values now'll have correct UUIDs
----------, Feb 21, 2024

+ "Fixed" reading of invalid Jsons
- If json ends with invalid characters for json, json will be skipped and returned as regular String
- additional or missing chars
- for example: [a,b,c](url) will no longer be parsed to [a, b, c]
----------, Feb 12, 2024

Bukkit side:
+
Fixed AnvilGUIs (Finally completely supported)
+ Fixed HeadDatabase support in the ItemMaker class
+ Fixed rainbow on servers under version (&u) 1.15-
+ Push release to 2.3
- Removed Tablist Api

Supported platforms side:
+
Our own Json reader & writer is used defaulty (on first startup)

Shared side:
+
Added new hex-mode option to the tags.yml config:
* 1 = #rrggbb or &#rrggbb
* 2 = <#rrggbb>
+ Remasted ColorUtils:
* Added new interfaces to the class ColorUtils:
* GradientFinder
* ClassConstructor
* Added new classes for finders of gradients
* ArrowsFinder
* ArrowsWithExclamationFinder
* ClassicArrowsFinder
* ExclamationFinder
* ExclamationArrowsFinder
* RegexFinder (deprecated)
* Added new method registerColorTag(String tag, String hex)
* Removed fields rainbowSplit, gradientFinder and colorMap
* Added new methods to ColormaticFactory class:
* StringContainer replaceHex(StringContainer text)
* StringContainer gradient(StringContainer container, int start, int end, String firstHex, String secondHex, List<String> protectedStrings)
* StringContainer rainbow(StringContainer container, int start, int end, String firstHex, String secondHex, List<String> protectedStrings) * Added new methods to the ColorUtils class:
* StringContainer gradient(StringContainer container, List<String> protectedStrings)
* StringContainer strip(StringContainer container)s
* StringContainer colorize(StringContainer container, List<String> protectedStrings)
* List<StringContainer> colorizeCont(List<StringContainer> list)
* List<StringContainer> colorizeCont(List<StringContainer> list, List<String> protectedStrings)
+ Added comments to the DataLoader & MergeSettings classes
+ Added new annotations classes:
* Comment
* Nonnull (Also see Checkers)
* Nullable
+ Improved performance of YAML Reader & Writer
----------, Jan 18, 2024

Bukkit side:
+
Moved metrics from Bukkit to the Shared section
+ To the BukkitLoader added private field "metrics"
+ Added new methods to the ItemMaker:
* public Map<String, Object> serializeToMap() Serialize whole ItemMaker to Map which can be saved & loaded from Config
* public String getFormattedOwnerType() get formatted name of method int getHeadOwnerType() which is located in the HeadItemMaker
-> PLAYER_NAME, VALUES or URL
* public static ItemMaker loadMakerFromJson(Map<String, Object> serializedItem)
* public static ItemStack loadFromJson(Map<String, Object> serializedItem)
+ ItemMaker is now finally able to load & save items in the Bundle & ShulkerBox
+ XMaterial class now uses TempMap instead of Google cache (This allows plugin to run on all versions!)
* This also resolves error: NoSuchMethodError: com.google.common.cache.CacheBuilder.build()Lcom/google/common/cache/Cache;
+ Fixed compatibility with MC 1.7.10 - PacketHandler not loaded
+ Added new method to the GUI class:
* void onMultipleIteract(Player player, Map<Integer, ItemStack> guiSlots, Map<Integer, ItemStack> playerSlots)
Method is fired when player interact with multiple slots in the same time - like SHIFT, DRAG or PICKUP_ALL
Map contains modified slots with final itemstacks
+ Fixed method onInteractItem
* boolean onInteractItem(Player player, ItemStack newItem, ItemStack oldItem, ClickType type, int slot, boolean gui)
* First ItemStack now actually returns a new ItemStack, which will be replaced at the slot
* Second ItemStack returns the original ItemStack that was (and still is at this point) in the slot
+ Closing all opened GUIs automatically on plugin disable
+ Fixed parsing raw lore from Json
+ Fixed ItemMaker bugs
+ Added new methods to the ItemMaker class:
* ItemStack loadFromConfig(Config config, String path, boolean colorize)
* ItemMaker loadMakerFromConfig(Config config, String path, boolean colorize)
* ItemStack loadFromJson(Map<String, Object> serializedItem, boolean colorize)
* ItemMaker loadMakerFromJson(Map<String, Object> serializedItem, boolean colorize)

Shared side:
+
Added new Selector enum, POSITION (Only for Bukkit side) which checks if argument in the command is NUMBER or contains ~, + or -
+ Added Metrics class for Bukkit, BungeeCord and Velocity
-> new Metrics(pluginVersion, bStatsPluginId) (Require testing)
+ Fixed reading of YAML files (comments before lists)
+ Fixed parsing UUID in the Json -> JsonUtils#writeWithoutParseStatic(Object)
+ Fixed writing String in Json format -> JWriter#writeWithoutParse(Object)
Method put String into ", but forgot to add skip symbol (\) before each " in String
+ Switched default-json-handler from Guava to TheAPI
+ Added 2 new plugin events for developers (called only in our EventListener)
* UserDataLoadEvent - Called when is loading user's Config via API#getUser(UUID/String) method
* UserDataUnloadEvent - Called when is unloading & saving user's Config
+ Added new methods to the EventListener interface:
* default ListenerHolder build()
* default ListenerHolder build(int priority) - Creates an instance of ListenerHolder
+ Modified methods in the EventManager:
* unregister(ListenerHolder) now returns boolean
* call(Event) improved performance
+ Added new methods to the ListenerHolder:
* boolean isRegistered()
* boolean unregister()
* boolean register()
+ Added missing options to the Metrics like logging.
+ Added new constructor to the StringContainer class:
* StringContainer(String text, int offset) - Do same thing as new StringContainer(String#substring(offset)), but using less resources.
+ Fixed reading skip char in the yaml file Woops!
+ Added public static ints to the EventListener as "helpers" for developers - nothing special. (Image below)
+ Small performance tweak; If a TempMap or TempList is empty for more than 5 min, Scheduler that is currently running (in this case an empty map/list) will be cancelled and started again when you put/add something to the map/list.
----------, Dec 23, 2023

+ Fixed loading of YAML file
+ Improved performance of loading Config files (Now it is 100% 2x faster than SnakeYaml)
+ Fixed loading of NmsProvider if failed to load from the .java file.
----------, Sep 30, 2023

+ Implemented TOML Reader & Writer (Config)
+ Push release version from 1.9 to 2.0 (NmsProviders)
----------, Sep 29, 2023

+ Added new option to directly load .jar file instead of .java file for NmsProvider to the config.yml - nmsProvider-use-directly-jar: false
+ Added new methods to the ComponentAPI class:
Component fromJson(String)
Component fromJson(Collection<?>) - Collection with Maps
Component fromJson(Map<String, Object>)
+ Improved parsing objects to the String via Json
+ Added new methods to the Ref class:
Unsafe getUnsafe()

To create class without using constructor
Object newUnsafeInstance(Class<?> clazz)

To modify final field
setFinal(Object instance, Field field, Object value)
setFinal(Object instance, String field, Object value)

To modify static final field
setStaticFinal(Field field, Object value)
setStaticFinal(Class<?> clazz, String field, Object value)

To modify static field
setStatic(Field field, Object value)
setStatic(Class<?> clazz, String field, Object value)
+ Fixed writing PROPERTIES data type to the String/File
+ Added new methods to the StringContainer class:
String substring(int start)
boolean containsIgnoreCase(String value)
int indexOfIgnoreCase(String value)
int indexOfIgnoreCase(String value, int start)
int lastIndexOfIgnoreCase(String value)
int lastIndexOfIgnoreCase(String value, int start)
boolean startsWith(String prefix, int toffset)
boolean endsWith(String suffix)
+ Fixed Ref#set method
+ Updated NmsProvider 1.12.1 for latest PaperSpigot
+ Expanded ParticleAPI and improved performance of new methods
+ Improved security of SqlApi
+ Added new
----------, Sep 21, 2023

+ Fixed 1.20+ support (Thanks to @petulikan1 )
+ Fixed infinity loop when replacing String with replacement which (StringContainer)
----------, Jul 31, 2023

+ Fixed reading of legacy json unicode for char "equals" (=)
+ Fixed compatibility with modded items (ItemMaker#of(Material) & reading & writing to the json - Material)
----------, Jul 15, 2023

+ Added new method to the ItemMaker class:
* getMaterial()
+ Fixed compatibility on the Server.Pro hosting
----------, Jul 1, 2023

Our own Json Reader & Writer (defaulty disabled)
* Allows you to have a List, Map, or other value as key, which the default Json does not allow.
* Also minor performance improvements over Guava Json.

❓ To switch to our experimental Json reader and writer, open file plugins/TheAPI/config.yml and change value on the line default-json-handler to TheAPI.
If you find any bugs, we would be very happy to receive any feedback via tickets.

+ Implemented custom Json reader & writer (⚠️ Experimental)
+ Added new constructors to the StringContainer class:
* StringContainer()
* StringContainer(String text)
+ Fixed sending packet to all online players in the specified world via methods Position#setAirAndUpdate and Position#updateBlockAt
+ Added new methods to the StringContainer class:
* isEmpty()
* appendNull() (Now is public)
+ Added new methods to the ParseUtils class for reading content from the StringContainer class
+ Fixed MathUtils#calculate methods
+ Added new method to the StringContainer class:
* trim() (Removes all spaces and tabs at the start and end)
+ Fixed reading 2x queto in the Yaml text (YamlLoader bug fix)
+ Increased default size of StringContainer when creating with String
+ Improved performance of StringContainer#replace methods and StringContainer#indexOf methods)
+ Printing exceptions when reading object from json
+ Added new methods to the ItemMaker class:
* ItemMaker#type(X/Material)
* Potion#fromType(XMaterial)
* BannerColor#fromType(XMaterial)
* ShulkerBoxColor#fromType(XMaterial)
----------, Jun 29, 2023

+ 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
----------, May 7, 2023

+ Fixed reading & writing of escape char to the Config
----------, Feb 17, 2023

+ Fixed reading of tabs in the YAML configs (1 tab = 1 space)
+ Improved performance of reading DataType#BYTE (replacing spaces, tabs and lineSeparators)
+ No longer removing cached chunk from the Position class if block (x,z) is still in the same chunk - If block pos is changed by method add, substract, setX, setZ or set
+ Added new methods to the Position class:
* set(double x, double y, double z)
* setWorld(String worldName)
* Object toBlockPosition() (Returns NMS BlockPosition class instance)
+ Fixed return of Position#getData() on the 1.8 and newer
+ Code clean-up
+ Fixed wrong conversion of time to the String via StringUtils#timeToString method
+ Added new "RemoveCallback" to the TempList & TempMap classes
+ Added new (missing) methods to the PercentageList:
* int size() returns size of map
* double getChance(V value) return set chance of value - returns zero if isn't in the map
+ Added new methods to the GUI$ClickType enum:
* isLeftClick()
* isRightClick()
* isMiddleClick()
* isShiftClick()
+ Added new method to the ItemMaker class:
* ItemMaker enchanted() - Add on item "unbreaking" and itemFlags "HIDE_ENCHANTS" & "HIDE_ATTRIBUTES"
+ Added new RjarLibrary API which allows programs (Not for Minecraft software) load libs outside of jar.
+ Added new method to the EventManager class:
* List<ListenerHolder> getListeners(Class<? extends Event> event)
Returns List of handlers from the Event class. If event class is null, returns unmodifiable empty list.
+ Changed how listeners are registered, unregistered & called.
Now every event must have public method List<ListenerHolder> getHandlers() and public static method List<ListenerHolder> getHandlerList() which returns same non-null List.
+ Fixed & improved performance of Ref#method(String methodName, Class<?>... params) method
+ No longer calling ServerListPingEvent event if isn't used by any plugin.

❓ TIP If you want to "clear" cache of Position class, call Position#zero() method to remove cached chunk, world name, etc.
----------, Feb 16, 2023

+ Added new class CustomPluginCommand which using CommandHolder API from TheAPI-Shared section.
* This new class is used to "hide" command in-game from players if CommandExecutor of this class can be only console/command-block, etc. Same for console.
+ Also small perf. improvement of StringUtils#copyPartialMatches method
+ Marking Config as NonModified after saving content to the File. Not before saving.
+ Also broadcasting exceptions to the console when is problem with creating File when saving Config.
+ Preventing from creating empty .java files in the plugins/TheAPI/NmsProviders folder if we do not provide NmsProvider for your server version yet (or never)
+ Added debug to the console when server (plugin) is loading - Server version & type, Java version & type and plugin version
+ Fixed not completed HEX colors on the end of the String being completly removed (For ex.: "This is test #1" -> "This is test ")
----------, Dec 30, 2022

+ Fixed replacing HEX colors & also improved performance of replacing!
----------, Dec 4, 2022

[​IMG] New "function" for developers, now you can init Configs, ItemMakers, etc. in the static fields or outside onLoad/onEnable method

+ Loading TheAPI-Shared lib when server create loader's class
+ Pushed release to 1.9
+ Fixed time conversion (1mo -> 2678400sec, 1y -> 31536000sec)
+ Fixed gradient formatting (!#rrggbb &lText&r without format!#rrggbb)
+ ScoreboardAPI is now using ConcurrentHashMap instead of Config, also removed "protectionId"
----------, Dec 4, 2022

+ Fixed bug in the GUI class which cause double colorizing title in creation of class (perf drop)
+ Fixed hiding of Throwables which are throw in the Tasker class or Scheduler class
+ Removed debug from Component class (Whoops!)
----------, Oct 18, 2022

+ Fixed ActionBar for 1.8.X version
+ Fixed BossBar for 1.7.10 - 1.8.9
+ Improved speed of getting block IBlockData if you have installed latest PaperSpigot 1.19.2 with Chunk system rework
+ Loading .java files into memory - MemoryCompiler class
+ Reducing the size of the jar
+ Automatic downloading & updating of NmsProvider from git if possible (if release version allows it)
+ Possibility to edit NmsProvider by the user (It is such a + and - at the same time) - Only if JDK Java is installed
+ Fixed Anvils
+ Fixed ItemMaker - Adding null enchantments
+ Fixed colors in the IChatBaseComponents on 1.16 and lower
+ Added new EnchantmentAPI
+ Added new method to the NmsProvider;
* packetBlockChange(World world, Position position, Object iblockdata, int data)
+ Added new method to the ItemMaker:
* ItemMaker#of(XMaterial)
+ Added HeadDatabase for ItemMaker
+ Added ItemMaker#ofHead()#skinHDB(String id) method
+ Loading libraries from TheAPI/libraries folder instantly with server
+ Fixed GUI#setTitle (Thanks to @petulikan1 for report)
+ Fixed gui inventory flickering when opening another gui or changing title
----------, Oct 17, 2022

+ Added new RegionUtils api which actually contains only two methods:
- boolean isInside(double pointX, double pointY, double pointZ, double fromX, double fromY, double fromZ, double toX, double toY, double toZ)
- boolean isInside(double[] points, double[] from, double[] to)
+ Fixed Json support in the config files (no longer breaking text where starts '#' symbol if it inside json - {} or [])
+ Small rework of ComponentsAPI#fixJsonList method
- Removed TheMaterial class
+ Added new BlockDataStorage class

Position class:
+ Caching of nms chunk
Added methods:
* public static Position fromEntity(Entity entity)

* long setType(Material type)
* long setType(BlockDataStorage type)
⬆️ Return chunk key

* void setTypeAndUpdate(Material type)
* void setTypeAndUpdate(Material type, boolean updatePhysics)
* void setTypeAndUpdate(BlockDataStorage type)
* void setTypeAndUpdate(BlockDataStorage type, boolean updatePhysics)
* void setAirAndUpdate(boolean updatePhysics)
* void updatePhysics()

- Removed methods:
* void setState(BlockState state)
* void setBlockData(BlockData state)
* void setStateAndUpdate(BlockState state)
* void setBlockDataAndUpdate(BlockData state)
- ServerListPingEvent#getPlayers now returns List<GameProfileHandler>
- Renamed class PlayerProfile to GameProfileHandler
+ Added new static methods to the GameProfileHandler to create instance:
* of(String username, UUID uuid)
* of(String username, UUID uuid, PropertyHandler textures)
+ Added profile (textures) properties to the GameProfileHandler
+ New PropertyHandler class which hold profile properties
+ Added GameProfileHandler#getGameProfile() method
+ Added GameProfileHandler#setTextures(PropertyHandler textures) method
+ Added Map<String, PropertyHandler> GameProfileHandler#getProperties() method
- Renamed method GameProfileHandler#getName() to GameProfileHandler#getUsername()
+ Added new methods to the NmsProvider:
* Object getGameProfile(Player player)
* Object getGameProfile(Object nmsPlayer)
* Object toGameProfile(GameProfileHandler gameProfileHandler)
* GameProfileHandler fromGameProfile(Object gameProfile)
* Object packetPlayerInfo(PlayerInfoType type, GameProfileHandler gameProfile, int latency, GameMode gameMode, Component playerName)
- Removed methods from the NmsProvider:
* createGameProfile(UUID uuid, String name, String values)
* getGameProfileValues(Object profile)
⚠️ Renamed methods in the StringUtils class:
* generateRandomDouble -> randomDouble
* generateRandomInt -> randomInt
* getRandomFromCollection -> randomFromCollection
* getRandomFromList -> randomFromList
+ Improved functionality of PercentageList class (Now works with super low percents (0.04, 1, 0.5..)
+ Improved methods to generate radom int/double (StringUtils class)
+ Added new methods to generate "chance" to the StringUtils class
* boolean checkProbability(double chance)
* boolean checkProbability(double chance, double basedChance) (basedChance is defaulty 100)
- Removed from PercentageList class method toList()
+ Fixed creating of Config without loading file (Constructor Config(File file, boolean load) with field load set to false)
+ Another work around Sockets API

❓ Example of usage new "probability" methods you can find in the ⚙『examples』 channel.
+ Allowed joining of empty strings via StringUtils#join method
+ Fixed ComponentAPI#fromString method (Reading "next" lines - \n) & fixed converting of websites
+ Fixed default capacity of StringContainer (if int capacity is zero or below, defaulty 16)
+ Improved performance of TabAPI (sending packets) & no longer colorizing strings
+ Fixed Velocity support (Tab completer)
+ Added new methods to the ItemMaker class
* itemMeta(ItemMeta) Allows to load an item from ItemStack into ItemMaker and edit it
* nbt(NBTEdit) Custom nbt tags
* getNBT() Get custom nbt tags if present
* static ItemMaker of(ItemStack) Convert ItemStack to ItemMaker
----------, Sep 25, 2022

+ Fixed 1.19.2 compatibility
----------, Aug 26, 2022

+ Added check if ItemFlag exists to the ItemMaker#build() method
+ Added getters of fields to the ItemMaker class
+ Fixed 1.19 NmsProvider - playOutChat method
+ Fixed Sockets API limits (missing in fastConnection mode)
+ Fixed saving item to the config (modelData)
+ Fixed loading item from the config (modelData in NBT)
+ Fixed StringIndexOutOfBoundsException errors - StringUtils#timeToString method
+ Added StringContainer (Veeeery similiar to StringBuilder, but without checkers)
+ Improved speed of saving YAML files (Thx to StringContainer)
+ Added char[] Data#toString(DataType type, boolean markSaved) method
+ Added missing close method after reading InputStream - StreamUtils
+ Fixed converting of HEX colors with uppercase letters (#6EFFFF)
+ Added boolean Config#isAutoUpdating() method
+ Added Config Config#setAutoUpdating(long checkEveryMcTick) method
+ Fixed StringUtils#colorize(List<String>/String text, List<String> ignoredStrings) method (When String to protect is long as text length, gradient colors are reset to zeros (#000000))
+ Added StringUtils#colorize(String text, List<String> ignoredStrings) method
+ Added StringUtils#colorize(List<String> texts, List<String> ignoredStrings) method
+ Fixed other sockets api problems & improved limits
+ Fixed PlaceholderAPI class (Replacing multiple placeholders)
+ Fixed Version VersionUtils#getVersion(String version, String compareVersion) method
+ Added double VersionUtils#convertToDouble(String version) method
+ Fixed CommandStructure - fallbacks
+ Fixed some 1.19 compatibility problems (NmsProvider)
+ Fixed null pointers (1.19 packets - Teams)
+ Added CommandTabExecutor to the all sub CommandStructures (Argument, Callable & Selector) to make own tab completer:
* argument(String argument, CommandExecutor<S> ex, CommandTabExecutor<S> tab, String... aliases)
* argument(String argument, int length, CommandExecutor<S> ex, CommandTabExecutor<S> tab, String... aliases)
+ Fixed tab completer
+ Fixed 1.19.1 compatibility (1.19.2 requires testing)
----------, Aug 26, 2022

+ Fixed Ref#nms method (When package is empty)
+ Fixed spaces in the TimeFormatter action
+ Fixed reading YAML files
+ Fixed StreamUtils#fromStream methods
- Removed StreamUtils#fromStreamToList method
+ Added MergeSettings to the Config#load* methods & Config#merge method
+ Added to the CommandStructure option for CooldownDetection (example in the SCR remaster)
----------, Aug 4, 2022

This release from version 9.0 has many changes in the code, but most importantly it opens new doors for developers by redesigning TheAPI into modules.. it also brings a huge performance boost in all aspects.

As for the changes between the last build:

- Improved StreamUtils class performance (Using NIO channels for reading instead of BufferedFileReader)
- Removed RankingAPI class as it was already in the comment class itself
- Formatted the entire code
- Fixed compatibility with Mohist servers
----------, Jul 22, 2022

- Dropped support for Mohist 1.16.5

+
Fixed found bugs on 1.19:
* Title in GUI is without colors
* Colors in the IChatBaseComponents are not "working"

+ Fixed global bugs:
* StringUtils#colorize do not colorize formats in gradients & rainbow formats
* StringUtils#gradient with format doubled & symbol
* PlaceholderAPI bridge is now fully working ( Example usage via PAPI: %theapi_myTaPlaceholder% )
* Fixed ScoreboardAPI#addLine method (infinity loop which cause server crash..) (Reported by @Wejt)

+ More work around sockets:
* Added methods to easier connection of client to server & startig socket server (Visit SocketServer & SocketClient classes)
* Fixed random errors when disconnect
* Fixed sending & receiving of files
* Whole API part optimized
* Renamed some events & added more events
* Fixed reconnecting
* Improved security of receiving files via Sockets API - If file exists, do not delete file, create new file with "-copy" suffix
----------, Jul 4, 2022

+ Fixed 1.19+ connection bug
----------, Jun 13, 2022

+ Fixed loading of plugin on Bukkit side (Thanks to @XeonZ for report)
----------, Jun 12, 2022

+ Fixed loading of Json reader & writer
----------, Jun 11, 2022

+ Fixed default "gui" when gui is closed (1.18.2)
+ Added NmsProvider for 1.19 (support)
+ Remasted whole Sockets API (Improved performance, new methods, removed unused methods)
+ Added new methods to the ByteLoader class:
- public void load(byte[] bytes)
- public static ByteLoader fromBytes(byte[] bytes)
+ Added new method to the Config class:
- public byte[] toByteArray()
+ Added new events for Sockets API:
- ServerClientConnectEvent - When socket is trying to connect to the socket server
- ServerClientConnectRespondeEvent - Responde of socket connection (Visit SocketServer class for respondes)
- Renamed ClientReceiveMessageEvent to ServerReceiveDataEvent
+ Fixed errors when trying save custom model of item via ItemMaker#saveToConfig method
+ Added nbt field to the ItemMaker load & save methods
❓ Changed return value of Config#get<String/Integer/Double...>List() methods;
If value in the section is null or list is empty, returns Collections#emptyList() instead of new ArrayList<>()
+ Fixed primitives in the Json reader & writer
+ Removed duplicate
+ Added new methods to the Config class:
- getInt(String path, int defaultValue)
- getShort(String path, short defaultValue)
- getByte(String path, byte defaultValue)
- getDouble(String path, double defaultValue)
- getLong(String path, long defaultValue)
- getString(String path, String defaultValue)
- getList(String path, Collection<Object> defaultValue)
- get(String path, Object defaultValue)
+ Added new super duper useful methods to the ItemMaker class: (Bukkit side) Working for Heads, Books, Enchanted books, Potions and Banners!
- static void saveToConfig(Config config, String path, ItemStack stack) - Save ItemStack to the Config on specified path
- static ItemStack loadFromConfig(Config config, String path) - Load ItemStack from the Config from specified path
+ Renamed path to TheAPI configurations for server types which aren't bukkit, bungeecord and velocity
+ Added new method to the StringUtils class:
- String timeToString(long period, String split, TimeFormat... disabledFormats)
- Removed some unused methods from the StringUtils class:
- String setTimeToString
- long getTimeFromString
❓ Renamed TheAPI configurations to lowercase (Config.yml -> config.yml, Tags.yml -> tags.yml)
❓ Renamed paths in the TheAPI configurations (Options.TimeConvertor... -> timeConvertor..., Tags... -> tags...)
+ Working on TheAPI Demo part (More on our github) - Demo isn't included in jar and never be.
https://github.com/TheDevTec/TheAPI/tree/master/Demo/src/me/straikerinacz/theapi/demo
----------, Jun 8, 2022

+ Fixed StringUtils#formatDouble method
+ Reduced duplicated code (Codacy)
+ Formatted code
+ Added new TeamUtils class (Just utils for NMS stuff)
- Removed NmsProviders of unlisted versions. (Discord voting)
+ Clean up & format code
+ Fixed GUI title
+ Added new VoidGeneratorHelper class which provide ChunkGenerator get() method to get correct void generator for your server version
+ Remasted config comments system (affect only for YAML & PROPERTIES files) - (Request from @petulikan1)
- Comments before sections
- Comment after value (not working for list)
+ Fixed Config#merge method - (Reported by @petulikan1)
+ DataLoader#get() now returns Map<String, DataValue> instead of `Map<String, Object[]>
+ DataLoader#remove(String key) now returns boolean if value is removed (modified map)
+ Config is now preventing from unused marking as modified - no more unused savings
+ Added new static methods to load Config:
- loadFromInput(InputStream input, String outputFile)
- loadFromInput(InputStream input, File outputFile)
- loadFromPlugin(Class<?> mainClass, String pathToFile, File outputFile)
- loadFromPlugin(Class<?> mainClass, String pathToFile, String outputFile)
- loadFromFile(File file)
- loadFromFile(String filePath)
- loadFromString(String input)
+ Fixed ComponentTransformers (bungee & adventure)
+ New CompomentTransformer api - Make your own transformer!
+ New ItemMaker class with clickable pages in the books! (1.12+ only)
+ Rework of Event listener - ⚙『examples』
+ Renamed methods in the PacketListener class:
- playOut(String player, Object packet, Object channel)
- playIn(String player, Object packet, Object channel)
+ Added XMaterial class from XSeries
----------, May 28, 2022

Another rework is here.
Reworked "Adventure" and "Bungee" classes and joined into one "CompomentTransformer" class.
Methods are renamed & there is one new method!
CompomentTransformer#toCompoment(T) transfer Object (T) into Compoment (shared TheAPI section)

+ Compoment#getExtra method now returns List<Compoment> instead of one object Compoment.
+ Fixed Compoment colors when Compoment has formatting (bold, italic, etc.)
----------, May 12, 2022

+ Fixed Component colors ( Issue #6)
+ Fixed errors when input (max) is zero in the method StringUtils#generateRandomDouble
----------, May 9, 2022

+ Added new methods to the Bungee & Adventure classes:
* T fromString(String)
+ Added new methods to the StringUtils class:
* List<String> colorize(List<String>)
* List<String> gradient(List<String>)
+ Added new method to the StreamUtils class:
* List<String> fromStreamToList(InputStream) (Does not join lines into one String with System#lineSeparator, but just read lines and put lines into ArrayList)
----------, May 1, 2022

+ Fixed &u color on 1.15 and older
+ Fixed loading of YAML files (Random errors - reported by @TeqTabanca)
+ Improved security loading of Sql databases via DatabaseAPI
----------, Apr 24, 2022

+ Fixed loading of comments of the YAML files
----------, Apr 19, 2022

+ Clean up code
+ Fixed BlockMathIterator class
+ Renamed MultiThread class to ThreadManager
+ Increased default buffer size for LibraryLoader (download method)
+ In some cases improved performance
+ Rework of ComponentAPI class:
* Highly improved performance of method ComponentAPI#fromString & added option "hexMode"
* Renamed methods (Poor developers..)
* fromComponent to fromString
* Added unused method ComponentAPI#toString(Component) - Just invoke Component#toString.
+ Removed Metrics from Velocity & BungeeCord software (save some bytes!)
+ Added new method to the StringUtils class:
* String formatDouble(FormatType type, double value)

With 3 format types:
1) BASIC 10549792.979 -> 10549792.98
2) NORMAL 10549792.979 -> 10,549,792.98
3) COMPLEX 10549792.979 -> 10.55m

+ Removed StringUtils#fixedDoubleFormat(double) method
----------, Apr 19, 2022

+ Optimalized code & StringUtils#colorize method
+ Fixed multi selectors in the CommandStructure
Code (Text):
cmd:
  -> entity_selector
      -> boolean
  -> boolean
----------, Apr 9, 2022

+ Fixed AnvilGUI duplication bug (Reported by @Jedlicov)
+ Fixed errors on loading plugin
+ Rewritten Command Api
+ Clean up code

Example of Commands Api
Code (Java):
CommandHolder <CommandSender > holder =
    CommandStructure. create (CommandSender. class, (s, perm, tablist ) -> {
        return s. hasPermission (perm ) ;
    }, (s, structure, args ) -> {
        if (s instanceof Player ) {
            new AnvilGUI ( "Anvil", (Player )s ). setInsertable ( true ) ;
        } else s. sendMessage ( "/anvil [player]" ) ;
    } ). permission ( "anvil.command" )
    . fallback ( (s, structure, args ) -> {
        s. sendMessage ( "Oh-h.. player " +args [ 0 ] + " not found!" ) ;
    } )
    . selector (Selector. PLAYER, (s, structure, args ) -> {
        new AnvilGUI ( "Anvil", Bukkit. getPlayer (args [ 0 ] ) ). setInsertable ( true ) ;
    } ). permission ( "anvil.command.other" ). build ( ) ;
holder. register ( "anvil" ) ;
----------, Apr 2, 2022

+ Added Command API
Code (Java):
//Inside onEnable method
CommandHolder. create (
        //empty command - no args
        CommandStructure. empty ( ). permission ( "mw.command" ). onAnyArg ( (sender, selectors ) -> {
            sender. sendMessage ( "/mw tp [world] {player}" ) ;
            sender. sendMessage ( "/mw list" ) ;
        } ),
        //tp subcommand
        CommandStructure. create ( "tp" ). permission ( "mw.tp" ). onArgs ( 0, (sender, selectors ) -> {
            sender. sendMessage ( "/mw tp [world] {player}" ) ; //argument position
        } ). selector ( 1, SelectorType. WORLD ). onArgs ( 1, (sender, selectors ) -> {
            sender. sendMessage ( "Tp to the world " +selectors. get ( 1 ) ) ; //argument position
        } ). permission ( "mw.tp.other" ). selector ( 2, SelectorType. PLAYER )
        . onArgsOrMore ( 2, (sender, selectors ) -> {
            sender. sendMessage ( "Tp player " +selectors. get ( 2 ) + " to the world " +selectors. get ( 1 ) ) ; //argument position
        } ),
       
        //list subcommand
        CommandStructure. create ( "list" ). permission ( "mw.list" ). onAnyArg ( (sender, selectors ) -> {
            sender. sendMessage ( "List of worlds" ) ;
        } ). requirement ( 1, "show" )
        . onArgsOrMore ( 1, (sender, selectors ) -> {
            sender. sendMessage ( "List of worlds (semi hidden)" ) ;
        } )
        . requirement ( 2, "hidden" ) // mw -> list -> show -> hidden:
        . onArgsOrMore ( 1, (sender, selectors ) -> {
            sender. sendMessage ( "List of worlds (ultra hidden)" ) ;
        } )

) //.permsChecker((sender, perm) -> { //permissions checker (no perms message?)
//    return sender.hasPermission(perm);
//}
). register ( this, "mw", "multiworld", "multiworlds" ) ; //register command with aliases
+ Improved performance of loading & saving YAML files (Whoosh!)
+ Improved performance of lookup for Data Loader
+ Added abillity to make your OWN DataLoader - With ordering of loaders!
Code (Java):
@Override //Inside your plugin's main class!
public void onLoad ( ) {
    DataLoader. register (LoaderPriority. LOWEST, ( ) -> { return new MySuperCoolLoader ( ) ; } ) ;
}

//This is external class!
public class MySuperCoolLoader extends EmptyLoader { //Or just extend DataHolder

    @Override
    public void load ( String input ) {
        reset ( ) ;
        if (input == null )
            return ;
        try {
            //Some loading from input string logic...
        } catch ( Exception er ) {
            reset ( ) ;
        }
    }
}
+ Fixed errors when trying connect to SQL after looong time inactive
----------, Mar 30, 2022

+ Fixed SqlHandler first connection error (Shared section)
----------, Mar 25, 2022

+ Fixed experimental loading on Velocity
----------, Mar 21, 2022

+ Added for developers API.getUser(String playerName) and API.getUser(UUID uuid) back!
+ Added OfflineCache to the API class:
* API.offlineCache()
----------, Mar 21, 2022


+ Added Metrics
+ Added new methods to the StringUtils class:
* int generateRandomInt(int minimum, int maximum)
* double generateRandomDouble(double minimum, doublemaximum)
+ Fixed Config#exists method
+ Added new methods to the PlaceholderAPI class:
* List<String> apply(List<String> text, UUID player)
* PlaceholderExpansion getExpansion(String extensionName)
- Renamed class VersionCheck to VersionUtils
----------, Mar 20, 2022

+ Fixed Compatibility with PlaceholderAPI plugin (Errors on loading)
----------, Mar 17, 2022

+ Fixed loading of plugin on Bukkit/Spigot
+ Fixed searching of Particles
+ Added new method to the Particle class; Set<String> Particle#getParticles()
----------, Mar 17, 2022

+ Reoganized classes & packages.
+ Multi-platform support!
1) Bukkit (Spigot, PaperSpigot...)
2) BungeeCord (WaterFall too!)
3) Velocity

Plugins using TheAPI will be non-compatible with this version, do not update if you are not developer of plugins or you are using plugins that's are not updated to this version or newer!
----------, Mar 17, 2022

+ Fixed loading & creating of chunks (async) **1.7.10 - 1.12.2**
+ DatabaseAPI Queries (Select, Update...) now ignore structure
Code (Java):
DatabaseHandler. SelectQuery. table ( "my_own_table" ). limit ( 3 ). where ( "name", "StraikerinaCZ" ). sortType (Sorting. UP ). sortBy ( "money_balance" ) ;
+ Updated to 1.18.2
----------, Mar 3, 2022

+ Fixed colors in the methods (TEXT&<color>\nTEXT):
- TheAPI#bcMsg
- TheAPI#bc
- TheAPI#msg
+ Improved method StringUtils#getLastColors
+ Fixed errors in the PercentageList#getRandom method when return value of the PercentageList#getTotalChance method was 0 or less than 0
+ GUIs no longer registering (cancelling) "SWAP" action in the gui via numbers on keyboard (Reported by @petulikan1)
+ Added new method to the StringUtils class:
- String[] getLastColorsSplitFormats (String[color, formats] - color is NULLABLE)
----------, Feb 25, 2022

+ Added new DatabaseAPI, example in ⚙『examples』 (little bit outdated)
+ Added new library loader & downloader
- Planned to remove SQLAPI class
----------, Feb 20, 2022

+ Fixed GUI actions (1.7.10 - 1.12.2) https://github.com/TheDevTec/AmazingFishing/issues/5
+ Improved caching of NameTagAPI
+ Fixed NBTEdit class - Creating new instance of NBT
+ Added auto-reconnect to the SQLAPI class
+ Fixed loading of particles
+ Fixed errors on disabling plugin (PacketListener)
----------, Feb 17, 2022

- Removed some classes (APIs):
- TheCoders
- FakeEconomyAPI
- MultiMap
- SortedMultiMap
- SoundAPI
- Removed some methods from StringUtils & BlocksAPI class:
- locationToString
- locationFromString
+ Rewritten NameTagAPI (Now support unlimited prefix & suffix for 1.13+)
- Removed some methods from EconomyAPI class:
- getFakeEconomyAPI(String)
- getFakeEconomyAPI()
+ Fixed errors on cancelling tasks (duplicate)
----------, Feb 5, 2022

+ Fixed errors when cancelling tasks
----------, Feb 5, 2022

+ Mohist 1.16.5 support
+ Added method isJson to the classes:
- Data
- User
- Config
+ Cleared code
+ Fixed NmsProvider#toIBlockData method
+ Added more null checkers
+ Improved canceling of tasks on disabling plugin
+ Fixed random errors on disabling plugin
+ Fixed SQLAPI & reconnect
+ Renamed method hidden() to hide() in the BossBar class
+ Fixed ComponentAPI#fixJsonList method
+ Fixed Component#toJsonMap method errors when color is null
+ Fixed ComponentAPI#toBaseComponent method
+ Fixed NmsProviders - 1.7.10 up to 1.16.5 (bugs)
+ ByteLoader & Saver v3 - Fixed loading & saving
+ Performance improvements
+ Fixed anvil guis
+ Fixed bugs & errors
+ New colors in the console for TheAPI
+ Finally fixed & tested Data#save(DataType.BYTE)
+ Fixed some found bugs in the Data class:
Code (Java):
data. set ( "some.path", int ) ;
String stringValue = data. getString ( "some.path" ) ; //null - NO LONGER!
----------, Feb 3, 2022

+ Added new method to the ResourcePackAPI class: (1.17+)
- setResourcePack(Player player, String resourcePack, String sha, boolean requireRP, String prompt, ResourcePackHandler handler)
+ Fully supporting __1.18__
- Removed classes:
- BarStyle
- BarColor
- HoverMessage
- DataWatcher & DataWatcher utils
- Removed methods from TheAPI class:
- getBossBar
- removeBossBar
- setBossBar
- Removed class (event):
- ConsoleLogEvent
+ Fixed methods in the ComponentAPI class:
- toComponent(String text, boolean skipUrls)
# if you set skipUrls to true, Component'll be without clicable URLs
- toBaseComponent/s
+ Fixed method StringUtils#timeFromString for Months
:exclamation: Version support locked on** 1.7.10** - **1.17.1** (Bcs NMS Providers = In case you would like to support an older version (e.g. 1.5.2), you need to import TheAPI project and create the corresponding NMS Provider class (e.g. me.devtec.theapi.nms.v1_5_R1))
+ Fixed SQLAPI class getTop methods:
- Changed method of SQLAPI class getTop(String table, String orderBy, String column, String identifier, int limit)
--->
getTop(String table, String orderBy, String column, String lookingfor, String identifier, int limit)

+ Fixed loading of arraylists (Reported by @Houska02)
mySuperCoolList:
- "#123456COLORS?"

+ Improved performance of loading of YAML files
+ Fixed SQL errors
+ Fixed some other bugs (I can't remember what all I was fixing)
+ Fixed loading of worlds
+ Fixed errors when someone input item to the GUI via middle click (drop)
+ Fixed bugs in the Json Reader & Writer (Arrays & private classes)
+ Improved speed of opening GUIs (No longer sending packets with Air ItemStack)
+ Fixed errors when loading worlds with custom generator
+ Improved speed of opening GUIs (No longer sending packets with Air ItemStack)
+ Fixed errors when loading worlds with custom generator
- Removed classes:
- NMSAPI
- ChatMessage
+ Added classes:
- NmsProvider Interface
- Component
- ComponentAPI
+ Added new method to the TheAPI class:
- NmsProvider getNmsProvider()
+ Improved performance of classes:
- BlocksAPI
- Position
- ScoreboardAPI

What does this mean?
In case you use the NMSAPI.postToMainThread method, you will have to use a method from the NmsProvider that is not static -> TheAPI.getNmsProvider().postToMainThread (In case of the brave, LoaderClass.nmsProvider.postToMainThread)

->

Some of our plugins may not be fully functional!
Please wait for their updates in their assigned builds channels on our discord.
----------, Dec 12, 2021

+ Brand new JsonReader & JsonWriter classes
- Removed JsonReader and JsonWriter classes
- Removed Reader and Writer classes
+ Added JReader & JWriter interfaces for JsonWriter and JsonReader
+ Added LegacyJsonReader & Writer for 1.7.10 and older​
+ Rework of RankingAPI & SortedMap (Improved, new methods, removed old methods)
+ Improved ChatMessage class (performance and bug fix)
+ Added new placeholders:
Code (Text):
%theapi_user:PATH% (%theapi_user:Money.Default%)
%theapi_user_other:USER:PATH% (%theapi_user_other:StraikerinaCZ:Money.Default%)
%fromTime{STRING}% converts formatted time into numbers (Ex. 54300)
%toTime{LONG}% converts numbers into formatted time (Ex. 5h4m)
+ Improved performance of VersionChecker#getVersion(String currentVersion, String version) method
+ Improved performance of saving and reading YAML files
+ New return of method Data#getDataName for classes:
• User
• MultiMap
• SortedMultiMap
• DataLoader
+ New methods of SQLAPI class:
• List<Object> getTop(String table, String orderBy, String column, String identifier, int limit)
• List<Object> getTop(String table, String orderBy, String column, int limit)
+ Added to the Tags.yml configuration option to set custom suffix for gradient -> {#HEX>TEXT<#HEX}
+ Tasker's method cancel to cancel RUNNING task no longer kills whole task (now Tasker wait until task finish)

- Removed unused EntityCreatorAPI
+ Fixed creating of heads via ItemCreatorAPI (From url, values and name)
+ Fixed AnvilGUI for 1.17+
----------, Oct 23, 2021

+ Added prevention to beware of loading multiple times same user data @Houska02
+ Fixed NMSAPI#getPacketPlayOutEntityDestroy(int... ids) method for 1.17+
+ Fixed world spawn location of Void worlds
+ Optimized PlayerQuitEvent
+ Fixed tab-completer errors of command /TheAPI PluginManager Load [here]
+ Fixed some User data problems
+ Fixed bugs & errors
+ TheAPI is now starting on "startup"
+ Added custom world generator option
bukkit.yml
Code (YAML):
worlds:
  world_name
:
    generator
: "TheAPI:void"
  world2
:
    generator
: "plugin:customGenerator"
Or in the ` Config.yml` in the ` TheAPI` folder:
Code (YAML):
WorldsSetting:
  world_name
:
    Generator
: "plugin:customGenerator"
+ Fixed method Ref#channel(NetworkManager)
+ Fixed registering of PacketListener on server reload - 1.17+
+ Cleared code - PacketHandler_New & Old
+ Fixed compatibility with FastLogin plugin ( https://www.spigotmc.org/resources/14153/) - PacketListener
+ Fixed reflections on 1.17+
- Removed SlowLoop class
+ Fixed some bugs in Position & HoverMessage
+ Fixed ServerListPingEvent for modded servers
+ Improved registering of PacketListeners & calling PacketListener methods PacketPlayOut and PacketPlayIn
+ Improved registering of Event Listeners
+ Added new constructor of User class:
* User(Query)
+ Improved performance of methods in Ref class:
* playerCon(Object entityPlayer)
* network(Object playerCon)
* channel(Object network)
+ New methods in Cache class:
* Query lookupQuery(String name)
* Query lookupQuery(UUID uuid)
+ Optimized searching name & uuid via Cache class
+ Added new methods to the TheAPI class:
* User getUser(Query)
* Cache getCache()
+ Added new method to the Animation class
* void next() - Because method String get() no longer push animation
+ Optimized methods of Position class:
* Position fromString(String)
* String toString()
+ Fixed compatibility with modded 1.7.10 servers (PacketListener) - Special thanks to @Gokan for report!
+ Fix StringUtils#colorize method
+ Optimized StringUtils#colorize method (Bukkit is slow for coloring..)
+ Added new method SQLAPI#createTable(String table, String values)
+ Fixed JSON IChatBaseCompontn for 1.17+
+ Fixed NMSAPI#getPacketPlayOutChat for 1.17+
+ Fixed writing of Strings to the YAML file (Data class)
+ HOTFIX - Fixed GUI clickEvent cancel
+ HOTFIX - Fixed reading of Byte data
----------, Aug 11, 2021

+ Fixed problems with GUIs on 1.17+ (REQUIRE TESTING FOR OLDER VERSIONS - 1.16.5 - 1.7.10)
+ Fixed creating of files (Data class)
+ Fixed some other problems in TheAPI class & TheAPI user command
- Removed ServerMessageReceiveEvent
- Changed constructor of ClientMessageReceiveEvent
- Changed return of method ClientMessageReceiveEvent#getClient from Client to SocketClient
+ Added new interface SocketClient
+ Fixed ChatMessage class: Fixed ClickEvent when converting from ClickEvent (ex. page) to empty one
+ Improved speed of reading & writing YAML files
+ TheAPI User -> AutoClear function now automatically delete empty files
+ Fixed compatibility with 1.17.X
+ Fixed PacketListener
+ Fixed Position#getNMSChunk for 1.13 - 1.16
- Removed EntityMoveEvent
+ Added new constructor of Position class Position(Entity)
+ Some improvements in code
+ Improved some StringUtils class methods
+ Fixed ServerListPingEvent event for 1.17+
+ Added new methods to the ServerListPingEvent event:
* int getProtocol()
* void setProtocol(int protocol)
+ Performance improvements of StringUtils class
+ Fixed EntityMoveEvent event for 1.17+
+ Fixed ChatMessage#toNMS method for 1.17+
+ Improved reading of ByteLoader class
+ Data#toString(DataType#DATA) is now saving in version 2 (Improved saving for safer reading)
+ Fixed bugs

+ Fully customizable time convertor
Are you looking for old time convertor settings?
https://pastebin.com/wNmSMJfE
----------, Jul 16, 2021

+ Added options to disable unused saving of IP & quit time
+ Added new placeholder named **limiter**
Code (Text):
%limiter{value, minimum, maximum}%
# For PAPI:
%theapi_limiter{value, minimum, maximum}%

Example:
%limiter{154, 100, 120}% -> 120
%limiter{14, 1, 15}% -> 14
%limiter{14, 15, 20}% -> 15
----------, Jul 4, 2021

+ Fixed bug with 1.8.8 compatibility (enabled late-bind in spigot.yml) - Bug reported by @Castiel (Big thanks!!)
+ Fixed compatibility with 1.7.10 - Position class & TheMaterial class
+ Added new method TheMaterial#getBlock
+ Fixed MultiThread class - destroying of threads - Bug reported by @Koyere
+ Fixed compatibility with 1.17 - Disabling plugin errors - Bug reported by @Koyere
+ Fixed compatibility with 1.17 - GUIs - Bug reported by @Koyere
+ Fixed PlaceholderAPI#setPlaceholders method
----------, Jun 27, 2021

+ Fixed Airplane 1.17 compatibility
+ Fixed generating of void world (glass block at 0 0 0 is created only if world's folder doesn't exist)
----------, Jun 23, 2021

+ Added support for 1.17
+ Added new method Ref#nmsOrOld(newNmsName, oldNmsName)
* Ref.nmsOrOld("network.chat.ChatHexColor", "ChatHexColor")
+ Fixed name of method ChatMessage#toLegacy
+ Added new method to the ChatMessage class, toNMS
+ Added new AntiFakeBlocks function
+ Fixed updating of lights
+ Improved performance
+ Fixed TheMaterial#getIBlockData method for 1.17+ & Improved performance for 1.13+
+ Fixed GUI titles for Yatopia 1.16.X
+ Fixed ItemCreatorAPI#create for head with empty owner
+ Fixed reading of YAML files
+ Fixed writing of YAML files (#test.path.#here - with comments in section name)
+ Fixed method SerializedBlock#serialize(Position pos, TheMaterial material) for 1.17
+ Fixed compatibility with 1.8.X (Ugh..)
+ Improved GUI click listener
+ Fixed opening of Anvil GUI & normal GUI for 1.17
+ Fixed ParticleAPI for 1.17
+ Fixed ChatMessage#toNMS method for 1.17
+ Fixed TheMaterial#getIBlockData method for 1.17
+ Fixed PluginManagerAPI for 1.7.10 - 1.12.2
+ Fixed GUI actions for 1.8.X
+ Fixed errors on loading chunks (Position#getType) for 1.12.2 and older
+ Fixed GUI creator for 1.8.X
+ Fixed NMSAPI#setNBT and NMSAPI#getNBT methods
+ Improved sending of scoreboard packets
+ Added new method ScoreboardAPI#sendScorePackets
+ Fixed ScoreboardAPI for 1.13 up to 1.16.5
+ Fixed ScoreboardAPI for 1.7.10
+ Fixed Writer & Reader json classes for 1.7.10
+ Fixed loading of plugin on 1.7.10
+ Fixed ScoreboardAPI for 1.12.2 and older (Tested 1.8.8)
+ Fixed bugs
+ Optimized classes
+ Fixed Animation#get method
+ Fixed some bugs
+ Fixed ScoreboardAPI for 1.17
+ Fixed BossBarAPI for 1.17
- Removed unused ClickType.MIDDLE_DROP
----------, Jun 21, 2021

+ Fixed loading of yaml configs
----------, Jun 9, 2021

+ Added PropertiesLoader
+ Improved performance of methods:
- Data#toString -> Data#save
- T PercentageList#getRandom
- T StringUtils#getRandomFromList(List<T> list)
- TheAPI#getOnlinePlayers
- TheAPI#getOnlineCount
+ Added new method T StringUtils#getRandomFromCollection(Collection<T> collection)
+ Fixed bugs
+ Improvement time loading of YamlLoader
+ Fixed errors & bugs on 1.7.10
+ Fixed DataType.BYTE saver for null values
+ Added new methods to the SQLAPI class
+ Fixed Cache#lookupNameById
+ Fixed Data#save method
+ Fixed Cache#lookupNameById
+ Fixed Data#save method
+ Improved performance of Schematics, Position & TheMaterial classes
+ Added new methods to the SQLAPI class
+ Fixed SortedMap#sortByValue method
+ Fixed ParticleAPI - Item
+ No longer registering of schedules on disabling plugin
+ Fixed registering of PacketHandler for modded servers & 1.14 - 1.15 versions
+ Fixed reading & writing of DataType.BYTE - PLEASE, DELETE Cache.dat AND Data.dat FILES FROM THEAPI FOLDER
+ No longer sending unused packets if title doesn't change - GUI & AnvilGUI
+ Improved performance of SortedMap class & CHANGED RETURN VALUE:
- LinkedHashMap -> Map
+ Fixed disabling plugin error when plugin or another plugin tries to start new runnable task
----------, Jun 6, 2021

+ Fixed version - plugin.yml
+ Fixed ScoreboardAPI on 1.7.10
+ Fixed support with modded 1.7.10 (Horrible verrsion)
+ Optimized Ref#sendPacket
+ Fixed /TheAPI Info command on 1.7.10 modded
+ Fixed handling of PacketHandler on 1.7.10 modded and OLDER
+ Fixed ScoreboardAPI
+ Fixed NMSAPI#postToMainThread on 1.7.10 and older
+ Fixed NMSAPI#setNBT method
+ Fixed TheAPI#calculate method
+ Fixed GUI & AnvilGUI title length limit for 1.8.8 and older
----------, May 22, 2021

+ Improved loading of files
+ Method Object[] getOrCreateData(String key) of Data class is now public
+ Added new method DataLoader getDataLoader to the Data class
+ Improved parsing of ItemStack and other Objects - Reader class
----------, May 16, 2021

+ Improved Saving, Getting, Finding... and other methods in the Data class
+ Fixed Data#save for DataTypes: JSON, BYTE
+ Fixed multiple saving of schematic
+ Fixed PunishmentAPI#tempJail
+ Optimized TheAPI Schematics - 50% faster!
+ Fixed ScoreboardAPI - 15 lines & destroying SB
+ Fixed MultiMap#toString method
+ Fixed ParticleAPI for 1.13.X
+ Added new method Particle#isValid
+ Added new methods Position#setAir and Position#setAirAndUpdate
+ Fixed TheAPI command:
* TabCompleter
* Mw Teleport
+ Fixed opening of GUIs on Spigot Forge servers
+ Fixed support for Spigot Forge servers
+ Added new method to AnvilGUI & GUI: onPreClose(Player)
+ Fixed item pickup when Shift + Right Click on item that close GUI
+ Fixed errors in console on close GUI
+ Fixed CooldownAPI
----------, May 15, 2021

+ Fixed Position class methods getBlock, getBlockX, getBlockY and getBlockZ
+ Fixed StringUtils#colorize method
~ Changed return of BlockMathIterator class from int to double
----------, Apr 25, 2021

+ Optimized Sockets (from ~12% CPU usage to ~1%)
- Removed options for sockets speed (Sockets are now instant)
+ Improved of loading User data on login
+ Fixed StringUtils#join methods
+ Improved performance of generating of random secure key for Sockets
+Added translatable TimeConvertor
+ Fixed converting of String of URLs of ChatMessage class (json)
+Fixed Ref#existsMethod method
+ Added new methods to the ChatMessage class:
* Object toIChatBaseComponent(String text)
* Object toIChatBaseComponent(ChatMessage text)
* ChatMessage fromIChatBaseComponent(Object component)
+ Method StringUtils#gradient(String text, String fromHex, String toHex) is now public static
+ Improved performance of StringUtils#gradient(String text, String fromHex, String toHex) -> ... -> StringUtils#colorize(String text)
+ Fixed Scoreboard bugs for 1.12.2 and older
+ Fixed TabCompleter for TheAPI command
+ Added missing methods to the NBTEdit class:
* boolean hasKey(String)
* void remove(String)
----------, Apr 23, 2021

+ Added new methods to the Position class:
* setBlockData(BlockData)
* setState(BlockState)
* setBlockData(Position, BlockData)
* setState(Position, BlockState)
+ Fixed Position#set for TileEntities (No longer invisible banners!)
+ Fixed Position#getType (Now return correctly Material type)
+ Fixed rotating of torches and other wall blocks (Schematic)
+ Fixed AnvilGUI - Opening & Actions
+ Fixed NMSAPI#postToMainThread for 1.12.2 and older (Reported by @_Xglock)
+ Fixed colorizing of GUIs for 1.12.2 and older (Reported by @_Xglock)
+ Clearing Title, actionbar, BossBar and Scoreboard on disabling TheAPI (Reload?)
----------, Apr 10, 2021

+ Improved security of Map<String, Object[]> when saving Data to File/String - We copy this map and then we save it
+ Fixed bugs
+ No longer hiding PacketListener errors
+ Fixed GUI bugs & problems
+ Fixed Data#remove method (Sometimes removes whole config)
+ Fixed some server freeze bugs in other loaders of configs (ByteLoader, JsonLoader...)
+ Added locker for saving of config to the file (To prevent of 2x saving at same time same config)
+ Fixed GUI for 1.15.2 and older
+ Improved performance of set, remove and save methods in the Data class
+ The methods in the Data class are now synchronized
+ Fixed problems with JSON (Saving json text to yaml file)
+ Fixed Data#merge method (Comments)
+ Improved getString method of Data class (-> Config & Section classes, now return same value as is in config file/string content, not converted value)
+ Added new methods to the SignAPI class:
* getLines(Position)
* setLines(Position, String...)
- Changed methods constructors in the SignAPI class:
* From setActions(Sign sign, Map<SignAction, List<String>> options) to setActions(Position posOfsign, Map<SignAction, List<String>> options)
* From getSignActions(Sign sign) to getSignActions(Position posOfsign)
+ New methods in the NMSAPI class:
* getFixedIChatBaseComponent(String text)
* fromComponent(Object component)
+ Fixed StringUtils#fixedSplit method
+ Improved performance of StringUtils#colorize(String) method (&u)
+ Improved performance for other methods/apis using CraftBukkit's CraftMessage class (-> ChatMessage class)
+ Fixed bug with sharing hoverEvent, clickEvent and insertion in JSON text
+ Improved performance of gradient
+ Fully random selection of gradient format of &u rainbow for 1.16+
+ Fixed ChatMessage (colors)
+ Improved performance of getLastColors method
+ Improved gradient (no longer coloring spaces and adding color to the end of string - unused)
+ Fixed bugs in the /theapi info - server version (null text)
+ Added new methods to the Config class:
* loadConfig(Plugin plugin, String configPath, String outputConfigFile)
* loadConfig(Plugin plugin, String configPath, String outputConfigFile, DataType type)
+ Improved loading of custom configs via TheAPI typed in plugin.yml
+ Fixed opening of GUI on 1.8.x (Bug reported by @XglockManLP)
+ Fixed TabList Header & Footer on 1.8.X (Bug reported by @XglockManLP)
+ Improved clearing cache of opened GUI on close (client-side close)
+ Fixed bugs in GUIs
+ Improved performance of setTitle method of GUIs
+ Fixed a bug that caused wheel (MIDDLE) click actions to never be invoked (GUI)
+ Fixed bug when arrested player can process commands
+ Mute is no longer canceling PlayerChatEvent event, but hides message to other players (Request from Semtexka)
+ New StringUtils#fixedFormatDouble(double) method (Format double to String correctly:
* 20.00 -> 20
* 20.10 -> 20.1
* 20.0 -> 20
* 20.0001549898 -> 20
+ Fixed HoverMessage#setColor(ChatColor) method
+ New formating of double values
+ Added ResourcePackAPI (Request from @KingKilo) - 1.8+ only
+ Added Auto-save of Users data (Every 5min)
- Renamed package thapiutils to theapiutils
+ Methods TheAPI#sudoConsole & TheAPI#sudo now runs method TheAPI#dispatchCommandAsync
+ Added new dispatchCommandAsync(CommandSender sender, String cmdLine) method to the TheAPI class (Method is ignoring AsyncCatcher of Spigot)
+ Removed unused checker for nulled header or footer in TabListAPI
+ Fixed errors in ChatMessage class
- Removed ChatMessage#fixMap method (Causes errors)
+ Added new SpigotUpdateChecker class (constructor: new SpigotUpdateChecker(String version, int spigotId)
+ Added new VersionChecker class with methods:
* Version getVersion(String currentVersion, String checkVersion)
----------, Apr 6, 2021

+ Fixed names of custom events "ClientReceiveMessageEvent" and "ServerReceiveMessageEvent"
----------, Mar 10, 2021

+ Added Metrics
+ New ChatMessage class
+ Improved registering of custom events via TheAPI
+ Fixed bug in HoverMessage class with "uknown" color
+ Added new StringUtils#getLastColors(String) method (With HEX support)
+ Improved GUIs click handler
+ Added new AnvilGUI gui type (Constructor: AnvilGUI(String title, Player... player)
+ Changed return of GUI#getPlayers method from List<Player> to the Collection<Player>
+ New method GUI#getContainer, returns opened Container of player (NMS part)
+ New look like of TheAPI Info command (Removed Worlds & Players)
+ Fixed HoverMessage#setClickEvent method
+ Fixed errors on startup
+ Fixed TheAPI#getUser method for servers with online-mode
+ Fully async GUIs
- Changed GUI#onClick(Player, GUI, org.bukkit.event.inventory.ClickType method values to the GUI#onClick(Player, GUI, me.devtec.theapi.guiapi.GUI.ClickType)
----------, Mar 10, 2021

+ Fixed StringUtils#colorizeMap/Array.. methods
+ Fixed errors of GUI#close() method
+ Fixed errors on loading plugin
+ Added new methods to the Data class:
  • boolean existsKey(String pathKey)
  • boolean setIfAbsent(String path, Object value)
+ Improved Async & Sync tasks handler (Scheduler.class)
+ Improved methods getServer, getServerThread and postToMainThread(Runnable) methods in the NMSAPI class
+ Optimized ChatEvent, BlockBreak and BlockPlace events (Special thanks to @mattrobb for report this bug) - PlayerBanlist
+ Reduced spam in console for Java 11 - 14 with reason "Warning nashorn engine is planned to be removed from a future jdk release"
+ Optimized EntityMoveEvent
+ Improved TheAPI custom event handler & processor
+ Improved ServerListPingEvent
+ To the class PlayerProfile added new methods:
  • getUUID
  • getName
  • setUUID(UUID)
  • setName(String)
+ Class PlayerProfile have new constructors:
  • PlayerProfile(String, UUID)
  • PlayerProfile(String)
  • PlayerProfile(UUID)
  • PlayerProfile()
+ Added new option to the Config.yml "Options.SocketsSpeed"
- Removed TheAPI#isOlder_9 method (Use method TheAPI#isOlderThan(9))
+ Fixed PacketListener#unregister method
+ Improved /TheAPI PluginManager command (No longer required case sensetive for plugin names)
- Removed PlayerJumpEvent
- Changed method return of method getItemGUIs from HashMap to Map
+ Opening & closing of GUIs now can be triggered asynchronous
+ Added new methods to the GUI class:
  • getPlayers
  • hasOpen(Player)
  • setTitle(String)
  • getTitle
+ Fixed ItemCreatorAPI (Attributes - Can't cast HashMap to Multimap)
+ Improved Unbreakable flag for items created by ItemCreatorAPI (No longer adding unused Lore, now for CraftBukkit using item NBT, for Spigot using Spigot unbreakable version)
- Removed PlayerItemBreakEvent (Reason above)
+ Added new EmptyItemGUI class new EmptyItemGUI(ItemStack) - Without actions
+ Added new static fields (helpers) to the GUI class:
  • LINES_6 = 54
  • LINES_5 = 45
  • LINES_4 = 36
  • LINES_3 = 27
  • LINES_2 = 18
  • LINES_1 = 9
+ Added new methods to the Ref class:
  • invokeStatic(Class, String, Object... val)
  • invokeStatic(Method, Object... val)
  • getStatic(Class, String)
  • getStatic(Field)
+ Added new methods to the NMSAPI class:
  • getNBT(ItemStack)
  • getNBT(Object itemStack)
  • parseNBT(String)
  • setNBT(ItemStack, String)
  • setNBT(ItemStack, Object nbt)
  • setNBT(Object itemStack, Object nbt)
  • asNMSItem(ItemStack)
  • asBukkitItem(OBject itemStack)
+ Added new class NBTEdit, constructors:
  • NBTEdit(ItemStack)
  • NBTEdit(Object nbt)
+ Fixed Scheduler (Cancelling tasks - loops)
+ The scheduler is now formed by a queue for tasks
+ New method in Scheduler & Tasker: repeatingTimes(long delay, long period, long times, Runnable runnable, Runnable onFinish)
- Removed PlayerVanishEvent class
- Removed from Events automatic vanish
- Removed canSee, hasVanish setVanish methods from TheAPI
+ Added Auto-Clearing of inactive users (Period can be edited in config)
+ Added Caching of player names & uuids
- Removed many and many methods from NMSAPI (Unused methods)
+ Fixed registering of other plugins not based on TheAPI on the server version Paper 1.8.8
+ Fixed SimpleScore.class method addLines(List<String>)
+ Removed debug for Paper 1.8.8
+ Fixed kick from the server on the server version Paper 1.8.8 (TabList)
----------, Mar 1, 2021

+ Fixed error on Yatopia Asynchronous notify call
+ Added new methods to the BlocksAPI getState(Position, String name), setState(Position, String name, Comparable value) and findState(Position, String name) - Fully async!
+ Method StringUtils#timeToString(long) now returns all time units (Ex. DayHourMinuteSecond -> 1d2h15m25s)
+ Added Schematic#data method, returns SchematicData
+ Fixed removing & adding TileEntities to the world (Position.class)
+ Rebuild async part of TheAPI (BlocksAPI - Position.class) - Fixed problem with connection to the server "Failed to verify username"
+ Fixed warning in console when registering placeholder/s
+ Fixed WorldSchematic & VirtualSchematic
- Removed unused BlockSave classes & load(Position,BlockSave), getBlockSave(Position) methods from BlocksAPI
- New format of saving & loading BYTE data of Files
----------, Feb 5, 2021

+ Added VirtualSchematic (Working as worldedit "copy" command)
+ Renamed AsyncSchematic class to WorldSchematic (Working as worldedit normal schematic file)
+ Fixed errors on executing TheAPI commands on Paper 1.8.8
+ Fixed tab-complete of plugins to load for TheAPI Pm Load command
+ New methods in PluginManagerAPI
+ Fixed PluginManagerAPI bugs TheAPI Pm ReloadAll now reload TheAPI too!
+ To the CooldownAPI class added new constructor new CooldownAPI(Player)
+ Fixed Animation class
+ Fixed Position & TheMaterial classes (Getting of Material Type & Data is now correct)
+ Fixed loading of comments of YAML files
~ Data#merge method newly return boolean (If the return is true, it means that something has been added to the Data)
- Removed old Schemate and Schema classes
- Removed some weird named methods from PluginManagerAPI
----------, Jan 30, 2021

~ Removed UnsortedMap, UnsortedSet and UnsortedList for some performance issues
+ Optimized events
+ Added new options to config to disable events in TheAPI (PlayerJumpEvent, PlayerMoveEvent)
+ Fixed 1.8.8 support for Json parser
+ Fixed sockets
+ Solved CPU usage
+ Added mising null checkers
+ Added class ServerHandler
~ Changed method Reader#read(ClientHandler handler, String text) to Reader#read(ServerHandler handler, String text)
+ Fixed setTimeToString and getTimeFromString methods
+ Fixed PunishmentAPI
----------, Jan 17, 2021

~ Renamed package names
+
Added config Sockets.yml
+
Added method getSocketServer & getSocketClient(Name) to TheAPI.class
+ Added BungeeCord & Spigot bridge - Sockets:
* New event ServerReceiveMessageEvent
+
Fixed bugs
+
Added SimpleScore class (Easier manipulation with ScoreboardAPI)
+ Fixed animation.class tick speed
+
Replaced ArrayList with faster UnsortedList
+
Replaced HashMap with faster UnsortedMap
+
Replaced HashSet with faster UnsortedSet
+
Changed getFooter & getHeader return methods in Config, Section and Data classes from List to Collection
+
Added StreamUtils class
+
Moved some methods from classes Decompression and Compression to Compressors
+
Fixed reading of files
+ Fixed UnsortedList, UnsortedSet and UnsortedMap
-
Removed classes Decompression & Compression
----------, Dec 27, 2020

+ New class UnsortedList
~ Renamed classes:
  1. NonSortedMap to UnsortedMap (Faster than HashMap)
  2. LinkedSet to UnsortedSet (Faster than HashSet)
+ Fixed ParticleAPI for 1.12.2 and older (Redstone colors)
+ Fixed bugs
----------, Nov 28, 2020

+ Optimized quit event
+ Added ParticleAPI (1.7.10+)
+ Optimized join event
+ Moved PlayerVanishEvent from Bukkit events to TheAPI events (PlayerVanishEvent is now async)
+ Fixed bugs
- Removed getPacketPlayOutWorldParticles from NMSAPI
----------, Nov 25, 2020

+ Fixed formats in gradient text
----------, Nov 22, 2020

+ Added update checker
+ Added gradient tags (Example: "!!fireText here!!lime", Special thanks to @petulikan1 )
+ Added new config with Tags (Tags.yml)
+ Fixed WorldsAPI method
+ Fixed bugs
----------, Nov 22, 2020

+ Fixed many bugs
+ Fixed Json Writer & Reader
+ Fixed Loader of JSON, DATA and BYTE
+ Fixed handling of commands
+ Fixed HoverMessage class
+ New colors for &u on 1.16+
+ New classes inside Json package: JsonWriter, Writer, JsonReader, Reader
+ Fixed loading of YAML (Reading "" lines)
~ Renamed method getLines, setLines.. to getCommands, setComments in Data.class
- Removed TNTTask
- Removed NMSPlayer and some NMS classes
----------, Nov 18, 2020

+ Fixed loading & saving of YAML
+ Fixed errors on loading
+ YAML is no longer auto-sorted:
Code (Java):
  a : 1
  c : 2
  b : 3
    -->
  a : 1
  b : 3
  c : 2
+ Added missing methods to Config & Section classes
+ New method List<E> getListAs(String key, Class<? extends E>) in Data.class
+ Fixed bugs
----------, Oct 13, 2020

+ Fixed & optimized loading and saving of Data.class
+ Declared ConfigAPI.class, please use Config.class
+ Added new method getLookingBlock to the BlocksAPI
----------, Oct 7, 2020

v4.9 Performance update
+ Faster saving of Data.class
+ New type of saving Data.class:
~ Renamed DATA to BYTE
+ Added DATA
+ Added new methods to Ref.class
+ To Config.yml added comments (Configuration created by Config.class)
+ Fixed loading of JSON
+ Fixed /TheAPI command TabCompleter
+ Fixed Scheduler (Tasker)
+ Fixed NMSAPI method postToMainThread(Runnable)
+ Fixed BlocksAPI
~ Renamed methods in Scheduler & Tasker classes
----------, Oct 4, 2020

+ New options ' Options.Cache.User.Use' & ' Options.Cache.User.RemoveOnQuit'
->
Options.Cache.User.RemoveOnQuit
= When the player disconnect from the server, clear the player cache?
Options.Cache.User.Use = Can TheAPI cache User.class?

+ Fixed saving of Data.class of type YAML
+ New SortedMultiMap.class
+ New custom event listeners (These events can be called from TheAPI.class)
* me.DevTec.TheAPI.Utils.Listener.Event.class
* me.DevTec.TheAPI.Utils.Listener.Listener.class
* New custom event 'ServerListPingEvent'

+ Removed google imports (Lists, Maps..)
+ New TheAPI PlaceholderAPI bridge for TheAPI placeholders (ThePlaceholderAPI) -> %TheAPI_{The_Placeholder}%
* What does it mean? You can now register your placeholder only in TheAPI via ThePlaceholderAPI.class, these placeholders are now also available in PAPI

+ To ThePlaceholder.class added register and unregister methods
+ New Maker.class & jsonmaker package (Custom JSON - Saving and Getting)
+ Fixed saving of objects for Data.class to Json
+ Added new enum JSON for saving of Data.class
+ Fixed bugs & Removed unused
----------, Sep 26, 2020

+ Loading before MobArena plugin
+ Added option to select saving-type of Users data
+ Fixed User.class & Data.class (Mirror bug)
* Fixed converting YAML to DATA and vice versa
* Fixed loading & saving Data.class
* Added ability to load bukkit config list/string
* New system of storing comments
+ Fixed ServerList MOTD, PlayerCount.. and cleaned up code
+ Fixed ScoreboardAPI (Teams & Packets for 1.13+)
+ Switched ConfigAPI.class with Data.class in User.class
+ Optimized BossBar for 1.8.8 and older
+ To TheAPI.class added new methods createCommand(String name, Plugin plugin) and registerCommand(PluginCommand command)
+ To the SQLAPI.class added new methods with PreparedStatement & getPreparedStatement(String command)
+ In the BlocksAPI.class fixed async methods
+ To the BlocksAPI.class added (a)synchronizedSet(Position a, Position b, PercentageList<TheMaterial> with)
+ Fixed PlaceholderAPI & ThePlaceholderAPI classes
----------, Sep 2, 2020

+ Support 1.7.10
~ Reorganized project
~ Renamed GUICreatorAPI.class to GUI.class
~ Renamed WorldsManager to WorldsAPI (Shorted name of class)
+ To WorldsAPI added new method create(String, Environment, WorldType, ChunkGenerator, boolean, long)
+ Added SortedMap.class
+ Changed RankingAPI<T> to RankingAPI<K, V> (Allows to sort: String, BigDecimal, Integer, Double..)
+ Fixed methods isNewerThan & isOlderThan
----------, Aug 24, 2020

+ Fixed schemates & added compression
+ New classes for Schemates (What about counter of set blocks ?)
+ Added Config classes (Config.class)
+ Fixed support for 1.8.8 and older versions ( NameTagAPI)
+ Removed debug
----------, Aug 10, 2020

+ New PacketListener ( Listener.class) - Something like ProtocolLib and Packet Listeners
+ New shorter name of Reflections class with more useful methods ( Ref.class)
+ New classes: Animation.class and PercentageList.class
+ Fixed some bugs
+ Fixed ThePlaceholderAPI
----------, Aug 2, 2020

+ BossBars for 1.8.8 and older
+ New static methods in ItemCreatorAPI
+ Fixed TabCompleter for /TheAPI command
+ Added ThePlaceholderAPI (With basic placeholders like %math{5-7*9}%, %player%, %server_time%..)
+ Added new methods to RankingAPI & Changed Double to BigDecimal
+ Removed unused methods from CooldownAPI
+ Added to TheAPI class method getCooldownAPI(Player)
+ Fixed bugs in ScoreboardAPI
+ Fixed errors in /TheAPI test GUICreatorAPI (For server versions 1.12.2 and older)
+ Added more options to ScoreboardAPI (Use teams or default offline players or packets for more chars on one line, but can sometimes flash) -> TheAPI.getScoreboardAPI(Player, Packets, Teams)
+ Fixed some bugs and errors
+ Fixed player kick (Caused by PacketListener)
+ Added PacketListener class to hook listening of packets
+ Added simple "plugman" to TheAPI command ( / TheAPI PluginManger Load/Unload/Enable... <plugin> )
- Removed PacketReceiveEvent and PacketReadEvent events
- From TheAPI class removed getGUICreatorAPI(player) (Now you must create GUI manually: new GUICreatorAPI(Title, Size, Players...))
~ Rewrited & New methods in GUICreatorAPI
~ Rewrited MultiMap
----------, Jul 20, 2020

~ Moved whole project to another package
~ Rewrited GUICreatorAPI, EnchantmentAPI and RankingAPI

+ Fixed bugs and errors
+ Added new methods and APIs
+ GUICreatorAPI now can be edited when it is opened & Can open to another players -> 1 GUI for 5 players
+ Removed unused
+ Fixed player kick from server (PacketListener)
+ Added to TheAPI command, PluginManager
+ TheAPI test command now can be used without op (Just with permission 'TheAPI.Command.Test')
+ Added new methods to NMSAPI, RankingAPI, GUICreatorAPI, ConfigAPI, ScoreboardAPI, StringUtils, Position and BlocksAPI
+ Added Schemate & Schema classes
+ Added PacketListener class to register your listeners
+ TimeConvertorAPI (StringUtils) now allow you to convert complex time inside String to long (For ex. 5d9min24s)
- From TimeConvertorAPI removed century & ability to edited these suffixes in config
- Removed events PlayerPacketReceiveEvent & PlayerPacketReadEvent
----------, Jun 24, 2020

+ Fixed errors when IP of player is null (PunishmentAPI)
----------, May 26, 2020

+ Fixed bugs and errors
+ Fixed compatibility with 1.8.8 and older versions
+ New NMSAPI API
+ NMS: Added PlayerConnection, Player and NetworkManager classes
+ Other: Added Position and TheMaterial classes
+ Added Tasker class (Like BukkitRunnable)
+ Added new events & Fixed current
+ Added User class ( Per user file like in Essentials)
+ Added SignAPI
+ To the SQLAPI added new methods
+ Fixed TheCoder ( getLocationAsString)
+ GUICreatorAPI (GUI) now can be edited when it is open (Now you can just update item without reopening whole gui menu)
~ Rewrited MultiMap class
~ Rewrited EnchantmentAPI (From class to Enum)
~ Rewrited ScoreboardAPI (Now using NMS for more chars)
~ Rewrited BlockAPI (Plugins using this API require update!)
~ Rewrited PunishmentAPI(Plugins using this API require update!)
~ Renamed TheRunnable to Scheduler
- Removed ScoreboardAPIV2 & 3
- Removed ParticleAPI ( Use NMSAPI for particles)
- Removed LagChecker (Causes lags)
----------, May 26, 2020

+ Added new methods to StringUtils
+ Updated some methods
+ Added new method to TheRunnable, runRepeatingFor(Runnable repeating, Runnable onEnd, long periodAndRepeatTime)
+ Fixed some bugs
+ Optimized ScoreboardAPIV2
+ Fixed ItemCreatorAPI
----------, Mar 11, 2020

+ Added many new methods to ItemCreatorAPI (Upgrade ItemStack without creating new or rewriting options on current ItemStack)
----------, Mar 9, 2020

+ New ScoreboardAPIV2 class (Example: https://github.com/TheDevTec/TheAPI/blob/master/src/me/Straiker123/Utils/TheAPICommand.java#L117)
+ Added new test commands to /TheAPI Test
+ Fixed bugs on 1.7.10 and other bugs
----------, Mar 9, 2020

+ Added StringUtils
+ To the LagChecker added TNT optimization
+ New event TNTExplosionEvent
+ Removed unused
+ Fixed scoreboard
+ Fixed errors on 1.7.10
+ Fixed RankingAPI
+ Added setPotionColor, addPotionEffect to ItemCreatorAPI ( Only for Potions)
+ Optimized events
----------, Mar 6, 2020

+ Added RankingAPI
+ Optimized EntityMoveEvent
+ Added LagChecker function
+ Fixed bugs
+ Created new UnusedData.dat file - This data file can be deleted
+ Fixed safeTeleport
+ New methods in PlayerAPI (sendMessage alias to msg, sendMsg alias to msg)
+ New methods in TheAPI (sendMessage(String, CommandSender), sendMsg alias to sendMessage, msg alias to sendMessage, getRankingAPI(), getOnlinePlayers(), getPlayer(String), getPlayer(int), getRandomPlayer(), getMaxPlayers())
- Removed CountingAPI
----------, Feb 24, 2020

+ Fixed BanIP & TempBanIP
+ Fixed format of TempBanIP (Required reset Config.yml of TheAPI)
+ Fixed errors
----------, Feb 11, 2020

+ New methods in BlocksAPI
+ Improved getting blocks in BlocksAPI
+ Fixed bugs
----------, Feb 4, 2020

+ New methods in BlocksAPI
+ New BlockSave class, Available from BlocksAPI class
+ New subcommand 'Test' for /TheAPI (Only for OP players)
+ Fixed TabCompleter of TheAPI command
+ Fixed BossBar (You can now spam the creation of BossBar)
+ Removed unused
----------, Jan 31, 2020

+ Support for servers with version 1.7.10 up to 1.15.2
+ Fixed bugs (GUI and other classes)
+ Optimized plugin and events (GUI Events)
+ Now you can fully disable EntityMoveEvent in config
+ Added new HorseOptions setting to the EntityCreatorAPI
+ Added new hasOpenGUI boolean to the PlayerAPI
+ Fixed title for 1.8+ (untested)
+ Fixed safeTeleport(location)
+ New BlocksAPI - Get all blocks around specified Location
+ Fixed Void generator for 1.7.10+
+ Added new methods to the CooldownAPI instanceof old methods
+ Fixed SQLAPI
+ Fixed errors these spam console
+ Removed unused
- Removed EntityBreedEvent
----------, Jan 30, 2020

+ Optimized events (GUI events and PlayerQuit event)
+ New option to run EntityMoveEvent slower
+ Fixed errors in console (Checking if the player's name is an IP address)
+ New getPlaceholderAPI() method in TheAPI
+ Fixed sendTitle(Player, String, String) method in TheAPI (It was non-static)
----------, Jan 2, 2020

+ EntityCreatorAPI have new options for Entities (Still working on it)
  • setTNTOptions(HashMap<TNTOptions, Object>) - Working only if EntityType is PrimedTNT
  • setVillagerOptions(HashMap<VillagerOptions, Object>) - Working only if EntityType is Villager
  • setArmorStandOptions(HashMap<ArmorStandOptions, Object>) - Working only if EntityType is ArmorStand
+ New FakeEconomyAPI - Return plugin economy (Economy stored in config of TheAPI, isn't connected to the Vault plugin)
+ WorldsManager have some new methods - Shorts of existing methods
+ WorldsManager have new method delete(World, safeUnloadWorld, keepFolder)
+ SoundAPI have some new methods - Shorts of existing methods
+ PluginsManagerAPI have new methods:
  • getDepend(String plugin) - Return List<String>
  • getSoftDepend(String plugin) - Return List<String>
  • getAuthors(String plugin) - Return List<String>
  • getAPIVersion(String plugin) - Return String
  • getVersion(String plugin) - Return String
  • getWebsite(String plugin) - Return String
  • getMainClass(String plugin) - Return String
+ PlayerAPI have new methods:
  • safeTeleport(Location) - Find location in which isn't under player: Lava, Air
  • safeTeleport(Location, TeleportCause)
+ Fixed EnchantmentAPI
+ ItemCreatorAPI have "fix" for version under 1.13, option setUnbreakable now working for all versions, but item is still damagable, when item is destroyed, event is "cancelled" and item is given to the player (fixed)
+ Fixed ConfigAPI
+ Some changes in CountingAPI (Collection<thing> changed to List<thing>)
----------, Dec 29, 2019

+ Fixed errors when enabling plugin
+ Fixed ConfigAPI
----------, Dec 26, 2019

+ New Vault hooking
+ Fixed errors in ScoreboardAPI
+ Fixed errors from PunishmentAPI
+ To TheAPI added isVanished(Player) method
+ To the EnchantmentAPI added getEnchantments(ItemStack) method
+ To the ItemCreatorAPI added new methods:
  • setBookAuthor(String)
  • setBookTitle(String)
  • addBookPage(String)
  • addBookPage(int, String)
  • setBookPages(List<String>)
  • setBookGeneration(Generation)
----------, Dec 26, 2019

+ Fixed support for servers version 1.15+
+ Added support for 1.8.X
+ New events:
  • DamageGodPlayerByEntityEvent
  • DamageGodPlayerEvent
  • EntityMoveEvent
  • PlayerItemBreakEvent
  • PlayerJumpEvent
+ Fixed TheAPI
+ Fixed other bugs
+ Added isNewVersion() method to TheAPI, return true if server version is 1.13+
----------, Dec 18, 2019

+ Fixed errors these spam console
+ Added Jails
+ Fixed TempBan
+ Added JavaDocs
+ God now fully working (If player is in god mode, player can't be hit by void and other things)
+ Fixed errors in TabCompleter of TheAPI command
+ Fixed ClearCache command
----------, Dec 13, 2019

+ Fixed errors when processing TheAPI ClearCache command
+ Added precaution before other errors
+ Added removeActionBar(player) method
+ Added sendTitle(player, firstLine, nextLine) instanceof TheAPI.getPlayerAPI(player).sendTitle(firstLine, nextLine);
~ Fixed and renamed ReportSystem, renamed to getReportSystem
----------, Dec 13, 2019

+ TheAPI is no longer deactivated for not using by another plugin
+ Added to the WorldsManager load(world, generator, type) method
+ Added to the WorldsManager createWorld(world, generator, type) instanceof createWorld(world, generator, type, true, 0)
+ Added support for 1.15
+ Expanded TheAPI command, Added these subcommands:
- Info
- Reload
- ClearCache (Required testing)
- WorldsManager (Required testing)
+ 3 New events:
- GUIOpenEvent
- GUIClickEvent
- GUICloseEvent
+ Permissions:

- TheAPI.Command.Info
- TheAPI.Command.Reload
- TheAPI.Command.ClearCache
- TheAPI.Command.WorldsManager
----------, Dec 12, 2019

+ Added EntityCreatorAPI
+ Fixed bugs in TheAPI
-- PluginManagerAPI --
+ Added unloadPlugin(plugin) - Required testing
+ Added isEnabledPlugin(pluginName)
+ Added reloadPlugin(plugin) - Required testing
+ getCommands(plugin) - Return List<String>
+ getPermissions(plugin) - Return List<Permission>
+ getPluginsToLoad() - Return List<String>
-- PluginManagerAPI --
----------, Dec 9, 2019

+ Fixed errors in console
----------, Dec 7, 2019

+ Added GameAPI (testing)
+ Added WorldBorderAPI
+ Added TempBanIP(string) - can be IP & player
+ To the PunishmentAPI added existPlayerOrIP method
+ To TheAPI added buildString(String[]) method
+ Updated generateRandomInt and generateRandomDouble methods
+ Updated removeBossBar and getBossBar methods <- getBossBar now return List<BossBar>
+ Added to the PunishmentAPI BanIP(string) method - can be IP & player
+ Fixed many bugs
- Removed from PunishmentAPI these methods: BanIP_Player, BanIP_AddressIP
- Plugins using PunishmentAPI -> BanIP_Player or BanIP_AddressIP required Update!
----------, Dec 7, 2019

+ Fixed GUICreatorAPI - Heads (repeat)
+ Fixed getRandomFromList
----------, Nov 29, 2019

+ Fixed support for 1.13+
+ Added generateInt(maxInt) and generateDouble(maxDouble) method
----------, Nov 29, 2019

+ Fixed bugs with minecraft versions 1.8.8 - 1.13.2
+ Fixed GUICreatorAPI
+ Fixed ItemCreatorAPI
+ Fixed EnchantmentAPI
+ Fixed PunishmentAPI
+ Added getServerUpTime method
+ Added getServerStartTime method
- Plugins using ConfigAPI required update!
Reason: Updated methods for ConfigAPI -> now returning boolean if config is created/deleted/saved or reloaded without problems.
----------, Nov 28, 2019

+ Fixed SoundAPI
+ Fixed GUICreatorAPI (again)
+ Fixed WorldManager
----------, Nov 26, 2019

+ Fixed void generator for 1.8.8
+ Fixed GUICreatorAPI
+ Fixed WorldManager
+ ActionBar for 1.8.8
+ Fixed ItemCreatorAPI for all versions under 1.14
----------, Nov 25, 2019

+ Fixed GUICreatorAPI bug when you set to the gui item with data, item doesn't work
----------, Nov 25, 2019

+ Fixed support for servers version 1.8.8+
+ Added getRandomFromList(List<Object>) method - Return Object
+ getServerUpTime method - return long
+ getServerStartTime method - return long
----------, Nov 25, 2019

+ Fixed non-static methods in TheAPI
+ Fixed bugs when Player Head and Written Book ItemStacks doesn't response
+ To the GUICreatorAPI added new methods:
* getPlayer() return Player
* getGUI() return Inventory (Can be used only when is GUI open)
- Changed GUICreatorAPI.Options.CAN_PUT_ITEM to CANT_PUT_ITEM
----------, Nov 24, 2019

+ Added actions to the GUICreatorAPI
+ Fixed many bugs in GUICreatorAPI
+ Fixed ItemCreatorAPI
+ Fixed bugs
+ Fixed errors
+ Updated methods
+ Removed unused methods from the PlayerAPI
+ Added some methods to the PlayerAPI
----------, Nov 24, 2019

+ InventoryClickEvent is no longer required for guis these created by GUICreatorAPI
+ To the GUICreatorAPI added options to set actions when player click on item
+ Added methods takeExp, setExp, resetMaxHealth, sendActionbar and sendBossBar(title, progress, time) to the PlayerAPI
+ Fixed void generator
+ Moved getAccounts method to the PunishmentAPI
----------, Nov 21, 2019

+ Added Glowstone and TacoSpigot servers support
----------, Nov 21, 2019

+ Added PlayerAPI (Set fly, god, health, fireticks, invsee(target, invseeType)...)
+ Updated configs with datas
+ Fixed saving configs
+ Fixed errors and bugs
- Moved from TheAPI invsee method to the PlayerAPI
----------, Nov 20, 2019

+ Updated CooldownAPI
+ Fixed ItemCreatorAPI
+ Fixed ScoreboardAPI
----------, Nov 19, 2019

+ Fixed ItemCreatorAPI
+ Added setChatFormat method
+ Added setDisplayName method
+ Added setCustomName method
----------, Nov 17, 2019

+ Added PunishmentAPI
* Ban
* TempBan
* BanIP (by player name)
* BanIP (ip address)
* Mute
* TempMute
+ Added Helpop method
+ Added TheAPI command
+ Added broadcast method (send colored broadcast to all players that have specified permission)
+ Added broadcastMessage method (send colored broadcast to all players)
----------, Nov 15, 2019

+ Performance improved
+ Fixed ConfigAPI
+ To the ItemCreatorAPI added these methods: setOwner and setSkullType -> to create head with skin (Material.LEGACY_SKULL_ITEM)
+ Added setServerMotd method to TheAPI
+ Added setMaxPlayers method to TheAPI
+ Added WorldsManager method to TheAPI
----------, Nov 15, 2019

+ Fixed bug that kicking players from server
+ Fixed scorebord
+ Fixed tablist
----------, Nov 13, 2019

+ Fixed error in ScoreboardAPI when adding line to the scoreboard
----------, Nov 13, 2019

+ Added vanish(player, permission, boolean) method
+ Added getServerVersion method
+ Added invsee(player, target) method
+ Added giveItem(player, item) method (If player inventory is full, item drop on ground)
+ Added TabListAPI
+ Added NameTagAPI
----------, Nov 12, 2019

+ To the getConfig method added existPath(string)
+ Added WorldsManager
----------, Nov 12, 2019

+ Added EconomyAPI (Required Vault and Economy plugin)
+ Fixed errors when creating plugin config
+ Fixed errors when disabling plugin
----------, Nov 11, 2019

Resource Information
Author:
----------
Total Downloads: 31,339
First Release: Nov 11, 2019
Last Update: Jan 2, 2025
Category: ---------------
All-Time Rating:
8 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings