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
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
- 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 Fix
- When using certain plugins, attacking others in regions that disabled PVP will still apply effects to them
Other
- Renamed placeholders from
morph_...
tofeathermorph_...
- Added warnings for hot load and reload
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
- 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
- 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_...
tofeathermorph_...
- 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
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