Feature
SimpleAnimator is a simple animation engine that allows players to use BedrockEdition animations to play back player animations.
When playing online, the client synchronizes the animations loaded by the server.
Animation
Animations can be made via BlockBench, and some special Booleans can be manually added after the animation is exported if necessary:
- override: Specifies whether an animation overrides an existing action and camera orientation. The default value is true. If the value is false, the animation works in addition mode.
- movable: Whether a player can be moved while playing an animation. The default is false.
- abortable: Whether the animation can be aborted. The default value is true. If it is false, the animation cannot be interrupted by player action (not recommended if the animation is in loop mode).
In addition, BlockBench project files in the corresponding format can be downloaded to GitHub to facilitate animation.
The mod provides two ways to add animations:
Datapack:
For mod developers, you can choose to put animations into data/[modid]/animations.
The API and more details will be added in a later version of the documentation.
Folder:
For most players, animations can be loaded by dropping the files into [game version path]/animations.
Interaction
Interaction is a new feature added after mod version 1.1.0 that allows two players to interact and play animations(May be misaligned in the case of network instability).
Interaction file import is similar to normal animation, but you need to add subanimations to the animation file: invite, waiting, cancel(optional).
In addition, the animated bones need to include the bones with the requester and receiver prefixes. The specific format can be viewed by Starting-Kit.interact.bbmodel in GitHub.
Commands
/animate play <animation>
/animate stop
/interact invite <player> <interaction>
/interact accept <player>
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
|
R
1.0.2
|
last yr. | 1 | |||
| last yr. | 1 |
Cannot load float2 and float3 to variable keyframes
# Added
Field animator in AnimatorEvent and ClientAnimatorStateEvent
Cannot load float2 and float3 to variable keyframes
# Added
Field animator in AnimatorEvent and ClientAnimatorStateEvent
Pre and Post frames.
# Fixed Bug
Warming during load a bone with only one frame.
Pre and Post frames.
# Fixed Bug
Warming during load a bone with only one frame.
Wrong rotation and position for cape.
# Experimental Feature
Variable keyframes have been slightly updated with types, although it still needs to be used with bones.
You can name a BlockBench Group(Bone) with format var_type(optional)_name_...
Available type names are: float, float2, float3, int, int2, int3, bool, bool2, bool3, vec2, vec3.
example: var_float3_myPosition_acting_int2_myScreenPos
Wrong rotation and position for cape.
# Experimental Feature
Variable keyframes have been slightly updated with types, although it still needs to be used with bones.
You can name a BlockBench Group(Bone) with format var_type(optional)_name_...
Available type names are: float, float2, float3, int, int2, int3, bool, bool2, bool3, vec2, vec3.
example: var_float3_myPosition_acting_int2_myScreenPos
NullPointerException
NullPointerException
- This update mostly for developers.**
### Animation side
Animation supports keyframes for variables, but since the corresponding animation tool or BlockBench plugin has not yet been developed, the current method of adding animation variables is as follows:
1. Add an empty group in BlockBench
2. Name it with format: var_name1_name2_name3 (underlines are separators, maximum of 3 variables per group)
3. Goto “Animate” and add keyframes for them.
The variable uses the first value of Position, Rotation, Scale.
### Program side
Variables only store in client, you can get a variable by using:
ClientAnimator.getVariable(name) If the running animation does not contain this variable, this function returns an unchangeable VariableHolder with a value of 0.
## Quasi Inverse Kinematics
This is an experimental feature, and only in client side.
This feature provides three built-in variables: ikLeftArm, ikRightArm, ikHead, you can add it in animations to control IK weights.
The IK target can only be set by programs, using:
ClientAnimator.setIkTarget(bone, pos). - Full Changelog**: https://github.com/LouisQuepierts/SimpleAnimator/compare/1.2.1...1.2.2
- This update mostly for developers.**
### Animation side
Animation supports keyframes for variables, but since the corresponding animation tool or BlockBench plugin has not yet been developed, the current method of adding animation variables is as follows:
1. Add an empty group in BlockBench
2. Name it with format: var_name1_name2_name3 (underlines are separators, maximum of 3 variables per group)
3. Goto “Animate” and add keyframes for them.
The variable uses the first value of Position, Rotation, Scale.
### Program side
Variables only store in client, you can get a variable by using:
ClientAnimator.getVariable(name) If the running animation does not contain this variable, this function returns an unchangeable VariableHolder with a value of 0.
## Quasi Inverse Kinematics
This is an experimental feature, and only in client side.
This feature provides three built-in variables: ikLeftArm, ikRightArm, ikHead, you can add it in animations to control IK weights.
The IK target can only be set by programs, using:
ClientAnimator.setIkTarget(bone, pos). - Full Changelog**: https://github.com/LouisQuepierts/SimpleAnimator/compare/1.2.1...1.2.2
Animations made with ModifiedRig result in incorrect translation/rotation of the Layers render.
Wrong pivoting point for model part "body" in Modified-Starting-Kits.
Animations made with ModifiedRig result in incorrect translation/rotation of the Layers render.
Wrong pivoting point for model part "body" in Modified-Starting-Kits.
## Something new?
### Animation Format
- unlock Option**
Option "override" is replaced with "unlock", for animations, all model part will use override mode as the defualt, use "unlock" option can change specific model part to add mode.
Example:
{ "unlock": ["HEAD", "LEFT_ARM", "RIGHT_ARM" ] } For this option, the optional values are HEAD, BODY, LEFT_ARM, RIGH_ARM, LEFT_LEG, RIGHT_LEG.
- useVanillaRig Option**
For temporary compatibility with older versions of animation files, the useVanillaRig option defaults to true.
However, this will soon be changed to false in a future release, requiring users/developers to enable it themselves.
However, in the current version, if you need to enable the new RidMode, please add
"useVanillaRig" : false to the animation file. ### Security Checks
When inviting others to interact or finding their way in front of the person who sent the invitation, the area in front of them is subject to the simplest security checks, avoid initiating interactions at a point where you can't stand.
### Event System
This feature is for developers:
The new version adds an event system for when you need to execute some code on specific interactions/animations at specific moments.
This system almost same as Forge/Fabric API's event system, use
SimpleAnimator.EVENT_BUS.addListener(event, listener) to add a listener.API docs may not be released that soon, but it won't be delayed for long.
## Something new?
### Animation Format
- unlock Option**
Option "override" is replaced with "unlock", for animations, all model part will use override mode as the defualt, use "unlock" option can change specific model part to add mode.
Example:
{ "unlock": ["HEAD", "LEFT_ARM", "RIGHT_ARM" ] } For this option, the optional values are HEAD, BODY, LEFT_ARM, RIGH_ARM, LEFT_LEG, RIGHT_LEG.
- useVanillaRig Option**
For temporary compatibility with older versions of animation files, the useVanillaRig option defaults to true.
However, this will soon be changed to false in a future release, requiring users/developers to enable it themselves.
However, in the current version, if you need to enable the new RidMode, please add
"useVanillaRig" : false to the animation file. ### Security Checks
When inviting others to interact or finding their way in front of the person who sent the invitation, the area in front of them is subject to the simplest security checks, avoid initiating interactions at a point where you can't stand.
### Event System
This feature is for developers:
The new version adds an event system for when you need to execute some code on specific interactions/animations at specific moments.
This system almost same as Forge/Fabric API's event system, use
SimpleAnimator.EVENT_BUS.addListener(event, listener) to add a listener.API docs may not be released that soon, but it won't be delayed for long.
## Something new here?
### Fabric Version
SimpleAnimator is now available on Fabirc!
WaHoo!
### Interactions
Since this version, SimpleAnimator will include a set of network packages and mechanisms on Interaction.
Interaction is a set of animations that interact between two players, it is also imported using the bedrock format animation file, but it may be slightly different from normal animations.
### Commands
In this version, commands for interactions have been added:
/interact invite <player> <interaction> /interact accept <player> ## Fixed Bugs
- Client cannot run due to key frame interpolation resulting in NaN
- Strange synchronization problem
## Something new here?
### Interactions
Since this version, SimpleAnimator will include a set of network packages and mechanisms on Interaction.
Interaction is a set of animations that interact between two players, it is also imported using the bedrock format animation file, but it may be slightly different from normal animations.
### Commands
In this version, commands for interactions have been added:
/interact invite <player> <interaction> /interact accept <player>## Fixed Bugs
- Client cannot run due to key frame interpolation resulting in NaN
- Strange synchronization problem
Fix bugs:
- cause forge server cannot start.
- camera cannot animate during holding item in first-person
### Commands
Just like the name of the command, you can play or stop the animation of the player executing the command:
- animate play [your_animation]
- animate stop
You can use BlockBench to create your animation. If you have no idea with how to get a player model, you can download the BlockBench project right here.
## Else
This mod support ReplayMod, which means all animation can be record by ReplayMod!
The mod is still in development and there may be various bugs :(