
FeatherMorph
Yet another disguise plugin. Disguise as mobs and players, then acquire unique skills and abilities!
61.3K
100
2.8.0
release30 марта 2026 г.New Features
- The icon of the current disguise is now displayed when disguising
- Entities with tag
feathermorph_nograntnow 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.jsonby default - You can overwrite it by using
/fm extract language <lang> true. This operation requires you to confirm by executing again
- Permission for this command is
- 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
DisguiseStateinstance inPlayerUnMorphEvent. - Third-party plugins are now able to add their
SinglePropertyinstances toDisguisePropertieson bootstrap, which would allow automatic assignment from player inputs. - Added support for Zombie Nautilus's variant property.
- Now an instance of
DisguisePropertycan 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
readStringmethod 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-nextbranch, 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_nameselector. - 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_uuidpermission - 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_sightmirror mode now respects the maximum affect distance set in the config- Gradle task
runFoliais now available - The actionbar message for disguise is now handled by
DisguiseState. readRotationsfromInputHandlesnow 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
ConfigOptionenum toConfigOptionclass from PluginBase - Simplified exception handling in some places.
- The message
morph.error_while_disguising_user_faultin the language file has been renamed tomorph.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#loadPlayerDataAsyncmethod - Plugin now checks for
PaperorFoliaplatform 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...2.8.0
2.8.0-rc.6
beta25 марта 2026 г.Bug Fix
- Package Version not saved after initial skill configuration setup
Full Changelog: https://github.com/NiFeather/FeatherMorph/compare/2.8.0-rc.5...2.8.0-rc.6
2.8.0-rc.5
beta8 марта 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-rc.3...2.8.0-rc.5
2.8.0-rc.3
beta28 февраля 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_nameselector. - 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-nextbranch, 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-beta.4...2.8.0-rc.3
2.8.0-rc.1
beta17 февраля 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_uuidpermission - 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
PaperorFoliaplatform for update, depending on the server spec. - Offline Disguises is now called Saved Disguises
Совместимость
Создатели
Детали
Лицензия:GPL-3.0-only
Опубликован:3 года назад
Обновлён:6 дней назад