Bug Fixes
- Parrot (And maybe Cat and Wolf) disguises may crash other players' connection
 - The console logs a warning when a player undisguise themselves while using an item (
Error occurred while syncing watcher: Cannot invoke "java.util.Map.remove(Object)" because "this.handMap" is null) 
Other
- Also send attribute packet when sending disguise spawn packets
 - Cancel metadata packet if it doesn't contain any data after a culling
 
New features
- Added Warden disguise's sonic boom animation
 - Added multiple disguises' attack animation
- This includes: Iron Golem, Warden, Hoglin, Zoglin
 
 
Bug fix
/fm lookupdoesn't require permission to execute
Other
- Some small idle performance optimization
 
Bug Fix
/fm lookupdoesn't require permission to execute
A small release to hide these annoying warnings from appearing in the terminal by default (Unless debug_output is on):

We don't know why a non-nullable method from Minecraft could return a null value, but it happens, and it's very often :<
However, it doesn't seem to affect anything so far. We will keep tracking this issue until we find out why this could happen and what it affects.
Starting from this version, FeatherMorph will only have ProtocolLib as a dependency and no longer requires LibsDisguises.
New Feature
- Implemented server-side disguise renderer
- This will help us in making compatibility with Folia in the future.
 - If ProtocolLib is not installed, we will use the client-side renderer instead.
 
 
Other
- Disable ourselves when loaded on an unsupported Minecraft version
 
Changes since 1.0.0-rc.1
1.0.0
- Fix Armor Stand disguises not applying 
ShowArmsproperty - Only display lookup warnings when 
debug_outputis enabled 
1.0.0-rc.2
- Handle several common exceptions during skin lookup
 - Don't remove expired skins for now
 - Fix disguises with no name displaying a blank nametag above their head
 
Starting from this version, FeatherMorph will only have ProtocolLib as a dependency and no longer requires LibsDisguises.
New Feature
- Implemented server-side disguise renderer
- This will help us in making compatibility with Folia in the future.
 - If ProtocolLib is not installed, we will use the client-side renderer instead.
 
 
Other
- Disable ourselves when loaded on an unsupported Minecraft version
 
Changes since 0.13.10-rc.1
0.13.10
- Fix Armor Stand disguises not applying 
ShowArmsproperty - Only display lookup warnings when 
debug_outputis enabled 
0.13.10-rc.2
- Handle several common exceptions during skin lookup
 - Don't remove expired skins for now
 - Fix disguises with no name displaying a blank nametag above their head
 
This is a Release Candidate release for 1.20.2 to test our work on server-side disguise renderer implementation. If you find any issues, please report them on our GitHub Issues!
This version no longer requires LibsDisguises to display disguises! Only ProtocolLib!
Changes
- Fix update checker only checking featured versions for an update.
 - Only send packets to affected players instead of the whole world
 - Remove player-exclusive metadata instead of building a full meta of the disguise upon meta packets.
 - Build full meta packet when constructing spawn packets.
 - Use the V2 plan to fetch player disguises' skin
 
This is a Release Candidate release for 1.20.4 to test our work on server-side disguise renderer implementation. If you find any issues, please report them on our GitHub Issues!
This version no longer requires LibsDisguises to display disguises! Only ProtocolLib!
Changes
- Fix update checker only checking featured versions for an update.
 - Only send packets to affected players instead of the whole world
 - Remove player-exclusive metadata instead of building a full meta of the disguise upon meta packets.
 - Build full meta packet when constructing spawn packets.
 - Use the V2 plan to fetch player disguises' skin
 
This is a Beta release for 1.20.2 to test our work on server-side disguise renderer implementation. If you find any issues, please report them on our Github Issues!
This version no longer requires LibsDisguises to display disguises! Only ProtocolLib!
Changes
- Add support for Disguise Offline Storage (OfflineStore)
 - Make disguise follow the player's 
NoGravityproperty - Only send packets to affected rather than all players in the same world
 - Fix some incorrect packet behaviors
 
This is a Beta release for 1.20.4 to test our work on server-side disguise renderer implementation. If you find any issues, please report them on our Github Issues!
This version no longer requires LibsDisguises to display disguises! Only ProtocolLib!
Changes
- Add support for Disguise Offline Storage (OfflineStore)
 - Make disguise follow the player's 
NoGravityproperty - Only send packets to affected rather than all players in the same world
 - Fix some incorrect packet behaviors
 
This is a Beta release for 1.20.2 to test our work on server-side disguise renderer implementation. If you find any issues, please report them on our Github Issues!
This version no longer requires LibsDisguises to display disguises! Only ProtocolLib!
New Feature
- Implemented server-side disguise renderer
- Merged from 1.0.0-beta.3
 
 
Other
- Removed dependency on LibsDisguises
 - Removed GSit integration
- Because it relies on LibsDisguises integration
 
 
This is a Beta release for 1.20.4 to test our work on server-side disguise renderer implementation. If you find any issues, please report them on our Github Issues!
This version no longer requires LibsDisguises to display disguises! Only ProtocolLib!
Bug Fix
- ArmorStandWatcher not merging or writing NBT compounds correct
 - Effect particles' opacity doesn't look right when an ambient effect is present
 
Other
- Some minor optimizations
 - Display an error message and disable the plugin itself when running on an unsupported version
 
This is a Beta release to test our work on server-side disguise renderer implementation. If you find any issues, please report them on our Github Issues!
This version no longer requires you to install LibsDisguises! Only ProtocolLib!
New Feature
- Implemented server-side disguise renderer
- OfflineStore is not implemented, it will be done later
 - Server-side SelfView is not supported. Because of client integration, we don't have a plan to make this yet...
 
 
Other
- Removed dependency on LibsDisguises
 - Removed GSit integration
- Because it relies on LibsDisguises integration
 
 
Other
- Update to 1.20.4
 - Added skill and ability configuration for Breeze disguises
 
New Features
- Allow setting worlds that can't use the Fly ability
- You can change the setting by using the 
/fm option nofly_worlds <add|remove> <world name>or edit in the config! 
 - You can change the setting by using the 
 - Added Residence integration, allows to set whether players can fly in a residence by setting the 
noflyflag 
Bug Fix
- Changing a Player Disguise's skin on Windows using LibsDisguises backend will print a warning in the console
 
Other
- Allow setting banned disguises using in-game commands
/fm option banned_disguises <add|remove> <full disguise id>
 - Allow setting NBT blacklist using in-game commands
/fm option blacklist_nbt_pattern <add|remove> <regex>/fm option blacklist_tags <add|remove> <NBT tag name>
 - Tweaked the update frequency of the Fly ability
 - Some internal changes to InteractionMirror
 
New Feature
- Implemented Client Disguise Renderer Protocol
- This supports clients to render other players' disguises and will be enabled automatically as "Plan B" when LibsDisguises is not installed and the 
client.client_rendererconfig option is enabled. - We would eventually make our server-side disguise renderer and no longer depend on LibsDisguises, but for now, let's do this first.
 - Requires clients to install FeatherMorphClient >= 0.4.4!
 
 - This supports clients to render other players' disguises and will be enabled automatically as "Plan B" when LibsDisguises is not installed and the 
 
Other
- Only check for the 
Releasechannel for updates- Also only check updates that are available for the current platform
 
 


