Lib's Disguises [Free] icon

Lib's Disguises [Free] -----

Lib's Disguises, the premier disguise plugin



Release 11.0.12
This update is largely a bugfix update, as well as better threading support and some consistency changes.
You can read more about this after the changelog

* Fixed 1.12 to 1.18 encountering an error
* Minor internal rewrite to improve threaded operations
* Fixed wrong string being used in git hash
* Minor improvement to animal colors (notably sheep, wolf and cat) where it was either broken in 1.12, or was a bit unexpected in behavior
* Third party plugins that set null values on watchers will now see more consistent behavior

For threading changes, this doesn't change anything from the endpoint of the developer or user, the plugin is used as normal. It's an internal change that can be summed up as atomic operations, and a switch from a normal Map to a ConcurrentMap. However, the map doesn't allow for null values, which is why the next change happened.

For consistency changes, this should only impact other plugins hooking into its api, and only if those plugins were passing nulls to the watchers.
Previously, the behavior would either set the null internally, or replace the null with the equivalent for that method, eg, item -> air.
When the null was stored as a null, the plugin would handle it by simply not sending that metadata through.

That behavior has now been changed. Now you must set a non-null if you want to set a flag on the disguise. Otherwise it will fall back to the normal metadata that would be sent. Which is either the default metadata, or the passed through metadata if they share a common ancestor (eg, if entity is on fire). Basically, a null will now reset the flag to "passthrough" state.

The behavior may be slightly inconsistent for some methods, which will be an oversight. There's quite a lot of code to go through. Unfortunately primitives do not have nulls (int, boolean, float, etc) and are not included in this change. Unfortunately, I don't have a good solution without changing them all from "boolean" to "Boolean" which will likely break every single plugin. As such, currently watcher.setUnsafeData(MetaIndex.FLAG_NAME, null) is the only solution. But, this is very niche and I don't expect anyone to be impacted by this.

A reminder that Lib's Disguises will return the default value of the metadata flag if it has not been set on the disguise, it should never return the actual underlying metadata of the entity. Calling "isBurning" doesn't tell you if the actual entity is on fire or not, it just tells you what the disguise has it set to, or the default if it was not set.

This consistency change is somewhat minor, and I don't expect anyone to be significantly impacted.
----------, Nov 6, 2025
Resource Information
Author:
----------
Total Downloads: 871,626
First Release: May 17, 2013
Last Update: Nov 7, 2025
Category: ---------------
All-Time Rating:
281 ratings
Find more info at www.spigotmc.org...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings