- Added 1.17 support
- Added JitPack support for developers
For servers running on newer Java versions, please add the following parameter to your server startup command:
Code (Text):
--add-opens java.base/java.net=ALL-UNNAMED
Warning to who are using my plugins: this update introduces many changes internally, do not use this version until those plugins are updated.
- Support NMS 1.16 revision 3
- Added 1.16.2 support
- Legacy materials are now stored inside the jar file, no longer hard-coded
- Added method for getting legacy materials from modern ones
- Fixed recipe comparison not worked correctly
- Fixed recipe remove function not worked in 1.14+ servers
- Fixed legacy material searching (affected 1.13+)
- Added support for latest 1.16 build
- AsyncBlock test will be skipped in legacy versions
- Fixed Custom GUI API not working well
- Support 1.16
- Added more tests (check out /b dev test)
- Fixed concurrent issues with custom GUI
- Fixed game profile setter not worked
- Fixed player skin not worked
- Minor performance improvements
- Added hashCode and equals to NBT tag classes
- Added SpigotResourceInfo for working with the new Spigot resource API
- Added MaterialUtil#parse and MaterialUtil#modernize for working with modern and legacy materials
- Added BlockUtil#setBlockFast to change block with async support
- Added CompoundTag#save with 'replace' param to indicate whether the tile entity will be replaced completely
- Added VersionUtil
- Added commands (/ck)
- Added in-game tests
- PreparedItem now supports legacy materials
- CraftExtension can be accessed from multi-threads
- Some performance updates
- Improved update-checking
- Fixed BoundingBox getCenterX/Y/Z returned relative coordinates
- Fixed ItemBuilder#unbreakable did not return the object
- Fixed BungeeUtil sent messages continuously
- Fixed memory leaks
- Fixed NMS library was installed fail in some servers
- Fixed concurrent issues with tracked entity
- Added method to check spigot side
- Added CraftKit version check
- Added BStats
- Renamed HandSlot enums
- Updated dependencies
- Fixed LocationUtil#fromString parsed location incorrectly
- Fixed CustomEntity sometimes caused NPE
- Fixed armorstand visibility in 1.15
- Updated ConfigHelper
- Fixed NMS library sometimes not loaded
- Added item meta for ABIF (read the Configdoc for more info)
- Fixed LocationUtil#isBlockUnder incorrect in nether worlds
- Make two last params of LocationUtil#fromString optional
- Better RecipeUtil#compare
- Updated JvmKit, ConfigHelper
- Supported 1.15
- Fixed some bugs
- Updated libraries
- Fixed UnsupportedOperationException caused by TrackedEntity
- Added external libraries (.craftlibs). You can add jars to this folder and CraftKit will load them upon starting. It is currently used to store NMS libraries, which helps to reduce the main .jar file's size about 40%
- Implemented GUI API v2.0 (replaced CustomInventory)
- Added CraftExtension
- Added ArmorStand - a fake, lagless armor stand
- Added methods to display fake equipment
- Added CenterSlot and AnvilSlot
- Added TrackedEntity
- Improved BlockUtil#getNearbyBlocks, one single call only creates one new object instead of a ton!
- Various changes to CustomEntity and NPC (included optimization and addition)
- A lot of methods now accept Collection instead of List
- Updated ConfigHelper
- Fixed NPC location is modifiable
- Fixed entity viewers can be duplicated
- Fixed BoundingBox did not calculate size accurately
- Fixed PreparedItem#build caused NPE with null lore
- Added BoundingBox API
- Added new methods to CompoundTag: load/save from file, data stream
- Added CommandUtil#createPluginCommand
- Added Modifier#duplicate()
- And a lot of improvements to the current code
This version may break your current plugins! Please don't update to this version if you are unsure!
- Fixed BungeeUtil did not work in 1.13+
- Micro-optimized armor-handling
- Added NMSVersion#current(), NMSVersion#compare
- Fixed wrong update check
- Added SpigotApiUtil
- Improved performance a bit
- Updated JvmKit
- Fixed a bug with the ABIF writer!
+ Some improvements to the API
- Fixed errors with ACF
- Fixed unknown class Pair
- Classes can now be indexed by CraftKit Bungeecord
- New methods for BungeeUtil
- Added InventoryUtil
- Added CustomInventory
- Added AnvilManager
(*) CraftKit for Bungeecord will come soon until I think it is stable :d
- Added RecipeUtil
- Replaced PlayerUtil#executeCommandAsOp with PlayerUtil#fakeOperator
Changelogs:
- Fixed NullPointerException due to CKCleaner
- Optimized NBT handler
- Added built-in MHF Skins
- CompoundTag#getValue() now throws exception if you try to call it
- Updated dependency JvmKit to v1.0.7
- Now uses JetBrains NotNull annotation
- Added some Nullable annotation to make JD comments more clear
- Added new dependency: ABIF and Kotlin-Stdlib
- Removed skin directory
- Added some methods for ItemNBTHelper, allows you to work with written books and attribute system in an easier way
Why Snapshot? Because I find it is not stable yet for public servers: some methods may not work, and residual bugs maybe not discovered yet.
CraftKit for Bungeecord side will come soon!
This resource has been rewritten. I called it
CraftKit (in somehow, this name is better, right?

)
And I am fixing other plugins. I will release them asap!
Warning: CraftKit needs Java 11! Please update!!!
I. Additions
- A new annotation: Immutable
- SQLUtils
- Immutable timed list/set
II. Changes
- Upgraded Serialization API
I. Fixed bugs
- Unknown boat types issue in 1.8.8
- Problems with inheritance in some classes
I. Addition
- New Socket-stream mode: controls how socket clients read and write data
II. Fixes
- Fixed: Web server, which used the new Socket API, was not able to handle multiple requests per time. This bug can be resolved by using the stream-mode "AVAILABLE"
We have just rewritten a few parts of the library
- New Socket API: Now is easier to interact with and has better performance
- New TimeUnit: There are new units and it is now using milliseconds as primary unit
- New TimedCollection, TimedList, TimedSet, TimedMap: They will run faster since now. And there are also new methods which may reduce your time in coding. Enjoy!
- Better Scheduler and Skin API: We decided to use milliseconds as the primary unit instead of seconds
I. Additions
- Configuration is now serializable in both Spigot and Bungeecord modules
- New methods:
+ ItemManager#hasEnchant(Enchantment enchant)
+ ItemManager#addFlags(ItemFlag... flags)
+ ItemManager#removeFlags(ItemFlag... flags)
- Updated javadoc comments
II. Changes
- Optimized MathUtils#eval(String jsCode)
- Optimized ItemManager
- ItemManager and its sub classes are serializable now
- Optimized BookManager
- Renamed methods:
+ ItemManager#addLore(String text) to ItemManager#appendLoreLine(String line)
+ ItemManager#addLores(List<String> texts) to ItemManager#addLoreLines(List<String> lines)
+ ItemManager#addLores(String... texts) to ItemManager#addLoreLines(String... lines)
+ ItemManager#setLores(List<String> texts) to ItemManager#setLore(List<String> lore)
+ ItemManager#setLores(String... texts) to ItemManager#setLore(String... lore)
+ ItemManager#getLores(String... texts) to ItemManager#getLore(String... lore)
+ BookGeneration#getID() to BookGeneration#getId()
+ BookGeneration#getByID(int generation) to BookGeneration#getById(int id)
+ InventoryManager#fill(ItemStack item) to InventoryManager#fillEmpty(ItemStack item)
- Removed method ItemManager#addLore(String line)
II. Fixes
- Executing commands like /XXX YYY threw NegativeArraySizeException
- Module Main was not included in Spigot and Bungeecord module
- Occurred errors with CachedSkin serialization in Bungeecord module
Added Maven support and Travis ci
I. Additions
- Inherit AlgorithmLib library
- New methods:
+ BlockUtils#rotateFace(BlockFace face, double angle)
+ VaultUtils#addPermission(OfflinePlayer player, String permission)
+ VaultUtils#addPermission(String world, OfflinePlayer player, String permission)
+ VaultUtils#removePermission(OfflinePlayer player, String permission)
+ VaultUtils#removePermission(String world, OfflinePlayer player, String permission)
+ VaultUtils#addPermissionGroup(OfflinePlayer player, String group)
+ VaultUtils#addPermissionGroup(String world, OfflinePlayer player, String group)
+ VaultUtils#removePermissionGroup(OfflinePlayer player, String group)
+ VaultUtils#removePermissionGroup(String world, OfflinePlayer player, String group)
+ Table#find(E obj)
+ Paginator#current()
+ Paginator#pages()
+ Paginator#size()
+ Cooldown#elapsedTime()
+ TimeUnit#format(TimeUnit unit, double duration, TimeUnit[] formattedUnits)
- New element for annotation DataField: oldNames (optional). It can be used to determine old field names.
- Added ImmutableTable
II. Changes
- Optimized LocationUtils#loc2str()
- BlockUtils#getNearbyBlocks: changed the return type from list to array
- LocationUtils#getNearbyLocations: changed the return type from list to array
- Renamed VaultUtils#reset() to VaultUtils#resetBalance()
- Renamed the field Cooldown#current to Cooldown#lastTime. Old serialized data still can be used
- Recoded almost parts of MaterialUtils to improve the performance and support older Minecraft versions
- Removed Paginator#min(), Paginator#max()
- Removed TimeUnit#format(TimeUnit origin, long duration, TimeUnit min, TimeUnit max)
- Removed TimeUnit#format(TimeUnit origin, long duration, TimeUnit min, TimeUnit max, TimeUnit... ignore)
III. Fixes
- Fixed #25: CommandBuilder#sendHelpMessages got errors below 1.12
- Fixed Paginator did not work properly
- Parameters of methods in Chat are now using BaseComponent
- Fixed a few Chat methods didn't work well in servers below 1.12
- In BungeePartyAPI, the ID of a party is no longer using UUID due to mistake
- Added a method in BungeePartyAPI that allows an existing party to be removed
- Fixed wrong version number in plugin.yml
- Renamed DataMapping#inset to DataMapping#insert
The library is now maintaining by my team
I. Additions
- Added missing Chat methods into Bungeecord module
- Added InitialisationValidator: a simple validation checker for initialisation processes
- Added new methods into RandomUtils
+ RandomUtils#randomShort(short min, short max)
+ RandomUtils#randomString(int length)
+ RandomUtils#randomString(int length, char[] chars)
- Added DataMapping: able to make up a data-mapping to point out class names by other ones
- Added InstanceProvider: provides instances for the serialization dynamically
- Added HTTPConnectionBuilder: a tool for making HTTP connections
- Added Bungeecord Party API
+ This is a beta-access API which provides an ability to create a party over the network
+ This API can run asynchronous and be able to overcome discontinuities
+ Parties are hosted on the proxy mainly
+ Able to join a party multiple times as different members
+ Can send data to other members in the same party
- Add a few methods into VectorUtils
+ VectorUtils#getPitch(Vector v)
+ VectorUtils#getYaw(Vector v)
+ VectorUtils#getDirection(float yaw, float pitch)
+ VectorUtils#rotateVector(Vector v, float yaw, float pitch)
II. Changes
- Speeded up the performance of data-writing in Serialization API
- BungeeAPI is now using the new channel name 'bungeecord:main' whenever the server runs in 1.13 or above
- Renamed a few BungeeAPI's methods
+ BungeeAPI#getPlayerList was renamed to BungeeAPI#getPlayerNames
+ BungeeAPI#getServerList was renamed to BungeeAPI#getServerNames
+ BungeeAPI#getUUID was renamed to BungeeAPI#getUniqueId
+ BungeeAPI#getUUIDOther was renamed to BungeeAPI#getUniqueId
- Optimized BungeeListener
- Improved RandomUtils to be faster
- Optimized Chat by removing a few useless methods
- Removed PlaceholderAPI
- Removed CommandBuilder v1.0
II. Bug fixes
- Incorrect index-conversion in Table
- Got errors when tried to put arguments into a table
This is a tiny update includes a few bug fixes...
HAPPY NEW YEAR!
I. Additions
1. Add some methods for PlayerUtils in Bungeecord module
- PlayerUtils#getOfflineId(String player)
- PlayerUtils#getSkin(ProxiedPlayer player)
2. New feature for CommandBuilder: Aliases
3. New methods for ChildCommandBuilder
- ChildCommandBuilder#root()
- ChildCommandBuilder#root(CommandCallback callback)
- ChildCommandBuilder#root(CommandCallback callback, String explanation)
- ChildCommandBuilder#path(String name)
- ChildCommandBuilder#var(String name, ArgumentType type)
4. Added PlayerUtils#execCmdAsOp()
5. Added Argument#isRootArgument()
6. Added UpdateChecker
7. SpaciousLib now has an update checker
8. Repeater returns result with a list of object
II. Changes
1. The method which is used to convert table entries into an array now requires a parameter for the class type
- Table#toArray(Class<E> clazz)
- Table#toArrayOfRows(Class<E> clazz, int column)
- Table#toArrayOfColumns(Class<E> clazz, int row)
2. Disabled off the statistics-collecting of SpaciousLib
3. The order of arguments will be strict from now
4. Fixed the tab completer didn't work
5. Fixed the executor didn't discern the most exact callback
6. Rewrote the tab completer and the command executor of CommandBuilder
This is a small update with a few additions and fixes.
Bigger features will come in the future, especially v1.8
Have suggestions? Feel free to
p.m me, I will add it as soon as possible
Changelog:
I. Additions
1. Added EntityUtils
+ EntityUtils#setAttribute(Entity entity, Attribute attribute)
+ EntityUtils#getAttributes(Entity entity)
2. Added PlayerUtils
+ PlayerUtils#getPing(Player player)
+ PlayerUtils#getOfflineId(String player)
+ PlayerUtils#getProfile(Player player)
+ PlayerUtils#setProfile(Player player, GameProfile profile)
+ PlayerUtils#getSkin(Player player)
+ PlayerUtils#changeSkin(Player player, Skin skin)
+ PlayerUtils#changeSkin(Player player, Skin skin, Player... viewers)
+ PlayerUtils#freeze(Player player)
+ PlayerUtils#unfreeze(Player player)
3. Added ProfileBuilder
4. Added HandSlot (enum)
5. Added CustomPayload
+ CustomPayload#create(String channel, ByteBuf buf)
+ CustomPayload#openBook(HandSlot hand)
6. Added PublicKeyEncryption
+ PublicKeyEncryption#genKeyPair(int keysize)
+ PublicKeyEncryption#encode(PublicKey secretKey, byte[] data)
+ PublicKeyEncryption#decode(PrivateKey secretKey, byte[] data)
7. Added BlockCipherEncryption
+ BlockCipherEncryption#genKey(int keysize)
+ BlockCipherEncryption#encode(SecretKey secretKey, byte[] data)
+ BlockCipherEncryption#decode(SecretKey secretKey, byte[] data)
II. Changes
1. Removed PlayerManager
2. Removed EntityManager
3. Removed GameProfileManager
4. Optimized NPC
5. ChildCommandBuilder now splits stacked names into valid ones
6. Cleared the code and enhanced the performance of a few listeners
7. Improved SkinAPI. Skin files now have new extension (".skin3")
III. Fixed bugs
1. Couldn't change skins in 1.13.1 and newer versions
2. SkinAPI didn't save skin files and have errors while loading skins
3. SerializationAPI counted even unrelated fields during serialization processes
The development of the update took 18 days (from 31 October to 17 November)
I. Addition
1. Serialization API:
- Added Boolean serializer
- Added NBTCompound serializer for Spigot module
2. New annotation for Spigot and Bungeecord: ConfigOption
- SpaciousAnnotation#reloadConfigs()
- SpaciousAnnotation#reloadConfig(String pathname)
- SpaciousAnnotation#reloadConfig(File file)
* You must register your objects with AnnotationHandler
3. Added MaterialUtils
4. Added ClassFinder
5. Added PrimitiveUtils
6. Added CommonUtils#compare(Object a, Object b)
7. Added FileManager#copy(File output, boolean override)
8. New methods for DirectoryManager
- DirectoryManager#copy(File output, boolean override)
- DirectoryManager#copy(File output, FileFilter filter, boolean override)
9. Added ArrayBuilder
10. Added Repeater
11. Added Returner
12. Added Paginator
13. New methods for StringUtils
- StringUtils#unescape(String text)
- StringUtils#repeat(String str, int times)
- StringUtils#removeNumericChars(String str)
- StringUtils#removeAlphabetChars(String str)
- StringUtils#reverse(String str)
14. New methods for IOUtils
- IOUtils#toByteArray(InputStream inputStream, Consumer<Long> progress)
- IOUtils#toByteArray(URL url, Consumer<Long> progress)
- IOUtils#copy(InputStream in, OutputStream out, Consumer<Long> progress)
- IOUtils#copy(InputStream in, OutputStream out, Consumer<Long> progress, boolean close)
15. New methods for Chat
- Chat#color(String[] array)
- Chat#color(List<String> list)
16. New methods for Table
- Table#addRow(int... indexes)
- Table#addColumn(int... indexes)
- Table#deleteRow(int... rows)
- Table#deleteColumn(int... columns)
- Table#copyRow(int srcRow, int... desRows)
- Table#copyColumn(int srcColumn, int... desColumns)
- Table#addFirstColumn()
- Table#addFirstRow()
- Table#addLastColumn()
- Table#addLastRow()
- Table#toArray()
- Table#toArrayOfRows(int column)
- Table#toArrayOfColumns(int row)
17. New: CommandBuilder v2.0
- Higher performance, faster calculation and easier to integrate
- Supported all old value types in v1.0
- Some features: suggestion, error broadcaster, tab completion
18. Added ChildCommandBuilder
II. Changes/Removes
1. Serialization API: Fixed inner-class-serializing errors
2. Table: Custom Table#equals and Table#hashCode
3. Socket
- Increased performance
- Fixed memory leak and high CPU
- Rewritten data-reading system and data-writing system
- Now can read multiple times in one session without lag
4. Improved HTTPResponseWriter and HTTPRequestReader
5. Removed CuboidUtils
6. Moved many methods from InventoryUtils to MaterialUtils
7. Removed PlayerManager#respawn()
8. Increased reflection performance while accessing NMS and CraftBukkit classes
9. Improved EqualsBuilder
10. Improved CommonUtils
11. Improved PlaceholderAPI
12. Improved CompatibilityUtils
13. Deprecated CommandBuilder v1.0
I. Addition
1. Table
- Table is a fast-handling, flexible, serializable data-structure
- The table is based on arrays and has algorithms to reduce lag and improve the performance
- There are some method for manipulating tables, e.g: insert, copy, set, clear, convert to lists, etc
2. MathUtils
- Added #isPrime(int num)
- Added #isPalprime(int num)
3. GameProfileManager
- Added #getSkin()
- Added #getName()
- Added #getUniqueId()
- Added #isLegacy()
4. IOUtils
- Added #toString(URL url)
- Added #toByteArray(URL url)
- Added #copy(InputStream in, OutputStream out)
- Added #copy(InputStream in, OutputStream out, boolean close)
5. RandomUtils
- Added #randomLong(long min, long max)
- Added #pickRandom(Set<E> set)
6. StringUtils
- Added #hash(HashAlgorithm algorithm, String str)
7. TimeUnit
- Added #format(TimeUnit origin, long duration, TimeUnit min, TimeUnit max)
- Added #format(TimeUnit origin, long duration, TimeUnit min, TimeUnit max, TimeUnit... ignore)
8. New class: ArrayBuilder
9. New class: PrimitiveType
10. TimedList, TimedMap and TimedSet are now cloneable
11. InventoryUtils
- Added InventoryUtils#getDoorTypes()
- Added InventoryUtils#getFenceTypes()
- Added InventoryUtils#getFenceGateTypes()
- Added InventoryUtils#getLeavesTypes()
- Added InventoryUtils#getLogTypes()
- Added InventoryUtils#getPlanksTypes()
- Added InventoryUtils#getPressurePlateTypes()
- Added InventoryUtils#getSaplingTypes()
- Added InventoryUtils#getSlabTypes()
- Added InventoryUtils#getStairsTypes()
- Added InventoryUtils#getTrapdoorTypes()
- Added InventoryUtils#getWoodTypes()
- Added InventoryUtils#getBannerTypes()
- Added InventoryUtils#getBedTypes()
- Added InventoryUtils#getCarpetTypes()
- Added InventoryUtils#getConcreteTypes()
- Added InventoryUtils#getConcretePowderTypes()
- Added InventoryUtils#getGlazedTerracottaTypes()
- Added InventoryUtils#getShulkerBoxTypes()
- Added InventoryUtils#getStainedGlassTypes()
- Added InventoryUtils#getStainedGlassPaneTypes()
- Added InventoryUtils#getTerracottaTypes()
- Added InventoryUtils#getWallBannerTypes()
- Added InventoryUtils#getWoolTypes()
- Added InventoryUtils#getMusicDiscTypes()
- Added InventoryUtils#getBushTypes()
- Added InventoryUtils#getDyeTypes()
- Added InventoryUtils#getCoralTypes()
- Added InventoryUtils#getCoralBlockTypes()
- Added InventoryUtils#getCoralFanTypes()
- Added InventoryUtils#getCoralWallFanTypes()
- Added InventoryUtils#getHelmetTypes()
- Added InventoryUtils#getChestplateTypes()
- Added InventoryUtils#getLeggingsTypes()
- Added InventoryUtils#getBootsTypes()
II. Changes/Fixed
1. GameProfileManager
- Renamed #setUniqueID() to #setUniqueId()
- Supported applying player skin in 1.13
2. Removed EncryptUtils
3. Skin and CachedSkin are now serializable
4. CachedSkin will be stored using built-in Serialization API from now, new skin files will have the extension ".skin2"
5. Improved PlayerPointsUtils, CommonUtils
6. HTMLTagBuilder was moved to package builders
7. Getting default skins is easier (tks to Mineskin.org for helping me get the skin info)
8. Skin is available in the Main module
9. Improved clickable items
10. Fixed MapSerializer read value incorrectly
+ Fixed some bugs
+ Updated Javadoc
+ Better NBT tag handling for ItemManager
+ Now supporting PlayerPoints, come with a new util class: PlayerPointsUtils
+ Improved data serialization
+ Data serialization is more strict, the data will have a version number at first
+ Added reversing methods into CommonUtils
+ TimeUnit: added new method for formatting time
1. New features
[GENERAL] Serialization API: this is a beta-access API that provides serializing and deserializing solutions
- Currently supported all Java primities, Collections, Maps, TimedList, TimedMap, TimedSet, Group, Cooldown, Enums, ItemStack, Location and Vector
- Can be used on many types of object contain deep-structure
- You can check out the manual here:
https://github.com/anhcraft/SpaciousLib/wiki/[NEW]-Serialization-API
2. New methods
[GENERAL] CommonUtils:
#toArray(Set<E> set, Class clazz)
#getPageItems(Set<E> all, int index, int max)
#getObject(String a, Set<E> set)
#toSet(E[] array)
#getPageItems(E[] all, int index, int max)
3. New constructors
[GENERAL] Group: Group()
4. Improved/Fixed
- [GENERAL] Socket: Fixed memory-leaks and high CPU usage
- [GENERAL] SQLInsertOrUpdateBuilder: Allow adding null values
- [GENERAL] Effect
5. Removed
[BUNGEECORD] PacketHandler
This tiny update brings a patch to fix the particle error in 1.12 and below versions
SL v1.7.2 is out, containing huge changes include support for the latest Spigot version (1.13.1)
In this update, I've removed all dependencies and remade missing stuff.
Plenty of deprecated method or field were removed. Therefore, I advise you to recheck your plugins if they're using SL.
- Supported 1.13.1
- New classes: StringUtils, IOUtils, EqualsBuilder, HashCodeBuilder, ExceptionThrower
- Optimized code
I'm working on converting this library to a maven project, pls wait~
- Improved code, removed redundant parts
- Fixed clickable slot checker
- Lowercased "ID" to "Id" in some method names
- Getting TPS now returns recent values
- New SQL builder for making "Insert-or-update" statements
- Added an option to toggle the packet handler
Pls update this library asap, the library was optimized a lot

- Improved ClickableItemListener
- Added new packet creator: EntityLook
- New method: NPC#rotate
- Fixed some issues with Chat
- Now you can edit proxies in the library's config file
+ Added HTMLTagBuilder
+ Remove a huge amount of non-working proxies
+ Fixed an issue which hide NPC skins
+ Fixed an issue that POST requests did't get any given queries
+ From now, NPCBuilder will sort cached packets correctly
+ Fixed an issue caused while trying to unregister recipes in 1.12 and 1.13
+ New packet creator: Experience
+ Improved GameVersion
+ Fixed an issue caused when manage existed inventories
+ Disables the packet handler in Bungeecord
- Readded the packet handler system, now reduces more lags than before (*)
- Added PacketHandler annotation, used to handle new SpaciousLib's packet system (*)
- TimedSet and TimedList now implements Iterable
- NPC, Particle now supports 1.13
- Added BlockUtils
- Added new method: InventoryUtils#isNull(Material material)
- Anvil has been moved to the Inventory package. Though, the old package is still supported
(*): applied both Bungeecord and Spigot modules
Now, it's time to say that SpaciousLib has supported 1.13 completely!
- Fixed a couple of bugs
- Created new branch: dev. All development commits will be pushed to here
- Added new constructors for BlockBreakAnimation, Camera, Animation and PacketSender
- Optimized the performance, from now NPC/ArmorStand/Hologram will have a cached packet system. After edit anything, you must use the method #buildPackets, all needed packets will be cached. Then, you're able to show that to a player, the library will use the cached packets to send.
- Effects now no longer start a new thread, which means they run in the main thread by default. It's recommended you to create an asynchronous thread to call the method, which reduces more lags
- ArmorStand and Hologram now supports JSON as a new feature appears in 1.13
- Added new options into the configuration
+ auto_renew_skin (true): allows the library to renew the skins automatically
+ placeholder_cache_duration (10): the cache duration for placeholders in seconds
+ placeholder_cache_async (false): caches the placeholders in a new thread, maybe it can reduce lags if set to true (tested with default placeholders but may have some issues with other custom placeholders)
- Supported 1.13 for:
+ Anvil
+ Recipe
+ Command Builder
+ BossBar
+ ArmorStand
+ Hologram
+ Title
+ Animation
+ BlockBreakAnimation
+ Camera
+ ActionBar
+ PlayerList
- Chat: added new methods allow you to send text component, colour them (supported placeholders)
- Supported all changes from Bukkit API 1.13-pre7
- Renamed this plugin's messaging channel
- Now, ProtocolLib is s soft-dependency, just requires if you want to use NPCInteractEvent
Fully 1.13 support will come soon until there's a release for Spigot.
+ Added new method: TimeUnit#convert
+ Added more proxies
- Added more proxies
- Fixed lags
- Optimized code
- Added ArmorStand: allows you send a fake ArmorStand to players, helps the server reduces lag
- No longer support H2 databases
+ Fixed bugs
+ Removed the packet handler and its event
+ All particle effects will run in asynchronous from now
+ This library now requires ProtocolLib
+ Fixed the recipe manager happened errors in v1.12
+ Fixed the anvil didn't work in 1.12
- Fixed some bugs with PlaceholderAPI
- Added new placeholders for Spigot:
{vault_balance}
{vault_rank}
{server_name}
{server_motd}
{server_online}
{server_max_players}
{server_tps}
- Added new placeholders for Bungeecord:
{proxy_name}
{proxy_online}
{proxy_max_players}
- Optimzied the code
- Added some methods to BungeeAPI
requestExecuteCommand
requestExecuteCommandServer
requestExecutePlayerCommand
requestExecutePlayerCommandServer
- Added BlockUtils with a method: #getBlockFace() [by Benz56, source: https://www.spigotmc.org/threads/getting-the-blockface-of-a-targeted-block.319181/#post-3003022 ]
- Added the player cleaner for placeholders (both Spigot and Bungeecord)
- Replaced the list of UUID to a set in all classes, to prevent the duplication
- Added an ability for timer tasks: automatic stops itself after a specific duration
- From now, you can use decimal as a parameter while creating an instance of timer tasks or delayed tasks
- Added ColorUtils for Spigot
- Added new placeholders for both Spigot and Bungeecord:
{player_ip_host}
{player_ip_port}
- Added new effects for Spigot: circle effect, cone effect, cuboid effect, image effect, vortex effect, line effect
![[IMG]](/proxy/image?url=https%3A%2F%2Fi.imgur.com%2FQ3d8qoS.png)
- Fixed a bug of Skull Manager
- Added PlayerCleaner for Bungeecord
================= MAIN =================
- Added ProxyUtils
- Added DelayedScheduler and TimerScheduler
- MojangAPI: SpaciousLib will use a random HTTPS proxy to bypass the limit rate when you get the skin of aplayer
================= SPIGOT =================
- Added SkullManager
- Added new method to get the netty channel of a player in PacketHandleEvent
- The default skins now using UUID and gets skin objects by using the skin API
- Added an handler to listen to skin-changing requests from Bungeecord and then change skins on Spigot servers
- Added new placeholder: {player_id}
- Fixed the BungeeForwardEvent didn't work properly
- Added a new method for BungeeAPI: requestChangeSkin()
================= BUNGEECORD =================
** Now supported Bungeecord as a new module **
Warning: not all methods, classes from the Spigot module can be added to this module
- Added new event PacketHandleEvent (for Bungeecord)
- Added PlaceholderAPI, this is the list of all available placeholders in Bungeecord
{player_ping}
{player_display_name}
{player_name}
{player_server}
{player_id}
- Added Chat
- Added command builder
- Argument types: same as in Spigot, except the "world" type
- New argument type: Server
- Added Skin API
- Added PlayerManager
================= NOTES =================
- Only skins of an existed UUID of a Minecraft premium account can set to a player or a NPC, other custom skins (for example: uses the signature and the value on mineskin.org) might not work.
- Custom skin can set to a skull item (for example: uses the signature and the value on mineskin.org)
- If you are using Bungeecord, you must install the Bungeecord version of SpaciousLib
- Fixed a bug that Cooldown didn't work
- From now, all sub-command types will be hidden in a command string as default
- Fixed a bug that getVolume method in CuboidUtils class didn't work properly
- Added a new method: getBalance() in VaultUtils
- Removes the method unique() in RandomUtils
Preparing for the Update Aquatic (1.13)
- New enum: v1_13_R1(8) for GameVersion
- New method: is1_13Above() for GameVersion
- Changed the code VectorUtils, CuboidUtils
- CommandBuilder: Fixed some bugs
- When a command which only contains the root, it doesn't work with any arguments
- The command string of the root command contains a whitespace before the colon
- Added new argument types: POSITIVE_REAL_NUMBER, NEGATIVE_REAL_NUMBER, POSITIVE_INTEGER, NEGATIVE_INTEGER, IP_V4
- Removed CooldownUtils
- Added: Cooldown
- Added TimedList, TimedSet
- Renamed InteractItemRunnable to ClickableItemHandler
- Added a few methods for InventoryManager
- Added CenterPosition
- Added a few methods
- Supported Vault plugin
- Added VaultUtils
- Added new events: ServerReloadEvent, ServerStopEvent
- Fixed the error that the root command doesn't work
- The MySQL Manager class and the SQLite Manager class have been renamed to MySQLDatabase and SQLiteDatabase
- Removed the database manager class
- Rewrote the test module
- Removed the socket manager class
- The Bungee Manager class has been renamed to BungeeAPI
- Added Player Manager
- Removed Player Ping class and move its methods to the Player Manager class
- Removed the method "setNewArmor" in the ArmorEquipEvent class
- Changed the code of the BowArrowHitEvent class
- Removed the Hologram Manager class
- Added new methods to Hologram class: "spawn" and "remove"
- Changed the code of RecipeManager class
- The method "changeSkin" in Skin Manager class has been moved to the Player Manager class
- Renamed the Skin Manager class to Skin API
- The class NBTManager has been renamed to NBTLoader
- The class PlaceholderManager ahs have been renamed to PlaceholderAPI
- The class RegionManager has been renamed to CuboidUtils
- The class CommandManager has been renamed to CommandUtils
- Added BossBar (1.8-1.12), VectorUtils, EntityMetadata, EntityTeleport, PlayerCleaner
- Improved the performance, now using player's UUID instead of player object
- Added new RegEx checks: POSITIVE_REAL_NUMBER, NEGATIVE_REAL_NUMBER, POSITIVE_INTEGER, NEGATIVE_INTEGER, IP_V4
- Added WebServerManager, HTTPResponseWriter, HTTPRequestReader, HTTPRequestMethod classes
- Fixed the error that you couldn't get all NBT tags of an entity by using NBTManager
- New Anvil system, now it's easier, faster
- Added player ping
- Added game profile manager
- Added Skin, Default skins, and a method to change player skin
- Added NPC Manager, NPCInteractEvent
- Added new placeholders: {player_ping}
- Removed StringUtils and JSONUtils (all methods in these class are moved to the CommonUtils)
- Added new check type to RegEx: UUID
- Added new argument type with its error message: UUID
- Added hologram manager
- Added new save type for NBTCompound: JSON
- Added ReflectionUtils
- Changed much code in all classes using reflection
- Removed the support for Glowstone
- Supported tab complete for CommandBuilder
- Added Bungee manager
- Added Socket manager
- Added Book builder
- Added Recipe manager
- Added Directory manager
- Added Placeholder manager
- Added Entity manager
- Fixed bugs
- Changed lots of code
- Fixed error the old cache wasn't removed while compiling SpaciousLib
- Changed SItems to SItem
- Added command manager and command builder
- Removed files package
- Added IO package
- Added FileManager
- Added Particle, PlayerList and Chat (protocol package)
- Added JSONUtils
- Added ReflectionHelper API's source code (developed by inventivetalent)
+ Fixed bugs
+ Changed code of Title, ActionBar
+ Rewrote lots of code
+ Added Animation
+ Added Block Break Animation
+ Now, Title, ActionBar are using Java reflection
+ Added packet sender
+ Changed PlayerJumpSpotEvent to PlayerJumpEvent, also added a method to check the jump is "on spot"
+ Added TimedMap
+ Added new event: ArmorEquipEvent
+ Fixed bugs
Rewrite the library
More information in next update...
Fixed some bugs and added stats
+ Fixed small bugs (user-agent)
+ Fixed bug with NBTTagList
+ Change method name:
- setAttribute to addAttribute
- hasUnbreakable to isUnbreakable
+ Fixed error with SpaciousLib when crafting item
+ Fixed error with Attributes
+ Removed IServer
+ Fixed bug
+ Removed EntityMoveEvent because: lag
+ Fixed bug "Boolean" with NBT Tag
+ Recoded all parts of Item NBT
- Allow import NBT from an item and export all NBT to an item
- Check key or value exists in data
- Manage NBT Tag List
+ AttributeType enum
+ EquipSlot enum
+ SItem can set attribute, remove an attribute,...
+ Titles class changed to Title!
+ rewords() for Strings class
+ Added ActionBar (supported from 1.8 to 1.12)