1
0
mirror of https://github.com/Mojang/bedrock-samples.git synced 2024-11-23 12:26:14 +00:00
bedrock-samples/documentation/Entity Events.html
Mike Ammerlaan 6e0daa70a8 v1.21.40.3
2024-10-22 09:25:09 -07:00

145 lines
6.8 KiB
HTML

<h1>ENTITY EVENTS DOCUMENTATION </br>Version: 1.21.40.3</h1>
<h2><p id="Index">Index</p></h2>
<table border="1">
<tr> <th><a href="#This describes the structure of the Events section.">This describes the structure of the Events section.</a></th> </tr>
<tr> <th><a href="#Overview">Overview</a></th> </tr>
<tr> <th><a href="#Versioned Changes">Versioned Changes</a></th> </tr>
<tr> <th><a href="#Randomize Node">Randomize Node</a></th> </tr>
<tr> <th><a href="#Sequence Node">Sequence Node</a></th> </tr>
<tr> <th><a href="#Trigger">Trigger</a></th> </tr>
<tr> <th><a href="#Add Component Group">Add Component Group</a></th> </tr>
<tr> <th><a href="#Remove Component Group">Remove Component Group</a></th> </tr>
<tr> <th><a href="#Set Entity Property">Set Entity Property</a></th> </tr>
<tr> <th><a href="#Queue Command">Queue Command</a></th> </tr>
</table>
<a href="#Index">Back to top</a>
<h1><p id="This describes the structure of the Events section.">This describes the structure of the Events section.</p></h1>
<a href="#Index">Back to top</a><br><br>
<h1><p id="Overview">Overview</p></h1>
</br> Entity events can be structured by a combination of 'sequence' and 'randomize' nodes.</br> 'sequence' nodes are array nodes and will execute all entries in order from first element to last.</br> 'randomize' nodes are array nodes that will pick one entry to execute, based on a weight.</br> 'filters' can also be added within 'sequence' and 'randomize' nodes to restrict execution.</br></br> Within 'randomize' and 'sequence' nodes, you can specify a few operations.</br> 'trigger', 'filters', 'add', and 'remove'.</br> You can read about 'filters' in the 'Filters' section of the documentation.</br> 'trigger' can be used to fire additional entity events when an event is hit.</br> 'add' can be used to add component groups to your entity.</br> 'remove' can be used to remove component groups from your entity.</br></br> When an event is received, the effects of that event are determined immediately, but those changes</br> are not applied to the entity until the entity ticks on the server side of the game. This means</br> filters in later entries in a 'sequence' array won't see changes from earlier in that array.</br> It also means that when one entity sends an event to another entity, it could take effect on the same</br> game tick or on the next tick, depending on whether the target entity has already been updated.</br> </br><a href="#Index">Back to top</a><br><br>
<h1><p id="Versioned Changes">Versioned Changes</p></h1>
</br> A 'format_version' of '1.19.20' or higher is required to properly evaluate filters specified on an entity event definition</br> at the root level of the event, that is any filter that is not underneath a 'sequence' or 'randomize' node.</br> Content with a lower version will use the old behavior, which was to ignore root level filters.</br> </br><a href="#Index">Back to top</a><br><br>
<h1><p id="Randomize Node">Randomize Node</p></h1>
</br> The 'randomize' node is an array node that will pick one entry to execute, based on a weight.</br> If no weight is specified, a node will have a weight of 1.0.</br> If you add a weight of 4.0 in one node, and 8.0 in another, then those nodes will have a 33.33% (4 / (4 + 8)) and 66.66% (8 / (4 + 8)) chance of executing, respectively.</br> </br><h2></h2>
Example:<br / ><textarea readonly="true" cols="42" rows="9">
"randomize": [
{
"weight": <float>
// actions like 'add' or 'remove'
}
]
</textarea> </br>
<a href="#Index">Back to top</a><br><br>
<h1><p id="Sequence Node">Sequence Node</p></h1>
<h2></h2>
Example:<br / ><textarea readonly="true" cols="36" rows="11">
"sequence": [
{
// I will execute first! c:
},
{
// I will execute last! :c
}
]
</textarea> </br>
<a href="#Index">Back to top</a><br><br>
<h1><p id="Trigger">Trigger</p></h1>
Triggers additional entity events when hit. For example, you could use a randomize node in minecraft:entity_spawned to choose either an adult or baby event for adding component groups.</br><h2></h2>
Example:<br / ><textarea readonly="true" cols="42" rows="21">
"sample:spawn_adult": {
// add adult component groups
},
"sample:spawn_baby": {
// add baby component groups
},
"minecraft:entity_spawned": {
"randomize": [
{
"weight": 50.0,
"trigger": "sample:spawn_adult"
},
{
"weight": 50.0,
"trigger": "sample:spawn_baby"
}
]
}
</textarea> </br>
<a href="#Index">Back to top</a><br><br>
<h1><p id="Add Component Group">Add Component Group</p></h1>
Adds component groups to the current entity. These groups must be defined in the 'component_groups' section of the file. As entities can only have one component of each type active, any components in a group that is being added will replace previously added components. Additionally, adding a component group that is already active will cause those components to be re-initialized. For some types of components like minecraft:is_baby, re-initializing an already active component has no effect, but for other component types the associated logic will start over. For example, an already-added minecraft:timer that is added again will start its timing logic over.</br><h2></h2>
Example:<br / ><textarea readonly="true" cols="66" rows="11">
"sequence": [
{
"add": { "component_groups": [ "one" ] }
},
{
"add": { "component_groups": [ "two", "five", "etc.." ] }
}
]
</textarea> </br>
<a href="#Index">Back to top</a><br><br>
<h1><p id="Remove Component Group">Remove Component Group</p></h1>
Removes component groups from the current entity. This can be any group you have defined in the 'component_groups' section of the file.</br><h2></h2>
Example:<br / ><textarea readonly="true" cols="69" rows="11">
"sequence": [
{
"remove": { "component_groups": [ "one" ] }
},
{
"remove": { "component_groups": [ "two", "five", "etc.." ] }
}
]
</textarea> </br>
<a href="#Index">Back to top</a><br><br>
<h1><p id="Set Entity Property">Set Entity Property</p></h1>
Sets the value of an entity property. The property must be defined in the 'properties' section of the file. </br><h2></h2>
Example:<br / ><textarea readonly="true" cols="36" rows="6">
"set_property": {
"minecraft:has_nectar": false
}
</textarea> </br>
<a href="#Index">Back to top</a><br><br>
<h1><p id="Queue Command">Queue Command</p></h1>
Queues a command to be run on the entity. The command will run within the next tick unless the entity has been removed.</br><h2></h2>
Example:<br / ><textarea readonly="true" cols="36" rows="6">
"queue_command": {
"command": "say I have died!"
}
</textarea> </br>
<a href="#Index">Back to top</a><br><br>