If your server has experimental features enabled, we suggest updating this version to avoid a dupe glitch!
Also if you're updating from 1.2.x, please also check the 1.3.0 changelog
Bug Fixes
- Quick disguise triggers ignoring the item held
 - Disguises constructed from entities still apply random properties
 
Other
- Bump InventoryGUI
- Fixes an item dupe glitch
 
 
This version includes some changes related to permissions, please attention!
- Permissions will now use 
feathermorphas the prefix instead ofxiamomc.morph, while other usages remain unchanged. - Support for legacy permission nodes will be removed in 1.5.0.
- Which is expected to be released with the 1.22 winter drop.
 
 
We recommend updating ProtocolLib to version 5.3.0, which you can download here.
New Features
- Inventory GUI for Disguise Action selection
 - Added Disguise Tool
- This replaces the old skill item.
 - By default, the disguise tool can be obtained through crafting using Feather + Redstone. The recipe can be configured in 
recipes.yml. 
- Assuming we are using the default keybinds:
 - Players can open the disguise selection GUI with Sneak + RMB, and unmorph themselves with Sneak + LMB.
 - When disguising, use RMB to activate skills, and LMB to open disguise action selection.
 
- You can also execute the command 
/fm make_disguise_toolwhile holding an item to make it a Disguise Tool. 
 - Towny Integration
- It is now possible to set whether flying is allowed in the wilderness in worlds with Towny enabled.
 - Players can also set whether their town allows flying through the command 
/toggle-town-morph-flight. By default, flying is allowed in all towns.- The permission node for this command is 
feathermorph.toggle_town_fly 
 - The permission node for this command is 
 
- Players can fly in towns that allow flying if they meet any of the following conditions:
- The player is a resident/mayor of the town.
 - The player is trusted by the town.
 - The player and the town belong to the same nation.
 - The player's town is allied with the target town.
 
 - Note! Due to the mysterious teleport event trigger conditions of Folia, there may be bypass issues on these servers.
- It is currently known that using the vanilla teleport command will not trigger the event, so avoid using this command to teleport others whenever possible.
 
 
 
Bug Fixes
- The packet that hides a player from other's TAB list is also sent to the hidden player
- And causes the hidden player’s client don't display their skin.
 
 - Armor stand disguises do not correctly present the source entity’s pose.
 - Creeper disguises do not have charged variants.
 
Other
- Changed permission prefix
- Permission nodes have changed from 
xiamomc.morph.XXXtofeathermorph.XXX. 
 - Permission nodes have changed from 
 - Changed package name
- Package name has changed from 
xiamomc.morph.XXXtoxyz.nifeather.morph.XXX. 
 - Package name has changed from 
 - Tweaked Skill Configuration and Player Data Storage
- Skill configurations are now distributed in the 
skillsdirectory, stored as<namespace>/<id>.json.- For example, the skill configuration for 
minecraft:sheepis located atskills/minecraft/sheep.json. 
 - For example, the skill configuration for 
 - Player configurations are now stored in the 
playerdatadirectory as<UUID>.json. - The original 
data.jsonandskills.jsonwill be renamed todata.json.oldandskills.json.old. 
 - Skill configurations are now distributed in the 
 - Added profile request batching
- Requests for player profiles in the plugin will now be processed in batches at intervals to prevent Mojang API from rejecting them with' 429 Too Many Requests` when many requests are made.
 
 - Warden disguises will now become invisible after the digging animation finishes.
 - Removed TAB integration
- It is no longer needed.
 
 
Bug Fix
- Disguises having random variants doesn't randomize upon disguising, instead it prints warnings to the console. (
The given property '...' doesn't exist) 
New Features
- (Experimental) Allow hiding disguised players from the TAB list
 - (Experimental) Allow displaying player disguises on the TAB list
 
Other
- Removed suggestion about using the client mod
 - Allow 1.21 servers for using this
- That said, we still suggest upgrading your server to 1.21.1 since 1.21 is no longer supported by Paper and we target the latest 1.21.1 API in the dev environment
 
 - Tweaked some disguise's icon on the selection GUI
 - The disguise selection GUI will now play sound when opening and flipping pages
 - The UUID of the disguise now has a more specific rule to generate
- But the client still doesn't have much chance to crack it, as long as they don't have access to the plugin configuration
 
 
New Features
- Added Inventory GUI for disguise selection
- You can open it using the 
/morphcommand! With no arguments, it will open the GUI instead of complaining that there are not enough arguments. 
 - You can open it using the 
 - Now can configure whether players can fly in water/lava in different worlds
 
Bug Fix
- ServerSetEquipCommand doesn't construct the client command correctly
- And cause the client can't see the disguise's equipment
 
 
Other
- The undisguise operation now plays the same sound as the disguise op
 - Avoid modifying the mob's AI twice
- I don't know why a modified mob could get passed to the plugin again, so let's make a workaround for this...
 
 
New Feature
Disguise Actions
Or Disguise Emotes/Animations
You can play the action using the client mod >= 0.6.4 or /play-action command.
The permission node for the action is xiamomc.morph.emote.<DisguiseID>.<ActionID>
- You can check the Action ID using the 
/play-actioncommand. - For example, the node of Allay Dancing action is 
xiamomc.morph.emote.minecraft.allay.dance - The node for Player disguises is 
xiamomc.morph.emote.player.all.<ActionID> 
Currently, these actions only have visual effects, they don't interact with the environment.
1.2.1 comes with these actions bundled:
| Disguise | Action(s) | 
|---|---|
| Allay | Dance | 
| Warden | Roar, Sniff, Dig down, Appear | 
| Armadillo | Roll up | 
| Cat | Lay, Sit | 
| Fox | Sit, Sleep | 
| Frog | Eat(Use tongue) | 
| Panda | Sit | 
| Piglin | Dance | 
| Player | Lay, Crawling | 
| Pufferfish | Inflate, Deflate | 
| Shulker | Peek, OPen | 
| Sniffer | Sniff | 
| Wolf | Sit | 
Bug Fix
- Disguises are not recovered after reloading configuration
 
Other
- Tweaked the node of abilities and skills for player disguise
- It's now 
xiamomc.morph.skill.player.all.<SkillID> 
 - It's now 
 
Other
- Update to 1.21.1
 
This release mainly fixed several issues when running on Folia.
Bug Fixes
- Zombie Villager disguise doesn't have random variants
 - Rabbit disguise doesn't have the Killer Bunny variant
 - Fixed several issues with Folia, this includes:
- Can only disguise in overworld
 - InteractionMirror may throw 
async getEntitieswhen players are in different regions 
 
Other
- Move the process of random variants from the server disguise renderer to MorphManager
 
New Feature
- Allow changing whether to modify mobs' AI to make them react to the disguise
- For your sanity, we don't recommend using 
/reloador any method that loads/unloads this plugin when this option is turned on! - Toggling this option requires a server restart!
 
 - For your sanity, we don't recommend using 
 
Bug Fix
- Skills and abilities are not re-applied upon the player's join
 
Other
- Removed several internal dependencies
- And make the plugin file ~50% smaller!
 
 - Attempt to optimize HUD display performance
 - Lowered the frequency of revealing value sent to the client
 
Other
- Make this plugin work on Paper Build #106
- And it's not backward compatible, you will need to update Paper to use!
 
 
A small release to fix an annoying problem.
PS: If you encountered an issue with updating disguise or MorphManager, please try this build on our GitHub!
Bug Fix
- The maximum health does not update when switching from mob disguises to player disguises
 
New Features
- Horse disguise now can make players step on one-block height
 - Added toggle to switch if flying in fluids is allowed
- This can nerf some behavior, like mining Ancient Debris in lava in the Nether
 
 - Add permissions for abilities
- Now every ability from a disguise will have a matching permission node.
 - The node format is 
