Mods
Resource Packs
Data Packs
Modpacks
Shaders
Plugins
Mods Resource Packs Data Packs Plugins Shaders Modpacks
Get Modrinth App Upgrade to Modrinth+
Sign in
ModsPluginsData PacksShadersResource PacksModpacks
Sign in
Settings
FeatherMorph

FeatherMorph

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

38.4k
79
Adventure
Game Mechanics

Compatibility

Minecraft: Java Edition

1.21.x
1.20.6
1.20–1.20.4
1.19.3–1.19.4

Platforms

Folia
Paper
Purpur

Supported environments

Server-side

90% of ad revenue goes to creators

Support creators and Modrinth ad-free with Modrinth+

Links

Report issues View source Visit wiki

Creators

MATRIX-feather
MATRIX-feather Owner

Details

Licensed MIT
Published 2 years ago
Updated 6 days ago
DescriptionGalleryChangelogVersions

Show all versions

1
2
3
7

1.5.7

by MATRIX-feather on Mar 21, 2025
Download

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

1.5.6

by MATRIX-feather on Mar 4, 2025
Download

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

1.5.5

by MATRIX-feather on Feb 19, 2025
Download

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

1.5.4

by MATRIX-feather on Feb 5, 2025
Download

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

1.5.3

by MATRIX-feather on Feb 2, 2025
Download

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

1.3.5

by MATRIX-feather on Jan 19, 2025
Download

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

1.5.1

by MATRIX-feather on Jan 19, 2025
Download

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

1.5.0.rc4

by MATRIX-feather on Jan 12, 2025
Download

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

1.5.0.rc3

by MATRIX-feather on Jan 3, 2025
Download

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)

1.5.0.rc2

by MATRIX-feather on Dec 19, 2024
Download

Other

  • Creaking disguise now can only unlock by destroying a naturally generated and active Creaking Heart
  • Tweaked Mob AI modification implements

1.5.0.rc1

by MATRIX-feather on Dec 13, 2024
Download

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

1.5.0.beta1

by MATRIX-feather on Dec 7, 2024
Download

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

1.4.0.beta1

by MATRIX-feather on Nov 30, 2024
Download

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

1.3.3

by MATRIX-feather on Nov 29, 2024
Download

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

1.4.0.alpha4 (Reupload)

by MATRIX-feather on Nov 29, 2024
Download

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

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

1.3.2

by MATRIX-feather on Nov 5, 2024
Download

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

1.4.0.alpha2

by MATRIX-feather on Nov 4, 2024
Download

Bug Fix

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

Other

  • Update to 1.21.3

1.3.1

by MATRIX-feather on Oct 28, 2024
Download

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

1.3.0

by MATRIX-feather on Oct 24, 2024
Download

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.

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.

1.2.7

by MATRIX-feather on Oct 5, 2024
Download

Bug Fix

  • Disguises having random variants doesn't randomize upon disguising, instead it prints warnings to the console. (The given property '...' doesn't exist)
1
2
3
7

Modrinth is open source.

feat/theseus/tauri-v2@c5403db

© Rinth, Inc.

Company

TermsPrivacyRulesCareers

Resources

SupportBlogDocsStatus

Interact

Discord X (Twitter) Mastodon Crowdin
Get Modrinth App Settings
NOT AN OFFICIAL MINECRAFT SERVICE. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.