WolfyUtilities | Core API [1.17.1 - 1.21.1] icon

WolfyUtilities | Core API [1.17.1 - 1.21.1] -----

Inventory GUI API, JSON/HOCON Serialization, Plugin Compatibility Utils, etc.




Changelog
  • #80 - Update to 1.20.6
    • 1.17.0 is no longer supported!
    • This plugin is still compiled on Java 17, but also works on Java 21
    • Many NMSUtils were removed and/or delegated to third-party plugins like Item-NBT-API (See #80)
  • #81 - Improved StackReference Serialization
  • Prioritise MMOItems StackIdentifier Parser over MythicMobs Parser (WolfyScript/CustomCrafting#362)
  • #78 - Migrate Publishing Repo To Artifactory
Full Changelog: v4.16.15.1...v4.17-beta.1
----------, May 2, 2024

Changelog
  • #76 — Fix StackReference Parser Swapping
    • Fixes the ItemEditor GUI in CustomCrafting unable to change the item plugin source
  • #77 — Fix CustomItem Replacement & Durability Cost
Full Changelog: v4.16.15...v4.16.15.1
----------, Mar 5, 2024

Custom Item Stack Changes
This update introduces the new StackReference and StackIdentifier classes, that provide a lot of features to reference external Items (from like Oraxen, MMOItems, etc.) and replace the old very limited APIReference.

CustomItem ⇾ StackReference
From this update onward CustomItems are no longer used to reference external Items, instead that is the task of the StackReference.

The only purpose of the CustomItem is to represent the well... CustomItem created via WolfyUtils. They do use a StackReference to wrap external stacks, but are no longer used as a plain reference.

APIReference ⇾ StackIdentifier
APIReferences are now replaced by StackIdentifiers, and no longer keep track of the amount and weight, because those properties are now part of the StackReference.
StackIdentifiers only contain the info required to identify the external item stack, like an ID or name.


So in return, plugins requiring references to external stacks no longer have to use CustomItems everywhere and no longer need to accept the overhead that comes with it. Instead, it only requires the StackReference, which contains a lot less data, and has a lot less overhead.

Changelog
  • #66 — New StackReference System to replace old APIReferences
  • #72 — Replace NMS GUI Generation with GUIInventoryHolder
    • Fixes GUIs not opening on Paper servers
  • #74 — Update paper-plugin.yml & Add missing plugin dependencies
    • Fixes ExecutableBlocks and ExecutableItems NoClassDefFoundError
  • #68 — Support for 1.20.3
  • 2110329 - Change nmsutil 1_20_R3 to use 1.20.4 mappings
    This should still work with 1.20.3, because of the very minor changes, but realistically there is no reason to still use 1.20.3!
  • 9434dee — Only handle ArmorEquipEvent when CustomItems are involved
  • 121cf29 — Add debug agent to docker container
  • 771fb79 — Fix Smithing Recipes in 1.20.2
  • 9af73f7 — Fix NPE in MythicMobsStackIdentifier for stacks without NBT tag
  • 2fb08e7 — Remove 1_16_R3 nmsutils (1.16.5 is no longer supported!)
  • aa6a119 — Bump nbtapi-api & nbtapi-data to 2.12.2
Full Changelog: v4.16.14.1...v4.16.15
----------, Mar 3, 2024

Changes since beta.5
  • #72 — Replace NMS GUI Generation with GUIInventoryHolder
    • Fixes GUIs not opening on Paper servers
  • #70 — Fix StackReference Not Updating & Backwards Compatibility
  • #71 — Fix StackReference matches Performance Issues
  • #69 — Optional StackReference Identifiers
  • 80a5345 — Fix count check in StackIdentifier & Add StackIdentifier#matchesIgnoreCount
  • bf9a55d — Fix MythicMobsStackIdentifier overriding other stack identifiers
  • dc982d4 - Fix StackReference 'weight' property deserialization
    This fixes loading issues of older configs.
  • 91b925a - The ExecutableBlocksStackIdentifier should actually be registered to work...
  • 4da9339 — Fix NullPointerEexceptions in StackIdentifiers & prevent possible NPEs
    This fixes & prevents NPEs in:
    • EcoStackIdentifier
    • ExecutableBlocksStackIdentifier
    • ExecutableItemsStackIdentifier
    • ItemsAdderStackIdentifier
    • MMOItemsStackIdentifier
    • MythicMobsStackIdentifier
    • FancyBagsStackIdentifier
----------, Jan 26, 2024

This update includes a breaking change affecting StackReferences.
You are only affected when using the Beta of CustomCrafting!
CustomCrafting got another beta update that is compatible again.

Changelog
  • aa6a119 - Bump nbtapi-api & nbtapi-data to 2.12.2
  • 2110329 - Change nmsutil 1_20_R3 to use 1.20.4 mappings
    This should still work with 1.20.3, because of the very minor changes, but realistically there is no reason to still use 1.20.3!
  • 4ff8cce - Add itemKey getter to WolfyUtilsStackIdentifier
  • b7620c0 - Add itemKey getter to BukkitStackIdentifier
  • db035c3 - Change RegistryStackIdentifierParsers#parseFrom to return an Optional
Full Changelog: v4.16.15-beta.4...v4.16.15-beta.5
----------, Dec 15, 2023

Changelog
  • #59 - Update to latest SCore API (ExecutableBlocks & ExecutableItems)
  • #60 - Include Fastutil library in plugin.yml

Full Changelog: v4.16.12.0...v4.16.12.1
----------, Jul 25, 2023

Changelog
  • Added NMS support for 1.20.1
  • Removed FunctionalRecipe support for 1.20+
  • Replaced NMS Inventory Title Update util with Spigots new InventoryView#setTitle in 1.20+
  • Added RecipeUtil#setCurrentRecipe NMS util used to apply recipes internally for crafting, smithing and cooking recipes.
  • Removed NMS support for versions prior to 1.16.5
  • Always unmark blocks with block storage to drop items properly
Full Changelog: v4.16.11.0...v4.16.12.0
----------, Jun 25, 2023

Changelog
  • Added 1.19.4 support
  • #51 - Paper Plugin Implementation
  • #52 - ExecutableBlocks Item Reference Implementation
  • #53 - Fix priority and other APIReference related issue
  • #54 - Bypass Classloader debug logging on Paper to prevent StackOverflow
Full Changelog: v4.16.9.8...v4.16.10.0
----------, Apr 9, 2023

Changelog
  • #46 - Remove Invalid CustomPlayerData when fetching it
  • Updated to latest WolfyScript/jackson-dataformat-hocon build
  • Implemented missing OptionalValueSerializer.SerializerModifier.Serializer#serializeWithType
Full Changelog: v4.16.9.5...v4.16.9.6
----------, Dec 28, 2022

Changelog
  • Updated to NBT-API to 2.11.1
  • Fixed FunctionalRecipeGenerator#recipeChoiceToNMS converter for 1.16
  • Fixed invalid mapping of NMS CraftingManager#getRecipe in 1.17 and below.
  • Fixed ValueProvider serialization from value.
  • Added BoolOperatorConst (backported from v5), to easily provide boolean values in configs.

Full Changelog: v4.16.9.4...v4.16.9.5
----------, Dec 20, 2022

Changelog
  • #43 - Oraxen API Update
  • #39 - Fixed Recursive Calls of BlockStorageEvents
  • The PlayerStorage no longer fails when the data it tries to load is null.
  • Made GuiMenuComponent.ButtonBuilder public
    • This way, button builders can be more easily created.
----------, Nov 27, 2022

Changelog
  • #33 - Set Current Recipe of Inventories
  • #36 - Better Persistent Custom Player Data Storage
  • #37 - Fixed Missing ItemsAdder Wrapper Implementations
  • #38 - Updated & Merged ItemsAdder Event Listener
  • Fixed QueryNodeCompound not including tags when includeAll is true
  • Rearranged register order & added more log messages
Full Changelog: v4.16.6.1...v4.16.9.0
----------, Nov 18, 2022

This update implements the WolfyUtilities API v4.16.1 to support the HOCON format.

HOCON stands for Human-Optimized Config Object Notation and is made by Typesafe.

HOCON is the official configuration method for Sponge servers and plugins and provides an easier to use configuration format.
Files using HOCON are saved as .conf files.

A good introduction to hocon can be found in the Sponge docs.
https://docs.spongepowered.org/stable/en/server/getting-started/configuration/hocon.html

More detailed info about the format can be found here:
https://github.com/lightbend/config

Using WolfyScript/jackson-dataformat-hocon Jackson is able to parse and generate .conf files.

Note: Plugins that depend on WolfyUtilities will still need to implement the HOCON changes to support that new format.

Changelog
  • Optimized default De-/Serializers (They no longer depend on separate ObjectMappers)
  • Fixed StackOverflow in ExecutableItemsRef#getLinkedItem
  • #26 - HOCON Format Support
  • Fixed MultipleChoiceButton.Builder missing stateBuilders list
  • Removed deprecated WolfyUtilities#getItemUtils
  • Deprecated GuiHandler#getApi and replaced it with #getWolfyUtils
  • Added various more javadoc to ButtonBuilders
Full Changelog: v4.16.5.1...v4.16.6.1
----------, Sep 10, 2022




ChunkStorage Memory Usage & PluginIntegration Improvements | v4.16.5.1

Changelog
  • ChunkStorages are cleared correctly when the Chunks are unloaded now.
  • PluginIntegrations can be ignored now when plugins fail to load.
  • Changed loading phase to Startup
  • Exclude third-party libs from jar
More info on GitHub: https://github.com/WolfyScript/WolfyUtils-Spigot/releases/tag/v4.16.5.1



Persistent Block Data & More Third-Party Plugin Support | v4.16.5

This update introduces a whole new way of storing persistent data on blocks.

The previous CustomItemStore system, as the name suggests, was limited to storing the ID of CustomItem, that was placed at the block position. That system is now deprecated and replaced with the new, more modular system.

Changelog
  • #25 – More Third-Party Plugin Support
  • #24 – Improved CustomItem Block Storage
More Info on GitHub: https://github.com/WolfyScript/WolfyUtils-Spigot/releases/tag/v4.16.5.0
----------, Aug 25, 2022

The new NBTQuery makes it possible to query specified data from NBT. The query constructs a NBTCompound with all the specified data it fetched, and can be used for all the things you need like merging it into another NBTCompound, display the data, etc.
It is fully based on the Item-NBT-API, so the NBTCompounds etc. are part of that.
For more info, see #21

Changelog
  • #20 – Fixed Plugin Integration Detection & Initialisation
  • #21 – NBTQuery System to fetch specific NBT components


Player Head Texture Bug Fix | v4.16.4.1


Changelog

  • #23 – Fixed Player Head textures not applying to items

More info on GitHub: https://github.com/WolfyScript/WolfyUtils-Spigot/releases
----------, Jun 27, 2022

Changelog
  • #16 – Better Player Head Texture apply method
  • #17 – Added Support for 1.19
  • #18 – Fixed ExecutableItems ItemRef Issues
  • #19 – Changed the reset of chat input prompts
  • Updated Item-NBT-API to 2.10.0
  • Fixed – AbstractItemBuilder including MiniMessage in JSON
More info on GitHub: https://github.com/WolfyScript/WolfyUtils-Spigot/releases/tag/v4.16.3.0
----------, Jun 14, 2022

Changelog
  • #83 – Eco items are not correctly compared in recipes
  • #82 – ItemsAdder CustomStack wrapper
Full Changelog: v3.16.3.1...v3.16.3.2
----------, Mar 13, 2022

Changelog
  • #80 – Better ValueProviders
  • #81 – Fixed LanguageNode & Placeholder issues
Full Changelog: v3.16.3.0...v3.16.3.1
----------, Mar 7, 2022

Changelog
  • #77 – Fixed Rendering of ButtonState icons
  • #78 – Updated NMS to 1.18.2
  • #76 – JSON Value Providers & Operators
  • #79 – Updated Adventure to 4.10.0
Full Changelog: v3.16.2.0...v3.16.3.0
----------, Mar 3, 2022

Changelog
  • #74 – Fixed ChatInputButton Legacy Color
  • #75 – ItemInputButton renders incorrect item
  • #73 – Updated Adventure to latest dev
Full Changelog: v3.16.1.0...v3.16.2.0


—————————————
Previous Update (3.16.1):

KyoriPowered/adventure & Eco implementation

This update implements adventure to replace the legacy colour keys using §, with a new Component based API.
Because text components are massively integrated in chat messages and items, this update overhauled the whole Button API too.
(More info #71)
Kept backwards compatibility, so calls of the old methods will convert them and redirects to the new API.

Changelog
  • #65 – Implement JUnit tests
  • #67 – Player Store compression improvements
  • #66 – Plugin Adapters & Plugins implementation fixes
  • #68 – CustomItem Events & Actions
  • #69, #70 – NamespacedKey improvements
  • #72 – Eco integration
  • #71 – KyoriPowered/adventure implementation & migration
Full Changelog: v3.16.0.0...v3.16.1.0
----------, Feb 27, 2022

Due to lots of issues regarding the previous library changes, this updates reverts those changes.
The Jackson library is again shaded and relocated. The usage of the libraries feature in the plugin.yml was removed.

That will prevent conflicts with other plugins that are not using their libraries correctly and resolves the 1.16 incompatibility.

Updateable GUI Titles & PlaceholderAPI support
GuiWindows can now update their titles without being reopened or language reload.
For that there are a few new methods:

  • onUpdateTitle(String originalTitle, @Nullable GUIInventory<C> inventory, GuiHandler<C> guiHandler) - Called each title update.
  • setTitleUpdateDelay(int titleUpdateDelay) - Set the initial delay after the inventory was opened.
  • setTitleUpdatePeriod(int titleUpdatePeriod) - Set the delay of each title update.
Using these methods you can change the title dependent on your data. You can also set a repeating task that updates the title each specified period.

Additionally, the titles support PlaceholderAPI now. Placeholders and BracketPlaceholders will be replaced if the PlaceholderAPI plugin is available.
For that there is a new PluginIntegration called PlaceholderAPIIntegration that allows you to call PlaceholderAPI methods without hooking into it on your own.

Code (Java):
PlaceholderAPIIntegration integration = wuCore. getCompatibilityManager ( ). getPlugins ( ). getIntegration ( "PlaceholderAPI", PlaceholderAPIIntegration. class ) ;
if (integration != null ) {
    //PlaceholderAPI is available
    //use the integration e.g. integration.setPlaceholders(player, yourString);
}
or via the functional usage
Code (Java):
wuCore. getCompatibilityManager ( ). getPlugins ( ). runIfAvailable ( "PlaceholderAPI", PlaceholderAPIIntegration. class, integration -> {
    //PlaceholderAPI is available
    //use the integration e.g. integration.setPlaceholders(player, yourString);
    //of course you need to use Atomics to edit variables outside of this lambda.
} ) ;
----------, Jan 4, 2022

This update improves the structure of the API, the way registries are handled, and introduces a new system for plugin compatibility.

For CustomCrafting users!
Only CustomCrafting v2.16.6+ is compatible!
This version is not backwards compatible with CustomCrafting due to the breaking changes listed below.


Breaking changes
It is mostly backwards compatible, but there are some parts, that if they were used before will break.

Jackson library
WolfyUtilities no longer uses the shaded version of Jackson! Instead, it makes use of the libraries feature in the plugin.yml by Spigot to load the original artifacts and use the correct class paths!
If you made use of these libraries, you need to migrate to the original Jackson dependency and add it to your dependencies besides WolfyUtilities.

APIReferences
APIReferences that are dependent on other plugins (ItemsAdderRef, MagicRef, MMOItemsRef, OraxenRef) were moved to me.wolfyscript.utilities.compatibility.plugins and are from now on interfaces with few or no methods.

API changes
To interface with the API, you should use the core maven artifact from now on.
Code (Text):
<dependencies>
   <dependency>
       <groupId>com.wolfyscript.wolfyutilities</groupId>
       <artifactId>core</artifactId>
       <version>2.16.0.0</version>
       <scope>provided</scope>
   </dependency>
</dependencies>
To get an instance of the API ( WolfyUtilities) you use the new WolfyUtilCore class.

WolfyUtilCore.getInstance().getAPI(plugin);
Once you have your API instance, it is recommended to use the WolfyUtilities#getCore() instead of the static WolfyUtilCore#getInstance() whenever possible. This makes sure that you follow a well-structured design, instead of referencing static instances everywhere. That means you should pass your API instance to other Objects (like listeners, handlers, etc.) via the constructors.

Registry
If you wanted to register custom objects in previous versions, you had to do that via static constants in the Registry interface, and for registering classes another interface… Not only was this system confusing, but the constants in the interfaces itself made it really confusing when implementing them.

Because of this, the registry interfaces and classes have been redone and the new Registries class combines all registries into one.

First, the new registry classes have their own package me.wolfyscript.utilities.registry.
The Registry itself got a new hierachy:

  • IRegistry
    • TypeRegistry - Used to register types, from which objects can be created, serialized, deserialized, etc.
      • TypeRegistrySimple - Simple implementation of the TypeRegistry.
    • Registry - Used to register objects.
      • RegistrySimple - Simple implementation of the Registry.
All registries can be accessed via the Registries instance:

Registries registries = yourAPIInstance.getRegistries();
or via a static reference:

Registries registries = WolfyUtilCore.getInstance().getRegistries();
Even though the new registry structure is backwards compatible, it is highly recommended that you update to the non-static registries!

Plugin Compatibility
Plugin implementations are split into separate modules now.
That means that only the specific module requires the dependencies of the corresponding plugin.
Additionally, those modules can be removed from the building process, if necessary.

Module structure:
  • wolfyutilities-parent [pom]
    • core [jar] - The core features, including the API, etc.
    • nmsutil [pom]
      • nmsutil-v<mc_version> [jar]
      • nmsutil-artifact [jar] - Combines all available "nmsutil-v" modules.
    • plugin-compatibility-module [pom]
      • <plugin_name> [jar]
      • plugin-compatibility-artifact [jar] - Combines all available plugin modules.
    • wolfyutilities [jar] - Combines all artifacts (core, nmsutil-artifact, plugin-compatibility-artifact) from above, producing the plugin jar.
The main purpose of this new system is to make sure that plugins that WolfyUtilities depends on are all done with loading their data before any process tries to access that data.
This is quite important as some plugins might load their data asynchronously.

To make this system work, WolfyUtilities will look for all available plugins, for which it can find a PluginIntegration.
Once a plugin is enabled, WolfyUtilities will create a new instance of the corresponding PluginIntegration and initialize it.
That way, there is one PluginIntegration per plugin, that acts as an API layer between the plugin dependent module and core.

At this point, the system needs to take async loading into account. Each PluginIntegration has a method to check if the corresponding plugin is done loading (PluginIntegration#isDoneLoading()).
When a plugin is done loading, its integration will be marked as done. Once all PluginIntegrations are done, the DependenciesLoadedEvent is being called to notify other plugins.

Getting the PluginIntegrations
All the necessary methods are available via the Plugins instance.

Code (Java):
Plugins plugins = yourAPIInstance. getCore ( ). getCompatibilityManager ( ). getPlugins ( ) ;

//or via a static reference:
Plugins plugins = WolfyUtilCore. getInstance ( ). getCompatibilityManager ( ). getPlugins ( ) ;
There are quite a few methods to get PluginIntegrations and/or run callbacks, etc.

Version number update
To better represent the compatibility of the plugin with Minecraft and other plugins, the version number was changed.

<MAJOR>.<MC>.<MINOR>.<PATCH>

The numbers represent the following:
  • MAJOR - These updates contain breaking changes and are most of the time major rewrites.
  • MC Compatibility - The lowest compatible Minecraft version without MCs major version, e.g. 1.16 → 16, 1.17 → 17
  • MINOR - New features and functionality without breaking backwards compatibility.
  • PATCH - Bug fixes with backwards compatibility.
Bug Fixes
  • Fixed ParticleContent backwards compatibility
  • Fixed - CustomItem#checkOldMetaSettings field is included in serialized json.
  • Fixed - WUVersion#parse doesn't work if the version has something appended with "-".
  • Fixed - PlayerUtils crash the plugin if it fails to load a player .store file.
  • Various minor bug fixes.
----------, Dec 26, 2021

This update implements support for Minecraft 1.18, including the NBT API, NMS utils, and other nms dependent things.

As always, make sure to back up your server data before updating!
I cannot guarantee that everything will go smoothly! Don't risk your data being corrupted, deleted, or lost!


Changelog
  • Added NMS support for Minecraft 1.18. This includes the GUIInventory, NBTUtil, and other features.
  • Added 1.18 to MinecraftVersions.
----------, Dec 2, 2021

Changelog
  • Added NBTUtil#getDirectItem to directly edit the NBT of items. This makes it possible to get an NBTItem instance which directly edits the NBT of the specified item without the need to run NBTItem#create.
  • Added a ClassRegistry to register classes instead of default objects. The main use case of this registry would be to prevent using the Registry with default objects and prevents unwanted usage of those values, as this registry enforces to create new instances.
----------, Aug 17, 2021

The plugins now also available on CurseForge.
As it's easier to upload the file to just one place, the download here will link to CurseForge.
Older versions can be still be downloaded via the Version History tab.
----------, Jul 19, 2021

Changelog
  • Added separate NMS module for 1.17.1.
  • Added config setting to toggle plugin-specific APIReferences.
  • Removed support for 1.14.x
  • Fixed #28 - Doesn't start
----------, Jul 11, 2021

Changelog
  • Added ignoreAmount to CustomItem#isSimilar
  • Added FuelSettings object to better structure the CustomItem.
  • Added CustomItem#removeUnStackableItem(ItemStack, boolean) to toggle the craft remains. (default always on)
  • Renamed CustomItem#consumeItem to CustomItem#remove
  • Added CustomItem#remove with an additional setting to toggle the craft remains.
  • Added more and better JavaDoc for CustomItem and APIReferences.
  • Added Custom Deserializer/Serializer for CustomData.
  • Added a weight option to the APIReference, which can override the CustomItem weight setting if it is bigger than 0.
  • Added Environment property to distinguish between dev and prod. (Start argument: -Dcom.wolfyscript.env=<DEV|PROD>)
  • Removed Custom Serializer/Deserializer of the CustomItem for better and easier structure using Jackson annotations.
  • Fixed CustomItem craft remains not clearing the ItemMeta if applied.
    So Water Buckets with NBT like names, etc. will no longer transfer that to the Bucket they are replaced with.
  • Improved RandomCollection to use the ThreadLocalRandom whenever possible. It can be overridden by using RandomCollection(Random) or RandomCollection#next(Random)
----------, Jul 9, 2021

Changelog
  • Added KeyedTypeResolver and KeyedTypeIdResolver
    to make it easier to serialize/deserialize custom Keyed objects.
----------, Jun 21, 2021

Changelog
----------, Jun 18, 2021

Changelog
  • Fixed util used to format shapes for shaped recipes.
----------, Jun 17, 2021

This update requires Java 16 to function! Please make sure you use that version of Java.

This update implements compatibility with Minecraft 1.17 and uses Java 16.
Additionally, there are some bug fixes and improvements.

Changelog

  • Updated to Java 16! Older java versions will not work!
  • Updated to Spigot and NMS 1.17
  • Rewritten and improved ArmorEquipEvent.
    It is more consistent than before and can be correctly canceled.
    Canceling the event cancels the equip or unequip action no matter if it's a vanilla item or CustomItem with a set equipment slot.
  • Removed javax imports wherever possible.
  • Removed deprecated InventoryUtil#setCurrentRecipe.
  • Removed functionality from the ScriptUtil. It will now throw a
    UnsupportedOperationException!
  • Improved GuiHandler, and more using Java 16 features.
  • Fixed that armor couldn't be dropped out of the armor slots in the player inventory.
----------, Jun 15, 2021

Changelog
  • Fixed NullPointerException when initiating block effects.
----------, May 24, 2021

Changelog
  • Fixed an issue that allowed you to collect items from the GUI to the bottom inventory.
----------, May 22, 2021

CustomCrafting notice: This update is only compatible with the latest CustomCrafting v1.6.6.0 or later!

Breaking changes
( I will create a wiki entry for this soon for more detail!):
The CustomCache no longer extends the TreeMap, so any methods depending on it will no longer work!
The init method of the Button class for GuiClusters has been replaced:
-> Button#init(String, WolfyUtilities) was replaced with Button#init(GuiCluster)

Changelog
  • Added MCByteBuf to wrap Minecraft's ByteBuf (This allows to write ItemStacks, etc. into Packets and send them)
  • Replaced io.netty v5 dependency with v4 (as that's the version MC uses!)
  • Improved performance of the consumption of CustomItems.
  • Improved BlockListener
  • Improved NMSUtil class by combining duplicate code.
  • Fixed Custom Items resetting specific NBT data when checked for similarity. (This should fix the issues of heads resetting and other possible issues.)
  • Fixed WorldUtils timer loading placed CustomItems instead of saving them. (This should fix Advanced & Elite Crafting Tables resetting or keeping their particles when broken.)
  • Minor fixes and changes
----------, May 17, 2021

Changelog
  • Added clone methods and copy constructors to CustomItem and its values.
  • Fixed setting the amount of the cloned CustomItem applies it to the original APIReference.
  • Fixed CustomData not being cloned correctly (but only if the CustomData overrides the clone method! Upcoming CC update)
  • Fixed #25 by canceling the event if the edge case happens (still looking for the edge case).
  • Removed old CustomItem clone method & Cloneable interface
----------, Apr 26, 2021

Changelog
  • Added separate Console API to replace console message methods of the Chat API and make use of the Logger.
  • Added new ButtonState constructors to use NamespacedKeys instead of Strings.
  • Reduced the number of tasks that are run on each GUI update.
  • Minor Bug Fixes
----------, Apr 21, 2021

Changelog
  • Fixed FileInputStream is not closed in WorldUtils.
  • Fixed CustomItems with NamespacedKey not ignoring the rest of the meta.
  • Updated README on GitHub and added first documentation.
----------, Apr 15, 2021

Changelog
  • Reformatted GUIInventory click- and drag events.
    They now use one Listener instead of a Listener for each InventoryAPI.
  • Added StateFunction to ToggleButton and MultipleChoiceButton to easily set the state depending on data in the cache, etc.
  • Added more docs to Buttons and other classes.
  • Added new Button#init(GuiCluster) to pass the GuiCluster instance directly.
  • Improved the Inventory Close method of the GuiHandler.
    Outsourced the InventoryCloseEvent to one Listener instead of registering one for each Player!
  • Deprecated old Button#init(String, WolfyUtilities).
  • Deprecated some DummyButton constructors that used ButtonActions even though they can't execute them.
  • Deprecated ScriptUtil because it's unnecessary. Use the ScriptManager or Context of GraalVM directly!
  • Code clean-up
----------, Apr 11, 2021

Changelog
  • Added ItemAdder support
  • Improved NBT check of CustomItems.
    Items from external plugins will only be checked for their contained id.
    (MythicMobs items require the AppendType option to be enabled so the items contain the id!).
    Vanilla items, or CustomItems of WolfyUtilities, that have specific Meta options, will be checked for NBT equality.
  • Preparations for JavaDocs and bug fixes to fix issues that prevented them from generating.
----------, Apr 7, 2021

Changelog
  • Fixed Global Buttons overriding the custom cluster ID of the ButtonState
  • Fixed RecipeIterator not finding the Recipe Registry.
  • Added ButtonAction to the ChatInputAction
  • Added some constructors to ChatInputButton with ChatTabComplete
----------, Apr 6, 2021

Reverted changes, that broke backward compatibility, from the last update.
----------, Apr 5, 2021

Changelog
  • Added RecipeUtil to the NMSUtil API.
    The new RecipeUtil allows to get Recipe Type-specific Iterators instead of using the Bukkit#recipeIterator which contains all types of recipes.
  • Fixed ChatInputButton not using the correct language path when registered globally.
  • Minor Bug Fixes
----------, Apr 4, 2021

This update fixes the backward compatibility of the API
----------, Mar 28, 2021

Changelog
  • WolfyUtilities API instances can now be created in the plugin's constructor.
  • Added ChatTabComplete to set custom Tab completions on chat input.
  • Improved the /wui command.
    The command can now be used by players to input text instead of typing it straight into the chat.
    This makes it possible to use tab completions and doesn't interfere with any other chat plugin.
    The old way of typing input into the chat still works and will be passed to the command, but in the future, it's recommended to use the command directly.
  • Improved RandomCollection:
    It now extends TreeMap to open up more methods to values etc.
    RandomCollection#next now returns null if no value is available.
  • Bug fixes
  • Code clean up & Refactoring
----------, Mar 28, 2021

Changelog
  • Moving Items from the Bottom Inventory into ItemInputButtons will now call all the available ItemInputButtons and is canceled if one button cancels the action.
  • Added new InventoryUtils methods
    • InventoryUtils#getInventorySpace(ItemStack[], ItemStack) allows to check custom ItemStack Arrays for space.
    • InventoryUtils#calculateClickedSlot calculates and places items into slots of the inventory of the Event. This code was moved from CustomCrafting into WU to fix issues regarding it more easily and prevent duplicate code.
----------, Mar 21, 2021

Changelog
  • Fixed #21 - NullPointerException while loading world_custom_item.store
----------, Mar 9, 2021

Changelog
  • Fixed possible NullPointerException in WorldCustomItemStore
  • Changes NamespacedKey terms of use to enforce a better way to register CustomItems. e.g. to prevent duplicate namespaces across multiple plugins.
  • Preparations for Custom Tags support.
----------, Mar 6, 2021

Changelog
  • Minor performance improvements of comparing ItemStacks to CustomItems
----------, Feb 25, 2021

Changelog
  • Fixed issues with CustomItems breaking if their linked item doesn't exist.
----------, Feb 19, 2021

This update fixes some issues regarding the API change of MMOItems to MythicLibs.

MythicMobs Items should be correctly detected again.
Remember to enable the type information for your items to let WolfyUtilities automatically update the items in other plugins like CC.
Code (YAML):
Options:
    AppendType
: true

The NBT API was improved and got new additions.
For example, you can now read and edit the values of the NBTTagList.
Full example how to use the basic API here on GitHub.
Code (Java):

NBTTagList customList = nbt. getTag ( ). list ( ) ;
customList. add ( 0, nbt. getTag ( ). ofIntArray ( new int [ ] { 4, 543654, 235, 223, 423, 32 } ) ) ;
customList. add ( 0, nbt. getTag ( ). ofIntArray ( new int [ ] { 543, 345, 76, 21, 8, 65, 456, 4 } ) ) ;
customList. add ( 0, nbt. getTag ( ). ofIntArray ( new int [ ] { 897, 567, 98, 899, 878712, 12 } ) ) ;
wolfyCompound. set ( "IntArrayList", customList ) ;

//Read values
NBTTagList nbtTagList = (NBTTagList ) wolfyComp. get ( "IntArrayList" ) ;
for ( int i = 0 ; i < nbtTagList. size ( ) ; i ++ ) {
    System. out. println ( "- " + nbtTagList. getTag (i ) ) ;
}
 

Changelog
  • Fixed issue with CustomItems breaking in 1.14
  • Added options to the NBTTagList
  • Fixed MMOItems not working with the new MythicLibs
  • Fixed the detection of MythicMobs items
----------, Feb 17, 2021

This update tries to fix an issue where it isn't correctly loaded before CustomCrafting.

It also adds a new NBT Tag API, that makes it easy to read and edit the NBT Tags of items.
All you need to use this in your code is an instance of the WolfyUtilities API.

Note that this NBT API was not fully tested on all Minecraft versions yet and lacks some features e.g. NBT Tag Lists have no methods yet to read/edit their value.
Code (Java):
ItemBuilder itemBuilder = new ItemBuilder (Material. DIAMOND_SWORD ) ;
itemBuilder. addLoreLine ( "Test Sword" ) ;
itemBuilder. addEnchantment (Enchantment. DAMAGE_ALL, 5 ) ;
itemBuilder. addItemFlags (ItemFlag. HIDE_ENCHANTS ) ;
ItemStack itemStack = itemBuilder. create ( ) ; //Build the example ItemStack. Of course any ItemStack can be used!

NBTUtil nbt = wolfyUtilities. getNmsUtil ( ). getNBTUtil ( ) ; //Get the NBTUtil from your plugins WolfyUtilities instance.
NBTItem nbtItem = nbt. getItem (itemStack ) ; //Creates a wrapper for the ItemStack

//Directly set Tags to the item
nbtItem. setTag ( "test_string", nbt. getTag ( ). ofString ( "Test String!" ) ) ;

//Get the Tag of the item for more advanced options
NBTCompound compound = nbtItem. getCompound ( ) ;
compound. setInt ( "Test_Int", 10 ) ;

//Create a new Compound Tag using the NBTTag API
NBTCompound wolfyCompound = nbt. getTag ( ). compound ( ) ;
//There are tons of options to add/edit any kind of NBT Tag
wolfyCompound. setByte ( "Byte", ( byte ) 4 ) ;
wolfyCompound. setBoolean ( "Boolean", true ) ;
wolfyCompound. setDouble ( "Double", 2d ) ;
wolfyCompound. setFloat ( "Float", 7f ) ;
wolfyCompound. setInt ( "Int", 9 ) ;
wolfyCompound. setLong ( "Long", 9999 ) ;
wolfyCompound. setShort ( "Short", ( short ) 200 ) ;
wolfyCompound. setString ( "String", "TestString" ) ;
wolfyCompound. setByteArray ( "ByteArray", new byte [ ] { 9, 9, 5, 2, 3 } ) ;
wolfyCompound. setIntArray ( "IntArray", new int [ ] { 9, 3543, 2134, 123 } ) ;
wolfyCompound. setLongArray ( "LongArray", new long [ ] { 54, 65, 23244343, 1000000000000000000L } ) ;

NBTCompound nestedComp = nbt. getTag ( ). compound ( ) ;
nestedComp. setString ( "LUL", "xD this is a nested Text!" ) ;
nestedComp. setBoolean ( "Funny", false ) ;

//Set nested compounds
wolfyCompound. set ( "Nested", nestedComp ) ;
//Setting values to the items root tag will automatically be applied to the NBTItem instance
compound. set ( "wolfy", wolfyCompound ) ;

//Get the ItemStack with the updated NBT Tags
ItemStack newItem = nbtItem. create ( ) ;
 
----------, Feb 11, 2021

The previous version didn't work for many people, because CC didn't find a file in WolfyUtilities, even though the file existed.
I hope that this update fixes it.
----------, Feb 8, 2021

The previous update was a bit hurried.
So if you plan to use MMOItems... this update fixes a mistake I made, where it doesn't save the id of the MMOItem but the actual object.

This will be hopefully the final fix for the MMOItems integration :)
----------, Feb 5, 2021

Changelog
  • Fixed the implementation of MMOItems not correctly saving/loading the items.
----------, Feb 5, 2021

upload_2021-2-3_17-45-32.png
WolfyUtilities was mainly rewritten and reworked to fix many issues and make it modular, easy to extend, and especially develop.

The core is now split into two packages /api and /util.
/api contains all the APIs that are only available via an instance of the WolfyUtilites API linked to the specific plugin.
/util contains all the static utils, which can be used anywhere without any additional instances.

This update will be available directly on SpigotMC temporarily, while my website is in development.

GUI
The GUI was completely rewritten to provide a more responsive and stable GUI.
To make this work the GUI API now uses NMS to create custom Inventories that are based on the internal Bukkit Inventory and are completely compatible with Bukkits Inventory API like events, etc.
The API provides new methods and life cycles for custom GUI menus to further customize them and also provides a new way to manage custom caches and make sure you are always using the correct one.
The Buttons are also reworked to require less Boilerplate code and provide more lifecycles like preRender or postExecute, which allows you to better prepare and process data for buttons.


Registry
WolfyUtilities now uses a Registry to register all the custom objects that implement the Keyed interface. This makes it easier to scale data like CustomItems and other data and receive it in code.


Versions
Comparing versions is now easier and doesn’t use weird values anymore.
The API for it is part of the /util package and therefore is available everywhere.
The methods to check for mc version can be found in ServerVersion.


NMSUtil
The new NMSUtil is part of the /api subpackage and requires a WolfyUtilities to be accessed.
Once you got the instance of it you can use some util classes, that make use of CraftBukkit and NMS without any reflection. Note that this API lacks a lot of features at this point, but will be extended in the future.
Current features include a way to serialize/deserialize items in the vanilla JSON format, create GUIInventories (Extends the Inventory interface to include additional WU objects. Completely compatible with Bukkit and is accessible in InventoryClickEvents, etc.), get the NMSBrewingStand to edit values of the tile entity directly (instead of Bukkit, which edits a copy).


Custom Items
The main goal with custom items in this update was to make them modular, meaning that you can easily register your own custom data, meta checks, etc.
Additionally to this, the meta checks are no longer limited to one value (ignore, exact, etc.), but can also be configured with even more options.

To register your own data and meta checks you need to use the Registry.
Code (Java):

//These should be put into your plugins load(); method so you can make sure it is registered before items are loaded.

//Register Meta checks
Registry. META_PROVIDER. register (NamespacedKey. of (“namespace”,”key” ), YourMeta. class ) ;
//Register CustomData for CustomItems
Registry. CUSTOM_ITEM_DATA. register ( <A provider of your custom data > ) ;
//The provider is created using a class that extends it. It’s used to provide new instances and them to custom items.
 

3rd party API support
MMOItems APIReference is now implemented to add support items from MMOItems.
ItemsAdder support was removed due to incompatibility with other plugins like CustomCrafting.


Bug Fixes
  • Fixed critical issues in the GUI that caused errors and allowed players to take out items sometimes.
  • Fixed the consuming settings of CustomItems. Like "consumed", "replacement" and "durability cost"
  • Fixed CustomItemBreakEvent still dropping items if dropsItems is false
  • Chat Clicks are no longer executed in the CommandPreprocessCommand to be inline with Spigots API
  • The cached Click Actions are no longer plugin dependent
  • Fixed custom durability namespaced keys containing invalid characters.
  • Fixed and cleaned up AbstractItemBuilder to make sure that it uses the correct type.
----------, Feb 3, 2021

This update fixes some issues in the GUI management that caused issues on pre-1.16 versions.

Changelog
----------, Nov 24, 2020

This update adds a new Button state life-cycle to make it easier to prepare data before rendering and a new forceSyncUpdate to force a GUI to be updated in sync.
When forcedSyncUpdate is enabled it will also update sync even if you use the onUpdateAsync().


Changelog
  • Added ButtonPrepareRender method, which makes it easier to prepare data for render. (commit: 3ab90d0)
  • Implemented prepareRender method in ActionButton, ItemInputButton, etc. (commit: 01039ed)
  • Added forceSyncUpdate option to GuiWindow. (This option forces any updates, also async render, to be executed in sync. This should be used when using ItemInputButtons to prevent item duplication!) (commit: 12ff065)
  • Added explanation to the render method (commit: 1621e18)
----------, Nov 20, 2020

This is an update, which further adds features required for future CustomCrafting updates (or current Patreon version).
It also adds a small experimental feature, that can be enabled via the custom item config.

Changelog

  • Added experimental feature to CustomItem, that allows the item to ignore every single NBT, but the namespaced key (Setting the advanced option to false will enable it and meta ignore settings are also ignored). (commit: 782969c)
  • Added more methods to the CustomItems utils, to get namespaces or a list of custom items of a namespace. (commit: 37aca6d)
  • Smaller changes to MetaSettings and code clean up (commit: 26f2a93)
  • Update 1.6.2.16 (commit: 9952c4c)
----------, Nov 15, 2020

This update fixes some important Bug fixes for PlotSquared and other fixes.


Changelog
  • Added old default particle effects to a new file
  • Improved the permission check algorithm
  • Removed the Rhino JavaScript engine
  • Removed unnecessary files
  • Fixed try-catch blocks catching Throwable
  • Fixed issues with PlotSquared plot checks
  • Minor improvements
----------, Nov 10, 2020

In this update, the particle system was mainly reworked with a new JavaScript engine for the particle animations and more improvements.
All that's left is a custom particle implementation for CustomCrafting.

The Database handler is now correctly handling queries and connections.

This update will redirect to my new website.
If you got any problems downloading it from there let me know here or on my discord server.



Changelog
  • Added custom Vector Serializer for Jackson.
  • Added new test particle effects and particles.
  • Added animation script for the test particle effects.
  • Rewritten the MySQLDataBase Util, so it now handles connections better.
  • Rewritten the system that executes the scripts of the particle effects.
  • Updated to the Nashorn JavaScript engine (Unsupported in Java 15+).
  • Reverted Quick Fix for ItemsAdder Items, as it is now redundant on the latest Patreon CC version.
  • Removed Gson custom serializer classes.
  • Fixed GuiUpdate.setItem not applying items to queue inventory.
  • Fixed custom particle effects on blocks not reinitializing after server restart.
  • Fixed custom particle effects on items not being canceled when item is dropped.
  • Fixed custom particle effects not spawning on players.
----------, Nov 6, 2020

Changelog
  • Fixed GUI not responding when reopened after chat input and possibly other edge cases.
  • GuiHandler now saves the UUID instead of the Player instance
----------, Oct 24, 2020

Changelog
  • Fixed ArmorEquipEvent issues: NullPointerExceptions and Players being able to equip any item
  • Fixed Gui items flashing in the inventory when rendered
    Buttons are now rendered into a virtual inventory, which acts as a queue and transfers the items to the actual inventory when all render operations are done (including async operations).
  • Renamed the Main class of the plugin to make it more unique (Main.class isn't really unique)
  • Rearranged and renamed contents of the main class
  • Removed debug plugin message of ChatInputButton
----------, Oct 23, 2020

removed some debug messages I just found
----------, Oct 20, 2020

  • Fixed saving and loading of Items
  • Added experimental Network API to send messages via a channel to Forge Mods. Retrieving messages from the client is not yet possible.
----------, Oct 20, 2020

This update was designed to reduce the amount of Boilerplate required to create Buttons, fix issues with the async rendering and languages.



Buttons
Render & Action interfaces
They are now separated to make use of lambda and make it more flexible and should replace the old ButtonRenderAction as it is now deprecated!


CustomItems

MythicMobs
Integrated MythicMobs to automatically the item names and update them if they change in MythicMobs.
This requires the MM Items to include the Options.AppendType to be enabled, so WU can read the name from the NBT data.

Vanilla Features:
  • Block placement
  • Block use of item inside vanilla recipes (only crafting recipes!)

ItemStack Serialization
Uses a new way so serialize/deserialize ItemStacks. This however still doesn't fix load issues with some items using invalid NBT Tags.


Potion Effects

The JacksonUtil ObjectMapper now contains a Serializer/Deserializer for PotionEffect and PotionEffectType.



Bug Fixes
  • Fixed GUI not responding and updating after opening input and going back.
  • Fixed sync updating of GUIs not working
  • Fixed previous GuiWindow updating when the Window was changed inside a ButtonAction.
  • Fixed LanguageAPI error if the String, it tried to translate, didn't contain a language key.
  • Removed backward compatibilities with old 1.13 custom durability, as it was saved inside the lore and wasn't efficient.
  • Removed unused files
  • Minor changes to prevent NullPointer when updating GUIs
----------, Oct 19, 2020

Removed debug messages
----------, Aug 27, 2020

Changelog
  • Fixed GUI Listener not cancelling when Button failed to execute or other issues occur.
----------, Aug 27, 2020

This update fixes issues with 1.16.2 and improved the execution and rendering of Buttons.

Changelog
  • Fixed loading of ItemCategories in latest Minecraft versions
  • Added try-catch to Button execution and rendering to prevent Buttons from causing GUIs to break when an error occurs.
----------, Aug 24, 2020

This update introduces a new method to render GuiWindows async, sync or both mixed.

The GuiWindow has two new methods:
onUpdateSync() and onUpdateAsync().

First the GuiUpdateEvent is called after the execution of it the onUpdateSync() method will be called and the inventory is being opened if not already open.
At the end the onUpdateAsync() is called.

Changelog
  • Added the ability to render GuiWindows async, sync or both mixed
----------, Aug 22, 2020

This update will fix some issues in WU, but will not fix the current CustomCrafting issues!

Changelog
  • InventoryAPI.reset() now clears all the registered buttons
  • Added Reflection.getMethod and Reflection.getDeclaredMethod with boolean param to toggle the stacktrace. If true no stacktrace is printed when it fails.
  • Minor improvements
----------, Aug 12, 2020

It's finally here!!
Update 1.6 introduces a completely redone internal custom item system and rearranged API.
The way JSON files are saved and loaded is also redone, so old json files might not work as intended (This affects plugins using this API! See the changelog of CustomCrafting).
The new Custom Item system integrates Oraxen and ItemsAdder into WolfyUtilities and CustomCrafting.

Changelog

  • Changed the json library from Gson to Jackson
  • JsonConfiguration still uses Gson, but might not be as stable as using Jackson.
  • The Language no longer uses the JsonConfiguration
    - LanguageAPI now uses a fallback Language when the specific key isn't found in the active language
    - Languages now cache previous used keys for faster access
  • Changed the CustomItem class:
    - it no longer extends Bukkits ItemStack
    - it now extends AbstractItemBuilder that allows for easier creation of Items
    - it is now contains a APIReference variable that can be a VanillaRef, WolfyUtilitiesRef, OraxenRef or ItemsAdderRef.
    - get the ItemStack via:
    getItemStack() - gets the item, linked to the APIReference without amount changes.
    create() - creates a copy of the linked item and uses the custom amount setting.
  • All the classes are now using custom Jackson Serializer/Deserializer instead of Gson.
  • Many other changes and rewritten parts of the API.
  • Added many comments to code to explain the methods. (this is unfortunately not yet available)
  • Added equals() method to many classes to check for equality.
  • Added NamespacedKey to the CustomItem that is added to it when it's saved. That way you can now know when an CustomItem is actually saved by invoking hasNamespacedKey().
  • Added back the Custom Equipment Listeners. It now supports equiping from items in the hotbar via right-clicking and full coverage of Inventory clicks like dropping one item, switch items, numberkeys, etc.
  • Added new method CustomItem.getReferenceByItemStack() to get a new instance linked to the specific API/Item it's bound to. e.g. If the ItemStack is part of Oraxen this method returns a new CustomItem with the OraxenRef. If the ItemStack has no reference it returns a new CustomItem with the VanillaRef.
  • Fixed the check of Player Head textures.
  • Fixed that Custom Durability is not completely repairable with Mending
  • Minor Bug Fixes
----------, Aug 10, 2020

Changelog
  • Fixed duplication issue with elytra, pumpkin and player head
  • Performance improvements
----------, Jun 7, 2020

Changelog
  • Fixed an Armor duplication bug.
    The duplication occurred when pressing a number key 1-9 + left click at the same time to unequip armor pieces.
    I've tested many other edge cases to make sure there isn't any other problem that might happen.
    If you however encounter any other duplications please let me know on Discord, as I check Discord more often than SpigotMC!
----------, Jun 3, 2020

Changelog
  • Fixed UTF-8 issues with MySQL
  • Fixed MySQL reconnecting issues
  • Changed the use of the SQLDataBase.openConnection().
    It no longer opens the connection async!
    Instead use SQLDataBase.openConnectionAsync()!
  • Deprecated SQLDataBase.openConnectionOnMainThread()!
    It's replaced by SQLDataBase.openConnection()!
  • Fixed some ButtonState constructors for MC 1.13
  • Added a few JavaDocs to some methods of the CustomItem class
----------, May 21, 2020

Changelog
  • Fixed 1.13 compatibility issues
----------, Apr 26, 2020

Changelog
  • Changed the id system of CustomItems as well as the CustomConfig.
    It will no longer use the String ids, they are replaced by a new custom Object called NamespacedKey which consists of a namespace and key.
  • Fixed ArmorEquipEvent ignoring the Curse of Binding of items and making it possible to unequip them.
----------, Apr 26, 2020

Changelog
  • Fixed incompatibility of the chat input with ChatColor2 and other potential plugins that manipulate chat messages.
----------, Apr 14, 2020

Changelog
  • Added CustomModelData option to ButtonState constructor
  • Fixed the extra tag of CustomItems not being correctly ignored when comparing it to other items.
  • Fixed ClickActions not working correctly and sometimes printing the text in the chat (e.g. wu::af634e2c-...).
    The same applies to chat input not being usable.
  • Added soft depend mcMMO and method to check if it is installed
----------, Apr 9, 2020

Changelog
  • The similarity check of CustomItems can now ignore the id tag, which is added to CustomItems that are saved.
    Right now this has to be done via the config and there isn't an option in CustomCrafting yet.
----------, Mar 26, 2020

Changelog
  • Fixed issue with saving recipes causing invalid key exceptions
----------, Mar 18, 2020

This update will only work with the latest and future CustomCrafting updates!

Changelog

  • Added more reflection utils to get declared methods and fields.
  • CustomConfigs and ItemConfigs are now Json only!
  • Fixed issues with CustomItems resetting when equipped.
----------, Mar 18, 2020

Sorry about that... just a quick fix. That should fix all the problems running this plugin once and for all.
----------, Mar 2, 2020

Fixed issues with org.mozilla package once again.
It should finally work without any issues.
If you still encounter problems, let me know.
----------, Mar 2, 2020

Changelog
  • Fixed issues regarding the relocation of org.mozilla
  • More minor improvements
----------, Mar 1, 2020

Changelog
  • Fixed #3 CustomItems location isn't updated when moved by Pistons, etc.
  • Fixed #4 CustomItems placed down as blocks are not unregistered and/or dropped when exploding
  • Relocated org.mozilla package to me.wolfyscript.utililities.org.mozilla to prevent it from interfering with other plugins using org.mozilla.
----------, Feb 20, 2020

Uploaded the wrong file.
Sorry about that.
----------, Feb 15, 2020

Changelog
  • Fixed a duplication bug when creating dirt paths or striping logs with saved CustomItem tools.
    e.g. using a custom ax on logs, then when that stripped log is broken it drops the custom ax instead of the log.
----------, Feb 15, 2020

Changelog
  • CustomItem container (shulkerbox, chest, etc.) that are saved, no longer drop the default CustomItem when placed and broken. That means the when you take out the items out of a shulkerbox and break it, it drops the shulkerbox with the new inventory without the items. This also prevents duplication problems that occurred before.
----------, Feb 15, 2020

Changelog
  • Fixed some problems when placing blocks causing errors, because of missing checks of CustomItems.
----------, Feb 14, 2020

Changelog
  • Fixed equipping items in creative cause them to drop and duplicate when inventory is closed
  • Added missing carved pumpkin to equipable items
----------, Feb 10, 2020

Changelog
  • Fixed the consumption of unstackable items for 1.13.2 - 1.14.x causing recipes in Customcrafting to break.
----------, Feb 9, 2020

Changelog
  • Fixed elytra not being able to be equipped.
  • Minor improvements
----------, Feb 6, 2020

  • Fixed that players were able to equip the armor in the wrong armor slots e.g. boots as a helmet.
----------, Feb 5, 2020

  • Added tag to CustomItems to make them equipable on armor slots.
  • Implemented experimental custom particle system.
    • Create custom particle effects via JSON configs.
    • Use JavaScript to further customize the particle effects
    • JavaScript is executed with the help of Rhino by Mozilla check it out here
  • CustomItem blocks no longer drop when broken in creative mode.
  • Added more default replacements for items like Honey bottle, potions, soup, etc.
  • Fixed items with durability cost not checking if the item needs to break
  • Fixed custom replacement not being removed when the item is set to Air or null
  • Fixed problem with click actions printing the code into the chat when it's invalid. It now displays an error only for the player that clicked on it.
----------, Feb 4, 2020

Changelog
  • Fixed custom durability not correctly converting to the new format.
  • Fixed the method to open Books not working on the latest spigot builds, because of changes to the book meta.
----------, Jan 6, 2020

Changelog
  • Changed some classes that interfered with the recent Java versions.
----------, Jan 5, 2020

WolfyUtilities 1.5.0.0

This update adds many new features and fixes a lot of bugs.
The biggest change is that the CustomItem management from CustomCrafting is migrated into WolfyUtilities, to further improve compatibility across multiple plugins.

This update is required for the latest CustomCrafting 1.5.0.0 update!​

Changelog
  • Added CustomItems to WolfyUtilities, which allows other plugins to use them too.
  • CustomItems can now be placed down without loosing their MetaData when broken.
  • Added the ability to add CustomData to CustomItems that is going to be saved.
  • Added CustomItemBreakEvent and CustomItemPlaceEvent
  • Added GuiCloseEvent
  • Added support for Json Serialization and Deserialization. Register custom TypeAdapter to WolfyUtilites GsonUtil onLoad.
  • Added first custom TypeAdapter for the Location object.
  • Added Item categories containing the corrresponding materials based on Minecraft's creative menu categories. They are loaded out of the Server libraries on startup.
  • Added new ItemStack serialization that saves items in NMS json text rather than encrypted in base64.
  • Added new Custom Durability option to Custom Items which is compatible with 1.14+
  • Added CustomCache implementation for GuiHandler to allow you to create your own cache and save values directly into the GuiHandler cache.
  • Improved the trimming algorithm for shapes and ingredients
  • CustomDurability is now compatible with mending
  • Rewrote the JsonConfiguration to make it compatible with UTF-8 and custom TypeAdapter.
  • Fixed some bugs occuring on Minecraft 1.13 servers
----------, Jan 2, 2020

  • Fixed the bug where items with custom durability didn't break and instead the durability got negative.
----------, Sep 23, 2019

Fixed dragging items across inventories is being blocked erverywhere.
----------, Sep 8, 2019

  • Rewritten the whole GUI sytem. It now uses buttons to more easily manage GUIs.
  • Added ItemBuilder class (still WIP)
  • Added Inventory Utils and randomCollection for creating probability lists with weight.
  • Fixed bugs with configs.

This update breaks all the older versions of plugins using WolfyUtilities!
So only use it if the plugin is updated to this new WU version!
----------, Sep 8, 2019

  • Added the possibility to add custom durability to ItemStacks (WIP)
  • Improved Gui handling. (lower chance of errors when opening GUIs and switch them)

Bug Fixes:

  • Fixed WolfyUtilities Main-Config. (got saved in the wrong path)
  • Fixed YAML Config constructors
----------, Jul 29, 2019

  • Fixed the bug where the lore of an item didn't get loaded.
----------, Jul 26, 2019

  • Fixed the loading of items out of json
----------, Jul 25, 2019

Before reading the changelog, I just want to inform you that this WolfyUtilities update won't be compatible with the old CustomCrafting versions!
There will be a CustomCrafting update in the next minutes which needs this update to work.

Changelog:
  • Added JSON file format support to the configs. Wrapper Config which allows for easily implementation of json or yaml.
  • Removed some unnecessary Metrics.
  • Added serialization/deserialization of ItemStack with Base64 (This is used to save items in Json)
  • Languages are also compatible with Json now.
  • Fixed some bugs with players opening GUIs
----------, Jul 24, 2019

  • Last update didn't work with CustomCrafting... Now it works again!
----------, Jul 14, 2019

  • Added Metrics
  • Made the use of ClickEvent and HoverEvent inside of ChatAction messages easier.
  • Fixed bugs in getting Items out of Config
----------, Jul 14, 2019

This update is necessary for the upcoming CustomCrafting update!

  • Improved the language key replacement system
  • Added translate tags for Items saved in configs.
    • Display name: $language_key$
    • Lore: prefix + $language_key$
    • prefix:
      • [WU] : one line text
      • [WU!] : language key is a list of texts. The texts will be inserted in the lore in order of the list.
----------, Jun 16, 2019

Fixed some bugs in the config class. The version "v" setting used by items is now ignored and replaced by the latest version number when the item is being loaded out of the config.
----------, Jun 7, 2019

  • Added the possibility to add Hover Events to chat messages
  • Improved the RAM usage of the Action Messages. When you create a chat message that runs code you can set it to be cleared after.
  • Some minor Bug fixes

Warning! This update is only compatible with the latest versions of CustomCrafting!
CustomCrafting 1.1.0.0 or later!
----------, May 21, 2019

Fixed a bug that caused some bugs in CustomCrafting.
Because of this bug some shaped recipes were not working.
e.g. 1x2, 2x1 recipes and probably even more.
----------, May 19, 2019

  • Improved Base64 encoding for Skull textures and made it compatible with 1.13 - 1.14
  • Added check if server is running on 1.14
----------, Apr 28, 2019

This bug caused some really big problems.
I am of course talking about the bug, that caused the CustomCrafting GUI to not work properly.
If more than 1 player was online you were able to take out the GUI items, which is no good.

My first thought was that it's caused by processing speed, but as it turned out, it wasn't that.

So, it should all be fixed now.
If you still encounter this bug, please let me know. Fastest way is to let meknow on my Discord server

With this update you should be able to use the CustomCrafting GUI properly again.

It should be noted that if two players are editing the same recipe at once it may cause some problems!

However, I am still rewriting the Invenory API to improve it's performance. But this will take time.
----------, Apr 16, 2019

  • Fixed a bug that caused an error on Player Quit, due some problems with the Click Actions
  • Added the ability to add more ClickEvents to a Clickable text. like hover events, open url, etc.
----------, Apr 10, 2019

Changes:
  • Added a new method to send Clickable Text to players, that can execute code.

This WolfyUtilities update is also needed for the upcoming update for CustomCrafting!
----------, Mar 30, 2019

Some more bug fixes effecting the item saving and loading!
Color codes weren't saved correctly and caused destroyed config files!
----------, Mar 26, 2019

Changes:
  • Fixed some bugs in the color codes loading again... This fixes a bug with the advanced workbench for CustomCrafting!
  • Added new method to get skull texture by URL value
    Code (Java):
    WolfyUtilities. getSkullViaURL ( String value ) ;
    /*
    http://textures.minecraft.net/texture/ is not needed and doesn't work with this method!
    Just put in the value from the end of the link!
    */

    WolfyUtilities. getSkullViaURL ( "b8ea57c7551c6ab33b8fed354b43df523f1e357c4b4f551143c34ddeac5b6c8d" ) ;
----------, Mar 24, 2019

Changes:
  • Fixed bug with loading formating codes out of configs. Fixes recipe checker for CustomCrafting!
----------, Mar 21, 2019

Changes:
  • Fixed toggle help on/off duplicates help lores
  • Added an override attribute to the Config constructor
  • Added bypass for some chat plugins
  • Added methods to copy skull textures from ItemStack to another
----------, Mar 18, 2019

  • Removed Events (GuiClickEvent) it is now GUI based and named GuiClick
  • Fixed & Color codes not applying from Config, Config saving and item saving
  • Fixed GUI compatibility with gui-update method and chat input calls
  • Fixed a bug when closing inventories and open it again results in going back one Window
  • Added export method for files inside of jar, Utils for Recipe shapes
  • Added utils needed for CustomCrafting NEXT GEN update
----------, Mar 3, 2019

Resource Information
Author:
----------
Total Downloads: 107,477
First Release: Jan 19, 2019
Last Update: May 2, 2024
Category: ---------------
All-Time Rating:
11 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings