CraftKit | Spigot icon

CraftKit | Spigot -----

Utility kit for Spigot and Bungeecord plugins | GUI, NPC, NBT, Skin and more




- 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.
----------, Jun 19, 2021

  • Support NMS 1.16 revision 3
----------, Jan 7, 2021

  • 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+)
----------, Aug 14, 2020

  • Added support for latest 1.16 build
  • AsyncBlock test will be skipped in legacy versions
  • Fixed Custom GUI API not working well
----------, Jul 28, 2020

  • 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
----------, Jun 28, 2020

  • 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
----------, Apr 27, 2020

  • 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
----------, Mar 4, 2020

- Fixed LocationUtil#fromString parsed location incorrectly
- Fixed CustomEntity sometimes caused NPE
- Fixed armorstand visibility in 1.15
- Updated ConfigHelper
----------, Jan 10, 2020

  • 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
----------, Dec 29, 2019

  • Supported 1.15
  • Fixed some bugs
----------, Dec 11, 2019

  • 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%
----------, Oct 22, 2019

  • 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
----------, Oct 20, 2019

  • Fixed BoundingBox did not calculate size accurately
  • Fixed PreparedItem#build caused NPE with null lore
----------, Oct 13, 2019

  • 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!
----------, Oct 12, 2019

  • Fixed BungeeUtil did not work in 1.13+
  • Micro-optimized armor-handling
  • Added NMSVersion#current(), NMSVersion#compare
----------, Sep 21, 2019

  • Fixed wrong update check
  • Added SpigotApiUtil
  • Improved performance a bit
  • Updated JvmKit
----------, Sep 13, 2019

  • Fixed a bug with the ABIF writer!
----------, Sep 2, 2019

+ Some improvements to the API
----------, Aug 23, 2019

  • Fixed errors with ACF
  • Fixed unknown class Pair
----------, Aug 20, 2019

Huge changes :/
----------, Aug 10, 2019

  • Fixed a bug on 1.14+
----------, Jul 19, 2019

  • 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
----------, Jun 15, 2019

- Added RecipeUtil
- Replaced PlayerUtil#executeCommandAsOp with PlayerUtil#fakeOperator
----------, Jun 9, 2019

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!
----------, Jun 8, 2019

This resource has been rewritten. I called it CraftKit (in somehow, this name is better, right? :p)
And I am fixing other plugins. I will release them asap! ;)

Warning: CraftKit needs Java 11! Please update!!!
----------, Jun 5, 2019

I. Additions
  • A new annotation: Immutable
  • SQLUtils
  • Immutable timed list/set
II. Changes
  • Upgraded Serialization API
----------, Mar 24, 2019

I. Fixed bugs
- Unknown boat types issue in 1.8.8
- Problems with inheritance in some classes
----------, Mar 5, 2019

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"
----------, Mar 3, 2019

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
----------, Mar 2, 2019

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
----------, Feb 6, 2019

Added Maven support and Travis ci
----------, Feb 2, 2019

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
----------, Jan 30, 2019

- 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
----------, Jan 21, 2019

- Fixed wrong version number in plugin.yml
- Renamed DataMapping#inset to DataMapping#insert
----------, Jan 13, 2019

The library is now maintaining by my team :p

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
----------, Jan 13, 2019

This is a tiny update includes a few bug fixes...

HAPPY NEW YEAR!
----------, Dec 31, 2018

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
----------, Dec 31, 2018

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
----------, Nov 25, 2018

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
----------, Nov 18, 2018

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
----------, Oct 21, 2018

+ 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
----------, Oct 11, 2018

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
----------, Oct 6, 2018

This tiny update brings a patch to fix the particle error in 1.12 and below versions
----------, Sep 12, 2018

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~
----------, Sep 9, 2018

  • 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 :D
----------, Aug 20, 2018

  • 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
----------, Aug 7, 2018

+ 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
----------, Jul 26, 2018

+ 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
----------, Jul 24, 2018

+ New Javadoc: https://anhcraft.github.io/SpaciousLib/javadoc/
+ Improved InventoryManager: now reduces bugs with clickable items
+ New configuration
+ Fixed lags
----------, Jul 21, 2018

- 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!
----------, Jul 20, 2018

- 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
----------, Jul 18, 2018

  • 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.
----------, Jul 16, 2018

+ Added new method: TimeUnit#convert
+ Added more proxies
----------, Jul 6, 2018

  • 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
----------, Jun 16, 2018

+ 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
----------, Jun 6, 2018

  • 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 ]
----------, May 17, 2018

  • 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]
----------, May 12, 2018

- Fixed a bug of Skull Manager
- Added PlayerCleaner for Bungeecord
----------, May 8, 2018

  • Removed the test module
================= 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
----------, May 7, 2018

  • 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
----------, Apr 29, 2018

  • Changed the code VectorUtils, CuboidUtils
----------, Apr 28, 2018

  • CommandBuilder: Fixed some bugs
  1. When a command which only contains the root, it doesn't work with any arguments
  2. 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
----------, Apr 25, 2018

  • Added a few methods
  • Supported Vault plugin
  • Added VaultUtils
  • Added new events: ServerReloadEvent, ServerStopEvent
----------, Apr 24, 2018

  • 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
----------, Apr 23, 2018

  • 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
----------, Apr 8, 2018

  • 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
----------, Mar 28, 2018

  • Fixed error the old cache wasn't removed while compiling SpaciousLib
----------, Mar 18, 2018

  • 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)
----------, Mar 18, 2018

+ Fixed bugs
+ Changed code of Title, ActionBar
----------, Mar 11, 2018

+ Fixed bugs
----------, Mar 10, 2018

+ 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"
----------, Mar 10, 2018

+ Added TimedMap
+ Added new event: ArmorEquipEvent
+ Fixed bugs
----------, Mar 5, 2018

Rewrite the library
More information in next update...
----------, Mar 4, 2018

Fixed some bugs and added stats
----------, Jul 27, 2017

+ Fixed small bugs (user-agent)
----------, Jul 5, 2017

+ Fixed bug with NBTTagList
----------, Jun 20, 2017

+ Change method name:
- setAttribute to addAttribute
- hasUnbreakable to isUnbreakable
----------, Jun 15, 2017

+ Fixed error with SpaciousLib when crafting item
----------, Jun 9, 2017

+ Fixed some errors
----------, Jun 9, 2017

+ Fixed error with Attributes
----------, May 31, 2017

+ Removed IServer
+ Fixed bug
----------, May 29, 2017

+ Removed EntityMoveEvent because: lag
----------, May 24, 2017

+ Fixed bug "Boolean" with NBT Tag
----------, May 23, 2017

+ Fixed Bugs
----------, May 22, 2017

+ 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,...
----------, May 21, 2017

+ Titles class changed to Title!
+ rewords() for Strings class
+ Added ActionBar (supported from 1.8 to 1.12)
----------, May 19, 2017

Resource Information
Author:
----------
Total Downloads: 29,181
First Release: Apr 7, 2017
Last Update: Jun 19, 2021
Category: ---------------
All-Time Rating:
42 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings