... | ... | @@ -41,19 +41,21 @@ This will add an `attack` state to the specified model, and gives it 3 ticks to |
|
|
|
|
|
## MountModel
|
|
|
If the model has driver/passenger bones, mount entities to those bones.
|
|
|
| Attribute | Aliases | Description | Default |
|
|
|
|-------------|----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|
|
|
|
| driver | d, drive | Is this mechanic mounting a driver | true |
|
|
|
| force | f | Should the target be forced to mount on the bone<br>Driver: dismount the original driver and mount the target<br>Passenger: find a seat with the least passengers and mount the target | false |
|
|
|
| damagemount | dmg | Can the mounted entity damage the mount | false |
|
|
|
| mode | m | What mount mode should the mounted entity use<br>**Walking**: WASD ground controller<br>**Flying**: WASD-Sneak-Jump aerial controller (jump to ascend, shift to descend, shift while mount on ground to dismount)<br>**Flying_v16**: WASD-Pitch-Jump aerial controller for 1.16 (look up + space to ascend, look down + space to descend)<br>**Force_Walking**: Same as Walking, but mounted entity cannot dismount<br>**Force_Flying**: Same as Flying, but mounted entity cannot dismount | walking |
|
|
|
| pbone | p | Not Driver: A list of seats searched when mounting entities<br>Format: pbone=seat1,seat2,seat3<br>If force is not enabled, this will fill all the seats until no more passengers can be mounted. | |
|
|
|
| Attribute | Aliases | Description | Default |
|
|
|
|:---:|:---:|---|:---:|
|
|
|
| driver | d, drive | Is this mechanic mounting a driver | true |
|
|
|
| force | f | Should the target be forced to mount on the bone<br>Driver: dismount the original driver and mount the target<br>Passenger: find a seat with the least passengers and mount the target | false |
|
|
|
| autodismount | ad | If the target is already mounted on another seat, should the target dismount from the old seat and mount on the new seat | false |
|
|
|
| damagemount | dmg | Can the mounted entity damage the mount | false |
|
|
|
| mode | m | What mount mode should the mounted entity use<br>**Walking**: WASD ground controller<br>**Flying**: WASD-Sneak-Jump aerial controller (jump to ascend, shift to descend, shift while mount on ground to dismount)<br>**Flying_v16**: WASD-Pitch-Jump aerial controller for 1.16 (look up + space to ascend, look down + space to descend)<br>**Force_Walking**: Same as Walking, but mounted entity cannot dismount<br>**Force_Flying**: Same as Flying, but mounted entity cannot dismount | walking |
|
|
|
| modelid | mid, model | Not Driver: The model ID of the passenger bones. | |
|
|
|
| pbone | p | Not Driver: A list of seats searched when mounting entities<br>Format: pbone=seat1,seat2,seat3<br>If force is not enabled, this will fill all the seats until no more passengers can be mounted. | |
|
|
|
>Note: Minecraft 1.16 has a bug where player dismount happens client-sided, which means the server cannot intercept it. Hence, all force mode would not work for 1.16 clients, and must use flying_v16 for flying. For more information, read [MC-202202](https://bugs.mojang.com/browse/MC-202202).
|
|
|
### Example
|
|
|
`- mountmodel{mode=flying} @trigger ~onInteract`
|
|
|
Mount the player to the mount point when right-clicked, and gives the player flying control. If there is already a driver, it will not do anything.
|
|
|
`- mountmodel{driver=false;mode=force;pbone=seat1,seat2,seat3,seat4;dmg=true} @PIR{r=5} ~onDamaged`
|
|
|
Mount 4 players within a 5 blocks radius to seat1-4 when damaged. Players could not sneak to dismount, but they can hit the mount.
|
|
|
`- mountmodel{driver=false;mode=force;pbone=seat1,seat2,seat3,seat4;dmg=true;mid=mymodel} @PIR{r=5} ~onDamaged`
|
|
|
Mount 4 players within a 5 blocks radius to seat1-4 of the model "mymodel" when damaged. Players could not sneak to dismount, but they can hit the mount.
|
|
|
|
|
|
***
|
|
|
|
... | ... | @@ -136,19 +138,12 @@ This will change Kindletron Jr's left arm to Kindletron Sr's left arm when it sp |
|
|
|
|
|
## SubModel
|
|
|
Add or remove a part of a different model to the targeted model. This will create all child bones contained in the substitution, with the offset and rotation taken from the model.
|
|
|
| Attribute | Aliases | Description | Default |
|
|
|
|------------|--------------------|------------------------------------------------------------------------------------------------------------------|---------|
|
|
|
| modelid | m, mid, model | The targeted model | |
|
|
|
| partid | p, pid, part | The targeted part | |
|
|
|
| submodelid | sm, smid, submodel | The model of the new part | |
|
|
|
| subpartid | sp, spid, subpart | The new part | |
|
|
|
| customid | c, cid | Optional: Give the substitution a unique part id<br>Afterwards, when manupulating this part, this id can be used | |
|
|
|
| remove | r | Is this mechanic removing a part | |
|
|
|
### Example
|
|
|
`- submodel{model=kindletronjr;part=right_hand;submodel=weapons;subpart=whip;customid=kindle_whip} @self ~onAttack`
|
|
|
Create the whip part and its children from `weapons`, name the whip bone `kindle_whip`, and set `right_hand` as the whip's parent when attacking.
|
|
|
`- submodel{model=kindletronjr;subpart=kindle_whip;remove=true} @self ~onDamaged`
|
|
|
Remove `whip` from kindletronjr using custom id `kindle_whip` when damaged.
|
|
|
| Attribute | Aliases | Description | Default |
|
|
|
|:---:|:---:|---|:---:|
|
|
|
| modelid | m, mid, model | The targeted model | |
|
|
|
| partid | p, pid, part | The targeted part | |
|
|
|
| subpartid | sp, spid, subpart | The new part | |
|
|
|
| remove | r | Is this mechanic removing a part | |
|
|
|
|
|
|
***
|
|
|
|
... | ... | @@ -164,12 +159,16 @@ This will create a statue of Kindletron Jr when he dies. Note that petrify does |
|
|
***
|
|
|
|
|
|
## DefaultState
|
|
|
Set the default state to a different state. This is for changing automatic states such as idle animation.
|
|
|
| Attribute | Aliases | Description | Default |
|
|
|
|-----------|---------------|---------------------------------------------------------------------------------|---------|
|
|
|
| modelid | m, mid, model | The targeted model | |
|
|
|
| type | t | The targeted default state<br>Available default states: IDLE, WALK, JUMP, DEATH | |
|
|
|
| state | s | The new default state | |
|
|
|
Configure the default states of a model.
|
|
|
| Attribute | Aliases | Description | Default |
|
|
|
|:---------:|:-------:|-------------|:-------:|
|
|
|
| modelid | m, mid, model | The model being changed | |
|
|
|
| type | t | The default state getting changed | |
|
|
|
| state | s | Animation name | |
|
|
|
| lerpin | li | Lerp in tick | prev |
|
|
|
| lerpout | lo | Lerp out tick | prev |
|
|
|
| speed | sp | Speed modifier | prev |
|
|
|
|
|
|
### Example
|
|
|
`- defaultstate{m=kindletronjr;t=walk;s=run} @self ~onDamaged`
|
|
|
This will set Kindletron Jr's walking animation to a running animation. This is very useful when combined with stance & auras! I personally use this when passive mobs "flee" from the player, then run another `defaultstate` mechanic after the mob has disengaged from combat.
|
... | ... | @@ -177,24 +176,30 @@ This will set Kindletron Jr's walking animation to a running animation. This is |
|
|
***
|
|
|
|
|
|
## BodyClamp
|
|
|
Set the maximum head rotation before rotating the body. This effect can be seen on player models, where the body will stay stationary before the head rotates beyond 50 degrees.
|
|
|
| Attribute | Aliases | Description | Default |
|
|
|
|-----------|---------------|---------------------------------------------------------------|---------|
|
|
|
| modelid | m, mid, model | The targeted model | |
|
|
|
| clamp | c, angle | The maximum head rotation before the body moves with the head | 50 |
|
|
|
### Example
|
|
|
`- bodyclamp{m=kindletronsr;c=10} @self ~onSpawn`
|
|
|
This will set the amount of rotation limit of the "neck" before the body begins to rotate with it. Note how all mobs in Minecraft have neck rotations, before also moving their body to follow the player!
|
|
|
Configure the rotational interaction between the head bone and body bone.
|
|
|
| Attribute | Aliases | Description | Default |
|
|
|
|:---:|:---:|---|:---:|
|
|
|
| headuneven | hu, head | Is the head clamp uneven (used while model is walking) | false |
|
|
|
| maxhead | mh, mxh | Maximum angle the head can rotate | 50 |
|
|
|
| minhead | mnh | Minimum angle the head can rotate | -maxhead |
|
|
|
| bodyuneven | bu, body | Is the body clamp uneven (used while model is idling) | false |
|
|
|
| maxbody | mb, mxb | Maximum angle the body can rotate | 50 |
|
|
|
| minbody | mnb | Minimum angle the body can rotate | -maxbody |
|
|
|
| playermode | m, mode, player | Should the body reorient itself like vanilla mobs | false |
|
|
|
| stable | s | Stable angle before the body rotates<br>E.g. if `maxbody` = 50, and `stable` = 15, the <br>head can rotate freely until it passes 65 degrees,<br>then the body would snap back to be 50 degrees <br>apart from the head. | 15 |
|
|
|
| rdelay | rde | Delay in ticks before the body reorient itself | 10 |
|
|
|
| rduration | rdu | How long in ticks would the body take to reorient itself | 10 |
|
|
|
|
|
|
***
|
|
|
|
|
|
## SetModelTag
|
|
|
Set the name displayed on the name tag of the model.
|
|
|
| Attribute | Aliases | Description | Default |
|
|
|
|-----------|---------|------------------------------------|---------|
|
|
|
| bone | b | The selected bone | |
|
|
|
| tag | t | The name, or a placeholder string | |
|
|
|
| visible | v | The visibility of the name tag | true |
|
|
|
Set the name displayed on the specified tag bone of the model.
|
|
|
| Attribute | Aliases | Description | Default |
|
|
|
|:---:|:---:|---|:---:|
|
|
|
| modelid | m, mid, model | The targeted model | |
|
|
|
| bone | b | The selected bone | |
|
|
|
| tag | t | The name, or a placeholder string | |
|
|
|
| visible | v | The visibility of the name tag | true |
|
|
|
### Example
|
|
|
`- setmodeltag{bone=hp_bar;tag=<caster.hp>} @self ~onSpawn`
|
|
|
This will find a nametag bone called `hp_bar` and set it to display the caster's HP on spawn. The value would update automatically without ~onTimer trigger.
|
... | ... | @@ -316,4 +321,56 @@ Remap a new model to the current model, part by part. |
|
|
### Example
|
|
|
`- remapmodel{m=kindletronsr;n=kindletronsr_enraged} @self ~onDamaged =20%`
|
|
|
This will enrage Kindletron Sr and change the appearance of the model. However, all the animations are still using the old model.
|
|
|
If you wish to remap again, please use the initial model id as `modelid`. In this scenario, it would be `kindletronsr`, not `kindletronsr_enraged`. |
|
|
\ No newline at end of file |
|
|
If you wish to remap again, please use the initial model id as `modelid`. In this scenario, it would be `kindletronsr`, not `kindletronsr_enraged`.
|
|
|
|
|
|
***
|
|
|
|
|
|
## Leash
|
|
|
**Visually** link a leash bone to the target.
|
|
|
| Attribute | Aliases | Description | Default |
|
|
|
|:---:|:---:|---|:---:|
|
|
|
| modelid | m, mid, model | The model being changed | |
|
|
|
| partid | p, pid, part | Leash bone | |
|
|
|
| leash | l | Is leashed to target | |
|
|
|
|
|
|
***
|
|
|
|
|
|
## LeashSelf
|
|
|
Link a leash bone to another.
|
|
|
| Attribute | Aliases | Description | Default |
|
|
|
|:---:|:---:|---|:---:|
|
|
|
| modelid | m, mid, model | The model being changed | |
|
|
|
| sourceid | s, sid, src, source | The leash bone being leashed | |
|
|
|
| destid | d, did, dest | The leash bone holding the leash | |
|
|
|
> The leash would be visible as long as the destination is in view, or it will disappear. Double leash if you need it to be always visible (leash A to B, then leash B to A)
|
|
|
|
|
|
***
|
|
|
|
|
|
## SwapEntity
|
|
|
Swap the model owner from one entity to the target.
|
|
|
| Attribute | Aliases | Description | Default |
|
|
|
|:---:|:---:|---|:---:|
|
|
|
| modelid | m, mid, model | The targeted model | |
|
|
|
| hitbox | h | Should override hitbox | true |
|
|
|
| invisible | i, invis | Should the base entity be invisible | true |
|
|
|
| step | s | New step height of receiver entity | 0.5 |
|
|
|
| radius | rad | View radius of the model | base entity default |
|
|
|
|
|
|
***
|
|
|
|
|
|
## LockModel
|
|
|
Lock all yaw rotation of the model. Useful when trying to execute a skill without the model turning.
|
|
|
| Attribute | Aliases | Description | Default |
|
|
|
|:---:|:---:|---|:---:|
|
|
|
| lock | l | True to lock the model rotation.<br>This would lock both the head and body yaw rotation,<br>but animations do still play. | true |
|
|
|
|
|
|
***
|
|
|
|
|
|
## SetItemModel
|
|
|
Set the item displayed on an item bone.
|
|
|
| Attribute | Aliases | Description | Default |
|
|
|
|---|---|---|---|
|
|
|
| modelid | m, mid, model | The targeted model | |
|
|
|
| bone | b | The targeted item bone | |
|
|
|
| item | i | The material name of a vanilla item, or the name of a MM item.<br>If this attribute is not set, it would set the item as AIR. | |
|
|
|
> If Crucible is installed, then this mechanic will not work at all if used as-is, being overwritten by Crucible's own ModelSet mechanic. In that instance, please use the `meg:SetItemModel` mechanic. |
|
|
\ No newline at end of file |