xiamomc.morph.ability.<DisguiseID>.<AbilityID>- For example, the Night Vision ability for Enderman disguise is 
xiamomc.morph.ability.minecraft.enderman.morph.night_vision 
 - For example, the Night Vision ability for Enderman disguise is 
 - Because the permission check has a high performance impact, we added an option to disable it. You can disable this feature through the config file or using the 
/fm option ability_check_permissionscommand to toggle. 
 
Bug Fixes
- Projectiles launched by players having a wrong speed
 - Armor Stand disguise has a different arm status between the client and the server
 - Some mobs don't avoid players like expected after updating 
1.1.0-beta.4 - Slime and Magma Cube disguises have a wrong size on the server side
 - Slime and Magma Cube disguises are always at a fixed size when bounding box modification is disabled
 
Other
- Vexes summoned by a player will now attack the mob that the player attacks or attacked by the player
 - Iron Golem disguise will now throw mobs higher on attack
 
I guess we are close to the stable release?
Bug Fix
- Armor Stand disguise has a different arm status between the client and the server
 
Other
- Only send attributes that are needed for a disguise
 
Bug Fixes
- Waking up when disguised will cause clients nearby to disconnect with protocol error
 - Fixed multiple errors with the Client Disguise Renderer
- It's recommended to install ProtocolLib to use the Server Disguise Renderer, CDR is now half-broken, and we plan to remove it in the future.
 
 - The ability doesn't get removed first upon reapplying
 
Other
- Send attribute packets, again.
- Yes, it's needed. For example, the player's scale :(
 
 
Bug Fixes
- Llama disguise can cause a network protocol error on the client
 - Slime and Magma Cube disguises have a wrong size on the server side
 - Slime and Magma Cube disguises are always at a fixed size when bounding box modification is disabled
 - Player disguise will still try to create a virtual entity even if the bound player is offline
 
Other
- We are now 1.21
 - Prevent sending packets that are not needed
 
Bug Fixes
- Cat disguise with Server Renderer would cause exceptions on the server side
 - Traveling through worlds while disguised would make players nearby disconnect with "Network Protocol Error"
 - Plugin throws an exception about can't send plugin messages while disabling
 
Other
- Forcing disguise someone no longer searches for which mob they're looking at
 
New Features
- Initial support for multiple backends working at once
- Merged from 1.20.4, also brings ModelEngine4 support if possible
 
 - Add permissions for abilities
- Now every ability from a disguise will have a matching permission node.
 - The node format is 
xiamomc.morph.ability.<DisguiseID>.<AbilityID>- For example, the Night Vision ability for Enderman disguise is 
xiamomc.morph.ability.minecraft.enderman.morph.night_vision 
 - For example, the Night Vision ability for Enderman disguise is 
 - Because the permission check has a high performance impact, we added an option to disable it. You can disable this feature through the config file or using the 
/fm option ability_check_permissionscommand to toggle. 
 
Other
- Vexes summoned by a player will now attack the mob that the player attacks or attacked by the player
 - Iron Golem disguise will now throw mobs higher on attack
 - Changed the method used to modify mobs' ai in the world
 - Completed the hostility and avoidance relationship between creatures and disguises
 
New Feature
- Horse disguise now can make players step on one-block height
 
Bug Fixes
- Wolf variants are not synced to the client
 - Frog variants are not written to packets using the correct type
- And causes some errors
 
 - InteractionMirror doesn't process predicates correctly
 
New Features
- Initial support for multiple backends working at once
- I'm calling it initial because it changes some core components, and I'm not sure if other components would work as expected
 
 - Initial support for ModelEngine4
- The disguise ID is 
model4:<model name> 
 - The disguise ID is 
 
It seems that ProtocolLib for 1.20.6 is now usable, you can install it to use the Server Renderer.
Bug Fix
- Frog variants are unable to display with the Server Renderer
 
Other
- Added Wolf variant support
- This doesn't sync to the client but will come in future releases.
 
 - Fixed effect particle for disguises
 


