Sueta

FeatherMorph

2.8.1

Yet another disguise plugin. Disguise as mobs and players, then acquire unique skills and abilities!

·Plugin
  1. 2.8.1latestMay 3, 2026

    Bug Fixes

    - Removed debug logging in ByNameExecutor - Executing the dash skill makes everyone in the same world hear the activation sound. Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.8.0..…
    5761 downloads
  2. 2.8.0Mar 30, 2026

    New Features

    - The icon of the current disguise is now displayed when disguising - Entities with tag `feathermorph_nogrant` now won't unlock the relevant disguise for the player when being killed. - It's now possible to extract the built-in language file using the `/fm extract language <lang>` command - Permission for this command is feathermorph.admin. - If there's already a matching file on the disk, the extracted file will install to messages/<lang>.fmnew.json by default - You can overwrite it by using /fm extract language <lang> true. This operation requires you to confirm by executing again - Triggering Interaction Mirror for mannequins now requires the player to have permission to trigger Interaction Mirror - Slaves in the Instance Network now request data for the player when they join, instead of the master server loading and syncing all data to slaves upon startup. - It's now possible to get the relevant DisguiseState instance in PlayerUnMorphEvent. - Third-party plugins are now able to add their SingleProperty instances to DisguiseProperties on bootstrap, which would allow automatic assignment from player inputs. - Added support for Zombie Nautilus's variant property. - Now an instance of DisguiseProperty can declare that it's invisible for the client mod - FeatherMorph doesn't have properties that require this feature yet; it's mainly made for other plugins' development. - Added readString method for InputHandles. - The plugin will now attempt to show the exception's message if it occurred while updating or has been forwarded to the DisguiseState. - Bring the ability for async player data loading in Instance Network to IManagePlayerData. - Currently, only when the Instance Network is enabled, and the current server is a Slave Server in the network, the async loading feature is fully utilized. - If supported, when a player enters the configuration state, the plugin will attempt to load their data async, and wait for up to 150ms per player, then allow them to keep logging in after the timeout, and notify their client when the data finishes loading. - *We wait for up to 150ms is to make sure that the disguise unlock data can immediately be available after the player logs in on fast machines.* - *And maybe this waiting feature would be removed in the next (edit: next or future) releases, as it literally conflicts with the **async** concept...* 🤯\ - Slave servers no longer wait for up to 150ms for the master server to respond to our lookup request - Added abilities for Nautilus and Zombie Nautilus - Disguising as Nautilus now gives the player the ability to breathe underwater and dryout in the air - Disguising as Zombie Nautilus would additionally make the player burn under the sun if not equipped with a helmet. - Added Dash skill - Disguising as Camel/Camel Husk now can dash on the ground or underwater - Disguising as Nautilus/Zombie Nautilus now can dash underwater - backport: Allow server to disable disguise waypoints via config

    Bug Fixes

    - Backport a workaround from `1.21.11/feature-next` branch, to prevent bad component input from applying and kicking viewing players out of the server - But I'm not sure if this issue should be triaged to FeatherMorph though... - Fixed a regression where trying to disguise as a player when facing others disguised as another player could copy their properties, ignoring whether the disguise target is the same. - Potential error when checking whether the current code is on an Entity's tick thread. - Mannequin disguises' description property is now correctly set up when the target mannequin does not have a description - Cache for SkinStorage is not being updated after dropping/caching a skin - Fixed a regression where disguised players can still get selected as an Interaction Mirror target when using the by_name selector. - Fixed a regression where disguised players can't get selected as an Interaction Mirror target if the controlling player is disguised as the same player they disguise. - Package Version not saved after initial skill configuration setup

    Others

    - Removed usage of `feathermorph.disguise_use_real_uuid` permission - Active disguises will now save to disk when the server shuts down - Offline Disguise now saves disguise properties - Skin Storage and Offline Disguise Storage are now directory-based. - This improves performance a lot when we read/write for a single skin/disguise if there's a large amount of data stored. - We will try to migrate previously stored skins; offline disguises will not get migrated, as we don't have a NBT -> Disguise Properties conversion. - Mannequins would now be normally selected by Interaction Mirror Executors, instead of being treated as specials. - by_sight mirror mode now respects the maximum affect distance set in the config - Gradle task runFolia is now available - The actionbar message for disguise is now handled by DisguiseState. - readRotations from InputHandles now throws an error when the player gives more than 3 elements - This means that giving more than 3 elements for various rotation properties for the Armor Stand disguise will now result in an error message. - Migrated configuration definition from plugin's own ConfigOption enum to ConfigOption class from PluginBase - Simplified exception handling in some places. - The message morph.error_while_disguising_user_fault in the language file has been renamed to morph.error_parsing_property. - The interval of batching player data requests has been changed from 10 ticks to 2 ticks, to adapt to the new IManagePlayerData#loadPlayerDataAsync method - Plugin now checks for Paper or Folia platform for update, depending on the server spec. - Offline Disguises is now called Saved Disguises

    What's Changed

    * 2.8.0 from 1.21.11/feature by @MATRIX-feather in https://github.com/NiFeather/FeatherMorph/pull/61 Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.5.2..…
    1926 downloads
  3. 2.8.0-rc.6Mar 25, 2026

    Bug Fix

    - Package Version not saved after initial skill configuration setup Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.8.0-r…
    315 downloads
  4. 2.8.0-rc.5Mar 8, 2026

    New Feature

    - backport: Allow server to disable disguise waypoints via config

    Other

    - Merged 2.8.0 into 1.21.11/main - 2.8.0 from 1.21.11/feature by @MATRIX-feather in https://github.com/NiFeather/FeatherMorph/pull/61 Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.8.0-r…
    841 downloads
  5. 2.8.0-rc.3Feb 28, 2026
    So I'm back updating this resource, as I still wish to have this on a tiny server that I play with my friends for the upcoming 26.1 and later. 😄

    Bug Fixes

    - Cache for SkinStorage is not being updated after dropping/caching a skin - Fixed a regression where trying to disguise as a player when facing others disguised as another player could copy their properties, ignoring whether the disguise target is the same. - Fixed a regression where disguised players can still get selected as an Interaction Mirror target when using the by_name selector. - Fixed a regression where disguised players can't get selected as an Interaction Mirror target if the controlling player is disguised as the same player they disguise.

    Other

    - Backport a workaround from `1.21.11/feature-next` branch, to prevent bad component input from applying and kicking viewing players out of the server - Not sure if this issue should be triaged to FeatherMorph though... Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.8.0-b…
    424 downloads
  6. 2.8.0-rc.1Feb 17, 2026

    Bug Fix

    - Mannequin disguises' description property is now correctly set up when the target mannequin does not have a description

    Other

    - Removed usage of `feathermorph.disguise_use_real_uuid` permission - Active disguises will now save to disk when the server shuts down - For slave servers in the instance network, we no longer wait for up to 150ms for the master server to respond to our lookup request - Offline Disguise now saves disguise properties - Skin Storage and Offline Disguise Storage are now directory-based. - This improves performance a lot when we read/write for a single skin/disguise if there's a large amount of data stored. - We will try to migrate previously stored skins; offline disguises will not get migrated, as we don't have a NBT -> Disguise Properties convertion exists. - Plugin now checks for Paper or Folia platform for update, depending on the server spec. - Offline Disguises is now called Saved Disguises
    522 downloads
  7. 2.8.0-beta.4Dec 20, 2025
    This is a build on 1.21.11/feature. We suggest that everyone on the `1.21.11/feature` branch using the Instance Network feature update to this version on all Slave Servers.

    Bug Fix

    - Instance Network: Slave Servers not cleaning the existing data before applying new data synced from the master server - This issue can also trigger another issue where the string command sent to the player is too large - This doesn't affect builds on 1.21.11/main as they don't have the partial sync feature - Disguising on Folia has a rare chance to fail about ... this.revealingHandler is null. Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.8.0-b…
    2169 downloads
  8. 2.6.0-alpha.4Dec 20, 2025
    This is a build on 1.21.10/feature. We suggest that everyone on the `1.21.10/feature` branch using the Instance Network feature update to this version on all Slave Servers.

    New Feature

    - The Fake Equip skill has been extended to more mobs

    Bug Fix

    - Instance Network: Slave Servers not cleaning the existing data before applying new data synced from the master server - This issue can also trigger another issue where the string command sent to the player is too large - This doesn't affect builds on 1.21.10/main as they don't have the partial sync feature Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.6.0-a…
    595 downloads
  9. 2.8.0-beta.2Dec 17, 2025

    New Features

    - Added abilities for Nautilus and Zombie Nautilus - Disguising as Nautilus now gives the player the ability to breathe underwater and dryout in the air - Disguising as Zombie Nautilus would additionally make the player burn under the sun if not equipping a helmet. - Added Dash skill - Disguising as Camel/Camel Husk now can dash on the ground or underwater - Disguising as Nautilus/Zombie Nautilus now can dash underwater

    Bug Fix

    - Potential error when checking whether the current code is on an Entity's tick thread. Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.8.0-a…
    125 downloads
  10. 2.7.1Dec 17, 2025

    Bug Fix

    - Potential error when checking whether the current code is on an Entity's tick thread. Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.7.0..…
    1302 downloads
  11. 2.8.0-alpha.2Dec 10, 2025

    Bug Fix

    - Debug message Text icon for <...> is <...> spamming in console if any usage of disguise text icon is invoked Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.8.0-a…
    171 downloads
  12. 2.6.0-alpha.3Dec 10, 2025

    New Features

    - Now an instance of DisguiseProperty can declare that it's invisible for the client mod - FeatherMorph doesn't have properties that require this feature yet; it's mainly made for other plugins' development. - Added readString method for InputHandles. - The plugin will now attempt to show the exception's message if it occurred while updating or has been forwarded to the DisguiseState. - Bring the ability for async player data loading in Instance Network to IManagePlayerData. - Currently, only when the Instance Network is enabled, and the current server is a Slave Server in the network, the async loading feature is fully utilized. - If supported, when a player enters the configuration state, the plugin will attempt to load their data async, and wait for up to 150ms per player, then allow them to keep logging in after the timeout, and notify their client when the data finishes loading. - We wait for up to 150ms is to make sure that the disguise unlock data can immediately be available after the player logs in on fast machines. - And maybe this waiting feature would be removed in the next (edit: next or future) releases, as it literally conflicts with the async concept... 🤯

    Other

    - Simplified exception handling in some places. - The message morph.error_while_disguising_user_fault in the language file has been renamed to morph.error_parsing_property. - The interval of batching player data requests has been changed from 10 ticks to 2 ticks, to adapt to the new IManagePlayerData#loadPlayerDataAsync method Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.6.0-a…
    143 downloads
  13. 2.8.0-alpha.1Dec 10, 2025
    This is a release on the 1.21.11/feature branch.

    New Feature

    - [2.7.0] Added new debug command /debugForValue, for listing all registered SingleValue in the given value set. - Added support for Zombie Nautilus's variant property.

    Other

    - [2.7.0] We are now 1.21.11 - [2.7.0] Bumped PacketEvents to 2.11.0 - [2.7.0] Added a workaround not to send the packet if we have a huge data body. - This prevents exceptions from being thrown when trying to send a huge amount of available disguise or a huge disguise data. - Currently, I have no idea how to solve the problem, so let's not sync the list for now. Players can still select the disguise using the /morph command, and other features would still work... Unless the data still exceeds the limit. Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.6.0-a…
    37 downloads
  14. 2.7.0Dec 10, 2025
    This is a release on the 1.21.11/main branch. For the upcoming new features, see https://github.com/NiFeather/FeatherMorph/pull/61

    New Feature

    - Added new debug command /debugForValue, for listing all registered SingleValue in the given value set.

    Other

    - We are now 1.21.11 - Bumped PacketEvents to 2.11.0 - Added a workaround not to send the packet if we have a huge data body. - This prevents exceptions from being thrown when trying to send a huge amount of available disguise or a huge disguise data. - Currently, I have no idea how to solve the problem, so let's not sync the list for now. Players can still select the disguise using the /morph command, and other features would still work... Unless the data still exceeds the limit. Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.5.2..…
    142 downloads
  15. 2.6.0-alpha.2Dec 4, 2025

    New Features

    - Now applying the Interaction Mirror for mannequins also requires the player to have the normal Interaction Mirror permission - On new installations, the Icon for the current disguise is now shown in the actionbar by default - Killing mobs with feathermorph_nogrant tag will now not unlock the relevant disguise for the player - Refactored how the plugin sends messages to players - It's now possible to extract the built-in language file using the /fm extract language <lang> command - Permission for this command is feathermorph.admin. - If there's already a matching file on the disk, the extracted file will install to messages/<lang>.fmnew.json by default - You can overwrite it by using /fm extract language <lang> true, this operation requires you to confirm by executing again - Slaves in the Instance Network now request data for the player when they join, instead of the master server loading and syncing all data to slaves upon startup. - It's now possible to get the relevant DisguiseState instance in PlayerUnMorphEvent. - Third-party plugins are now able to add their SingleProperty instances to DisguiseProperties on bootstrap, which would allow automatic assignment from player inputs.

    Other

    - Mannequins would now be normally selected by Interaction Mirror Executors, instead of being treated as specials. - by_sight mirror mode now respects the maximum affect distance set in the config - Gradle task runFolia is now available - The actionbar message for disguise is now handled by DisguiseState. - readRotations from InputHandles now throws an error when the player gives more than 3 elements - This means that giving more than 3 elements for various rotation properties for the Armor Stand disguise will now result in an error message. - Migrated configuration definition from plugin's own ConfigOption enum to ConfigOption class from PluginBase Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.5.2..…
    212 downloads
  16. 2.5.2Dec 4, 2025
    This is a maintenance release for the 2.5 series. For the upcoming new features, see 2.6 alpha at: https://github.com/NiFeather/FeatherMorph/pull/59

    Bug Fixes

    - The Extra Knockback ability always adds 0.345584025 for Y Motion changes, and does not apply knockback resistance for X and Z Motion changes. - Disguise waypoint not getting removed when the binding player quits. - Make MorphBasicAvoidPlayerGoal ignore when the player to avoid is in a different world - This fixes the AI throwing error under some weird situations.

    Other

    - Handle invalid protocol level in MIC2SLoginCommand Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.5.1..…
    509 downloads
  17. 2.5.1Nov 27, 2025
    Starting from 2025/11/3 (YYYY/MM/DD), we have split the 1.21.10 branch to 1.21.10/main and 1.21.10/feature. If you cloned the repo before, you might want to delete the locally stored 1.21.10 branch before pulling any updates! ---

    Changes in 2.5.1

    Bug Fix

    - Empty input for entity/equipment would cause unhandled exceptions ---

    Changes in 2.5.0

    New Features

    - It's now possible for players to save their disguise and apply their locally stored disguises - This requires players to use 0.16.0-beta.5 or higher version of the client mod! - Added permission feathermorph.custom_text for entity/custom_name, mannequin/description, and mannequin/hide_description property, and it's available for players by default - Added permission for using disguise properties: feathermorph.disguise_properties.use - Added permission for setting a custom skin profile for items in entity/equipment property, restricted to ops by default: feathermorph.disguise_properties.custom_skin_on_items - Added support for Mannequin disguise - Mannequin disguise is not collectable using the Magic Bottle by default - Mannequin disguises have the Fake Equip skill, like Armor Stand and Player disguise - mannequin/skin property is restricted to ops by default. You can set feathermorph.custom_skin permission for players so they can use this property. - Added support for Copper Golem disguise - Copper Golem disguise is collectable using the Magic Bottle by default - Added Weather State property for Copper Golem disguise - Initial compatibility(?) for Ping Wheel - Using the official Ping Wheel plugin will work, but pinging while disguising doesn't mask the pinger - ...So I made a custom plugin to temporarily solve the problem, which can be found at https://github.com/MATRIX-feather/pingwheel-plugin-forked - Initial support for players with permission feathermorph.mirror.mannequin to mirror their sneaking actions to mannequins that have the same name and description as their disguise - For BY_NAME executor, mannequins within a range are selected, while setting the affect distance to -1 would disable the range limit - For BY_SIGHT and BY_RANGE, the targeting mannequin within 5 blocks of sight will be selected

    Bug Fixes

    - Several bugs with Player Disguises when feathermorph.disguise_use_real_uuid permission is given - Players got removed from their TAB view when undisguising - Disguise not presenting when teleported from far away, or switching gamemode from spectator - slime_magma/size property has a wrong random range - Nobody is calling BaseLivingEntityProperties#setupPropertiesFromEntity in the override methods - This makes disguises that have extra properties not copy the target entity's custom name.

    Other

    - We are planning to remove the BY_RANGE mirror executor in the future, as it's causing chaos when we have players with bad networking - Some exceptions thrown will now be forwarded to DisguiseState and will undisguise the player - Tweaked how Server Renderer rebuilds entity metadata packets sent from the server - Removed disguise NBT blacklist configuration - As they are not being used anymore - entity/custom_name and mannequin/description now accept JSON text component starting with { - Moved some disguise validation to early disguise preparation
    349 downloads
  18. 2.5.0-rc.5Nov 9, 2025
    Starting from 2025/11/3 (YYYY/MM/DD), we have split the 1.21.10 branch to 1.21.10/main and 1.21.10/feature. If you cloned the repo before, you might want to delete the locally stored 1.21.10 branch before pulling any updates! ---

    Bug Fixes

    - Added SkinPatch support for ResolvableProfile, which fixes some skin setups not presenting properly on the client. - Explicitly declare whether a MorphResolvableProfileStruct is presenting a dynamic ResolvableProfile, which fixes some skin not displaying on the client side. - These two fixes above require players to update their client mod to 0.16.0-beta.6! - entity/custom_name always copies from the target entity, ignoring the entity's type - Nobody is calling BaseLivingEntityProperties#setupPropertiesFromEntity in the override methods - This makes disguises that have extra properties not copy the target entity's custom name. Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.5.0-r…
    646 downloads
  19. 2.4.6Nov 2, 2025
    Starting from 2025/11/3 (YYYY/MM/DD), we have split the 1.21.10 branch to `1.21.10/main` and `1.21.10/feature`. If you cloned the repo before, you might want to delete the locally stored 1.21.10 branch before pulling any updates!

    Bug Fix

    - StackOverflow when a player has a locale that is "en_US" rather than "en_us" Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.4.5..…
    918 downloads
  20. 2.5.0-rc.4Nov 2, 2025
    Starting from 2025/11/3 (YYYY/MM/DD), we have split the 1.21.10 branch to `1.21.10/main` and `1.21.10/feature`. If you cloned the repo before, you might want to delete the locally stored 1.21.10 branch before pulling any updates!

    Bug Fixes

    - Player disguise always copies the target player's skin, not checking conditions - StackOverflow when a player has a locale that is "en_US" rather than "en_us"

    Other

    - Allow bukkitEntity is null for FoliaThreadUtils#isTickThreadFor - Make ServerBackend#disguise and SpawnPacketHandler#onEntityAddPacket fail softly if timed out waiting for the player's thread. - In beta.6, some exceptions are forwarded to the player's DisguiseState, including waiting timeouts when building virtual entity packets - Once timed out, the player will get unmorphed once ticked, even if it only affects the virtual entity displaying - This may improve player experience when the server is lagging Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.5.0-r…
    211 downloads
  21. 2.5.0-rc.3Oct 20, 2025

    Bug Fix

    - In previous 2.5.0 beta releases, sometimes the disguise reporting it fails to update and (may) cause nearby players to disconnect with a protocol error

    Other

    - Catch JSON error when parsing client entity/equipment input and wrap it as a ParseErrorException, to tell players that the data is malformed Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.5.0-r…
    450 downloads
  22. 2.4.5Oct 20, 2025

    Bug Fix

    - Skill execution event not triggering Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.4.4..…
    214 downloads
  23. 2.5.0-rc.2Oct 20, 2025
    We are now slowly migrating our wiki to the `docs/` directory under the repository. You can have a look if interested!

    New Feature

    - [rc.1] Added permission for using disguise properties: feathermorph.disguise_properties.use - [rc.1] Added permission for setting a custom skin profile for items in entity/equipment property: feathermorph.disguise_properties.custom_skin_on_items

    Bug Fix

    - [rc.2] Disguising as other entities can also trigger the Interaction Mirror for mannequins - [rc.2] The Interaction Mirror for mannequins triggers ignoring the difference in NPC description

    Other

    - [rc.1] Moved some disguise validation to early disguise preparation - [rc.1] Bump PacketEvents to 2.10.0 Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.5.0-b…
    41 downloads
  24. 2.5.0-beta.6Oct 17, 2025

    New Feature

    - Players with permission `feathermorph.mirror.mannequin` are now able to apply the sneaking mirror to mannequins that have the same name as their disguise - For BY_NAME executor, mannequins within a range are selected, while setting the affect distance to -1 would disable the range limit - For BY_SIGHT and BY_RANGE, the targeting mannequin within 5 blocks of sight will be selected - Bump API to 17 - It's now possible for client mods to include property inputs in the C2S Morph command - Setting the Interaction Mirror Affect Distance (Control distance) in-game is now possible with /fm option mirror_control_distance

    Bug Fix

    - Skill execution event not triggering - slime_magma/size property has a wrong random range

    Other

    - We are planning to remove the BY_RANGE mirror executor in the future, as it's causing chaos when we have players with bad networking - Some exceptions thrown will now be forwarded to DisguiseState and will undisguise the player - Tweaked how Server Renderer rebuilds entity metadata packets sent from the server Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.5.0-b…
    117 downloads
  25. 2.4.4Oct 12, 2025

    New Features

    - Initial compatibility for Ping Wheel - Currently requires a custom plugin, which can be found at https://github.com/MATRIX-feather/pingwheel-plugin-forked

    Bug Fixes

    - Disguise status synced from slave servers doesn't really apply to the master server - Players got removed from their TAB view when undisguising, when feathermorph.disguise_use_real_uuid is set to true
    217 downloads
  26. 2.5.0-beta.5Oct 12, 2025

    Bug Fix

    - Disguise status synced from slave servers doesn't really apply to the master server

    Other

    - We are now 1.21.10 - We now compile against PacketEvents 2.10.0-SNAPSHOT dev build - So that CI is working again!
    110 downloads
  27. 2.5.0-beta.3Oct 6, 2025

    New Feature

    - Added permission feathermorph.custom_text for entity/custom_name, mannequin/description, and mannequin/hide_description property, and it's available for players by default - Mannequin and Copper Golem disguise is now available for Server Renderer - Would require PacketEvents built from [This PR](https://github.com/retrooper/packetevents/pull/1361)

    Other

    - Several disguise property changes, players will need to update their mod to 0.16.0-beta.2! - Merged `mannequin/skin_internal` and `mannequin/skin` property. `mannequin/skin` property is now used for skin input and property syncing - Changed how plugin syncs `mannequin/skin` to the player - entity/custom_name and mannequin/description now accept JSON text component starting with { - player/skin now accepts GameProfile compound string - mannequin/skin now accepts a valid string for MorphResolvableProfileStruct starting with {
    346 downloads
  28. 2.5.0-beta.2Sep 30, 2025
    This is a beta release for 1.21.9. Please note that this release may not support displaying Mannequin and Copper Golem disguise using Server Renderer as PacketEvents haven't been updated yet.

    New Features

    - API version is now 16 - Skin for player disguise and Equipment for any entity disguise are now managed as disguise properties - Compatibility for clients that don't support disguise properties will end at 2026, or when 1.22 comes out - Added support for Mannequin disguise - Mannequin disguise is not collectable using the Magic Bottle by default - Mannequin disguises have the Fake Equip skill, like Armor Stand and Player disguise - mannequin/skin property is restricted to ops, as the plugin will try to fetch and cache skin from the given input. You can set feathermorph.custom_skin permission for players so they can use this property. - Added support for Copper Golem disguise - Copper Golem disguise is collectable using the Magic Bottle by default - Added Weather State property for Copper Golem disguise - Initial compatibility for Ping Wheel - Currently requires a custom plugin, which can be found at https://github.com/MATRIX-feather/pingwheel-plugin-forked

    Bug Fixes

    - Several bugs with Player disguises when feathermorph.disguise_use_real_uuid is set to true - Players got removed from their TAB view when undisguising - Disguise not presenting when teleported from far away, or switching gamemode from spectator

    Other

    - Removed disguise NBT blacklist configuration - As they are not being used anymore Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.4.3..…
    191 downloads
  29. 2.4.3Sep 22, 2025

    This release may require some manual operations

    Disguise Tool and Magic Bottle's recipe is now registered using a datapack. While this can allow you to customize even more, you would need to install a recipe management plugin if you wish to disable one of them specifically. If you have already disabled recipes using a management plugin, then no operations would be required. (As the datapack is using the same recipe ID as the old behavior) You might also want to read the 2.4.1 changelog if you are updating from older versions. ---

    New Features

    - The collected result for the empty Magic Bottle is now a loot table - By default, the plugin will process all output items that come from the loot table - You can set custom data feathermorph:skip_magic_bottle_setup to true to make the plugin skip a specific item - For more details, see the [Loot table datapack](https://github.com/NiFeather/FeatherMorph/tree/1.21.8/src… - Due to a limitation, not all loot table types are supported. Currently, `empty` and `entity` are tested to work well - Added permission feathermorph.acquire_morph to control whether a specific player can unlock disguises via gameplay - Added permission feathermorph.disguise_use_real_uuid to control whether a disguise should use the player's real UUID for the virtual entity - This may help to improve compatibility with Simple Voice Chat, etc. - However, this should be tricked as a hack or workaround - Players are now able to discard their unlocked disguises using the /discard-morph command

    Bug Fixes

    - Cat and Wolf disguises don't have collar color property applied if targeting a valid entity - /fm make_disguise_tool command not registering - AI Modification failed to inject and caused a log spam for some setup

    Other

    - AI Modification is now disabled by default for new installations - We now use NMS to inject goals again, as using the API is causing issues... Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.4.2..…
    534 downloads
  30. 2.4.2Sep 16, 2025

    This release may require some manual operations

    Disguise Tool and Magic Bottle's recipe is now registered using a datapack. While this can allow you to customize even more, you would need to install a recipe management plugin if you wish to disable one of them specifically. If you have already disabled recipes using a management plugin, then no operations would be required. (As the datapack is using the same recipe ID as the old behavior) This version is known to have issues with AI modification on Folia. We recommend disabling this feature on Folia servers ASAP ---

    Bug Fix

    - Some mobs don't panic from players where they should - Cats and Ocelots are missing an attack goal for players' disguise - Tamed mobs still run the custom attack goal

    Other

    - *Removed debug output ("ToAvoid is xxxxx") spamming in `MorphBasicAvoidPlayerGoal`* - Ensure that the target entity is on the same thread as the running mob in MorphBasicAvoidPlayerGoal - Nobody reported relevant issues before, but just in case :D
    238 downloads
  31. 2.4.1Sep 16, 2025

    This release may require some manual operations

    Disguise Tool and Magic Bottle's recipe is now registered using a datapack. While this can allow you to customize even more, you would need to install a recipe management plugin if you wish to disable one of them specifically. If you have already disabled recipes using a management plugin, then no operations would be required. (As the datapack is using the same recipe ID as the old behavior) --- We made a lot of changes in this release, while we made our best to eliminate bugs, there may still be some that we haven't found!

    New Features

    - Disguising with invalid property inputs will now throw error messages to the player and refuse to disguise, instead of using the default values - Property inputs are now included in `PlayerMorphEarlyEvent` - Added support for Cat/Wolf collar color property - Implemented Guardian disguise skill - Requires a mod update for players to see their skill target in their sight - Dolphin and Axolotl disguises will now give players extra air - Added #feathermorph:magic_bottle_collectable entity tag - Mobs in this tag will be available for collecting the disguise using the Magic Bottle - Empty Magic Bottle items with more than 1 amount are also available to collect disguises now

    Bug Fixes

    - Collected Magic Bottles no longer working - snow_golem/pumpkin, zoglin/is_baby, and zombie/is_baby property don't have a TAB-completion list where they should - burns_under_sun no longer working

    Other

    - We have changed our licence from MIT to GPLv3 - Open source licence is now included in the Jar file - Disguise Tool and Magic Bottle's recipe is now registered using a datapack - Reworked skill/ability configuration read/write - Reworked skill handling - If you are experiencing issues with skill/ability configuration loading, please let me know! - Reworked Mob AI modifying for less dependence on NMS - Removed Mob AI recovery methods - Please restart the server once the relevant config is changed - Icons in the server-side disguise selection GUI now use Snowball + Item Model to present - `potion_on_attack` ability now requires potion ID, instead of their Spigot enum name - Changed translations for zh_CN - Replaced usage of 伪装 with 变形/形态 - It's now possible to enable debug commands by creating cmd_debug.txt in the plugin's data folder - Warning! This feature is not intended for use in a production environment. Enabling this feature will cause issues! - The night vision ability no longer applies the potion particle to the player - entity/custom_name property now has a limit of 256 characters for user input, and a 50-character limit for the final text - entity/custom_name now no longer accepts empty inputs - Disguise Bossbar will now read texts from the entity/custom_name property if it has been set - Player disguises now no longer accept entity/custom_name inputs - However, the Ender Dragon disguise still accepts, and currently this is an intended feature :D - The default value for armor_stand/show_arms will now be set to the configured value in the config again - DisguiseState instances will now update themselves, instead of updating from MorphManager - We are not connected with master server! Refusing to update unlock state... message is now logged as errors instead of warnings

    API

    - Property inputs are now included in `PlayerMorphEarlyEvent` Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.4.0..…
    46 downloads
  32. 2.4.0Aug 19, 2025

    New Feature

    - Replaced usage of NBT with Disguise Property in disguises by @MATRIX-feather in https://github.com/NiFeather/FeatherMorph/pull/46 - This affects disguise building and syncing - This feature allows players to customize their disguise more without needing to create an entity first. - Players will need to upgrade their client mod. Support for clients implementing legacy APIs that use NBT to sync disguise is planned to end when 1.22 arrives or we reach 2026 - Permission control for customizing properties is currently not implemented. - For more details, please check https://github.com/NiFeather/FeatherMorph/pull/46 - For Residence integration: - Players inside a residence without the place permission will no longer be able to leave a snow trail when disguised - Players inside a residence without the use permission will no longer be able to activate their disguise skill

    Other

    - Tweaked the listening priority of PlayerRegisterChannelEvent in CommonEventProcessor - To shut someone up, making them not spam me in dm about HuskSync broke mod features again
    1061 downloads
  33. 2.3.5Aug 17, 2025

    New Feature

    - It's now possible to set the player disguise's main hand by setting the main_hand property - Players can now consume any item with valid components to unlock new disguises. - /fm query command now accepts multiple players as the argument - /request send command now accepts multiple players as the argument

    Bug Fixes

    - Fixed a long-existing issue where toggling the `Modify Boundingboxes` option doesn't notify clients to reconnect correctly - Sometimes the server's emote GUI doesn't display emote names. - Offline disguise always fails the UUID check - Fixed a potential issue where Player Disguises' waypoint doesn't get removed when the player logs out

    Other

    - We now use `addTransientModifier` to add attribute modifiers - Which means that the modifier we add will no longer get saved by the game anymore. - Disguises with morph:fake_equip skill now always copy to display the valid target entity's equipment by default, even if it's empty. - Use getListeningPluginChannels to check the player's registered plugin channels

    API

    - API level is now 5 - Now it's possible to get the plugin's preferred and all supported plugin channels via the API - It's now possible to listen to whether the plugin panicked - Currently, only when the Minecraft version is not supported, this plugin will panic - Replaced usage of runWhenAPILoaded to getApiFuture, which returns a CompletableFuture <FeatherMorphAPI> - Added PlayerConnection, which can be used to listen for player client login, get their implementing API, or disconnect them. Disconnecting a client now requires an Exception as a reason.
    153 downloads
  34. 2.3.4Aug 1, 2025
    This release aims to address several issues with disguise waypoints.

    Bug Fixes

    - Server crash when traveling between worlds if disguised as a player, when MorphAzimuthWaypointConnection is being used - MorphAzimuthWaypointConnection has a relatively large deviation - Disguise waypoint doesn't follow when players travel between worlds
    652 downloads
  35. 2.0.3Jul 28, 2025

    Bug Fix

    - **Server crash when disguising as a player, if PacketEvents is not installed** 1.21.4 is not affected

    Other

    - Added language file ru_ru.json - Some attempt to fix potential thread-safety issues
    1329 downloads
  36. 2.3.3Jul 28, 2025

    Bug Fix

    - Server crash when disguising as a player, if PacketEvents is not installed

    Other

    - Some attempt to fix potential thread-safety issues
    142 downloads
  37. 2.3.2Jul 24, 2025

    Other

    - Removed Sentry Logger - [#43](https://github.com/NiFeather/FeatherMorph/issues/43): Added ru_ru translate
    239 downloads
  38. 2.3.0Jul 18, 2025

    Bug Fixes

    - Fixed some potential issues

    Other

    - Added Sentry Logger - Sentry Logger is a kind of telemetry, and we use it to upload errors that occur in FeatherMorph automatically - This feature is disabled by default, you can check the config file for more details
    186 downloads
  39. 2.2.2Jul 11, 2025
    We recommend upgrading to this hotfix release to prevent a potential bug in AI modification that can cause entities to be removed by the server.

    New Feature

    - Disguising as Happy Ghast now allows players to fly

    Bug Fix

    - Fixed a bug where MorphManager#getDisguiseStateFor(Player) would throw an unexpected exception, which can cause FeatherMorphNearestAttackableGoal to fail and related entities to disappear
    766 downloads
  40. 2.0.2Jul 11, 2025
    We recommend upgrading to this hotfix release to prevent a potential bug in AI modification that can cause entities to be removed by the server.

    Bug Fix

    - Fixed a bug where `MorphManager#getDisguiseStateFor(Player)` would throw an unexpected exception, which can cause `FeatherMorphNearestAttackableGoal` to fail and related entities to disappear
    263 downloads
  41. 2.2.1Jul 1, 2025
    Please note that stepping on players disguised as Happy Ghasts for a while might result in being kicked by the server for flying. Enabling allow-flight in the server.properties might help resolve the issue. You might also want to check the [2.2.0 changelog](https://modrinth.com/plugin/feathermorph/version/2.2.0).

    Other

    - We are now 1.21.7
    413 downloads
  42. 2.2.0Jun 25, 2025
    Please note that stepping on players disguised as Happy Ghasts for a while might result in being kicked by the server for flying. Enabling `allow-flight` in the `server.properties` might help resolve the issue. You might need the latest 2.9.0 PacketEvents development build, which can be found on their description page.

    New Feature

    - Implemented Disguise Waypoint feature - This will replace the player's waypoint while they are disguising themselves - Added support for Ghastling variant for Happy Ghast

    Bug Fix

    - Zombie villager watcher using the wrong value set when applying the villager type and profession
    615 downloads
  43. 2.0.0Jun 15, 2025
    Changelog translated via DeepSeek, with some manual proofreading

    New Features

    - Implemented new mod communication protocol - V2 (1.21.3 ~1.21.4) and V1 (1.21.3-) are still supported by the plugin - *Added Magic Bottle*** - Can collect disguises of friendly mobs and other players - Can be crafted using Redstone and Glass Bottle, sneak and interact an entity to collect - Corresponding permission nodes: Use (feathermorph.magic_bottle.use) and Exclude(feathermorph.magic_bottle.exclude) - "Use" node determines if a player can use the Magic Bottle functionality - "Exclude" node determines if a player can be targeted for form collection - Particle effects now appear when players unlock new disguises - Added mod/resource pack localization support for new plugin items - Added variant support for Pigs, Cows, and Chickens in 1.21.5 - Added aggressive animation for the evoker skill - Added experimental interaction mirror controller BY_RANGE - For players using client integration, we recommend installing the latest 1.21.5 mod version (≥ 0.11.2) to avoid potential issues - When enabled, actions will sync to both the original target and nearby players disguised as that target - If a player isn't disguised, actions will sync to nearby players disguised as them - /fm stat command now displays the current player data backend

    Bug Fixes

    - Evoker ability fixes: - Fixed Fangs not spawning on slabs or spawning at incorrect positions - Fang spawning is no longer affected by player pitch/yaw - Quick disguise can be attempted on non-LivingEntity entities - Fixed console command autocomplete spamming This command is currently only available to players.

    Miscellaneous

    - Migrated from ProtocolLib to PacketEvents - Now FeatherMorph requires PacketEvents 2.8.0 or later to use the Server Renderer! - Removed ModelEngine support - Changed behavior for Instance Network - Notice! Version 2.x instance networks are INCOMPATIBLE with 1.x versions! - Sub-instance servers will now sync player data from the main server upon connection, rather than reading from local plugin directories - Moved API events to `xyz.nifeather.morph.api.events` - API version is now 3 - Added new API event DataStoreSwitchEvent - Triggers when MorphManager sets a new data storage backend - Added some workarounds for Towny integration issues on Folia - Plugin will now attempt to revert changes made to the player when they leave the server - Attempted fix for `java.net.BindException: Address already in use` during instance network restarts on Linux - Tweaked Evoker ability implementation: - The plugin will now attempt to keep vexes summoned near the summoner - Summoned vexes will now attempt to attack the target more aggressively - Players can always summon Vexes by sneaking when the server difficulty is Peaceful - A maximum of 6 Vexes can be summoned per player - Summoned Vexes are removed when the player undisguises - Removed player list modification functionality - Adjusted attack animation trigger conditions - Improved implementation of the Disguise Selection server GUI - Player head disguise no longer includes cancel-disguise behavior - Bumped Java-WebSocket from 1.5.7 to 1.6.0 - Re-migrate attribute modifiers in skill configurations to resolve Windows migration bugs - Update checks now return more detailed results
    598 downloads
  44. 2.1.0Jun 15, 2025
    Changelog translated via DeepSeek, with some manual proofreading

    New Features

    - Implemented new mod communication protocol - V2 (1.21.3 ~1.21.4) and V1 (1.21.3-) are still supported by the plugin - *Added Magic Bottle*** - Can collect disguises of friendly mobs and other players - Can be crafted using Redstone and Glass Bottle, sneak and interact an entity to collect - Corresponding permission nodes: Use (feathermorph.magic_bottle.use) and Exclude(feathermorph.magic_bottle.exclude) - "Use" node determines if a player can use the Magic Bottle functionality - "Exclude" node determines if a player can be targeted for form collection - Particle effects now appear when players unlock new disguises - Added mod/resource pack localization support for new plugin items - Added variant support for Pigs, Cows, and Chickens in 1.21.5 - Added aggressive animation for the evoker skill - Added experimental interaction mirror controller BY_RANGE - For players using client integration, we recommend installing the latest 1.21.5 mod version (≥ 0.11.2) to avoid potential issues - When enabled, actions will sync to both the original target and nearby players disguised as that target - If a player isn't disguised, actions will sync to nearby players disguised as them - /fm stat command now displays the current player data backend

    Bug Fixes

    - Evoker ability fixes: - Fixed Fangs not spawning on slabs or spawning at incorrect positions - Fang spawning is no longer affected by player pitch/yaw - Quick disguise can be attempted on non-LivingEntity entities - Fixed console command autocomplete spamming This command is currently only available to players.

    Miscellaneous

    - Migrated from ProtocolLib to PacketEvents - Now FeatherMorph requires PacketEvents 2.8.0 or later to use the Server Renderer! - Removed ModelEngine support - Changed behavior for Instance Network - Notice! Version 2.x instance networks are INCOMPATIBLE with 1.x versions! - Sub-instance servers will now sync player data from the main server upon connection, rather than reading from local plugin directories - Moved API events to `xyz.nifeather.morph.api.events` - API version is now 3 - Added new API event DataStoreSwitchEvent - Triggers when MorphManager sets a new data storage backend - Added some workarounds for Towny integration issues on Folia - Plugin will now attempt to revert changes made to the player when they leave the server - Attempted fix for `java.net.BindException: Address already in use` during instance network restarts on Linux - Tweaked Evoker ability implementation: - The plugin will now attempt to keep vexes summoned near the summoner - Summoned vexes will now attempt to attack the target more aggressively - Players can always summon Vexes by sneaking when the server difficulty is Peaceful - A maximum of 6 Vexes can be summoned per player - Summoned Vexes are removed when the player undisguises - Removed player list modification functionality - Adjusted attack animation trigger conditions - Improved implementation of the Disguise Selection server GUI - Player head disguise no longer includes cancel-disguise behavior - Bumped Java-WebSocket from 1.5.7 to 1.6.0 - Re-migrate attribute modifiers in skill configurations to resolve Windows migration bugs - Update checks now return more detailed results
    904 downloads
  45. 2.0.0.rc5Jun 11, 2025
    This release fixes a critical bug that may occur on Folia and causes invisible disguises in the previous 2.0.0 beta/rc releases. Glad we caught this before the final 2.0.0/2.1.0 release :v
    126 downloads
  46. 2.1.0.rc5Jun 11, 2025
    This release fixes a critical bug that may occur on Folia and causes invisible disguises in the previous 2.0.0 beta/rc releases. Glad we caught this before the final 2.0.0/2.1.0 release :v
    184 downloads
  47. 2.0.0.rc4Jun 5, 2025

    New Feature

    - Current player datastore is now included in /fm stat output

    Bug Fix

    - Server Renderer throws NullPointerException upon shutdown if there's any offline player registered
    167 downloads
  48. 2.1.0.rc4Jun 5, 2025

    New Feature

    - Current player datastore is now included in /fm stat output

    Bug Fix

    - Server Renderer throws NullPointerException upon shutdown if there's any offline player registered
    173 downloads
  49. 2.0.0.rc3May 30, 2025

    Other

    - Attempt to fix `java.net.BindException: Address already in use` from throwing when restarting Instance Network on Linux - Migrate attribute modifier abilities again in order to solve the failure from previous releases happened on Windows
    167 downloads
  50. 2.1.0.rc3May 30, 2025

    Other

    - Attempt to fix `java.net.BindException: Address already in use` from throwing when restarting Instance Network on Linux - Migrate attribute modifier abilities again in order to solve the failure from previous releases happened on Windows
    188 downloads
  51. 2.1.0.rc1May 27, 2025

    Bug Fix

    - When using Instance Network, host server throws `java.lang.IllegalStateException: A master server should have both master and slave instances active!` when player unlocks or lost disguise

    Other

    - Plugin will now attempt to undo changes made to player when they leave the server - Added use (feathermorph.magic_bottle.use) and exclude (feathermorph.magic_bottle.exclude) permission for Magic Bottle - "use" controls whether a player can use the feature - "exclude" controls whether a player's disguise can be collected using the bottle - Bump Java-Websocket from 1.5.7 to 1.6.0
    163 downloads
  52. 2.0.0.rc1May 27, 2025

    Bug Fix

    - When using Instance Network, host server throws `java.lang.IllegalStateException: A master server should have both master and slave instances active!` when player unlocks or lost disguise

    Other

    - Plugin will now attempt to undo changes made to player when they leave the server - Added use (feathermorph.magic_bottle.use) and exclude (feathermorph.magic_bottle.exclude) permission for Magic Bottle - "use" controls whether a player can use the feature - "exclude" controls whether a player's disguise can be collected using the bottle - Bump Java-Websocket from 1.5.7 to 1.6.0
    98 downloads
  53. 2.0.0.beta6May 23, 2025
    Notice! This Release comes with API and major Instance Network changes!

    Bug Fix

    - Sometimes FeatherMorph will process its own WrapperPlayServerEntityEquipment packet

    Other

    - Added some workarounds for the Towny Integration on Folia servers - Currently, it resolves the problem where the fly ability's state is not updated when the player being teleported to/from a town - Changed behavior for Instance Network - Please note that this change makes this and future 2.x releases INCOMPATIBLE with 1.x! - Now "Client" servers will no longer use their local player data once they finish the setup successfully - Improved implementation of the Disguise Selection server GUI - Headmorph for player heads now no longer undisguise the player when the skin is equal between current disguise and the item

    API Changes

    - Moved API events to `xyz.nifeather.morph.api.events` package - Added DataStoreSwitchEvent - Called when MorphManager's data storage is being switched - Added events about the Magic Bottle - PlayerCollectMagicBottleEvent and PlayerConsumeMagicBottleEvent - FeatherMorph API version has bumped to 3
    163 downloads
  54. 2.1.0.beta6May 23, 2025
    Notice! This Release comes with API and major Instance Network changes!

    Bug Fix

    - Sometimes FeatherMorph will process its own WrapperPlayServerEntityEquipment packet

    Other

    - Added some workarounds for the Towny Integration on Folia servers - Currently, it resolves the problem where the fly ability's state is not updated when the player being teleported to/from a town - Changed behavior for Instance Network - Please note that this change makes this and future 2.x releases INCOMPATIBLE with 1.x! - Now "Client" servers will no longer use their local player data once they finish the setup successfully - Improved implementation of the Disguise Selection server GUI - Headmorph for player heads now no longer undisguise the player when the skin is equal between current disguise and the item

    API Changes

    - Moved API events to `xyz.nifeather.morph.api.events` package - Added DataStoreSwitchEvent - Called when MorphManager's data storage is being switched - Added events about the Magic Bottle - PlayerCollectMagicBottleEvent and PlayerConsumeMagicBottleEvent - FeatherMorph API version has bumped to 3
    188 downloads
  55. 2.1.0.beta3May 10, 2025
    Things that may not work: Cross-Server data sync (Instance Service)
    Starting from 2.0.0, FeatherMorph will require PacketEvents 2.8.0 or later to enable Server Renderer! You can download [here](https://ci.codemc.io/job/retrooper/job/packetevents/)

    New Features

    - Added Magic Bottle that can be used to collect disguise from other players or friendly mobs - Yes, it's acturally called Magic Bottle - Can be crafted using Redstone and Glass Bottle, sneak and interact an entity to collect - For recipe configuration, see recipe.yml - Added experimental Interaction Mirror Controller BY_RANGE - Notice! If player has installed client integration, we suggest using the latest 1.21.5 release ( ≥ 0.11.2 ), otherwise something might go weird... - Once enabled, interactions will be mirrored to the target and nearby players disguised as the target - If the player is not disguised, interactions will still be mirrored to nearby players disguise as the player

    Bug Fixes

    - Cannot register channel. Too many channels registered! is thrown when a player join the server ([#37](https://github.com/NiFeather/FeatherMorph/issues/37)) - Console logs This command is currently only available to players. when completing commands

    Others

    - We now spawn particles nearby the player when they unlocked disguises - Added Mod/Resourcepack i18n support for Disguise Tool and Magic Bottle for new plugin installations - If you wish to use this feature on an existing installation, remove/move away the old recipe configuration (recipe.yml) to let the plugin generate a new one, and it should good to go!
    483 downloads
  56. 2.1.0.beta2May 2, 2025
    Starting from 2.0.0, FeatherMorph will require PacketEvents 2.8.0 or later to enable Server Renderer! You can download [here](https://ci.codemc.io/job/retrooper/job/packetevents/)

    New Feature

    - Implement mod protocol V3 - V2 (1.21.3 ~ 1.21.4) and V1 (1.21.3-) is still supported meanwhile - Added aggressive animation for the evoker skill

    Bug Fixes

    - Bug fixes for the evoker skill - Fixes fangs not spawning on slabs or spawns at the wrong location - Fangs are no longer affected by player pitch - After 2.1.0.beta1, players can reset their Mob Reveal by re-joining the server - Trying to activate quick disguise for non-living entities is allowed

    Other

    - Tweaked the evoker skill - The plugin will now attempt to keep vexes summoned near the summoner - Summoned vexes will now attempt to attack the target as soon as possible - When the server difficulty is not Peaceful, players can now always summon vexes by sneaking - Players can now only have up to 6 vexes summoned at once - Summoned vexes will now get cleared once the summoner is undisguised - Removed player list modification feature - Tweaked trigger condition for attack animation
    352 downloads
  57. 2.1.0.beta1Apr 24, 2025
    Starting from 2.0.0, FeatherMorph will require PacketEvents 2.8.0 or later to enable Server Renderer! You can download [here](https://ci.codemc.io/job/retrooper/job/packetevents/)

    New Feature

    - Added support for Pig, Cow, and Chicken variants

    Bug Fix

    - Trying to fix UpdateHandler again

    Other

    - Migrate from ProtocolLib to PacketEvents - So now FeatherMorph requires PacketEvents 2.8.0 or later to use the Server Renderer - But they haven't released 2.8.0 yet, so here comes the beta build - Removed ModelEngine support - Tweaked the behavior of Mob Revealing - Plugin will now attempt to filter players' attribute packets to prevent log spam on clients - Checking updates via the command will now display more check status, rather than only notify about new updates/already the latest
    345 downloads
  58. 1.5.9Apr 16, 2025

    Bug Fixes

    - The riding workaround for the Creaking disguise doesn't work on Folia and causes error spam - Migrating attributes for skills throw errors on Windows - Obviously, I forgot to test it on Windows :>
    1063 downloads
  59. 1.5.8Apr 7, 2025
    A hotfix release to fix some client integration issues. Attention! 1.5.8 now requires the latest Paper build, which you can download at [https://papermc.io/downloads/paper](https://papermc.io/do…

    Bug Fixes

    - 1.21.1 FMC clients are unable to activate the client integration - Plugin throws Plugin must be enabled to send messages error on shutdown

    Other

    - Can't use client integration on recent versions of Paper
    471 downloads
  60. 1.3.10Apr 7, 2025
    A hotfix release to fix some client integration issues.

    Bug Fixes

    - 1.21.1 FMC clients are unable to activate the client integration - Plugin throws Plugin must be enabled to send messages error on shutdown
    1359 downloads
  61. 1.3.8Apr 5, 2025
    This release backported some changes from the 1.21.4 branch

    New Feature

    - Added experimental FeatherMorphAPI - Currently, we only have a few utilities, and a FeatherMorphDirectAccess to allow people to access the plugin's internal components... - Added new Towny integration command town_morph_flags, which can be used for setting town settings about morphs - Notice! This replaces the original `toggle-town-morph-flight` command and its settings, also now residents and trusted players can always fly in the town. - Currently, there are two flags available for tweak - allow_outsiders_flight: Whether to allow outsiders to fly in town - allow_outsiders_use_skill: Whether to allow outsiders to activate skills in town - Abilities currently are not controlled by the flags, but they will be in the future

    Bug Fixes

    - Some management commands don't filter disguises using the input ID correctly - Disabling client integration when running causes all 1.21.4 players using FMC to disconnect - Sometimes the plugin doesn't process new players' data correctly, and java.lang.IllegalStateException is thrown. - HealsFromEntityAbility throws Accessing LegacyRandomSource from multiple threads on recent versions of Folia - Player's max health not scaling when switched from one disguise to another - Admins' client integration isn't aware when a player rejoins the server with disguise

    Other

    - Update PluginBase - Attempt to patch a possible memory leak - When Headmorph is disabled, trying to activate this feature will no longer receive the feedback about it being disabled - Tweaked the implementation of Interaction Mirror - Some minor performance optimize - The plugin will now attempt to align the disguise's facing direction along with the bed when the "Lay" action is played
    147 downloads
  62. 1.5.7Mar 21, 2025

    New Feature

    - Added new Towny integration command town_morph_flags, which can be used for setting town settings about morphs - Notice! This replaces the original `toggle-town-morph-flight` command and its settings, also now residents and trusted players can always fly in the town. - Currently, there are two flags available for tweak - allow_outsiders_flight: Whether to allow outsiders to fly in town - allow_outsiders_use_skill: Whether to allow outsiders to activate skills in town - Abilities currently are not controlled by the flags, but they will be in the future

    Other

    - Some minor performance optimize - The plugin will now attempt to align the disguise's facing direction along with the bed when the "Lay" action is played

    API

    - API version is now bumped to 2 - *Moved SkillType and AbilityType to the API, and renamed them to SkillNames and AbilityNames***
    862 downloads
  63. 1.5.6Mar 4, 2025

    New Feature

    - The plugin will now attempt to avoid players sitting on others disguised as Creaking

    Bug Fixes

    - Player's max health not scaling when switched from one disguise to another - Admins' client integration isn't aware when a player rejoins the server with disguise

    Other

    - The Dig down action for Warden no longer makes players vanish, instead they'll just become invisible

    API

    - FeatherMorphDirectAccess#requestManager will now return IManageRequests rather than RequestManager - Fixed calling FeatherMorphDirectAccess#requestManager throws NullDependencyException - Someone used a wrong type - Added APIMeta, can be used to lookup some API metadata - Currently only API version - Added UtilitiesAlpha#lookupDisguiseUUIDFromPlayer and UtilitiesAlpha#isServerBackend - lookupDisguiseUUIDFromPlayer can be used to lookup for someone's disguise's virtual entity UUID, if the server is running ServerBackend - ...And isServerBackend can be used to check if the server is running ServerBackend
    829 downloads
  64. 1.5.5Feb 19, 2025

    New Feature

    - Added experimental FeatherMorphAPI - Currently, we only have a FeatherMorphDirectAccess to allow people to access the plugin's internal components, and a UtilitiesAlpha that only has two functions 🧐

    Bug Fixes

    - HealsFromEntityAbility throws Accessing LegacyRandomSource from multiple threads on recent versions of Folia - The distance for Interaction Mirror is hard-coded to 100 blocks, rather than the distance configured in the config file

    Other

    - We no longer try to recover AI modifications on server shutdown - Tweaked the implementation of Server Renderer
    705 downloads
  65. 1.5.4Feb 5, 2025
    A hotfix release for the plugin throws IllegalStateException for new players in some cases ( Like killing mobs, or logout )

    Bug Fix

    - Sometimes the plugin doesn't process new players' data correctly
    737 downloads
  66. 1.5.3Feb 2, 2025

    Bug Fix

    - Some management commands don't filter disguises using the input ID correctly - Disabling client integration when running causes all 1.21.4 players using FMC to disconnect

    Other

    - When Headmorph is disabled, trying to activate this feature will no longer receive the feedback about it being disabled - Update PluginBase - Attempt to fix a possible memory leak - Tweaked the implementation of Interaction Mirror
    194 downloads
  67. 1.3.5Jan 19, 2025

    NOTICE!

    Support for the legacy permission nodes is now ended! Please make sure ALL related permissions are moved to the new prefix feathermorph.XXX before updating!

    New Features

    - Added initial support for specifying disguise properties (variants) - Currently only through the disguise command! - The usage is: /morph <id> <properties> - For example, to disguise as an Armor Stand with arms: /morph minecraft:armor_stand [armor_stand_show_arms=true] - For multiple properties: /morph foo:bar [property1=value1, property2=value2, ...] - It's now possible to specify worlds that disabled the disguise feature through the config - config.yml > world_option > disabled_worlds - Wither Skeleton disguise now can make the player immune from the wither effect - Added new placeholder feathermorph_state_provider_is?<namespace>, to identify the category (The namespace) of the player's disguise - For example, to identify whether a player is using a player disguise: feathermorph_state_provider_is?player - To identify whether a player is disguised as a mob: feathermorph_state_provider_is?minecraft - Added new placeholder feathermorph_state_id_is?<id>, to identify whether a player is using a specific disguise. - For example, to identify whether a player disguises as Creaking: feathermorph_state_id_is?minecraft:creaking

    Bug Fixes

    - Client session not being cleared after player disconnects - Placeholder expansions are no longer available after /papi reload - The plugin doesn't download Minecraft language file that matches the currently running version - Towny integration tries to process an offline player when it has been added to a town

    Other

    - We're now a pure Paper plugin! - That means Spigot servers are no longer able to load this plugin - Support for legacy permission nodes (`xiamomc.morph.XXX`) is now DEPRECATED! Please move to the new permission node (`feathermorph.XXX`)! - For example, xiamomc.morph.chat_override is now feathermorph.chat_override - Changed placeholder names from `morph_...` to `feathermorph_...` - Changed how FeatherMorph communicates with client mods - Tweaked Placeholder expansions' behavior - Now returns more specific feedback if the parameter is not valid or the player is not disguised - Player disguises no longer have a Custom Name metadata - We now use Brigadier to register commands
    2237 downloads
  68. 1.5.1Jan 19, 2025

    NOTICE!

    Support for the legacy permission nodes is now ended! Please make sure ALL related permissions are moved to the new prefix feathermorph.XXX before updating!

    New Features

    - Added initial support for specifying disguise properties (variants) - Currently only through the disguise command! - The usage is: /morph <id> <properties> - For example, to disguise as an Armor Stand with arms: /morph minecraft:armor_stand [armor_stand_show_arms=true] - For multiple properties: /morph foo:bar [property1=value1, property2=value2, ...] - It's now possible to specify worlds that disabled the disguise feature through the config - config.yml > world_option > disabled_worlds - Players can now unlock the Creaking disguise by breaking a natural and active Creaking Heart - Added two actions for Creaking disguise - Illagers will now attempt to avoid players disguised as Creaking - Wither Skeleton disguise now can make the player immune from the wither effect - Added new placeholder feathermorph_state_provider_is?<namespace>, to identify the category (The namespace) of the player's disguise - For example, to identify whether a player is using a player disguise: feathermorph_state_provider_is?player - To identify whether a player is disguised as a mob: feathermorph_state_provider_is?minecraft - Added new placeholder feathermorph_state_id_is?<id>, to identify whether a player is using a specific disguise. - For example, to identify whether a player disguises as Creaking: feathermorph_state_id_is?minecraft:creaking

    Bug Fixes

    - Client session not being cleared after player disconnects - Placeholder expansions are no longer available after /papi reload - The plugin doesn't download Minecraft language file that matches the currently running version - Towny integration tries to process an offline player when it has been added to a town

    Other

    - We're now a pure Paper plugin! - That means Spigot servers are no longer able to load this plugin - Support for legacy permission nodes (`xiamomc.morph.XXX`) is now DEPRECATED! Please move to the new permission node (`feathermorph.XXX`)! - For example, xiamomc.morph.chat_override is now feathermorph.chat_override - Changed placeholder names from `morph_...` to `feathermorph_...` - Changed how FeatherMorph communicates with client mods - Tweaked Placeholder expansions' behavior - Now returns more specific feedback if the parameter is not valid or the player is not disguised - Player disguises no longer have a Custom Name metadata - We now use Brigadier to register commands
    655 downloads
  69. 1.5.0.rc4Jan 12, 2025

    NOTICE!

    Support for the legacy permission nodes is now ended! Please make sure ALL related permissions are moved to the new prefix feathermorph.XXX before updating!

    New Feature

    - Now it's possible to specify worlds that disabled the disguise feature through the config - config.yml > world_option > disabled_worlds

    Bug Fixes

    - Placeholder expansions are no longer available after /papi reload - Some options are no longer tweakable through the /fm option command after moving to brigadier

    Other

    - Support for legacy permission nodes (`xiamomc.morph.XXX`) is now DEPRECATED! Please move to the new permission node (`feathermorph.XXX`)! - For example, xiamomc.morph.chat_override is now feathermorph.chat_override - Tweaked Placeholder expansions' behavior - Now returns more specific feedback if the parameter is not valid or the player is not disguised
    360 downloads
  70. 1.5.0.rc3Jan 3, 2025

    New Feature

    - Added initial support for specifying disguise properties (variants) - Currently only through the disguise command! - The usage is: /morph <id> <properties> - For example, to disguise as an Armor Stand with arms: /morph minecraft:armor_stand [armor_stand_show_arms=true] - For multiple properties: /morph foo:bar [property1=value1, property2=value2, ...]

    Bug Fixes

    - Cannot get key of Legacy Material happens when initializing Disguise Tool's recipe - Opening GUI crashes the server if running recent versions of Paper

    Other

    - We're now a pure Paper plugin! - That means Spigot servers are no longer able to load this plugin - All child commands under /fm manage now accepts entity selectors (@a, @p, etc.) - /fm reload can be run without arguments once again (And it reloads config and language, just like before)
    431 downloads
  71. 1.5.0.rc2Dec 19, 2024

    Other

    - Creaking disguise now can only unlock by destroying a naturally generated and active Creaking Heart - Tweaked Mob AI modification implements
    486 downloads
  72. 1.5.0.rc1Dec 13, 2024

    New Feature

    - Illagers will now attempt to avoid players disguised as Creaking

    Bug Fix

    - UnMorphCommand throws errors when tab-completing any commands from the console
    243 downloads
  73. 1.5.0.beta1Dec 7, 2024
    Yes, 1.21.3 is skipped :P

    Bug Fix

    - Towny integration tries to process an offline player when it has been added to a town

    Other

    - We are now 1.21.4 - Player disguises no longer have a Custom Name metadata - Use Brigadier to register commands
    154 downloads
  74. 1.4.0.beta1Nov 30, 2024

    New Features

    - Players can now unlock the Creaking disguise by breaking an activated Creaking Heart - The state of the Creaking Heart can be found at F3 -> Targeted Block -> "creaking: ..." - Added two actions for Creaking disguise - Used for toggling eye glowing

    Bug Fixes

    - Client session not being cleared after player disconnects - The plugin doesn't download Minecraft language file that matches the currently running version

    Other

    - Ignore Transient Creaking, and remove it from known disguises
    685 downloads
  75. 1.3.3Nov 29, 2024
    Reupload because some baka uploaded the wrong artifact :)

    New Features

    - Added new placeholder feathermorph_state_provider_is?<namespace>, to identify the category (The namespace) of the player's disguise - For example, to identify whether a player is using a player disguise: feathermorph_state_provider_is?player - To identify whether a player is disguised as a mob: feathermorph_state_provider_is?minecraft - Added new placeholder feathermorph_state_id_is?<id>, to identify whether a player is using a specific disguise. - For example, to identify whether a player disguises as Creaking: feathermorph_state_id_is?minecraft:creaking

    Bug Fix

    - When using certain plugins, attacking others in regions that disabled PVP will still apply effects to them

    Other

    - Renamed placeholders from `morph_...` to `feathermorph_...` - Added warnings for hot load and reload
    1011 downloads
  76. 1.4.0.alpha41.4.0.alpha4 (Reupload)Nov 29, 2024
    Reupload because some baka uploaded the wrong artifact :) This version also comes with some changes in 1.3.2, for more details, see [1.3.2 changelog](https://modrinth.com/plugin/feathermorph/version/1.3.2)

    New Feature

    - Wither Skeleton disguise now can make the player immune from the wither effect - Added new placeholder feathermorph_state_provider_is?<namespace>, to identify the category (The namespace) of the player's disguise - For example, to identify whether a player is using a player disguise: feathermorph_state_provider_is?player - To identify whether a player is disguised as a mob: feathermorph_state_provider_is?minecraft - Added new placeholder feathermorph_state_id_is?<id>, to identify whether a player is using a specific disguise. - For example, to identify whether a player disguises as Creaking: feathermorph_state_id_is?minecraft:creaking

    Bug Fixes

    - Yaw/Pitch convert error with Ender Dragon and Phantom disguise in server renderer - When using certain plugins, attacking others in regions that disabled PVP will still apply effects to them

    Other

    - Changed placeholder names from `morph_...` to `feathermorph_...` - Changed how FeatherMorph communicates with client mods - Legacy mods are still supported at least until the 1.22 update! - Added warnings for hot load and reload - Tweaked Creaking disguise's max health to 20
    64 downloads
  77. 1.3.2Nov 5, 2024

    Bug Fix

    - Fixed multiple Instance Network issues, including: - It never starts - The WebSocket server isn't closed upon configuration reload - The WebSocket client doesn't get handled correctly upon configuration reload - The client tries to reconnect multiple times on fail

    Other

    - Added workarounds for health modifiers - Trying to solve some mysterious issues with health scaling - *Also, if you are using HuskSync or something else like it, you may want to add these attribute modifiers to the ignore list:* - feathermorph:health_modifier - feathermorph:fm_health_modifier - And also for these in case something strange happens: - minecraft:health_modifier - minecraft:fm_health_modifier
    860 downloads
  78. 1.4.0.alpha2Nov 4, 2024

    Bug Fix

    - Instance Network doesn't start - It starts, but it's broken, still not usable now

    Other

    - Update to 1.21.3
    255 downloads
  79. 1.3.1Oct 28, 2024

    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
    402 downloads
  80. 1.3.0Oct 24, 2024

    This version includes some changes related to permissions, please attention!

    - Permissions will now use feathermorph as the prefix instead of xiamomc.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](https://github.com/dmulloy2/ProtocolLib/releases).

    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_tool while 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 - --- - 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.XXX to feathermorph.XXX. - Changed package name - Package name has changed from xiamomc.morph.XXX to xyz.nifeather.morph.XXX. - - Tweaked Skill Configuration and Player Data Storage - Skill configurations are now distributed in the skills directory, stored as <namespace>/<id>.json. - For example, the skill configuration for minecraft:sheep is located at skills/minecraft/sheep.json. - Player configurations are now stored in the playerdata directory as <UUID>.json. - The original data.json and skills.json will be renamed to data.json.old and skills.json.old. - 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.
    364 downloads
  81. 1.2.7Oct 5, 2024

    Bug Fix

    - Disguises having random variants doesn't randomize upon disguising, instead it prints warnings to the console. (The given property '...' doesn't exist)
    891 downloads
  82. 1.2.6Sep 30, 2024

    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
    318 downloads
  83. 1.2.51.2.5 (1.21.1)Sep 17, 2024

    New Features

    - Added Inventory GUI for disguise selection - You can open it using the /morph command! With no arguments, it will open the GUI instead of complaining that there are not enough arguments. - <iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/t34tOnvE21c" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe> - 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...
    611 downloads
  84. 1.2.11.2.1 (1.21.1)Aug 17, 2024

    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-action command. - 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>
    2521 downloads
  85. 1.1.51.1.5 (1.21.1)Aug 10, 2024

    Other

    - Update to 1.21.1
    284 downloads
  86. 1.1.41.1.4 (1.21)Aug 2, 2024
    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 getEntities when players are in different regions

    Other

    - Move the process of random variants from the server disguise renderer to MorphManager
    1254 downloads
  87. 1.1.31.1.3 (1.21)Jul 27, 2024

    New Feature

    - Allow changing whether to modify mobs' AI to make them react to the disguise - For your sanity, we don't recommend using `/reload` or any method that loads/unloads this plugin when this option is turned on! - Toggling this option requires a server restart!

    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
    401 downloads
  88. 1.1.21.1.2 (1.21)Jul 21, 2024

    Other

    - Make this plugin work on Paper Build #106 - And it's not backward compatible, you will need to update Paper to use!
    363 downloads
  89. 1.1.11.1.1 (1.21)Jul 17, 2024
    A small release to fix an annoying problem. PS: If you encountered an issue with updating disguise or MorphManager, please try [this build](https://github.com/XiaMoZhiShi/FeatherMorph/actions/runs/9986222865) on our GitHub!

    Bug Fix

    - The maximum health does not update when switching from mob disguises to player disguises
    288 downloads
  90. 1.1.01.1.0 (1.21)Jul 16, 2024

    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 - 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_permissions` command 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
    1011 downloads
  91. 1.1.0-beta.81.1.0-beta.8 (1.21)Jul 6, 2024
    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
    435 downloads
  92. 1.1.0-beta.71.1.0-beta.7 (1.21)Jul 3, 2024

    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 :(
    176 downloads
  93. 1.1.0-beta.61.1.0-beta.6 (1.21)Jun 18, 2024

    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
    664 downloads
  94. 1.1.0-beta.51.1.0-beta.5 (1.20.6, Folia 1.20.6)Jun 11, 2024

    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
    810 downloads
  95. 1.1.0-beta.41.1.0-beta.4 (1.20.6, Folia 1.20.6)Jun 9, 2024

    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 - 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_permissions` command 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
    128 downloads
  96. 1.1.0-beta.31.1.0-beta.3 (1.20.6, Folia 1.20.6)May 30, 2024

    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
    301 downloads
  97. 1.0.171.0.17 (1.20.4, Folia 1.20.4)May 17, 2024

    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>
    1523 downloads
  98. 1.1.0-beta.2May 10, 2024
    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
    317 downloads
  99. 1.1.0-beta.1May 7, 2024
    PS: Because ProtocolLib doesn't support 1.20.6, the Server Renderer will not work now.

    Other

    - Initial 1.20.6 support - Client Renderer may not fully work.
    129 downloads
  100. 1.0.151.0.15 (1.20.4, Folia 1.20.4)May 6, 2024

    Bug Fix

    - Triggering InteractionMirror between two different regions would throw an exception

    Other

    - Disabled ChatOverride and InteractionMirror on new installations by default - These features are originally made for fun, and not considered to keep this long... So I'm planning to remove these in the future.
    243 downloads

Similar projects

Plugin →