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
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)- 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!
- If you wish to use this feature on an existing installation, remove/move away the old recipe configuration (
Starting from 2.0.0, FeatherMorph will require PacketEvents 2.8.0 or later to enable Server Renderer! You can download here
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
Starting from 2.0.0, FeatherMorph will require PacketEvents 2.8.0 or later to enable Server Renderer! You can download here
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
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
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
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 townallow_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
- Notice! This replaces the original
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
throwsAccessing 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
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 townallow_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
- Notice! This replaces the original
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
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 returnIManageRequests
rather thanRequestManager
- Fixed calling
FeatherMorphDirectAccess#requestManager
throwsNullDependencyException
- Someone used a wrong type
- Added
APIMeta
, can be used to lookup some API metadata- Currently only API version
- Added
UtilitiesAlpha#lookupDisguiseUUIDFromPlayer
andUtilitiesAlpha#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
New Feature
- Added experimental FeatherMorphAPI
- Currently, we only have a
FeatherMorphDirectAccess
to allow people to access the plugin's internal components, and aUtilitiesAlpha
that only has two functions 🧐
- Currently, we only have a
Bug Fixes
HealsFromEntityAbility
throwsAccessing 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
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
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, ...]
- For example, to disguise as an Armor Stand with arms:
- 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
- For example, to identify whether a player is using a player disguise:
- 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
- For example, to identify whether a player disguises as 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 nowfeathermorph.chat_override
- For example,
- Changed placeholder names from
morph_...
tofeathermorph_...
- 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
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, ...]
- For example, to disguise as an Armor Stand with arms:
- 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
- For example, to identify whether a player is using a player disguise:
- 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
- For example, to identify whether a player disguises as 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 nowfeathermorph.chat_override
- For example,
- Changed placeholder names from
morph_...
tofeathermorph_...
- 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
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 nowfeathermorph.chat_override
- For example,
- Tweaked Placeholder expansions' behavior
- Now returns more specific feedback if the parameter is not valid or the player is not disguised
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, ...]
- For example, to disguise as an Armor Stand with arms:
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)
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: ..."
- The state of the Creaking Heart can be found at
- 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