1
0
mirror of https://github.com/Mojang/bedrock-protocol-docs.git synced 2025-05-26 02:10:23 +00:00

Protocol for r/21_u4 NetworkProtocolVersion 748 ()

* Protocol for r/21_u4 NetworkProtocolVersion 748

* Addressed feedback from the community
This commit is contained in:
Oswaldo Leyva Barrientos
2024-11-07 14:34:16 -08:00
committed by GitHub
parent 7dcafc4ab6
commit ca7b330f4a
94 changed files with 3378 additions and 2822 deletions
README.md
additional_docs
changelog_748_9_24_24.md
dot
html
previous_changelogs

@ -1,2 +1,4 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/AnimatePacket.svg" alt="AnimatePacket">
<br></body> </html>
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Rowing Time</td>
<td>Only written for rowing actions</td>
</tr></table></body> </html>

@ -1,6 +1,6 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/InventoryContentPacket.svg" alt="InventoryContentPacket">
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Full Container Name</td>
<td>Used to reference a specific container within a given screen container context.</td>
</tr><tr><td>Dynamic Container Size</td>
<td>Size of the particular container instance if this is a dynamic container, otherwise zero.</td>
</tr><tr><td>Storage Item</td>
<td>Optional storage item containing the contents to set. Only the item type is relevant, not any stack information.</td>
</tr></table></body> </html>

@ -1,6 +1,6 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/InventorySlotPacket.svg" alt="InventorySlotPacket">
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Full Container Name</td>
<td>Used to reference a specific container within a given screen container context</td>
</tr><tr><td>Dynamic Container Size</td>
<td>Size of the container if it is dynamic, zero otherwise</td>
</tr><tr><td>Storage Item</td>
<td>Optional storage item to set into. Only the item type is relevant, not any stack information.</td>
</tr></table></body> </html>

@ -1,2 +1,4 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/MobEffectPacket.svg" alt="MobEffectPacket">
<br></body> </html>
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Tick</td>
<td>If this packet is referring to the player or a client predicted vehicle they are in control of, this should be the most recently processed PlayerInputTick from their PlayerAuthInputPacket. Otherwise zero.</td>
</tr></table></body> </html>

@ -1,2 +1,4 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/MoveActorAbsolutePacket.svg" alt="MoveActorAbsolutePacket">
<br></body> </html>
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Move Data</td>
<td>This is used in legacy client authoritative movement mode to move a client predicted vehicle that the client is in control of. In any other case this is client bound for normal actor motion updates.</td>
</tr></table></body> </html>

@ -1,4 +1,22 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/MovePlayerPacket.svg" alt="MovePlayerPacket">
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Tick</td>
<td>Should be the tick we last processed from PlayerAuthInputPacket or 0 if we're not doing server authoritative movement</td>
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Player Runtime ID</td>
<td>If server-bound, this is always the id of the sending player. If client-bound, the target player.</td>
</tr><tr><td>Position</td>
<td>The predicted world space position of the player after movement simulation this tick. The server authoritative equivalent of this is PlayerAuthInputPacket::mPos</td>
</tr><tr><td>Rotation</td>
<td>Rotation in degrees of the direction they should look, separate from their body orientation. The server authoritative equivalent of this is PlayerAuthInputPacket::mRot</td>
</tr><tr><td>Y-Head Rotation</td>
<td>Rotation in degrees of the head. Almost always matches Y rotation. The server authoritative equivalent of this is PlayerAuthInputPacket::mYHeadRot</td>
</tr><tr><td>Position Mode</td>
<td>Determines how the client will behave when receiving this, see the enum for details. When sent to the server this is always 'Normal' except when in a vehicle then it's 'OnlyHeadRot'.</td>
</tr><tr><td>On Ground</td>
<td>For client bound packets this should have little meaning as it will be reset by the client every frame. For server bound it is true if the player is currently touching the ground. This is indicated by physics trying to move the player down and being stopped by collision. If the player falls freely or moves up it is cleared. If the player isn't affected by gravity this will stay at whatever value it had. The server authoritative near-equivalent of this is PlayerAuthInputPacket::InputData::VerticalCollision</td>
</tr><tr><td>Riding Runtime ID</td>
<td>If client bound this has no meaning. If server bound it is the vehicle the client is riding as specified by the last SetActorLinkPacket from the server. The server authoritative near-equivalent is PlayerAuthInputPacket::mClientPredictedVehicle</td>
</tr><tr><td>Teleportation Cause</td>
<td>Always zero if server bound.</td>
</tr><tr><td>Source Actor Type</td>
<td>Always zero if server bound.</td>
</tr><tr><td>Tick</td>
<td>If this packet is referring to the player or a client predicted vehicle they are in control of, this should be the most recently processed PlayerInputTick from their PlayerAuthInputPacket. Otherwise zero.</td>
</tr></table></body> </html>

@ -0,0 +1,4 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/MovementEffectPacket.svg" alt="MovementEffectPacket">
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Tick</td>
<td>If this packet is referring to the player or a client predicted vehicle they are in control of, this should be the most recently processed PlayerInputTick from their PlayerAuthInputPacket. Otherwise zero.</td>
</tr></table></body> </html>

@ -1,4 +1,6 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/PackedItemUseLegacyInventoryTransaction.svg" alt="PackedItemUseLegacyInventoryTransaction">
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Trigger Type</td>
<td>PlayerInput if it's a direct result from a player's initial button input, SimulationTick if the player is holding down the input button started from a previous tick.</td>
</tr><tr><td>From Position</td>
<td>Where the player thinks they are when sending this</td>
</tr></table></body> </html>

@ -1,2 +1,4 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/PlayerActionPacket.svg" alt="PlayerActionPacket">
<br></body> </html>
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Action</td>
<td>See enum table for use cases</td>
</tr></table></body> </html>

@ -1,12 +1,32 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/PlayerAuthInputPacket.svg" alt="PlayerAuthInputPacket">
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Client tick</td>
<td>Which simulation frame client is on. Used to match corrections</td>
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Player Rotation</td>
<td>Orientation of the player at the start of the tick.</td>
</tr><tr><td>Position</td>
<td>Client predicted position at the end of the tick. Referring to the player unless they are controlling a client predicted vehicle in which case it's the vehicle position.</td>
</tr><tr><td>Move Vector</td>
<td>The desired local space move direction of the player in the vehicle. Convert this to world space by rotating by Player Rotation along the Y (up) axis.</td>
</tr><tr><td>Player's Head Rotation</td>
<td>Effectively the same as the Y component of Player Rotation</td>
</tr><tr><td>Input Data</td>
<td>Bitset where the bits are indexed by PlayerAuthInputPacket::InputData, see enum table for details.</td>
</tr><tr><td>Interact Rotation</td>
<td>The rotation the player is looking that they intend to use for interactions. In default modes this is the same as Player Rotation. For creator cameras and VR it may not.</td>
</tr><tr><td>Client tick</td>
<td>Which simulation frame client is on. The server should send back the most recently processed PlayerInputTick in any client-bound packets referring to player data that have a PlayerInputTick.</td>
</tr><tr><td>Pos Delta</td>
<td>Velocity</td>
<td>Client predicted velocity at the end of the tick. This is referring to the player unless they're in control of a client predicted vehicle in which case it's the vehicle.</td>
</tr><tr><td>Actions</td>
<td>There are a variety of possible actions each with their own schema; this (Take) is just one example. Refer to the Item Stack Net Manager documentation.</td>
</tr><tr><td>Strings To Filter</td>
<td>Array of strings to submit to profanity filtering service</td>
</tr><tr><td>String To Filter</td>
<td>Indivdiual string that needs checking</td>
</tr><tr><td>Vehicle Rotation</td>
<td>The client predicted rotation of a client predicted vehicle at the end of the tick if the player is in control of one.</td>
</tr><tr><td>Client Predicted Vehicle</td>
<td>The ID of the vehicle the client thinks they are in control of. Relevant for the server to disambiguate client predictions when switching between two vehicles.</td>
</tr><tr><td>Analog MoveVector</td>
<td>Same idea as move vector</td>
</tr><tr><td>Camera Orientation</td>
<td>The world space unit vector that represents the camera's forward direction. This is used to transform movement to be camera relative.</td>
</tr></table></body> </html>

@ -1,2 +1,8 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/PlayerInputPacket.svg" alt="PlayerInputPacket">
<br></body> </html>
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Move</td>
<td>The desired local space move direction of the player in the vehicle. Convert this to world space by rotating by `mRot.y` along the Y (up) axis.<br>The server authoritative near-equivalent is PlayerAuthInputPacket::mMove with the only difference being that this is scaled by expected movement slowdowns like sneaking and using items.</td>
</tr><tr><td>Jumping</td>
<td>True if the player is holding down the jump input or is auto-jumping.<br>In server authoritative movement this is equivalent to `PlayerAuthInputPacket::InputData::Jumping` bit.</td>
</tr><tr><td>Sneaking</td>
<td>This is either the predicted sneak state as determined by sneak input or the latest value received from `SetActorDataPacket` depending on timing.<br>In server authoritative movement the closest equivalent is `PlayerAuthInputPacket::InputData::Sneaking` and does not have the timing issue.</td>
</tr></table></body> </html>

@ -0,0 +1,4 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/PlayerInputTick.svg" alt="PlayerInputTick">
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Input tick</td>
<td><br>In server authoritative movement mode the client supplies this in PlayerAuthInputPacket.<br>For any client-bound packets containing a tick, the server should supply the tick value corresponding to the most recently processed PlayerAuthInputPacket.<br>This allows the client to adjust any client predictions made while the packet was in flight.<br>If the packet is being sent to the client but not relating to data of the player or a client-predicted vehicle, it can be zero.<br>It is also acceptable to specify zero for players, although this may lead to minor visual flickers and less smooth application of CorrectPlayerMovePredictionPacket.<br></td>
</tr></table></body> </html>

@ -1,4 +1,4 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/SetActorDataPacket.svg" alt="SetActorDataPacket">
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Tick</td>
<td>Which frame we're correcting; should match the tick in the Player Auth Input packet. (Can be 0 if not doing server auth movement.)</td>
<td>If this packet is referring to the player or a client predicted vehicle they are in control of, this should be the most recently processed PlayerInputTick from their PlayerAuthInputPacket. Otherwise zero.</td>
</tr></table></body> </html>

@ -1,2 +1,4 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/SetActorMotionPacket.svg" alt="SetActorMotionPacket">
<br></body> </html>
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Tick</td>
<td>If this packet is referring to the player or a client predicted vehicle they are in control of, this should be the most recently processed PlayerInputTick from their PlayerAuthInputPacket. Otherwise zero.</td>
</tr></table></body> </html>

@ -0,0 +1,2 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/SetMovementAuthorityPacket.svg" alt="SetMovementAuthorityPacket">
<br></body> </html>

@ -1,2 +1,6 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/SyncedPlayerMovementSettings.svg" alt="SyncedPlayerMovementSettings">
<br></body> </html>
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Authority Mode</td>
<td>See explanation of modes in enum table</td>
</tr><tr><td>Rewind History Size</td>
<td>When using server authoritative movement mode, this determines the number of ticks the client keeps in history for use in processing corrections. Should at least account for the largest expected round trip latency. In Bedrock this is 40 ticks.</td>
</tr></table></body> </html>

@ -1,4 +1,8 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/UpdateAttributesPacket.svg" alt="UpdateAttributesPacket">
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Attribute List</td>
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>RuntimeID</td>
<td>Target Runtime ID</td>
</tr><tr><td>Attribute List</td>
<td>AttributeData - Helper Struct</td>
</tr><tr><td>Tick</td>
<td>If this packet is referring to the player or a client predicted vehicle they are in control of, this should be the most recently processed PlayerInputTick from their PlayerAuthInputPacket. Otherwise zero.</td>
</tr></table></body> </html>

@ -1,2 +1,4 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/UpdatePlayerGameTypePacket.svg" alt="UpdatePlayerGameTypePacket">
<br></body> </html>
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Tick</td>
<td>Most relevant to supply for transitioning into and out of spectator while in motion</td>
</tr></table></body> </html>

@ -1,4 +1,4 @@
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/ShulkerBoxRecipe.svg" alt="ShulkerBoxRecipe">
<!DOCTYPE html> <html> <head><style>table{font-family: arial, sans-serif;border-collapse: collapse;width: 100% ;}.tab { margin-left: 40px; }td, th{text-align: left;padding: 8px;}tr:nth-child(even) {background-color: #dddddd;}div#expand{display:block;}</style> </head> <body><img src="svg/UserDataShapelessRecipe.svg" alt="UserDataShapelessRecipe">
<br><table><col width="10%"><col width="90%"><tr><th>Field Name</th><th>Field Notes</th></tr><tr><td>Recipe Tag</td>
<td>Available ones: CARTOGRAPHY_TABLE, CRAFTING_TABLE, SMITHING_TABLE, STONECUTTER, FURNACE_TAG, BLAST_FURNACE_TAG, SMOKER_TAG, CAMPFIRE_TAG, SOUL_CAMPFIRE_TAG</td>
</tr></table></body> </html>

File diff suppressed because one or more lines are too long

@ -29,8 +29,8 @@
<td><a href = "SetTimePacket.html">Set Time</a></td>
<td>Every so often (and at login) the server sends the current time to the client, and additionally the client can set the server time through 2 commands: DayLockCommand and TimeCommand</td>
</tr><tr><td>11</td>
<td><a href = "StartGamePacket.html">StartGamePacket</a></td>
<td>Sent from the server to client when the game is starting (or client joins), gives ids and current tick.</td>
<td><a href = "StartGamePacket.html">Start Game</a></td>
<td>Sent from the server to client when the game is starting (or client joins), gives ids and current tick. The player movement mode is also specified here, see ServerAuthMovementMode enum documentation for details on the modes. </td>
</tr><tr><td>12</td>
<td><a href = "AddPlayerPacket.html">Add Player</a></td>
<td>A new player joins the game; the server sends this packet to the *other* players.</td>
@ -51,13 +51,13 @@
<td>A packet sent to the server when deal with picking up an item off the ground in the world. </td>
</tr><tr><td>18</td>
<td><a href = "MoveActorAbsolutePacket.html">Move Actor Absolute</a></td>
<td>This comes from SpatialActorNetworkData when there is a flag set to force abs position, this only occurs when a player is controlling another mob. </td>
<td>This is used primarily for motion updates of all actors from server to client. In legacy client authoritative movement mode it is also used for the client to position the vehicle they are in control of. See Player Auth Input for the equivalent in the latest protocol.</td>
</tr><tr><td>19</td>
<td><a href = "MovePlayerPacket.html">Move Player</a></td>
<td>This is the packet that keeps track of position, rotation, head rotation, if the actor is on ground, and if it is riding something. </td>
<td>This has different uses depending on the movement mode, see ServerAuthMovementMode enum documentation. In legacy client authoritative mode the client sends this to the server as the primary way of informing them of motion and input. It is sent when they have moved enough to warrant sending it, or every tick if they are in a vehicle. When in a vehicle they will also be sending a MoveActorAbsolutePacket for the vehicle they are controlling if it is client predicted. In client authoritative and server authoritative movement modes it is only intended as a client-bound packet. It forces the player to a specified position with slightly different behavior depending on the position mode. For similar packets that move the player, see also: - CorrectPlayerMovePredictionPacket (server authoritative) - SetActorMotionPacket </td>
</tr><tr><td>20</td>
<td><a href = "PassengerJumpPacket.html">PassengerJumpPacket</a></td>
<td></td>
<td><a href = "PassengerJumpPacket.html">Rider Jump</a></td>
<td>Legacy client authoritative movement only. Sent for jumping in horses when releasing the spacebar. Specifically if the entity has `ActorFlags::CAN_POWER_JUMP`, `ActorFlags::WASD_CONTROLLED` and the `minecraft:horse.jump_strength` attribute. In server authoritative movement this is not explicitly specified but can be simulated using information from Player Auth Input, see that packet for more details.</td>
</tr><tr><td>21</td>
<td><a href = "UpdateBlockPacket.html">Update Block</a></td>
<td>Occasional packets sent from server when blocks update or are ticked. (For example, when digging.) </td>
@ -78,13 +78,13 @@
<td>All kinds of actor state changes (see Actor::handleEntityEvent) ranging from a crossbow being ready to fire to taming animals... , </td>
</tr><tr><td>28</td>
<td><a href = "MobEffectPacket.html">Mob Effect</a></td>
<td>At the start of the game the server sends any mob effects with _sendAdditionalLevelData() if the joining player saved out with them, </td>
<td>At the start of the game the server sends any mob effects with _sendAdditionalLevelData() if the joining player saved out with them, and then anytime a mob effect is added, removed, or updated this packet is sent. It is important for player movement simulation to ensure that the following effects are sent for the player or any client predicted vehicle they are in control of: - levitation - slow_falling - jump - movement_speed - movement_slowdown - weaving</td>
</tr><tr><td>29</td>
<td><a href = "UpdateAttributesPacket.html">Update Attributes</a></td>
<td>Occasionally updating player attributes (buffs/debuffs, health, etc)</td>
<td>Occasionally updating player attributes (buffs/debuffs, health, etc) The following attributes are important to supply with valid PlayerInputTick values for player movement simulation: - movement_speed - underwater_movement_speed - lava_movement_speed - jump_strength - hunger </td>
</tr><tr><td>30</td>
<td><a href = "InventoryTransactionPacket.html">Inventory Transaction</a></td>
<td></td>
<td>Sent for item interaction UI depending on if ItemStackNetManager is enabled as well as when the player uses items in gameplay. See ComplexInventoryTransaction::Type for more details</td>
</tr><tr><td>31</td>
<td><a href = "MobEquipmentPacket.html">Mob Equipment</a></td>
<td>A bunch of things use this both server to client and can still be sent from the client if LocalPlayer's inventory doesn't match the inventory sent (deprecated pattern).</td>
@ -102,7 +102,7 @@
<td>Player clicks on an actor in the world, eg a chicken. </td>
</tr><tr><td>36</td>
<td><a href = "PlayerActionPacket.html">Player Action</a></td>
<td>Sent from the client whenever the player performs an action (dashing, undashing, use an item, mine/hit, use a block, etc).</td>
<td>Sent from the client whenever the player performs an action (dashing, un-dashing, use an item, mine/hit, use a block, etc). The expected actions change depending on the ServerAuthMovementMode specified in the StartGamePacket. See the PlayerActionType enum for details on which have differing behavior. See also PlayerAuthInputPacket and InventoryTransactionPacket for similar types of player actions.</td>
</tr><tr><td>38</td>
<td><a href = "HurtArmorPacket.html">Hurt Armor</a></td>
<td>Sends the damage taken after armor is taken into account. This looks like it is trying to be phased out, this is not sent while the ItemStackNetManagerServer is active. </td>
@ -111,7 +111,7 @@
<td>Regular Actor Data delta packets, sent from the level on tick, mob and actor during normal tick</td>
</tr><tr><td>40</td>
<td><a href = "SetActorMotionPacket.html">Set Actor Motion</a></td>
<td>This is technically sent by both server and client, but only the client is receiving any packets. </td>
<td>This is used for the server to set the velocity of a client actor. It is primarily relevant for client predicted entities like the player or a boat or horse they are in control of. For most other actor types it does nothing. This is one of the packets that can directly affect player motion, for others, see: - MovePlayerPacket - CorrectPlayerMovePredictionPacket </td>
</tr><tr><td>41</td>
<td><a href = "SetActorLinkPacket.html">Set Actor Link</a></td>
<td>Sent by both client and server, only received by LegacyClientHandler.</td>
@ -123,7 +123,7 @@
<td>When a player logs in or the SetWorldSpawnCommand is used this is sent from the server to the client. </td>
</tr><tr><td>44</td>
<td><a href = "AnimatePacket.html">Animate Actor</a></td>
<td>Used when critting and megacritting and apparently swinging swords.</td>
<td>Combination of server bound and client bound packets to trigger animations. In legacy client authoritative movement this is where boat paddle inputs arrive. See Player Auth Input for documentation on how to compute equivalents to Action::RowRight and Action::RowLeft</td>
</tr><tr><td>45</td>
<td><a href = "RespawnPacket.html">Respawn</a></td>
<td>Sent as a handshake between the client and server to respawn the player. For some reason each respawn 1 packet is sent from the client </td>
@ -156,7 +156,7 @@
<td>Sends the entire user data compound tag and the block position to the client. </td>
</tr><tr><td>57</td>
<td><a href = "PlayerInputPacket.html">Player Input</a></td>
<td></td>
<td>Sent only to the server when using legacy client authoritative movement, see ServerAuthMovementMode documentation. This is sent every tick along with MovePlayerPacket when the client is in control of a vehicle.</td>
</tr><tr><td>58</td>
<td><a href = "LevelChunkPacket.html">Level Chunk Packet</a></td>
<td>Used to start a chunk transaction.Used to start a Chunk Transaction - sends a list of hashes for the chunks it needs to send, followed by border blocks, block entities, and biomes. </td>
@ -396,7 +396,7 @@
<td>Sends tunable options from host to client (compression threshold and algorithm)</td>
</tr><tr><td>144</td>
<td><a href = "PlayerAuthInputPacket.html">Player Auth Input</a></td>
<td>Added for Server Authoritative Movement to sync all player input with the server.Server Authoritative Movement </td>
<td>Added for Server Authoritative Movement to sync all player input with the server. See ServerAuthMovementMode for a description of the movement modes. This takes the place of the following packets from legacy client authoritative movement: - PlayerActionPacket (one-off actions) - PlayerInputPacket (vehicle control) - MovePlayerPacket (primary input) - MoveActorAbsolutePacket (positioning client authoritative vehicles) - PassengerJumpPacket (horse jumping) - AnimatePacket (boat row input and animation) The jump scale (progress bar for horse jumping) is computed like this: - Jump ticks start accumulating when `InputData::Jumping` is set in `PlayerAuthInputPacket` - Every following tick that `InputData::Jumping` is still set the jump ticks increase by 1 - The first tick that releases `InputData::Jumping` expects the jump to trigger, producing the same jump scale as was in `PassengerJumpPacket` using this formula floor((ticks < 10.0f ? ticks x 0.1f : 0.8f + (2.0f / (ticks - 9.0f)) x 0.1f) x 100.0) Boat paddling determines the ActorDataIDs::ROW_TIME_LEFT and ROW_TIME_RIGHT like this: Every tick the row time is incremented on that side if it is paddling. Paddle input is determined in two different ways depending on input mode. 'Paddle force' mode is used if: - `PlayerAuthInputPacket::mInputMode` is anything other than `InputMode::Touch` - `PlayerAuthInputPacket::mPlayMode` is `ClientPlayMode::Reality` (VR) - `PlayerAuthInputPacket::mNewInteractionModel` is `NewInteractionModel::Touch` or `NewInteractionModel::Classic` <b>Paddle force mode</b> Paddle force uses the `PlayerAuthInputPacket::mMove` direction to paddle the boat relative to its orientation like in keyboard mode. Left will paddle the left oar meaning the boat turns right. This means the paddle state can be implied from `mMove`: - Left is paddling if `mMove.y` is nonzero or `mMove.x` is negative - Right is paddling if `mMove.y` is nonzero or `mMove.x` is positive <b>Non paddle force mode</b> - Left is paddling if `InputData::PaddlingLeft` is set - Right is paddling if `InputData::PaddlingRight` is set <b>Adopting server authoritative movement protocol</b> This packet can be used to implement client authoritative motion by blindly accepting the Player Position and Rotation values except for the caveat described in PlayerActionType::HandledTeleport. If they are riding a client predicted vehicle as determined by a previous SetActorLinkPacket from the server, the position and velocity is interpreted as the vehicle, not the player. If desired, the server can additionally simulate motion and send CorrectPlayerMovePredictionPackets rather than accepting client reported positions. The server may also reject the InputData state transitions usually by sending a corrective SetActorDataPacket, see the PlayerAuthInputPacket::InputData enum table for details. All tick values for client bound packets that have them should be written as specified in the documentation on PlayerInputTick.</td>
</tr><tr><td>145</td>
<td><a href = "CreativeContentPacket.html">CreativeContentPacket</a></td>
<td>Sent once by the server on startup to tell clients all of the items that can show up in the creative menu, blocks and items.</td>
@ -446,8 +446,8 @@
<td><a href = "PlayerFogPacket.html">PlayerFogPacket</a></td>
<td>This is the packet that tracks the active fog stack from the server so the local players can apply different fog settings.</td>
</tr><tr><td>161</td>
<td><a href = "CorrectPlayerMovePredictionPacket.html">CorrectPlayerMovePredictionPacket</a></td>
<td>Sent to a player when their simulation of movement mismatches enough from the server that it wants to correct the client.</td>
<td><a href = "CorrectPlayerMovePredictionPacket.html">Correct Player Move Prediction</a></td>
<td>Used only in server authoritative movement mode, see ServerAuthMovementMode documentation. Sent to a player when their simulation of movement mismatches enough from the server that it wants to correct the client. Since it is sent to the specified client the target player is implied to be the receiver. It is an optional part of the server authoritative protocol. A server could choose to never send this or do all corrections through MovePlayerPacket, although doing so would likely provide less smooth results.</td>
</tr><tr><td>162</td>
<td><a href = "ItemComponentPacket.html">ItemComponentPacket</a></td>
<td>Definitions for component items. Should be fine to send one with an empty mItems array after the StartGamePacket.</td>
@ -604,4 +604,10 @@
</tr><tr><td>317</td>
<td><a href = "ContainerRegistryCleanupPacket.html">Cleanup of Dynamic Container Registry</a></td>
<td>This is used to trigger a clientside cleanup of the dynamic container registry. Whenever the serverside</td>
</tr><tr><td>318</td>
<td><a href = "MovementEffectPacket.html">Movement Effect</a></td>
<td>These packets are sent to the client to update specific MovementEffects. These MovementEffects can be client-predicted. Ex: Fireworks Rockets used while gliding send this packet to the client so they know the exact duration of the GLIDE_BOOST MovementEffect.</td>
</tr><tr><td>319</td>
<td><a href = "SetMovementAuthorityPacket.html">Set Movement Authority</a></td>
<td>Tells clients to change their ServerAuthMovementMode. For preview-only use during flights of server authoritative movement.Server was asked to change the movement authority mode</td>
</tr></table></body> </html>

@ -123,7 +123,7 @@
<polygon fill="black" stroke="black" points="680.96,-75.5 690.96,-72 680.96,-68.5 680.96,-75.5"/>
</g>
<!-- 9 -->
<!-- name: &quot;Rowing Time&quot;, typeName: &quot;&quot;, id: 9, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;Rowing Time&quot;, typeName: &quot;&quot;, id: 9, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;Only written for rowing actions&quot; -->
<g id="node10" class="node">
<title>9</title>
<ellipse fill="none" stroke="black" cx="551.99" cy="-18" rx="61.04" ry="18"/>

Before

(image error) Size: 7.8 KiB

After

(image error) Size: 7.8 KiB

@ -4,381 +4,485 @@
<!-- Generated by graphviz version 11.0.0 (20240428.1522)
-->
<!-- Title: CameraPreset Pages: 1 -->
<svg width="736pt" height="746pt"
viewBox="0.00 0.00 735.68 746.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 742)">
<svg width="858pt" height="962pt"
viewBox="0.00 0.00 858.43 962.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 958)">
<title>CameraPreset</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-742 731.68,-742 731.68,4 -4,4"/>
<polygon fill="white" stroke="none" points="-4,4 -4,-958 854.43,-958 854.43,4 -4,4"/>
<!-- 8 -->
<!-- name: &quot;CameraPreset&quot;, typeName: &quot;&quot;, id: 8, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
<title>8</title>
<ellipse fill="none" stroke="black" cx="62.04" cy="-369" rx="62.04" ry="18"/>
<text text-anchor="middle" x="62.04" y="-363.57" font-family="Times New Roman,serif" font-size="14.00">CameraPreset</text>
<ellipse fill="none" stroke="black" cx="62.04" cy="-477" rx="62.04" ry="18"/>
<text text-anchor="middle" x="62.04" y="-471.57" font-family="Times New Roman,serif" font-size="14.00">CameraPreset</text>
</g>
<!-- 9 -->
<!-- name: &quot;Name&quot;, typeName: &quot;&quot;, id: 9, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node2" class="node">
<title>9</title>
<ellipse fill="none" stroke="black" cx="228.61" cy="-720" rx="32.1" ry="18"/>
<text text-anchor="middle" x="228.61" y="-714.58" font-family="Times New Roman,serif" font-size="14.00">Name</text>
<ellipse fill="none" stroke="black" cx="289.99" cy="-936" rx="32.1" ry="18"/>
<text text-anchor="middle" x="289.99" y="-930.58" font-family="Times New Roman,serif" font-size="14.00">Name</text>
</g>
<!-- 8&#45;&gt;9 -->
<g id="edge1" class="edge">
<title>8&#45;&gt;9</title>
<path fill="none" stroke="black" d="M63.24,-387.42C64.82,-441.51 76.67,-601.78 160.08,-693 167.34,-700.94 177.25,-706.58 187.23,-710.58"/>
<polygon fill="black" stroke="black" points="185.96,-713.84 196.55,-713.81 188.25,-707.23 185.96,-713.84"/>
<path fill="none" stroke="black" d="M64.57,-495.42C71.16,-570.12 99.52,-849.31 160.08,-909 182.63,-931.22 218.48,-937.3 246.66,-938.21"/>
<polygon fill="black" stroke="black" points="246.27,-941.7 256.3,-938.3 246.33,-934.7 246.27,-941.7"/>
</g>
<!-- 11 -->
<!-- name: &quot;Inherit From&quot;, typeName: &quot;&quot;, id: 11, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node4" class="node">
<title>11</title>
<ellipse fill="none" stroke="black" cx="228.61" cy="-666" rx="57.05" ry="18"/>
<text text-anchor="middle" x="228.61" y="-660.58" font-family="Times New Roman,serif" font-size="14.00">Inherit From</text>
<ellipse fill="none" stroke="black" cx="289.99" cy="-882" rx="57.05" ry="18"/>
<text text-anchor="middle" x="289.99" y="-876.58" font-family="Times New Roman,serif" font-size="14.00">Inherit From</text>
</g>
<!-- 8&#45;&gt;11 -->
<g id="edge3" class="edge">
<title>8&#45;&gt;11</title>
<path fill="none" stroke="black" d="M64.55,-387.43C69.41,-435.33 88.82,-565.17 160.08,-639 164.04,-643.1 168.69,-646.59 173.68,-649.56"/>
<polygon fill="black" stroke="black" points="171.75,-652.5 182.24,-653.96 174.95,-646.28 171.75,-652.5"/>
<path fill="none" stroke="black" d="M65.18,-495.19C73.57,-563.55 106.46,-803.73 160.08,-855 176.41,-870.61 199.33,-878.19 221.32,-881.62"/>
<polygon fill="black" stroke="black" points="220.84,-885.09 231.2,-882.86 221.71,-878.14 220.84,-885.09"/>
</g>
<!-- 13 -->
<!-- name: &quot;Pos X&quot;, typeName: &quot;std::optional&lt;float&gt;&quot;, id: 13, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node6" class="node">
<title>13</title>
<ellipse fill="none" stroke="black" cx="228.61" cy="-612" rx="34.1" ry="18"/>
<text text-anchor="middle" x="228.61" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">Pos X</text>
<ellipse fill="none" stroke="black" cx="289.99" cy="-828" rx="34.1" ry="18"/>
<text text-anchor="middle" x="289.99" y="-822.58" font-family="Times New Roman,serif" font-size="14.00">Pos X</text>
</g>
<!-- 8&#45;&gt;13 -->
<g id="edge5" class="edge">
<title>8&#45;&gt;13</title>
<path fill="none" stroke="black" d="M66.42,-387.32C74.89,-428.27 100.74,-528.09 160.08,-585 167.37,-591.98 176.68,-597.24 186.06,-601.16"/>
<polygon fill="black" stroke="black" points="184.54,-604.34 195.13,-604.53 186.97,-597.77 184.54,-604.34"/>
<path fill="none" stroke="black" d="M62.53,-495.35C62.05,-550.64 68.64,-716.97 160.08,-801 182.62,-821.71 216.84,-828.14 244.36,-829.57"/>
<polygon fill="black" stroke="black" points="244.08,-833.06 254.18,-829.86 244.28,-826.06 244.08,-833.06"/>
</g>
<!-- 18 -->
<!-- name: &quot;Pos Y&quot;, typeName: &quot;std::optional&lt;float&gt;&quot;, id: 18, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node8" class="node">
<title>18</title>
<ellipse fill="none" stroke="black" cx="228.61" cy="-558" rx="34.1" ry="18"/>
<text text-anchor="middle" x="228.61" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">Pos Y</text>
<ellipse fill="none" stroke="black" cx="289.99" cy="-774" rx="34.1" ry="18"/>
<text text-anchor="middle" x="289.99" y="-768.58" font-family="Times New Roman,serif" font-size="14.00">Pos Y</text>
</g>
<!-- 8&#45;&gt;18 -->
<g id="edge7" class="edge">
<title>8&#45;&gt;18</title>
<path fill="none" stroke="black" d="M69.42,-387.17C81.86,-420.2 112.42,-490.39 160.08,-531 167.68,-537.47 177.03,-542.53 186.32,-546.41"/>
<polygon fill="black" stroke="black" points="185.08,-549.69 195.67,-549.93 187.54,-543.13 185.08,-549.69"/>
<path fill="none" stroke="black" d="M63.8,-495.45C66.86,-544.56 82.3,-679.31 160.08,-747 183.1,-767.03 217.14,-773.51 244.47,-775.13"/>
<polygon fill="black" stroke="black" points="244.08,-778.62 254.2,-775.5 244.34,-771.62 244.08,-778.62"/>
</g>
<!-- 20 -->
<!-- name: &quot;Pos Z&quot;, typeName: &quot;std::optional&lt;float&gt;&quot;, id: 20, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node10" class="node">
<title>20</title>
<ellipse fill="none" stroke="black" cx="228.61" cy="-504" rx="33.1" ry="18"/>
<text text-anchor="middle" x="228.61" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">Pos Z</text>
<ellipse fill="none" stroke="black" cx="289.99" cy="-720" rx="33.1" ry="18"/>
<text text-anchor="middle" x="289.99" y="-714.58" font-family="Times New Roman,serif" font-size="14.00">Pos Z</text>
</g>
<!-- 8&#45;&gt;20 -->
<g id="edge9" class="edge">
<title>8&#45;&gt;20</title>
<path fill="none" stroke="black" d="M75.18,-387.01C91.85,-410.55 123.92,-451.74 160.08,-477 168.58,-482.93 178.58,-487.84 188.23,-491.77"/>
<polygon fill="black" stroke="black" points="186.88,-495 197.47,-495.25 189.35,-488.45 186.88,-495"/>
<path fill="none" stroke="black" d="M65.64,-495.45C72.6,-537.59 95.7,-641.2 160.08,-693 184.01,-712.25 218.31,-718.73 245.52,-720.55"/>
<polygon fill="black" stroke="black" points="245.03,-724.03 255.18,-720.99 245.35,-717.04 245.03,-724.03"/>
</g>
<!-- 22 -->
<!-- name: &quot;Rot X&quot;, typeName: &quot;std::optional&lt;float&gt;&quot;, id: 22, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node12" class="node">
<title>22</title>
<ellipse fill="none" stroke="black" cx="228.61" cy="-450" rx="33.6" ry="18"/>
<text text-anchor="middle" x="228.61" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">Rot X</text>
<ellipse fill="none" stroke="black" cx="289.99" cy="-666" rx="33.6" ry="18"/>
<text text-anchor="middle" x="289.99" y="-660.58" font-family="Times New Roman,serif" font-size="14.00">Rot X</text>
</g>
<!-- 8&#45;&gt;22 -->
<g id="edge11" class="edge">
<title>8&#45;&gt;22</title>
<path fill="none" stroke="black" d="M90.16,-385.31C109.35,-396.56 135.88,-411.49 160.08,-423 169.53,-427.49 179.93,-431.91 189.68,-435.82"/>
<polygon fill="black" stroke="black" points="188.33,-439.05 198.92,-439.45 190.89,-432.53 188.33,-439.05"/>
<path fill="none" stroke="black" d="M68.5,-495.2C79.71,-529.24 108.67,-602.39 160.08,-639 184.58,-656.45 217.94,-663.09 244.58,-665.43"/>
<polygon fill="black" stroke="black" points="244.19,-668.91 254.41,-666.1 244.67,-661.93 244.19,-668.91"/>
</g>
<!-- 24 -->
<!-- name: &quot;Rot Y&quot;, typeName: &quot;std::optional&lt;float&gt;&quot;, id: 24, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node14" class="node">
<title>24</title>
<ellipse fill="none" stroke="black" cx="228.61" cy="-396" rx="33.6" ry="18"/>
<text text-anchor="middle" x="228.61" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">Rot Y</text>
<ellipse fill="none" stroke="black" cx="289.99" cy="-612" rx="33.6" ry="18"/>
<text text-anchor="middle" x="289.99" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">Rot Y</text>
</g>
<!-- 8&#45;&gt;24 -->
<g id="edge13" class="edge">
<title>8&#45;&gt;24</title>
<path fill="none" stroke="black" d="M116.93,-377.84C138.97,-381.46 164.12,-385.58 184.86,-388.99"/>
<polygon fill="black" stroke="black" points="184.27,-392.44 194.7,-390.6 185.4,-385.53 184.27,-392.44"/>
<path fill="none" stroke="black" d="M74.02,-495.14C89.83,-519.63 121.42,-562.73 160.08,-585 185.77,-599.8 218.5,-606.53 244.55,-609.57"/>
<polygon fill="black" stroke="black" points="244.19,-613.06 254.5,-610.58 244.9,-606.09 244.19,-613.06"/>
</g>
<!-- 26 -->
<!-- name: &quot;Rotation Speed&quot;, typeName: &quot;std::optional&lt;float&gt;&quot;, id: 26, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node16" class="node">
<title>26</title>
<ellipse fill="none" stroke="black" cx="228.61" cy="-342" rx="68.53" ry="18"/>
<text text-anchor="middle" x="228.61" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">Rotation Speed</text>
<ellipse fill="none" stroke="black" cx="289.99" cy="-558" rx="68.53" ry="18"/>
<text text-anchor="middle" x="289.99" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">Rotation Speed</text>
</g>
<!-- 8&#45;&gt;26 -->
<g id="edge15" class="edge">
<title>8&#45;&gt;26</title>
<path fill="none" stroke="black" d="M116.93,-360.16C130.24,-357.97 144.69,-355.6 158.61,-353.32"/>
<polygon fill="black" stroke="black" points="158.84,-356.83 168.14,-351.76 157.71,-349.92 158.84,-356.83"/>
<path fill="none" stroke="black" d="M87.97,-493.64C107,-505.64 134.25,-521.36 160.08,-531 178.44,-537.85 198.95,-543.14 218.11,-547.14"/>
<polygon fill="black" stroke="black" points="217.24,-550.54 227.73,-549.06 218.61,-543.67 217.24,-550.54"/>
</g>
<!-- 28 -->
<!-- name: &quot;Snap to Target&quot;, typeName: &quot;std::optional&lt;bool&gt;&quot;, id: 28, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node18" class="node">
<title>28</title>
<ellipse fill="none" stroke="black" cx="228.61" cy="-288" rx="66.03" ry="18"/>
<text text-anchor="middle" x="228.61" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">Snap to Target</text>
<ellipse fill="none" stroke="black" cx="289.99" cy="-504" rx="66.03" ry="18"/>
<text text-anchor="middle" x="289.99" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">Snap to Target</text>
</g>
<!-- 8&#45;&gt;28 -->
<g id="edge17" class="edge">
<title>8&#45;&gt;28</title>
<path fill="none" stroke="black" d="M90.16,-352.69C109.35,-341.44 135.88,-326.51 160.08,-315 165.93,-312.22 172.14,-309.47 178.33,-306.85"/>
<polygon fill="black" stroke="black" points="179.37,-310.21 187.28,-303.16 176.7,-303.74 179.37,-310.21"/>
<path fill="none" stroke="black" d="M120.06,-483.81C149.63,-487.35 186.05,-491.7 217.49,-495.46"/>
<polygon fill="black" stroke="black" points="216.98,-498.92 227.33,-496.63 217.81,-491.97 216.98,-498.92"/>
</g>
<!-- 33 -->
<!-- name: &quot;View Offset&quot;, typeName: &quot;std::optional&lt;class Vec2&gt;&quot;, id: 33, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- name: &quot;Horizontal Rotation Limit&quot;, typeName: &quot;std::optional&lt;class Vec2&gt;&quot;, id: 33, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node20" class="node">
<title>33</title>
<ellipse fill="none" stroke="black" cx="228.61" cy="-234" rx="55.55" ry="18"/>
<text text-anchor="middle" x="228.61" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">View Offset</text>
<ellipse fill="none" stroke="black" cx="289.99" cy="-450" rx="104.96" ry="18"/>
<text text-anchor="middle" x="289.99" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">Horizontal Rotation Limit</text>
</g>
<!-- 8&#45;&gt;33 -->
<g id="edge19" class="edge">
<title>8&#45;&gt;33</title>
<path fill="none" stroke="black" d="M75.18,-350.99C91.85,-327.45 123.92,-286.26 160.08,-261 165.39,-257.3 171.28,-253.99 177.3,-251.08"/>
<polygon fill="black" stroke="black" points="178.4,-254.42 186.11,-247.15 175.55,-248.03 178.4,-254.42"/>
<path fill="none" stroke="black" d="M120.06,-470.19C141.82,-467.59 167.3,-464.54 191.77,-461.62"/>
<polygon fill="black" stroke="black" points="191.91,-465.13 201.42,-460.46 191.08,-458.18 191.91,-465.13"/>
</g>
<!-- 38 -->
<!-- name: &quot;Entity Offset&quot;, typeName: &quot;std::optional&lt;class Vec3&gt;&quot;, id: 38, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;Changing the camera&#39;s pivot point from the center of the entity&quot; -->
<!-- name: &quot;Vertical Rotation Limit&quot;, typeName: &quot;std::optional&lt;class Vec2&gt;&quot;, id: 38, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node22" class="node">
<title>38</title>
<ellipse fill="none" stroke="black" cx="228.61" cy="-180" rx="58.05" ry="18"/>
<text text-anchor="middle" x="228.61" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Entity Offset</text>
<ellipse fill="none" stroke="black" cx="289.99" cy="-396" rx="94.98" ry="18"/>
<text text-anchor="middle" x="289.99" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">Vertical Rotation Limit</text>
</g>
<!-- 8&#45;&gt;38 -->
<g id="edge21" class="edge">
<title>8&#45;&gt;38</title>
<path fill="none" stroke="black" d="M69.42,-350.83C81.86,-317.8 112.42,-247.61 160.08,-207 164.48,-203.26 169.45,-199.99 174.66,-197.15"/>
<polygon fill="black" stroke="black" points="176.05,-200.37 183.52,-192.85 173,-194.07 176.05,-200.37"/>
<path fill="none" stroke="black" d="M87.97,-460.36C107,-448.36 134.25,-432.64 160.08,-423 174.13,-417.76 189.44,-413.43 204.45,-409.89"/>
<polygon fill="black" stroke="black" points="204.83,-413.39 213.82,-407.78 203.3,-406.56 204.83,-413.39"/>
</g>
<!-- 43 -->
<!-- name: &quot;Radius&quot;, typeName: &quot;std::optional&lt;float&gt;&quot;, id: 43, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 40 -->
<!-- name: &quot;Continue Targeting&quot;, typeName: &quot;std::optional&lt;bool&gt;&quot;, id: 40, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node24" class="node">
<title>43</title>
<ellipse fill="none" stroke="black" cx="228.61" cy="-126" rx="36.59" ry="18"/>
<text text-anchor="middle" x="228.61" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Radius</text>
<title>40</title>
<ellipse fill="none" stroke="black" cx="289.99" cy="-342" rx="81.5" ry="18"/>
<text text-anchor="middle" x="289.99" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">Continue Targeting</text>
</g>
<!-- 8&#45;&gt;43 -->
<!-- 8&#45;&gt;40 -->
<g id="edge23" class="edge">
<title>8&#45;&gt;43</title>
<path fill="none" stroke="black" d="M66.42,-350.68C74.89,-309.73 100.74,-209.91 160.08,-153 166.89,-146.48 175.46,-141.46 184.2,-137.63"/>
<polygon fill="black" stroke="black" points="185.35,-140.94 193.42,-134.07 182.83,-134.41 185.35,-140.94"/>
<title>8&#45;&gt;40</title>
<path fill="none" stroke="black" d="M74.02,-458.86C89.83,-434.37 121.42,-391.27 160.08,-369 173.4,-361.33 188.6,-355.83 203.79,-351.88"/>
<polygon fill="black" stroke="black" points="204.41,-355.33 213.34,-349.62 202.8,-348.52 204.41,-355.33"/>
</g>
<!-- 45 -->
<!-- name: &quot;Listener&quot;, typeName: &quot;std::optional&lt;enum CameraPreset::AudioListener&gt;&quot;, id: 45, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 42 -->
<!-- name: &quot;View Offset&quot;, typeName: &quot;std::optional&lt;class Vec2&gt;&quot;, id: 42, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node26" class="node">
<title>45</title>
<ellipse fill="none" stroke="black" cx="228.61" cy="-72" rx="40.09" ry="18"/>
<text text-anchor="middle" x="228.61" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Listener</text>
<title>42</title>
<ellipse fill="none" stroke="black" cx="289.99" cy="-288" rx="55.55" ry="18"/>
<text text-anchor="middle" x="289.99" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">View Offset</text>
</g>
<!-- 8&#45;&gt;45 -->
<!-- 8&#45;&gt;42 -->
<g id="edge25" class="edge">
<title>8&#45;&gt;45</title>
<path fill="none" stroke="black" d="M64.55,-350.57C69.41,-302.67 88.82,-172.83 160.08,-99 166.06,-92.81 173.64,-88 181.54,-84.28"/>
<polygon fill="black" stroke="black" points="182.69,-87.59 190.62,-80.56 180.03,-81.12 182.69,-87.59"/>
<title>8&#45;&gt;42</title>
<path fill="none" stroke="black" d="M68.5,-458.8C79.71,-424.76 108.67,-351.61 160.08,-315 178.32,-302.01 201.47,-295.01 223.1,-291.31"/>
<polygon fill="black" stroke="black" points="223.37,-294.81 232.75,-289.89 222.34,-287.89 223.37,-294.81"/>
</g>
<!-- 50 -->
<!-- name: &quot;Player Effects&quot;, typeName: &quot;std::optional&lt;bool&gt;&quot;, id: 50, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 44 -->
<!-- name: &quot;Entity Offset&quot;, typeName: &quot;std::optional&lt;class Vec3&gt;&quot;, id: 44, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;Changing the camera&#39;s pivot point from the center of the entity&quot; -->
<g id="node28" class="node">
<title>50</title>
<ellipse fill="none" stroke="black" cx="228.61" cy="-18" rx="62.54" ry="18"/>
<text text-anchor="middle" x="228.61" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Player Effects</text>
<title>44</title>
<ellipse fill="none" stroke="black" cx="289.99" cy="-234" rx="58.05" ry="18"/>
<text text-anchor="middle" x="289.99" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">Entity Offset</text>
</g>
<!-- 8&#45;&gt;50 -->
<!-- 8&#45;&gt;44 -->
<g id="edge27" class="edge">
<title>8&#45;&gt;50</title>
<path fill="none" stroke="black" d="M63.24,-350.58C64.82,-296.49 76.67,-136.22 160.08,-45 163.34,-41.44 167.14,-38.33 171.23,-35.64"/>
<polygon fill="black" stroke="black" points="172.88,-38.72 179.9,-30.78 169.46,-32.61 172.88,-38.72"/>
<title>8&#45;&gt;44</title>
<path fill="none" stroke="black" d="M65.64,-458.55C72.6,-416.41 95.7,-312.8 160.08,-261 177.07,-247.33 199.29,-240.1 220.49,-236.41"/>
<polygon fill="black" stroke="black" points="220.9,-239.88 230.28,-234.96 219.88,-232.96 220.9,-239.88"/>
</g>
<!-- 49 -->
<!-- name: &quot;Radius&quot;, typeName: &quot;std::optional&lt;float&gt;&quot;, id: 49, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node30" class="node">
<title>49</title>
<ellipse fill="none" stroke="black" cx="289.99" cy="-180" rx="36.59" ry="18"/>
<text text-anchor="middle" x="289.99" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Radius</text>
</g>
<!-- 8&#45;&gt;49 -->
<g id="edge29" class="edge">
<title>8&#45;&gt;49</title>
<path fill="none" stroke="black" d="M63.8,-458.55C66.86,-409.44 82.3,-274.69 160.08,-207 182.32,-187.65 214.85,-180.94 241.67,-179.05"/>
<polygon fill="black" stroke="black" points="241.82,-182.55 251.64,-178.57 241.48,-175.55 241.82,-182.55"/>
</g>
<!-- 51 -->
<!-- name: &quot;Listener&quot;, typeName: &quot;std::optional&lt;enum CameraPreset::AudioListener&gt;&quot;, id: 51, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node32" class="node">
<title>51</title>
<ellipse fill="none" stroke="black" cx="289.99" cy="-126" rx="40.09" ry="18"/>
<text text-anchor="middle" x="289.99" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Listener</text>
</g>
<!-- 8&#45;&gt;51 -->
<g id="edge31" class="edge">
<title>8&#45;&gt;51</title>
<path fill="none" stroke="black" d="M62.53,-458.65C62.05,-403.36 68.64,-237.03 160.08,-153 181.06,-133.73 212.14,-126.82 238.53,-124.8"/>
<polygon fill="black" stroke="black" points="238.57,-128.31 248.38,-124.29 238.21,-121.32 238.57,-128.31"/>
</g>
<!-- 56 -->
<!-- name: &quot;Player Effects&quot;, typeName: &quot;std::optional&lt;bool&gt;&quot;, id: 56, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node34" class="node">
<title>56</title>
<ellipse fill="none" stroke="black" cx="289.99" cy="-72" rx="62.54" ry="18"/>
<text text-anchor="middle" x="289.99" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Player Effects</text>
</g>
<!-- 8&#45;&gt;56 -->
<g id="edge33" class="edge">
<title>8&#45;&gt;56</title>
<path fill="none" stroke="black" d="M65.18,-458.81C73.57,-390.45 106.46,-150.27 160.08,-99 175.07,-84.67 195.62,-77.1 215.91,-73.31"/>
<polygon fill="black" stroke="black" points="216.28,-76.79 225.62,-71.8 215.2,-69.87 216.28,-76.79"/>
</g>
<!-- 58 -->
<!-- name: &quot;Align target and camera forward&quot;, typeName: &quot;std::optional&lt;bool&gt;&quot;, id: 58, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node36" class="node">
<title>58</title>
<ellipse fill="none" stroke="black" cx="289.99" cy="-18" rx="129.91" ry="18"/>
<text text-anchor="middle" x="289.99" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Align target and camera forward</text>
</g>
<!-- 8&#45;&gt;58 -->
<g id="edge35" class="edge">
<title>8&#45;&gt;58</title>
<path fill="none" stroke="black" d="M64.57,-458.58C71.16,-383.88 99.52,-104.69 160.08,-45 164.35,-40.79 169.09,-37.17 174.17,-34.04"/>
<polygon fill="black" stroke="black" points="175.8,-37.14 182.98,-29.35 172.51,-30.96 175.8,-37.14"/>
</g>
<!-- 10 -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 10, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>10</title>
<ellipse fill="none" stroke="black" cx="530.41" cy="-720" rx="31.1" ry="18"/>
<text text-anchor="middle" x="530.41" y="-714.58" font-family="Times New Roman,serif" font-size="14.00">string</text>
<ellipse fill="none" stroke="black" cx="653.16" cy="-936" rx="31.1" ry="18"/>
<text text-anchor="middle" x="653.16" y="-930.58" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 9&#45;&gt;10 -->
<g id="edge2" class="edge">
<title>9&#45;&gt;10</title>
<path fill="none" stroke="black" d="M261.13,-720C315.53,-720 427.05,-720 487.77,-720"/>
<polygon fill="black" stroke="black" points="487.69,-723.5 497.69,-720 487.69,-716.5 487.69,-723.5"/>
<path fill="none" stroke="black" d="M322.41,-936C387.44,-936 536.82,-936 610.08,-936"/>
<polygon fill="black" stroke="black" points="610.07,-939.5 620.07,-936 610.07,-932.5 610.07,-939.5"/>
</g>
<!-- 12 -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 12, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>12</title>
<ellipse fill="none" stroke="black" cx="530.41" cy="-666" rx="31.1" ry="18"/>
<text text-anchor="middle" x="530.41" y="-660.58" font-family="Times New Roman,serif" font-size="14.00">string</text>
<ellipse fill="none" stroke="black" cx="653.16" cy="-882" rx="31.1" ry="18"/>
<text text-anchor="middle" x="653.16" y="-876.58" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 11&#45;&gt;12 -->
<g id="edge4" class="edge">
<title>11&#45;&gt;12</title>
<path fill="none" stroke="black" d="M286,-666C344.66,-666 435.14,-666 487.68,-666"/>
<polygon fill="black" stroke="black" points="487.41,-669.5 497.41,-666 487.41,-662.5 487.41,-669.5"/>
<path fill="none" stroke="black" d="M347.42,-882C420.26,-882 545.34,-882 610.28,-882"/>
<polygon fill="black" stroke="black" points="610.17,-885.5 620.17,-882 610.17,-878.5 610.17,-885.5"/>
</g>
<!-- 17 -->
<!-- name: &quot;std::optional&lt;float&gt;&quot;, typeName: &quot;&quot;, id: 17, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>17</title>
<ellipse fill="none" stroke="black" cx="530.41" cy="-612" rx="83.5" ry="18"/>
<text text-anchor="middle" x="530.41" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;float&gt;</text>
<ellipse fill="none" stroke="black" cx="653.16" cy="-828" rx="83.5" ry="18"/>
<text text-anchor="middle" x="653.16" y="-822.58" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;float&gt;</text>
</g>
<!-- 13&#45;&gt;17 -->
<g id="edge6" class="edge">
<title>13&#45;&gt;17</title>
<path fill="none" stroke="black" d="M263.13,-612C304.54,-612 376.73,-612 435.5,-612"/>
<polygon fill="black" stroke="black" points="435.17,-615.5 445.17,-612 435.17,-608.5 435.17,-615.5"/>
<path fill="none" stroke="black" d="M324.32,-828C377,-828 481.41,-828 558.31,-828"/>
<polygon fill="black" stroke="black" points="557.93,-831.5 567.93,-828 557.93,-824.5 557.93,-831.5"/>
</g>
<!-- 19 -->
<!-- name: &quot;std::optional&lt;float&gt;&quot;, typeName: &quot;&quot;, id: 19, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node9" class="node">
<title>19</title>
<ellipse fill="none" stroke="black" cx="530.41" cy="-558" rx="83.5" ry="18"/>
<text text-anchor="middle" x="530.41" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;float&gt;</text>
<ellipse fill="none" stroke="black" cx="653.16" cy="-774" rx="83.5" ry="18"/>
<text text-anchor="middle" x="653.16" y="-768.58" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;float&gt;</text>
</g>
<!-- 18&#45;&gt;19 -->
<g id="edge8" class="edge">
<title>18&#45;&gt;19</title>
<path fill="none" stroke="black" d="M263.13,-558C304.54,-558 376.73,-558 435.5,-558"/>
<polygon fill="black" stroke="black" points="435.17,-561.5 445.17,-558 435.17,-554.5 435.17,-561.5"/>
<path fill="none" stroke="black" d="M324.32,-774C377,-774 481.41,-774 558.31,-774"/>
<polygon fill="black" stroke="black" points="557.93,-777.5 567.93,-774 557.93,-770.5 557.93,-777.5"/>
</g>
<!-- 21 -->
<!-- name: &quot;std::optional&lt;float&gt;&quot;, typeName: &quot;&quot;, id: 21, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node11" class="node">
<title>21</title>
<ellipse fill="none" stroke="black" cx="530.41" cy="-504" rx="83.5" ry="18"/>
<text text-anchor="middle" x="530.41" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;float&gt;</text>
<ellipse fill="none" stroke="black" cx="653.16" cy="-720" rx="83.5" ry="18"/>
<text text-anchor="middle" x="653.16" y="-714.58" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;float&gt;</text>
</g>
<!-- 20&#45;&gt;21 -->
<g id="edge10" class="edge">
<title>20&#45;&gt;21</title>
<path fill="none" stroke="black" d="M261.98,-504C303.16,-504 376.05,-504 435.34,-504"/>
<polygon fill="black" stroke="black" points="435.11,-507.5 445.11,-504 435.11,-500.5 435.11,-507.5"/>
<path fill="none" stroke="black" d="M323.36,-720C375.67,-720 480.75,-720 558.09,-720"/>
<polygon fill="black" stroke="black" points="557.78,-723.5 567.78,-720 557.78,-716.5 557.78,-723.5"/>
</g>
<!-- 23 -->
<!-- name: &quot;std::optional&lt;float&gt;&quot;, typeName: &quot;&quot;, id: 23, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node13" class="node">
<title>23</title>
<ellipse fill="none" stroke="black" cx="530.41" cy="-450" rx="83.5" ry="18"/>
<text text-anchor="middle" x="530.41" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;float&gt;</text>
<ellipse fill="none" stroke="black" cx="653.16" cy="-666" rx="83.5" ry="18"/>
<text text-anchor="middle" x="653.16" y="-660.58" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;float&gt;</text>
</g>
<!-- 22&#45;&gt;23 -->
<g id="edge12" class="edge">
<title>22&#45;&gt;23</title>
<path fill="none" stroke="black" d="M262.55,-450C303.85,-450 376.39,-450 435.42,-450"/>
<polygon fill="black" stroke="black" points="435.14,-453.5 445.14,-450 435.14,-446.5 435.14,-453.5"/>
<path fill="none" stroke="black" d="M324,-666C376.53,-666 481.08,-666 558.11,-666"/>
<polygon fill="black" stroke="black" points="557.76,-669.5 567.76,-666 557.76,-662.5 557.76,-669.5"/>
</g>
<!-- 25 -->
<!-- name: &quot;std::optional&lt;float&gt;&quot;, typeName: &quot;&quot;, id: 25, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node15" class="node">
<title>25</title>
<ellipse fill="none" stroke="black" cx="530.41" cy="-396" rx="83.5" ry="18"/>
<text text-anchor="middle" x="530.41" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;float&gt;</text>
<ellipse fill="none" stroke="black" cx="653.16" cy="-612" rx="83.5" ry="18"/>
<text text-anchor="middle" x="653.16" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;float&gt;</text>
</g>
<!-- 24&#45;&gt;25 -->
<g id="edge14" class="edge">
<title>24&#45;&gt;25</title>
<path fill="none" stroke="black" d="M262.55,-396C303.85,-396 376.39,-396 435.42,-396"/>
<polygon fill="black" stroke="black" points="435.14,-399.5 445.14,-396 435.14,-392.5 435.14,-399.5"/>
<path fill="none" stroke="black" d="M324,-612C376.53,-612 481.08,-612 558.11,-612"/>
<polygon fill="black" stroke="black" points="557.76,-615.5 567.76,-612 557.76,-608.5 557.76,-615.5"/>
</g>
<!-- 27 -->
<!-- name: &quot;std::optional&lt;float&gt;&quot;, typeName: &quot;&quot;, id: 27, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node17" class="node">
<title>27</title>
<ellipse fill="none" stroke="black" cx="530.41" cy="-342" rx="83.5" ry="18"/>
<text text-anchor="middle" x="530.41" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;float&gt;</text>
<ellipse fill="none" stroke="black" cx="653.16" cy="-558" rx="83.5" ry="18"/>
<text text-anchor="middle" x="653.16" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;float&gt;</text>
</g>
<!-- 26&#45;&gt;27 -->
<g id="edge16" class="edge">
<title>26&#45;&gt;27</title>
<path fill="none" stroke="black" d="M297.27,-342C337.94,-342 390.31,-342 435.01,-342"/>
<polygon fill="black" stroke="black" points="434.98,-345.5 444.98,-342 434.98,-338.5 434.98,-345.5"/>
<path fill="none" stroke="black" d="M358.92,-558C415.09,-558 495.48,-558 557.88,-558"/>
<polygon fill="black" stroke="black" points="557.8,-561.5 567.8,-558 557.8,-554.5 557.8,-561.5"/>
</g>
<!-- 32 -->
<!-- name: &quot;std::optional&lt;bool&gt;&quot;, typeName: &quot;&quot;, id: 32, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node19" class="node">
<title>32</title>
<ellipse fill="none" stroke="black" cx="530.41" cy="-288" rx="84" ry="18"/>
<text text-anchor="middle" x="530.41" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;bool&gt;</text>
<ellipse fill="none" stroke="black" cx="653.16" cy="-504" rx="84" ry="18"/>
<text text-anchor="middle" x="653.16" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;bool&gt;</text>
</g>
<!-- 28&#45;&gt;32 -->
<g id="edge18" class="edge">
<title>28&#45;&gt;32</title>
<path fill="none" stroke="black" d="M295.03,-288C335.93,-288 389.29,-288 434.76,-288"/>
<polygon fill="black" stroke="black" points="434.62,-291.5 444.62,-288 434.62,-284.5 434.62,-291.5"/>
<path fill="none" stroke="black" d="M356.39,-504C412.58,-504 494.3,-504 557.61,-504"/>
<polygon fill="black" stroke="black" points="557.3,-507.5 567.29,-504 557.29,-500.5 557.3,-507.5"/>
</g>
<!-- 37 -->
<!-- name: &quot;std::optional&lt;class Vec2&gt;&quot;, typeName: &quot;&quot;, id: 37, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node21" class="node">
<title>37</title>
<ellipse fill="none" stroke="black" cx="530.41" cy="-234" rx="107.45" ry="18"/>
<text text-anchor="middle" x="530.41" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;class Vec2&gt;</text>
<ellipse fill="none" stroke="black" cx="653.16" cy="-450" rx="107.45" ry="18"/>
<text text-anchor="middle" x="653.16" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;class Vec2&gt;</text>
</g>
<!-- 33&#45;&gt;37 -->
<g id="edge20" class="edge">
<title>33&#45;&gt;37</title>
<path fill="none" stroke="black" d="M284.6,-234C320.06,-234 367.54,-234 411.26,-234"/>
<polygon fill="black" stroke="black" points="411.06,-237.5 421.06,-234 411.06,-230.5 411.06,-237.5"/>
<path fill="none" stroke="black" d="M394.97,-450C438.48,-450 489.28,-450 534.19,-450"/>
<polygon fill="black" stroke="black" points="533.95,-453.5 543.95,-450 533.95,-446.5 533.95,-453.5"/>
</g>
<!-- 42 -->
<!-- name: &quot;std::optional&lt;class Vec3&gt;&quot;, typeName: &quot;&quot;, id: 42, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 39 -->
<!-- name: &quot;std::optional&lt;class Vec2&gt;&quot;, typeName: &quot;&quot;, id: 39, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node23" class="node">
<title>42</title>
<ellipse fill="none" stroke="black" cx="530.41" cy="-180" rx="107.45" ry="18"/>
<text text-anchor="middle" x="530.41" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;class Vec3&gt;</text>
<title>39</title>
<ellipse fill="none" stroke="black" cx="653.16" cy="-396" rx="107.45" ry="18"/>
<text text-anchor="middle" x="653.16" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;class Vec2&gt;</text>
</g>
<!-- 38&#45;&gt;42 -->
<!-- 38&#45;&gt;39 -->
<g id="edge22" class="edge">
<title>38&#45;&gt;42</title>
<path fill="none" stroke="black" d="M287.06,-180C322.26,-180 368.61,-180 411.34,-180"/>
<polygon fill="black" stroke="black" points="411.18,-183.5 421.18,-180 411.18,-176.5 411.18,-183.5"/>
<title>38&#45;&gt;39</title>
<path fill="none" stroke="black" d="M385.41,-396C430.79,-396 485.64,-396 533.78,-396"/>
<polygon fill="black" stroke="black" points="533.7,-399.5 543.7,-396 533.7,-392.5 533.7,-399.5"/>
</g>
<!-- 44 -->
<!-- name: &quot;std::optional&lt;float&gt;&quot;, typeName: &quot;&quot;, id: 44, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 41 -->
<!-- name: &quot;std::optional&lt;bool&gt;&quot;, typeName: &quot;&quot;, id: 41, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node25" class="node">
<title>44</title>
<ellipse fill="none" stroke="black" cx="530.41" cy="-126" rx="83.5" ry="18"/>
<text text-anchor="middle" x="530.41" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;float&gt;</text>
<title>41</title>
<ellipse fill="none" stroke="black" cx="653.16" cy="-342" rx="84" ry="18"/>
<text text-anchor="middle" x="653.16" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;bool&gt;</text>
</g>
<!-- 43&#45;&gt;44 -->
<!-- 40&#45;&gt;41 -->
<g id="edge24" class="edge">
<title>43&#45;&gt;44</title>
<path fill="none" stroke="black" d="M265.48,-126C307.15,-126 377.56,-126 435.18,-126"/>
<polygon fill="black" stroke="black" points="435,-129.5 445,-126 435,-122.5 435,-129.5"/>
<title>40&#45;&gt;41</title>
<path fill="none" stroke="black" d="M371.59,-342C426.56,-342 499.57,-342 557.33,-342"/>
<polygon fill="black" stroke="black" points="557.16,-345.5 567.16,-342 557.16,-338.5 557.16,-345.5"/>
</g>
<!-- 49 -->
<!-- name: &quot;std::optional&lt;enum CameraPreset::AudioListener&gt;&quot;, typeName: &quot;&quot;, id: 49, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 43 -->
<!-- name: &quot;std::optional&lt;class Vec2&gt;&quot;, typeName: &quot;&quot;, id: 43, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node27" class="node">
<title>49</title>
<ellipse fill="none" stroke="black" cx="530.41" cy="-72" rx="197.27" ry="18"/>
<text text-anchor="middle" x="530.41" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;enum CameraPreset::AudioListener&gt;</text>
<title>43</title>
<ellipse fill="none" stroke="black" cx="653.16" cy="-288" rx="107.45" ry="18"/>
<text text-anchor="middle" x="653.16" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;class Vec2&gt;</text>
</g>
<!-- 45&#45;&gt;49 -->
<!-- 42&#45;&gt;43 -->
<g id="edge26" class="edge">
<title>45&#45;&gt;49</title>
<path fill="none" stroke="black" d="M269.11,-72C283.87,-72 301.83,-72 321.34,-72"/>
<polygon fill="black" stroke="black" points="321.15,-75.5 331.15,-72 321.15,-68.5 321.15,-75.5"/>
<title>42&#45;&gt;43</title>
<path fill="none" stroke="black" d="M345.84,-288C395.64,-288 470.76,-288 534.15,-288"/>
<polygon fill="black" stroke="black" points="533.92,-291.5 543.92,-288 533.92,-284.5 533.92,-291.5"/>
</g>
<!-- 51 -->
<!-- name: &quot;std::optional&lt;bool&gt;&quot;, typeName: &quot;&quot;, id: 51, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 48 -->
<!-- name: &quot;std::optional&lt;class Vec3&gt;&quot;, typeName: &quot;&quot;, id: 48, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node29" class="node">
<title>51</title>
<ellipse fill="none" stroke="black" cx="530.41" cy="-18" rx="84" ry="18"/>
<text text-anchor="middle" x="530.41" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;bool&gt;</text>
<title>48</title>
<ellipse fill="none" stroke="black" cx="653.16" cy="-234" rx="107.45" ry="18"/>
<text text-anchor="middle" x="653.16" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;class Vec3&gt;</text>
</g>
<!-- 50&#45;&gt;51 -->
<!-- 44&#45;&gt;48 -->
<g id="edge28" class="edge">
<title>50&#45;&gt;51</title>
<path fill="none" stroke="black" d="M291.37,-18C332.7,-18 387.89,-18 434.73,-18"/>
<polygon fill="black" stroke="black" points="434.62,-21.5 444.62,-18 434.62,-14.5 434.62,-21.5"/>
<title>44&#45;&gt;48</title>
<path fill="none" stroke="black" d="M348.22,-234C397.93,-234 471.54,-234 533.87,-234"/>
<polygon fill="black" stroke="black" points="533.86,-237.5 543.86,-234 533.86,-230.5 533.86,-237.5"/>
</g>
<!-- 50 -->
<!-- name: &quot;std::optional&lt;float&gt;&quot;, typeName: &quot;&quot;, id: 50, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node31" class="node">
<title>50</title>
<ellipse fill="none" stroke="black" cx="653.16" cy="-180" rx="83.5" ry="18"/>
<text text-anchor="middle" x="653.16" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;float&gt;</text>
</g>
<!-- 49&#45;&gt;50 -->
<g id="edge30" class="edge">
<title>49&#45;&gt;50</title>
<path fill="none" stroke="black" d="M326.94,-180C380.32,-180 482.34,-180 557.95,-180"/>
<polygon fill="black" stroke="black" points="557.86,-183.5 567.86,-180 557.86,-176.5 557.86,-183.5"/>
</g>
<!-- 55 -->
<!-- name: &quot;std::optional&lt;enum CameraPreset::AudioListener&gt;&quot;, typeName: &quot;&quot;, id: 55, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node33" class="node">
<title>55</title>
<ellipse fill="none" stroke="black" cx="653.16" cy="-126" rx="197.27" ry="18"/>
<text text-anchor="middle" x="653.16" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;enum CameraPreset::AudioListener&gt;</text>
</g>
<!-- 51&#45;&gt;55 -->
<g id="edge32" class="edge">
<title>51&#45;&gt;55</title>
<path fill="none" stroke="black" d="M330.33,-126C359.09,-126 400.56,-126 444.21,-126"/>
<polygon fill="black" stroke="black" points="444.14,-129.5 454.14,-126 444.14,-122.5 444.14,-129.5"/>
</g>
<!-- 57 -->
<!-- name: &quot;std::optional&lt;bool&gt;&quot;, typeName: &quot;&quot;, id: 57, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node35" class="node">
<title>57</title>
<ellipse fill="none" stroke="black" cx="653.16" cy="-72" rx="84" ry="18"/>
<text text-anchor="middle" x="653.16" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;bool&gt;</text>
</g>
<!-- 56&#45;&gt;57 -->
<g id="edge34" class="edge">
<title>56&#45;&gt;57</title>
<path fill="none" stroke="black" d="M352.67,-72C408.83,-72 492.62,-72 557.3,-72"/>
<polygon fill="black" stroke="black" points="557.22,-75.5 567.22,-72 557.22,-68.5 557.22,-75.5"/>
</g>
<!-- 59 -->
<!-- name: &quot;std::optional&lt;bool&gt;&quot;, typeName: &quot;&quot;, id: 59, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node37" class="node">
<title>59</title>
<ellipse fill="none" stroke="black" cx="653.16" cy="-18" rx="84" ry="18"/>
<text text-anchor="middle" x="653.16" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;bool&gt;</text>
</g>
<!-- 58&#45;&gt;59 -->
<g id="edge36" class="edge">
<title>58&#45;&gt;59</title>
<path fill="none" stroke="black" d="M420.36,-18C465.6,-18 515.52,-18 557.41,-18"/>
<polygon fill="black" stroke="black" points="557.2,-21.5 567.2,-18 557.2,-14.5 557.2,-21.5"/>
</g>
</g>
</svg>

Before

(image error) Size: 21 KiB

After

(image error) Size: 27 KiB

@ -81,16 +81,16 @@
<path fill="none" stroke="black" d="M422.42,-20.34C430.48,-20.15 438.72,-19.95 446.84,-19.76"/>
<polygon fill="black" stroke="black" points="446.77,-23.27 456.69,-19.53 446.61,-16.27 446.77,-23.27"/>
</g>
<!-- 52 -->
<!-- name: &quot;CameraPreset&quot;, typeName: &quot;&quot;, id: 52, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 60 -->
<!-- name: &quot;CameraPreset&quot;, typeName: &quot;&quot;, id: 60, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>52</title>
<title>60</title>
<ellipse fill="none" stroke="black" cx="689.9" cy="-18" rx="62.04" ry="18"/>
<text text-anchor="middle" x="689.9" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">CameraPreset</text>
</g>
<!-- 7&#45;&gt;52 -->
<!-- 7&#45;&gt;60 -->
<g id="edge6" class="edge">
<title>7&#45;&gt;52</title>
<title>7&#45;&gt;60</title>
<path fill="none" stroke="black" d="M587.65,-18C596.94,-18 606.56,-18 616.01,-18"/>
<polygon fill="black" stroke="black" points="615.91,-21.5 625.91,-18 615.91,-14.5 615.91,-21.5"/>
</g>

Before

(image error) Size: 5.0 KiB

After

(image error) Size: 5.0 KiB

@ -29,16 +29,16 @@
<path fill="none" stroke="black" d="M182.22,-18C190.23,-18 198.31,-18 206.21,-18"/>
<polygon fill="black" stroke="black" points="206.15,-21.5 216.15,-18 206.15,-14.5 206.15,-21.5"/>
</g>
<!-- 53 -->
<!-- name: &quot;CameraPresets&quot;, typeName: &quot;&quot;, id: 53, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 61 -->
<!-- name: &quot;CameraPresets&quot;, typeName: &quot;&quot;, id: 61, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>53</title>
<title>61</title>
<ellipse fill="none" stroke="black" cx="457.06" cy="-18" rx="66.03" ry="18"/>
<text text-anchor="middle" x="457.06" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">CameraPresets</text>
</g>
<!-- 1&#45;&gt;53 -->
<!-- 1&#45;&gt;61 -->
<g id="edge2" class="edge">
<title>1&#45;&gt;53</title>
<title>1&#45;&gt;61</title>
<path fill="none" stroke="black" d="M355.09,-18C363.05,-18 371.23,-18 379.31,-18"/>
<polygon fill="black" stroke="black" points="379.13,-21.5 389.13,-18 379.13,-14.5 379.13,-21.5"/>
</g>

Before

(image error) Size: 2.3 KiB

After

(image error) Size: 2.3 KiB

@ -70,16 +70,16 @@
<path fill="none" stroke="black" d="M380.21,-842C388.19,-842 396.03,-842 403.44,-842"/>
<polygon fill="black" stroke="black" points="403.18,-845.5 413.18,-842 403.18,-838.5 403.18,-845.5"/>
</g>
<!-- 73 -->
<!-- name: &quot;if (1)&quot;, typeName: &quot;&quot;, id: 73, branchId: 1, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<!-- 66 -->
<!-- name: &quot;if (1)&quot;, typeName: &quot;&quot;, id: 66, branchId: 1, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<g id="node67" class="node">
<title>73</title>
<title>66</title>
<polygon fill="none" stroke="black" points="456.27,-421 415.81,-403 456.27,-385 496.73,-403 456.27,-421"/>
<text text-anchor="middle" x="456.27" y="-397.57" font-family="Times New Roman,serif" font-size="14.00">if (1)</text>
</g>
<!-- 3&#45;&gt;73 -->
<!-- 3&#45;&gt;66 -->
<g id="edge66" class="edge">
<title>3&#45;&gt;73</title>
<title>3&#45;&gt;66</title>
<path fill="none" stroke="black" d="M283.89,-823.7C312.06,-754.56 412.02,-509.18 444.78,-428.74"/>
<polygon fill="black" stroke="black" points="448.01,-430.1 448.54,-419.51 441.53,-427.45 448.01,-430.1"/>
</g>
@ -254,29 +254,29 @@
<path fill="none" stroke="black" d="M627.92,-701.87C656.37,-650.65 737.34,-504.85 769.44,-447.04"/>
<polygon fill="black" stroke="black" points="772.31,-449.08 774.11,-438.64 766.19,-445.68 772.31,-449.08"/>
</g>
<!-- 59 -->
<!-- name: &quot;if (10)&quot;, typeName: &quot;&quot;, id: 59, branchId: 10, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<!-- 52 -->
<!-- name: &quot;if (10)&quot;, typeName: &quot;&quot;, id: 52, branchId: 10, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<g id="node53" class="node">
<title>59</title>
<title>52</title>
<polygon fill="none" stroke="black" points="783.79,-252 736.98,-234 783.79,-216 830.6,-234 783.79,-252"/>
<text text-anchor="middle" x="783.79" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">if (10)</text>
</g>
<!-- 7&#45;&gt;59 -->
<!-- 7&#45;&gt;52 -->
<g id="edge52" class="edge">
<title>7&#45;&gt;59</title>
<title>7&#45;&gt;52</title>
<path fill="none" stroke="black" d="M624.12,-701.54C649.38,-627.11 743.82,-348.83 773.68,-260.85"/>
<polygon fill="black" stroke="black" points="776.99,-261.99 776.89,-251.39 770.36,-259.74 776.99,-261.99"/>
</g>
<!-- 66 -->
<!-- name: &quot;if (11)&quot;, typeName: &quot;&quot;, id: 66, branchId: 11, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<!-- 59 -->
<!-- name: &quot;if (11)&quot;, typeName: &quot;&quot;, id: 59, branchId: 11, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<g id="node60" class="node">
<title>66</title>
<title>59</title>
<polygon fill="none" stroke="black" points="783.79,-171 736.98,-153 783.79,-135 830.6,-153 783.79,-171"/>
<text text-anchor="middle" x="783.79" y="-147.57" font-family="Times New Roman,serif" font-size="14.00">if (11)</text>
</g>
<!-- 7&#45;&gt;66 -->
<!-- 7&#45;&gt;59 -->
<g id="edge59" class="edge">
<title>7&#45;&gt;66</title>
<title>7&#45;&gt;59</title>
<path fill="none" stroke="black" d="M619,-701.69C623.91,-633.01 647.24,-385.49 736.98,-207 743.09,-194.85 752.48,-183.11 761.16,-173.7"/>
<polygon fill="black" stroke="black" points="763.65,-176.16 768.1,-166.55 758.63,-171.29 763.65,-176.16"/>
</g>
@ -711,185 +711,185 @@
<path fill="none" stroke="black" d="M1224.62,-288C1239.35,-288 1254.99,-288 1270.06,-288"/>
<polygon fill="black" stroke="black" points="1269.94,-291.5 1279.94,-288 1269.94,-284.5 1269.94,-291.5"/>
</g>
<!-- 58 -->
<!-- name: &quot;CompoundTag&quot;, typeName: &quot;&quot;, id: 58, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 51 -->
<!-- name: &quot;CompoundTag&quot;, typeName: &quot;&quot;, id: 51, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node52" class="node">
<title>58</title>
<title>51</title>
<ellipse fill="none" stroke="black" cx="1547.89" cy="-288" rx="67.53" ry="18"/>
<text text-anchor="middle" x="1547.89" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">CompoundTag</text>
</g>
<!-- 50&#45;&gt;58 -->
<!-- 50&#45;&gt;51 -->
<g id="edge51" class="edge">
<title>50&#45;&gt;58</title>
<title>50&#45;&gt;51</title>
<path fill="none" stroke="black" d="M1423.24,-288C1437.99,-288 1453.65,-288 1468.69,-288"/>
<polygon fill="black" stroke="black" points="1468.53,-291.5 1478.53,-288 1468.53,-284.5 1468.53,-291.5"/>
</g>
<!-- 60 -->
<!-- name: &quot;Tag Array&quot;, typeName: &quot;&quot;, id: 60, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<!-- 53 -->
<!-- name: &quot;Tag Array&quot;, typeName: &quot;&quot;, id: 53, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<g id="node54" class="node">
<title>60</title>
<title>53</title>
<ellipse fill="none" stroke="black" cx="955.98" cy="-234" rx="48.57" ry="18"/>
<text text-anchor="middle" x="955.98" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">Tag Array</text>
</g>
<!-- 59&#45;&gt;60 -->
<!-- 52&#45;&gt;53 -->
<g id="edge53" class="edge">
<title>59&#45;&gt;60</title>
<title>52&#45;&gt;53</title>
<path fill="none" stroke="black" d="M831.75,-234C851.5,-234 874.72,-234 895.64,-234"/>
<polygon fill="black" stroke="black" points="895.48,-237.5 905.48,-234 895.48,-230.5 895.48,-237.5"/>
</g>
<!-- 64 -->
<!-- name: &quot;End (must be 0)&quot;, typeName: &quot;&quot;, id: 64, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 57 -->
<!-- name: &quot;End (must be 0)&quot;, typeName: &quot;&quot;, id: 57, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node58" class="node">
<title>64</title>
<title>57</title>
<ellipse fill="none" stroke="black" cx="1152.87" cy="-180" rx="70.52" ry="18"/>
<text text-anchor="middle" x="1152.87" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">End (must be 0)</text>
</g>
<!-- 59&#45;&gt;64 -->
<!-- 52&#45;&gt;57 -->
<g id="edge57" class="edge">
<title>59&#45;&gt;64</title>
<title>52&#45;&gt;57</title>
<path fill="none" stroke="black" d="M807.69,-224.91C823.88,-218.86 846.25,-211.26 866.6,-207 934.84,-192.7 1013.87,-185.96 1071.42,-182.8"/>
<polygon fill="black" stroke="black" points="1071.32,-186.31 1081.12,-182.29 1070.95,-179.32 1071.32,-186.31"/>
</g>
<!-- 61 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 61, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<!-- 54 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 54, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<g id="node55" class="node">
<title>61</title>
<title>54</title>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="1152.87" cy="-234" rx="71.52" ry="18"/>
<text text-anchor="middle" x="1152.87" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">example element</text>
</g>
<!-- 60&#45;&gt;61 -->
<!-- 53&#45;&gt;54 -->
<g id="edge54" class="edge">
<title>60&#45;&gt;61</title>
<title>53&#45;&gt;54</title>
<path fill="none" stroke="black" d="M1004.65,-234C1024.23,-234 1047.47,-234 1069.64,-234"/>
<polygon fill="black" stroke="black" points="1069.59,-237.5 1079.59,-234 1069.59,-230.5 1069.59,-237.5"/>
</g>
<!-- 62 -->
<!-- name: &quot;Tag (Recursive)&quot;, typeName: &quot;CompoundTag&quot;, id: 62, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 55 -->
<!-- name: &quot;Tag (Recursive)&quot;, typeName: &quot;CompoundTag&quot;, id: 55, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node56" class="node">
<title>62</title>
<title>55</title>
<ellipse fill="none" stroke="black" cx="1352.38" cy="-234" rx="70.52" ry="18"/>
<text text-anchor="middle" x="1352.38" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">Tag (Recursive)</text>
</g>
<!-- 61&#45;&gt;62 -->
<!-- 54&#45;&gt;55 -->
<g id="edge55" class="edge">
<title>61&#45;&gt;62</title>
<title>54&#45;&gt;55</title>
<path fill="none" stroke="black" d="M1224.62,-234C1239.35,-234 1254.99,-234 1270.06,-234"/>
<polygon fill="black" stroke="black" points="1269.94,-237.5 1279.94,-234 1269.94,-230.5 1269.94,-237.5"/>
</g>
<!-- 63 -->
<!-- name: &quot;CompoundTag&quot;, typeName: &quot;&quot;, id: 63, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 56 -->
<!-- name: &quot;CompoundTag&quot;, typeName: &quot;&quot;, id: 56, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node57" class="node">
<title>63</title>
<title>56</title>
<ellipse fill="none" stroke="black" cx="1547.89" cy="-234" rx="67.53" ry="18"/>
<text text-anchor="middle" x="1547.89" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">CompoundTag</text>
</g>
<!-- 62&#45;&gt;63 -->
<!-- 55&#45;&gt;56 -->
<g id="edge56" class="edge">
<title>62&#45;&gt;63</title>
<title>55&#45;&gt;56</title>
<path fill="none" stroke="black" d="M1423.24,-234C1437.99,-234 1453.65,-234 1468.69,-234"/>
<polygon fill="black" stroke="black" points="1468.53,-237.5 1478.53,-234 1468.53,-230.5 1468.53,-237.5"/>
</g>
<!-- 65 -->
<!-- name: &quot;byte&quot;, typeName: &quot;&quot;, id: 65, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 58 -->
<!-- name: &quot;byte&quot;, typeName: &quot;&quot;, id: 58, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node59" class="node">
<title>65</title>
<title>58</title>
<ellipse fill="none" stroke="black" cx="1547.89" cy="-180" rx="27" ry="18"/>
<text text-anchor="middle" x="1547.89" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">byte</text>
</g>
<!-- 64&#45;&gt;65 -->
<!-- 57&#45;&gt;58 -->
<g id="edge58" class="edge">
<title>64&#45;&gt;65</title>
<title>57&#45;&gt;58</title>
<path fill="none" stroke="black" d="M1223.68,-180C1307.16,-180 1443.82,-180 1509.43,-180"/>
<polygon fill="black" stroke="black" points="1509.31,-183.5 1519.31,-180 1509.31,-176.5 1509.31,-183.5"/>
</g>
<!-- 67 -->
<!-- name: &quot;Int Array&quot;, typeName: &quot;&quot;, id: 67, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<!-- 60 -->
<!-- name: &quot;Int Array&quot;, typeName: &quot;&quot;, id: 60, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<g id="node61" class="node">
<title>67</title>
<title>60</title>
<ellipse fill="none" stroke="black" cx="955.98" cy="-126" rx="44.08" ry="18"/>
<text text-anchor="middle" x="955.98" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Int Array</text>
</g>
<!-- 66&#45;&gt;67 -->
<!-- 59&#45;&gt;60 -->
<g id="edge60" class="edge">
<title>66&#45;&gt;67</title>
<title>59&#45;&gt;60</title>
<path fill="none" stroke="black" d="M818.01,-147.73C842.24,-143.89 875.54,-138.6 903.24,-134.21"/>
<polygon fill="black" stroke="black" points="903.51,-137.71 912.84,-132.68 902.42,-130.79 903.51,-137.71"/>
</g>
<!-- 68 -->
<!-- name: &quot;Array Size&quot;, typeName: &quot;&quot;, id: 68, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 61 -->
<!-- name: &quot;Array Size&quot;, typeName: &quot;&quot;, id: 61, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node62" class="node">
<title>68</title>
<title>61</title>
<ellipse fill="none" stroke="black" cx="1152.87" cy="-126" rx="49.57" ry="18"/>
<text text-anchor="middle" x="1152.87" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Array Size</text>
</g>
<!-- 67&#45;&gt;68 -->
<!-- 60&#45;&gt;61 -->
<g id="edge61" class="edge">
<title>67&#45;&gt;68</title>
<title>60&#45;&gt;61</title>
<path fill="none" stroke="black" d="M1000.23,-126C1027.06,-126 1061.93,-126 1091.46,-126"/>
<polygon fill="black" stroke="black" points="1091.4,-129.5 1101.4,-126 1091.4,-122.5 1091.4,-129.5"/>
</g>
<!-- 70 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 70, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<!-- 63 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 63, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<g id="node64" class="node">
<title>70</title>
<title>63</title>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="1152.87" cy="-72" rx="71.52" ry="18"/>
<text text-anchor="middle" x="1152.87" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">example element</text>
</g>
<!-- 67&#45;&gt;70 -->
<!-- 60&#45;&gt;63 -->
<g id="edge63" class="edge">
<title>67&#45;&gt;70</title>
<title>60&#45;&gt;63</title>
<path fill="none" stroke="black" d="M993.18,-115.97C1021.17,-108.21 1060.49,-97.32 1093,-88.31"/>
<polygon fill="black" stroke="black" points="1093.57,-91.79 1102.27,-85.74 1091.7,-85.04 1093.57,-91.79"/>
</g>
<!-- 69 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 69, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 62 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 62, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node63" class="node">
<title>69</title>
<title>62</title>
<ellipse fill="none" stroke="black" cx="1547.89" cy="-126" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1547.89" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 68&#45;&gt;69 -->
<!-- 61&#45;&gt;62 -->
<g id="edge62" class="edge">
<title>68&#45;&gt;69</title>
<title>61&#45;&gt;62</title>
<path fill="none" stroke="black" d="M1202.86,-126C1280.82,-126 1431.81,-126 1505.04,-126"/>
<polygon fill="black" stroke="black" points="1505.01,-129.5 1515.01,-126 1505.01,-122.5 1505.01,-129.5"/>
</g>
<!-- 71 -->
<!-- name: &quot;Int Data&quot;, typeName: &quot;&quot;, id: 71, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 64 -->
<!-- name: &quot;Int Data&quot;, typeName: &quot;&quot;, id: 64, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node65" class="node">
<title>71</title>
<title>64</title>
<ellipse fill="none" stroke="black" cx="1352.38" cy="-72" rx="40.09" ry="18"/>
<text text-anchor="middle" x="1352.38" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Int Data</text>
</g>
<!-- 70&#45;&gt;71 -->
<!-- 63&#45;&gt;64 -->
<g id="edge64" class="edge">
<title>70&#45;&gt;71</title>
<title>63&#45;&gt;64</title>
<path fill="none" stroke="black" d="M1224.62,-72C1249.71,-72 1277.43,-72 1300.54,-72"/>
<polygon fill="black" stroke="black" points="1300.31,-75.5 1310.31,-72 1300.31,-68.5 1300.31,-75.5"/>
</g>
<!-- 72 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 72, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 65 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 65, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node66" class="node">
<title>72</title>
<title>65</title>
<ellipse fill="none" stroke="black" cx="1547.89" cy="-72" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1547.89" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 71&#45;&gt;72 -->
<!-- 64&#45;&gt;65 -->
<g id="edge65" class="edge">
<title>71&#45;&gt;72</title>
<title>64&#45;&gt;65</title>
<path fill="none" stroke="black" d="M1392.54,-72C1425.24,-72 1471.74,-72 1505.14,-72"/>
<polygon fill="black" stroke="black" points="1504.85,-75.5 1514.85,-72 1504.85,-68.5 1504.85,-75.5"/>
</g>
<!-- 74 -->
<!-- name: &quot;[No Data]&quot;, typeName: &quot;&quot;, id: 74, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 67 -->
<!-- name: &quot;[No Data]&quot;, typeName: &quot;&quot;, id: 67, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node68" class="node">
<title>74</title>
<title>67</title>
<ellipse fill="none" stroke="black" cx="1547.89" cy="-18" rx="47.57" ry="18"/>
<text text-anchor="middle" x="1547.89" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">[No Data]</text>
</g>
<!-- 73&#45;&gt;74 -->
<!-- 66&#45;&gt;67 -->
<g id="edge67" class="edge">
<title>73&#45;&gt;74</title>
<title>66&#45;&gt;67</title>
<path fill="none" stroke="black" d="M461.77,-387.43C483.64,-315.4 585.85,-18 782.79,-18 782.79,-18 782.79,-18 1153.87,-18 1272.8,-18 1411.98,-18 1488.7,-18"/>
<polygon fill="black" stroke="black" points="1488.49,-21.5 1498.49,-18 1488.49,-14.5 1488.49,-21.5"/>
</g>

Before

(image error) Size: 48 KiB

After

(image error) Size: 48 KiB

@ -4,11 +4,11 @@
<!-- Generated by graphviz version 11.0.0 (20240428.1522)
-->
<!-- Title: CorrectPlayerMovePredictionPacket Pages: 1 -->
<svg width="660pt" height="260pt"
viewBox="0.00 0.00 659.83 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="649pt" height="260pt"
viewBox="0.00 0.00 648.86 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>CorrectPlayerMovePredictionPacket</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 655.83,-256 655.83,4 -4,4"/>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 644.86,-256 644.86,4 -4,4"/>
<!-- 0 -->
<!-- name: &quot;CorrectPlayerMovePredictionPacket&quot;, typeName: &quot;&quot;, id: 0, branchId: 161, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
@ -69,7 +69,7 @@
<polygon fill="black" stroke="black" points="340.64,-87.57 349.67,-82.02 339.16,-80.73 340.64,-87.57"/>
</g>
<!-- 9 -->
<!-- name: &quot;Tick&quot;, typeName: &quot;&quot;, id: 9, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;Which frame we&#39;re correcting; should match the tick in the Player Auth Input packet&quot; -->
<!-- name: &quot;Tick&quot;, typeName: &quot;PlayerInputTick&quot;, id: 9, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;Which frame we&#39;re correcting; should match the tick in the Player Auth Input packet&quot; -->
<g id="node10" class="node">
<title>9</title>
<ellipse fill="none" stroke="black" cx="396.77" cy="-18" rx="27.61" ry="18"/>
@ -85,66 +85,66 @@
<!-- name: &quot;byte&quot;, typeName: &quot;&quot;, id: 2, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>2</title>
<ellipse fill="none" stroke="black" cx="576.32" cy="-234" rx="27" ry="18"/>
<text text-anchor="middle" x="576.32" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">byte</text>
<ellipse fill="none" stroke="black" cx="570.83" cy="-234" rx="27" ry="18"/>
<text text-anchor="middle" x="570.83" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">byte</text>
</g>
<!-- 1&#45;&gt;2 -->
<g id="edge2" class="edge">
<title>1&#45;&gt;2</title>
<path fill="none" stroke="black" d="M465.15,-234C489.7,-234 516.57,-234 537.63,-234"/>
<polygon fill="black" stroke="black" points="537.48,-237.5 547.48,-234 537.48,-230.5 537.48,-237.5"/>
<path fill="none" stroke="black" d="M465.28,-234C488.05,-234 512.63,-234 532.23,-234"/>
<polygon fill="black" stroke="black" points="532.22,-237.5 542.22,-234 532.22,-230.5 532.22,-237.5"/>
</g>
<!-- 4 -->
<!-- name: &quot;Vec3&quot;, typeName: &quot;&quot;, id: 4, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>4</title>
<ellipse fill="none" stroke="black" cx="576.32" cy="-180" rx="30.11" ry="18"/>
<text text-anchor="middle" x="576.32" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Vec3</text>
<ellipse fill="none" stroke="black" cx="570.83" cy="-180" rx="30.11" ry="18"/>
<text text-anchor="middle" x="570.83" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Vec3</text>
</g>
<!-- 3&#45;&gt;4 -->
<g id="edge4" class="edge">
<title>3&#45;&gt;4</title>
<path fill="none" stroke="black" d="M423.97,-180C453.05,-180 500.35,-180 534.34,-180"/>
<polygon fill="black" stroke="black" points="534.24,-183.5 544.24,-180 534.24,-176.5 534.24,-183.5"/>
<path fill="none" stroke="black" d="M423.91,-180C451.79,-180 496.33,-180 528.88,-180"/>
<polygon fill="black" stroke="black" points="528.76,-183.5 538.76,-180 528.76,-176.5 528.76,-183.5"/>
</g>
<!-- 6 -->
<!-- name: &quot;Vec3&quot;, typeName: &quot;&quot;, id: 6, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>6</title>
<ellipse fill="none" stroke="black" cx="576.32" cy="-126" rx="30.11" ry="18"/>
<text text-anchor="middle" x="576.32" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Vec3</text>
<ellipse fill="none" stroke="black" cx="570.83" cy="-126" rx="30.11" ry="18"/>
<text text-anchor="middle" x="570.83" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Vec3</text>
</g>
<!-- 5&#45;&gt;6 -->
<g id="edge6" class="edge">
<title>5&#45;&gt;6</title>
<path fill="none" stroke="black" d="M443.5,-126C471.6,-126 507.3,-126 534.45,-126"/>
<polygon fill="black" stroke="black" points="534.38,-129.5 544.38,-126 534.38,-122.5 534.38,-129.5"/>
<path fill="none" stroke="black" d="M443.43,-126C470.02,-126 503.27,-126 528.99,-126"/>
<polygon fill="black" stroke="black" points="528.71,-129.5 538.71,-126 528.71,-122.5 528.71,-129.5"/>
</g>
<!-- 8 -->
<!-- name: &quot;bool&quot;, typeName: &quot;&quot;, id: 8, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node9" class="node">
<title>8</title>
<ellipse fill="none" stroke="black" cx="576.32" cy="-72" rx="27.61" ry="18"/>
<text text-anchor="middle" x="576.32" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">bool</text>
<ellipse fill="none" stroke="black" cx="570.83" cy="-72" rx="27.61" ry="18"/>
<text text-anchor="middle" x="570.83" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">bool</text>
</g>
<!-- 7&#45;&gt;8 -->
<g id="edge8" class="edge">
<title>7&#45;&gt;8</title>
<path fill="none" stroke="black" d="M450.56,-72C478.45,-72 512.03,-72 537.33,-72"/>
<polygon fill="black" stroke="black" points="537.16,-75.5 547.16,-72 537.16,-68.5 537.16,-75.5"/>
<path fill="none" stroke="black" d="M450.8,-72C476.99,-72 507.98,-72 531.77,-72"/>
<polygon fill="black" stroke="black" points="531.65,-75.5 541.65,-72 531.65,-68.5 531.65,-75.5"/>
</g>
<!-- 10 -->
<!-- name: &quot;unsigned varint64&quot;, typeName: &quot;&quot;, id: 10, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- name: &quot;PlayerInputTick&quot;, typeName: &quot;&quot;, id: 10, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node11" class="node">
<title>10</title>
<ellipse fill="none" stroke="black" cx="576.32" cy="-18" rx="75.51" ry="18"/>
<text text-anchor="middle" x="576.32" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint64</text>
<ellipse fill="none" stroke="black" cx="570.83" cy="-18" rx="70.03" ry="18"/>
<text text-anchor="middle" x="570.83" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">PlayerInputTick</text>
</g>
<!-- 9&#45;&gt;10 -->
<g id="edge10" class="edge">
<title>9&#45;&gt;10</title>
<path fill="none" stroke="black" d="M424.74,-18C442.08,-18 465.66,-18 489.02,-18"/>
<polygon fill="black" stroke="black" points="488.93,-21.5 498.93,-18 488.93,-14.5 488.93,-21.5"/>
<path fill="none" stroke="black" d="M424.66,-18C442.12,-18 465.88,-18 489.13,-18"/>
<polygon fill="black" stroke="black" points="488.95,-21.5 498.95,-18 488.95,-14.5 488.95,-21.5"/>
</g>
</g>
</svg>

Before

(image error) Size: 7.8 KiB

After

(image error) Size: 7.9 KiB

@ -526,17 +526,17 @@
<polygon fill="black" stroke="black" points="792.46,-561.5 802.46,-558 792.46,-554.5 792.46,-561.5"/>
</g>
<!-- 37 -->
<!-- name: &quot;Shulker Box Recipe&quot;, typeName: &quot;&quot;, id: 37, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- name: &quot;User Data Shapeless Recipe&quot;, typeName: &quot;&quot;, id: 37, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node37" class="node">
<title>37</title>
<ellipse fill="none" stroke="black" cx="651.87" cy="-504" rx="85" ry="18"/>
<text text-anchor="middle" x="651.87" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">Shulker Box Recipe</text>
<ellipse fill="none" stroke="black" cx="651.87" cy="-504" rx="115.43" ry="18"/>
<text text-anchor="middle" x="651.87" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">User Data Shapeless Recipe</text>
</g>
<!-- 36&#45;&gt;37 -->
<g id="edge36" class="edge">
<title>36&#45;&gt;37</title>
<path fill="none" stroke="black" d="M500.46,-504C516.57,-504 535.83,-504 555.12,-504"/>
<polygon fill="black" stroke="black" points="554.94,-507.5 564.94,-504 554.94,-500.5 554.94,-507.5"/>
<path fill="none" stroke="black" d="M500.46,-504C508,-504 516.22,-504 524.82,-504"/>
<polygon fill="black" stroke="black" points="524.8,-507.5 534.8,-504 524.8,-500.5 524.8,-507.5"/>
</g>
<!-- 39 -->
<!-- name: &quot;Net id&quot;, typeName: &quot;&quot;, id: 39, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
@ -552,17 +552,17 @@
<polygon fill="black" stroke="black" points="609.73,-462.01 618.77,-456.49 608.25,-455.17 609.73,-462.01"/>
</g>
<!-- 38 -->
<!-- name: &quot;ShulkerBoxRecipe&quot;, typeName: &quot;&quot;, id: 38, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- name: &quot;UserDataShapelessRecipe&quot;, typeName: &quot;&quot;, id: 38, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node38" class="node">
<title>38</title>
<ellipse fill="none" stroke="black" cx="1034.01" cy="-504" rx="80.01" ry="18"/>
<text text-anchor="middle" x="1034.01" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">ShulkerBoxRecipe</text>
<ellipse fill="none" stroke="black" cx="1034.01" cy="-504" rx="107.95" ry="18"/>
<text text-anchor="middle" x="1034.01" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">UserDataShapelessRecipe</text>
</g>
<!-- 37&#45;&gt;38 -->
<g id="edge37" class="edge">
<title>37&#45;&gt;38</title>
<path fill="none" stroke="black" d="M737.24,-504C798.09,-504 880.13,-504 942.37,-504"/>
<polygon fill="black" stroke="black" points="942.24,-507.5 952.24,-504 942.24,-500.5 942.24,-507.5"/>
<path fill="none" stroke="black" d="M767.7,-504C814.04,-504 867.5,-504 914.23,-504"/>
<polygon fill="black" stroke="black" points="914.13,-507.5 924.13,-504 914.13,-500.5 914.13,-507.5"/>
</g>
<!-- 40 -->
<!-- name: &quot;TypedServerNetId&lt;struct RecipeNetIdTag,unsigned int,0&gt;&quot;, typeName: &quot;&quot;, id: 40, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->

Before

(image error) Size: 43 KiB

After

(image error) Size: 43 KiB

@ -4,11 +4,11 @@
<!-- Generated by graphviz version 11.0.0 (20240428.1522)
-->
<!-- Title: InventoryContentPacket Pages: 1 -->
<svg width="1079pt" height="260pt"
viewBox="0.00 0.00 1078.80 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="995pt" height="260pt"
viewBox="0.00 0.00 994.97 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>InventoryContentPacket</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 1074.8,-256 1074.8,4 -4,4"/>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 990.97,-256 990.97,4 -4,4"/>
<!-- 0 -->
<!-- name: &quot;InventoryContentPacket&quot;, typeName: &quot;&quot;, id: 0, branchId: 49, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
@ -20,157 +20,157 @@
<!-- name: &quot;Inventory Id&quot;, typeName: &quot;&quot;, id: 1, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node2" class="node">
<title>1</title>
<ellipse fill="none" stroke="black" cx="739.4" cy="-234" rx="56.55" ry="18"/>
<text text-anchor="middle" x="739.4" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">Inventory Id</text>
<ellipse fill="none" stroke="black" cx="655.56" cy="-234" rx="56.55" ry="18"/>
<text text-anchor="middle" x="655.56" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">Inventory Id</text>
</g>
<!-- 0&#45;&gt;1 -->
<g id="edge1" class="edge">
<title>0&#45;&gt;1</title>
<path fill="none" stroke="black" d="M138.08,-116.14C164.92,-128.07 202.52,-143.49 236.93,-153 390.28,-195.4 576.55,-218.27 673.17,-228.07"/>
<polygon fill="black" stroke="black" points="672.7,-231.54 683,-229.06 673.39,-224.58 672.7,-231.54"/>
<path fill="none" stroke="black" d="M138.75,-116.07C165.59,-127.8 202.92,-143.02 236.93,-153 360.29,-189.2 508.97,-213.62 591.51,-225.54"/>
<polygon fill="black" stroke="black" points="590.82,-228.98 601.21,-226.93 591.81,-222.05 590.82,-228.98"/>
</g>
<!-- 3 -->
<!-- name: &quot;Slots&quot;, typeName: &quot;&quot;, id: 3, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<g id="node4" class="node">
<title>3</title>
<ellipse fill="none" stroke="black" cx="336.89" cy="-126" rx="29.61" ry="18"/>
<text text-anchor="middle" x="336.89" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Slots</text>
<ellipse fill="none" stroke="black" cx="294.98" cy="-126" rx="29.61" ry="18"/>
<text text-anchor="middle" x="294.98" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Slots</text>
</g>
<!-- 0&#45;&gt;3 -->
<g id="edge3" class="edge">
<title>0&#45;&gt;3</title>
<path fill="none" stroke="black" d="M186.1,-108.75C223.61,-113.07 265.96,-117.95 296.04,-121.41"/>
<polygon fill="black" stroke="black" points="295.49,-124.87 305.82,-122.54 296.29,-117.92 295.49,-124.87"/>
<path fill="none" stroke="black" d="M180.88,-110.14C206.4,-113.72 233.55,-117.52 254.85,-120.51"/>
<polygon fill="black" stroke="black" points="254.14,-123.95 264.53,-121.87 255.11,-117.02 254.14,-123.95"/>
</g>
<!-- 9 -->
<!-- name: &quot;Full Container Name&quot;, typeName: &quot;FullContainerName&quot;, id: 9, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;Used to reference a specific container within a given screen container context.&quot; -->
<g id="node10" class="node">
<title>9</title>
<ellipse fill="none" stroke="black" cx="559.85" cy="-72" rx="86.99" ry="18"/>
<text text-anchor="middle" x="559.85" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Full Container Name</text>
<ellipse fill="none" stroke="black" cx="476.02" cy="-72" rx="86.99" ry="18"/>
<text text-anchor="middle" x="476.02" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Full Container Name</text>
</g>
<!-- 0&#45;&gt;9 -->
<g id="edge9" class="edge">
<title>0&#45;&gt;9</title>
<path fill="none" stroke="black" d="M196.51,-93.39C275.1,-88.75 386.11,-82.2 464.5,-77.57"/>
<polygon fill="black" stroke="black" points="464.53,-81.07 474.31,-76.99 464.12,-74.09 464.53,-81.07"/>
<path fill="none" stroke="black" d="M194.28,-92.29C251.51,-88.15 324.65,-82.87 381.93,-78.73"/>
<polygon fill="black" stroke="black" points="381.93,-82.24 391.65,-78.03 381.43,-75.26 381.93,-82.24"/>
</g>
<!-- 19 -->
<!-- name: &quot;Dynamic Container Size&quot;, typeName: &quot;&quot;, id: 19, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;Size of the particular container instance if this is a dynamic container, otherwise zero.&quot; -->
<!-- name: &quot;Storage Item&quot;, typeName: &quot;NetworkItemStackDescriptor&quot;, id: 19, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;Optional storage item containing the contents to set. Only the item type is relevant, not any stack information.&quot; -->
<g id="node12" class="node">
<title>19</title>
<ellipse fill="none" stroke="black" cx="336.89" cy="-22" rx="99.97" ry="18"/>
<text text-anchor="middle" x="336.89" y="-16.57" font-family="Times New Roman,serif" font-size="14.00">Dynamic Container Size</text>
<ellipse fill="none" stroke="black" cx="294.98" cy="-22" rx="58.05" ry="18"/>
<text text-anchor="middle" x="294.98" y="-16.57" font-family="Times New Roman,serif" font-size="14.00">Storage Item</text>
</g>
<!-- 0&#45;&gt;19 -->
<g id="edge11" class="edge">
<title>0&#45;&gt;19</title>
<path fill="none" stroke="black" d="M150.32,-82.95C186.92,-70.93 237.18,-54.42 276.17,-41.62"/>
<polygon fill="black" stroke="black" points="277.25,-44.95 285.66,-38.5 275.07,-38.3 277.25,-44.95"/>
<path fill="none" stroke="black" d="M143.24,-82.29C174.04,-69.97 215.93,-53.22 247.74,-40.49"/>
<polygon fill="black" stroke="black" points="248.72,-43.87 256.71,-36.91 246.12,-37.37 248.72,-43.87"/>
</g>
<!-- 2 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 2, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>2</title>
<ellipse fill="none" stroke="black" cx="951.37" cy="-234" rx="66.53" ry="18"/>
<text text-anchor="middle" x="951.37" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
<ellipse fill="none" stroke="black" cx="867.54" cy="-234" rx="66.53" ry="18"/>
<text text-anchor="middle" x="867.54" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 1&#45;&gt;2 -->
<g id="edge2" class="edge">
<title>1&#45;&gt;2</title>
<path fill="none" stroke="black" d="M796.39,-234C819.88,-234 847.6,-234 872.99,-234"/>
<polygon fill="black" stroke="black" points="872.96,-237.5 882.96,-234 872.96,-230.5 872.96,-237.5"/>
<path fill="none" stroke="black" d="M712.56,-234C736.05,-234 763.77,-234 789.16,-234"/>
<polygon fill="black" stroke="black" points="789.13,-237.5 799.13,-234 789.13,-230.5 789.13,-237.5"/>
</g>
<!-- 4 -->
<!-- name: &quot;Array Size&quot;, typeName: &quot;&quot;, id: 4, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>4</title>
<ellipse fill="none" stroke="black" cx="739.4" cy="-180" rx="49.57" ry="18"/>
<text text-anchor="middle" x="739.4" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Array Size</text>
<ellipse fill="none" stroke="black" cx="655.56" cy="-180" rx="49.57" ry="18"/>
<text text-anchor="middle" x="655.56" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Array Size</text>
</g>
<!-- 3&#45;&gt;4 -->
<g id="edge4" class="edge">
<title>3&#45;&gt;4</title>
<path fill="none" stroke="black" d="M365.16,-132.26C392.32,-138.3 435.29,-147.35 472.86,-153 543.3,-163.6 624.89,-171.21 678.84,-175.59"/>
<polygon fill="black" stroke="black" points="678.5,-179.07 688.74,-176.38 679.05,-172.1 678.5,-179.07"/>
<path fill="none" stroke="black" d="M321.35,-134.71C339.88,-140.75 365.75,-148.48 389.03,-153 458.95,-166.58 540.64,-173.59 594.76,-177.02"/>
<polygon fill="black" stroke="black" points="594.51,-180.51 604.7,-177.63 594.93,-173.52 594.51,-180.51"/>
</g>
<!-- 6 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 6, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>6</title>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="559.85" cy="-126" rx="71.52" ry="18"/>
<text text-anchor="middle" x="559.85" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">example element</text>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="476.02" cy="-126" rx="71.52" ry="18"/>
<text text-anchor="middle" x="476.02" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">example element</text>
</g>
<!-- 3&#45;&gt;6 -->
<g id="edge6" class="edge">
<title>3&#45;&gt;6</title>
<path fill="none" stroke="black" d="M366.78,-126C394.68,-126 438.25,-126 476.85,-126"/>
<polygon fill="black" stroke="black" points="476.6,-129.5 486.6,-126 476.6,-122.5 476.6,-129.5"/>
<path fill="none" stroke="black" d="M324.74,-126C343.26,-126 368.35,-126 392.71,-126"/>
<polygon fill="black" stroke="black" points="392.69,-129.5 402.69,-126 392.69,-122.5 392.69,-129.5"/>
</g>
<!-- 5 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 5, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node6" class="node">
<title>5</title>
<ellipse fill="none" stroke="black" cx="951.37" cy="-180" rx="66.53" ry="18"/>
<text text-anchor="middle" x="951.37" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
<ellipse fill="none" stroke="black" cx="867.54" cy="-180" rx="66.53" ry="18"/>
<text text-anchor="middle" x="867.54" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 4&#45;&gt;5 -->
<g id="edge5" class="edge">
<title>4&#45;&gt;5</title>
<path fill="none" stroke="black" d="M789.36,-180C814.29,-180 845.17,-180 873.2,-180"/>
<polygon fill="black" stroke="black" points="873.08,-183.5 883.08,-180 873.08,-176.5 873.08,-183.5"/>
<path fill="none" stroke="black" d="M705.53,-180C730.45,-180 761.33,-180 789.36,-180"/>
<polygon fill="black" stroke="black" points="789.25,-183.5 799.25,-180 789.25,-176.5 789.25,-183.5"/>
</g>
<!-- 7 -->
<!-- name: &quot;Item stack&quot;, typeName: &quot;NetworkItemStackDescriptor&quot;, id: 7, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node8" class="node">
<title>7</title>
<ellipse fill="none" stroke="black" cx="739.4" cy="-126" rx="49.07" ry="18"/>
<text text-anchor="middle" x="739.4" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Item stack</text>
<ellipse fill="none" stroke="black" cx="655.56" cy="-126" rx="49.07" ry="18"/>
<text text-anchor="middle" x="655.56" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Item stack</text>
</g>
<!-- 6&#45;&gt;7 -->
<g id="edge7" class="edge">
<title>6&#45;&gt;7</title>
<path fill="none" stroke="black" d="M631.79,-126C647.33,-126 663.64,-126 678.7,-126"/>
<polygon fill="black" stroke="black" points="678.42,-129.5 688.42,-126 678.42,-122.5 678.42,-129.5"/>
<path fill="none" stroke="black" d="M547.96,-126C563.5,-126 579.81,-126 594.87,-126"/>
<polygon fill="black" stroke="black" points="594.59,-129.5 604.59,-126 594.59,-122.5 594.59,-129.5"/>
</g>
<!-- 8 -->
<!-- name: &quot;NetworkItemStackDescriptor&quot;, typeName: &quot;&quot;, id: 8, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node9" class="node">
<title>8</title>
<ellipse fill="none" stroke="black" cx="951.37" cy="-126" rx="119.43" ry="18"/>
<text text-anchor="middle" x="951.37" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">NetworkItemStackDescriptor</text>
<ellipse fill="none" stroke="black" cx="867.54" cy="-126" rx="119.43" ry="18"/>
<text text-anchor="middle" x="867.54" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">NetworkItemStackDescriptor</text>
</g>
<!-- 7&#45;&gt;8 -->
<g id="edge8" class="edge">
<title>7&#45;&gt;8</title>
<path fill="none" stroke="black" d="M788.83,-126C798.64,-126 809.39,-126 820.54,-126"/>
<polygon fill="black" stroke="black" points="820.28,-129.5 830.28,-126 820.28,-122.5 820.28,-129.5"/>
<path fill="none" stroke="black" d="M705,-126C714.81,-126 725.56,-126 736.71,-126"/>
<polygon fill="black" stroke="black" points="736.45,-129.5 746.45,-126 736.45,-122.5 736.45,-129.5"/>
</g>
<!-- 18 -->
<!-- name: &quot;FullContainerName&quot;, typeName: &quot;&quot;, id: 18, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node11" class="node">
<title>18</title>
<ellipse fill="none" stroke="black" cx="951.37" cy="-72" rx="82" ry="18"/>
<text text-anchor="middle" x="951.37" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">FullContainerName</text>
<ellipse fill="none" stroke="black" cx="867.54" cy="-72" rx="82" ry="18"/>
<text text-anchor="middle" x="867.54" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">FullContainerName</text>
</g>
<!-- 9&#45;&gt;18 -->
<g id="edge10" class="edge">
<title>9&#45;&gt;18</title>
<path fill="none" stroke="black" d="M647.3,-72C709.78,-72 794.07,-72 857.89,-72"/>
<polygon fill="black" stroke="black" points="857.65,-75.5 867.65,-72 857.65,-68.5 857.65,-75.5"/>
<path fill="none" stroke="black" d="M563.47,-72C625.95,-72 710.24,-72 774.06,-72"/>
<polygon fill="black" stroke="black" points="773.81,-75.5 783.81,-72 773.81,-68.5 773.81,-75.5"/>
</g>
<!-- 20 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 20, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- name: &quot;NetworkItemStackDescriptor&quot;, typeName: &quot;&quot;, id: 20, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node13" class="node">
<title>20</title>
<ellipse fill="none" stroke="black" cx="951.37" cy="-18" rx="66.53" ry="18"/>
<text text-anchor="middle" x="951.37" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
<ellipse fill="none" stroke="black" cx="867.54" cy="-18" rx="119.43" ry="18"/>
<text text-anchor="middle" x="867.54" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">NetworkItemStackDescriptor</text>
</g>
<!-- 19&#45;&gt;20 -->
<g id="edge12" class="edge">
<title>19&#45;&gt;20</title>
<path fill="none" stroke="black" d="M436.98,-21.35C558.62,-20.56 762.35,-19.23 873.06,-18.5"/>
<polygon fill="black" stroke="black" points="872.97,-22.01 882.95,-18.44 872.92,-15.01 872.97,-22.01"/>
<path fill="none" stroke="black" d="M353.3,-21.6C442.27,-20.97 615.9,-19.76 736.42,-18.91"/>
<polygon fill="black" stroke="black" points="736.43,-22.41 746.4,-18.84 736.38,-15.41 736.43,-22.41"/>
</g>
</g>
</svg>

Before

(image error) Size: 9.4 KiB

After

(image error) Size: 9.5 KiB

@ -4,11 +4,11 @@
<!-- Generated by graphviz version 11.0.0 (20240428.1522)
-->
<!-- Title: InventorySlotPacket Pages: 1 -->
<svg width="691pt" height="260pt"
viewBox="0.00 0.00 690.77 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="665pt" height="260pt"
viewBox="0.00 0.00 664.82 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)">
<title>InventorySlotPacket</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 686.77,-256 686.77,4 -4,4"/>
<polygon fill="white" stroke="none" points="-4,4 -4,-256 660.82,-256 660.82,4 -4,4"/>
<!-- 0 -->
<!-- name: &quot;InventorySlotPacket&quot;, typeName: &quot;&quot;, id: 0, branchId: 50, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
@ -20,131 +20,131 @@
<!-- name: &quot;Container ID&quot;, typeName: &quot;&quot;, id: 1, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node2" class="node">
<title>1</title>
<ellipse fill="none" stroke="black" cx="307.95" cy="-234" rx="58.55" ry="18"/>
<text text-anchor="middle" x="307.95" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">Container ID</text>
<ellipse fill="none" stroke="black" cx="294.98" cy="-234" rx="58.55" ry="18"/>
<text text-anchor="middle" x="294.98" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">Container ID</text>
</g>
<!-- 0&#45;&gt;1 -->
<g id="edge1" class="edge">
<title>0&#45;&gt;1</title>
<path fill="none" stroke="black" d="M108.45,-143.53C131.7,-161.73 170.5,-189.89 207.99,-207 220.33,-212.63 234.09,-217.3 247.33,-221.09"/>
<polygon fill="black" stroke="black" points="246.26,-224.42 256.82,-223.66 248.09,-217.67 246.26,-224.42"/>
<path fill="none" stroke="black" d="M109.02,-143.58C132.42,-161.56 171.06,-189.3 207.99,-207 217.42,-211.52 227.78,-215.52 237.95,-218.97"/>
<polygon fill="black" stroke="black" points="236.83,-222.28 247.42,-222.02 238.98,-215.62 236.83,-222.28"/>
</g>
<!-- 3 -->
<!-- name: &quot;Slot&quot;, typeName: &quot;&quot;, id: 3, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node4" class="node">
<title>3</title>
<ellipse fill="none" stroke="black" cx="307.95" cy="-180" rx="27" ry="18"/>
<text text-anchor="middle" x="307.95" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Slot</text>
<ellipse fill="none" stroke="black" cx="294.98" cy="-180" rx="27" ry="18"/>
<text text-anchor="middle" x="294.98" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Slot</text>
</g>
<!-- 0&#45;&gt;3 -->
<g id="edge3" class="edge">
<title>0&#45;&gt;3</title>
<path fill="none" stroke="black" d="M143.35,-139.84C183.61,-149.72 236.55,-162.72 271.15,-171.21"/>
<polygon fill="black" stroke="black" points="270.12,-174.56 280.66,-173.55 271.79,-167.76 270.12,-174.56"/>
<path fill="none" stroke="black" d="M141.38,-140.19C178.29,-149.82 226.05,-162.28 258.22,-170.67"/>
<polygon fill="black" stroke="black" points="257.3,-174.05 267.86,-173.19 259.07,-167.28 257.3,-174.05"/>
</g>
<!-- 5 -->
<!-- name: &quot;Full Container Name&quot;, typeName: &quot;FullContainerName&quot;, id: 5, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;Used to reference a specific container within a given screen container context&quot; -->
<g id="node6" class="node">
<title>5</title>
<ellipse fill="none" stroke="black" cx="307.95" cy="-126" rx="86.99" ry="18"/>
<text text-anchor="middle" x="307.95" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Full Container Name</text>
<ellipse fill="none" stroke="black" cx="294.98" cy="-126" rx="86.99" ry="18"/>
<text text-anchor="middle" x="294.98" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Full Container Name</text>
</g>
<!-- 0&#45;&gt;5 -->
<g id="edge5" class="edge">
<title>0&#45;&gt;5</title>
<path fill="none" stroke="black" d="M172.35,-126C184.46,-126 196.99,-126 209.32,-126"/>
<polygon fill="black" stroke="black" points="209.04,-129.5 219.04,-126 209.04,-122.5 209.04,-129.5"/>
<path fill="none" stroke="black" d="M172.38,-126C180.32,-126 188.42,-126 196.47,-126"/>
<polygon fill="black" stroke="black" points="196.27,-129.5 206.27,-126 196.27,-122.5 196.27,-129.5"/>
</g>
<!-- 7 -->
<!-- name: &quot;Dynamic Container Size&quot;, typeName: &quot;&quot;, id: 7, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;Size of the container if it is dynamic, zero otherwise&quot; -->
<!-- name: &quot;Storage Item&quot;, typeName: &quot;NetworkItemStackDescriptor&quot;, id: 7, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;Optional storage item to set into. Only the item type is relevant, not any stack information.&quot; -->
<g id="node8" class="node">
<title>7</title>
<ellipse fill="none" stroke="black" cx="307.95" cy="-72" rx="99.97" ry="18"/>
<text text-anchor="middle" x="307.95" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Dynamic Container Size</text>
<ellipse fill="none" stroke="black" cx="294.98" cy="-72" rx="58.05" ry="18"/>
<text text-anchor="middle" x="294.98" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Storage Item</text>
</g>
<!-- 0&#45;&gt;7 -->
<g id="edge7" class="edge">
<title>0&#45;&gt;7</title>
<path fill="none" stroke="black" d="M143.35,-112.16C171.69,-105.21 206.32,-96.7 236.42,-89.32"/>
<polygon fill="black" stroke="black" points="236.93,-92.79 245.81,-87.01 235.26,-86 236.93,-92.79"/>
<path fill="none" stroke="black" d="M141.38,-111.81C171.46,-103.96 208.75,-94.24 238.94,-86.36"/>
<polygon fill="black" stroke="black" points="239.45,-89.84 248.25,-83.93 237.69,-83.07 239.45,-89.84"/>
</g>
<!-- 9 -->
<!-- name: &quot;Item&quot;, typeName: &quot;NetworkItemStackDescriptor&quot;, id: 9, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node10" class="node">
<title>9</title>
<ellipse fill="none" stroke="black" cx="307.95" cy="-18" rx="27.11" ry="18"/>
<text text-anchor="middle" x="307.95" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Item</text>
<ellipse fill="none" stroke="black" cx="294.98" cy="-18" rx="27.11" ry="18"/>
<text text-anchor="middle" x="294.98" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Item</text>
</g>
<!-- 0&#45;&gt;9 -->
<g id="edge9" class="edge">
<title>0&#45;&gt;9</title>
<path fill="none" stroke="black" d="M108.45,-108.47C131.7,-90.27 170.5,-62.11 207.99,-45 227.71,-36 251.05,-29.45 270.12,-25.06"/>
<polygon fill="black" stroke="black" points="270.86,-28.48 279.88,-22.93 269.36,-21.64 270.86,-28.48"/>
<path fill="none" stroke="black" d="M109.02,-108.42C132.42,-90.44 171.06,-62.7 207.99,-45 223.77,-37.43 242.18,-31.32 257.9,-26.84"/>
<polygon fill="black" stroke="black" points="258.61,-30.28 267.34,-24.27 256.77,-23.52 258.61,-30.28"/>
</g>
<!-- 2 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 2, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>2</title>
<ellipse fill="none" stroke="black" cx="563.34" cy="-234" rx="66.53" ry="18"/>
<text text-anchor="middle" x="563.34" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
<ellipse fill="none" stroke="black" cx="537.4" cy="-234" rx="66.53" ry="18"/>
<text text-anchor="middle" x="537.4" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 1&#45;&gt;2 -->
<g id="edge2" class="edge">
<title>1&#45;&gt;2</title>
<path fill="none" stroke="black" d="M366.77,-234C402,-234 447.44,-234 485.65,-234"/>
<polygon fill="black" stroke="black" points="485.22,-237.5 495.22,-234 485.22,-230.5 485.22,-237.5"/>
<path fill="none" stroke="black" d="M353.87,-234C385.45,-234 424.97,-234 459.15,-234"/>
<polygon fill="black" stroke="black" points="459,-237.5 469,-234 459,-230.5 459,-237.5"/>
</g>
<!-- 4 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 4, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>4</title>
<ellipse fill="none" stroke="black" cx="563.34" cy="-180" rx="66.53" ry="18"/>
<text text-anchor="middle" x="563.34" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
<ellipse fill="none" stroke="black" cx="537.4" cy="-180" rx="66.53" ry="18"/>
<text text-anchor="middle" x="537.4" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 3&#45;&gt;4 -->
<g id="edge4" class="edge">
<title>3&#45;&gt;4</title>
<path fill="none" stroke="black" d="M335.12,-180C370.21,-180 434.01,-180 485.1,-180"/>
<polygon fill="black" stroke="black" points="484.94,-183.5 494.94,-180 484.94,-176.5 484.94,-183.5"/>
<path fill="none" stroke="black" d="M322.17,-180C354.77,-180 411.91,-180 458.98,-180"/>
<polygon fill="black" stroke="black" points="458.89,-183.5 468.89,-180 458.89,-176.5 458.89,-183.5"/>
</g>
<!-- 6 -->
<!-- name: &quot;FullContainerName&quot;, typeName: &quot;&quot;, id: 6, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>6</title>
<ellipse fill="none" stroke="black" cx="563.34" cy="-126" rx="82" ry="18"/>
<text text-anchor="middle" x="563.34" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">FullContainerName</text>
<ellipse fill="none" stroke="black" cx="537.4" cy="-126" rx="82" ry="18"/>
<text text-anchor="middle" x="537.4" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">FullContainerName</text>
</g>
<!-- 5&#45;&gt;6 -->
<g id="edge6" class="edge">
<title>5&#45;&gt;6</title>
<path fill="none" stroke="black" d="M395.09,-126C419.12,-126 445.33,-126 469.71,-126"/>
<polygon fill="black" stroke="black" points="469.63,-129.5 479.63,-126 469.63,-122.5 469.63,-129.5"/>
<path fill="none" stroke="black" d="M382.44,-126C402.33,-126 423.58,-126 443.73,-126"/>
<polygon fill="black" stroke="black" points="443.6,-129.5 453.6,-126 443.6,-122.5 443.6,-129.5"/>
</g>
<!-- 8 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 8, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- name: &quot;NetworkItemStackDescriptor&quot;, typeName: &quot;&quot;, id: 8, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node9" class="node">
<title>8</title>
<ellipse fill="none" stroke="black" cx="563.34" cy="-72" rx="66.53" ry="18"/>
<text text-anchor="middle" x="563.34" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
<ellipse fill="none" stroke="black" cx="537.4" cy="-72" rx="119.43" ry="18"/>
<text text-anchor="middle" x="537.4" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">NetworkItemStackDescriptor</text>
</g>
<!-- 7&#45;&gt;8 -->
<g id="edge8" class="edge">
<title>7&#45;&gt;8</title>
<path fill="none" stroke="black" d="M408.37,-72C433.87,-72 460.91,-72 485.1,-72"/>
<polygon fill="black" stroke="black" points="484.85,-75.5 494.85,-72 484.85,-68.5 484.85,-75.5"/>
<path fill="none" stroke="black" d="M353.26,-72C369.44,-72 387.73,-72 406.35,-72"/>
<polygon fill="black" stroke="black" points="406.13,-75.5 416.13,-72 406.13,-68.5 406.13,-75.5"/>
</g>
<!-- 10 -->
<!-- name: &quot;NetworkItemStackDescriptor&quot;, typeName: &quot;&quot;, id: 10, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node11" class="node">
<title>10</title>
<ellipse fill="none" stroke="black" cx="563.34" cy="-18" rx="119.43" ry="18"/>
<text text-anchor="middle" x="563.34" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">NetworkItemStackDescriptor</text>
<ellipse fill="none" stroke="black" cx="537.4" cy="-18" rx="119.43" ry="18"/>
<text text-anchor="middle" x="537.4" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">NetworkItemStackDescriptor</text>
</g>
<!-- 9&#45;&gt;10 -->
<g id="edge10" class="edge">
<title>9&#45;&gt;10</title>
<path fill="none" stroke="black" d="M335.12,-18C358.66,-18 395.15,-18 432.04,-18"/>
<polygon fill="black" stroke="black" points="431.97,-21.5 441.97,-18 431.97,-14.5 431.97,-21.5"/>
<path fill="none" stroke="black" d="M322.17,-18C343.12,-18 374.21,-18 406.25,-18"/>
<polygon fill="black" stroke="black" points="406.1,-21.5 416.1,-18 406.1,-14.5 406.1,-21.5"/>
</g>
</g>
</svg>

Before

(image error) Size: 7.9 KiB

After

(image error) Size: 8.0 KiB

@ -9,88 +9,88 @@
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 148)">
<title>ItemStackRequestSlotInfo</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-148 645.85,-148 645.85,4 -4,4"/>
<!-- 99 -->
<!-- name: &quot;ItemStackRequestSlotInfo&quot;, typeName: &quot;&quot;, id: 99, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 95 -->
<!-- name: &quot;ItemStackRequestSlotInfo&quot;, typeName: &quot;&quot;, id: 95, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
<title>99</title>
<title>95</title>
<ellipse fill="none" stroke="black" cx="108.95" cy="-72" rx="108.95" ry="18"/>
<text text-anchor="middle" x="108.95" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">ItemStackRequestSlotInfo</text>
</g>
<!-- 100 -->
<!-- name: &quot;Full container name.&quot;, typeName: &quot;FullContainerName&quot;, id: 100, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 96 -->
<!-- name: &quot;Full container name.&quot;, typeName: &quot;FullContainerName&quot;, id: 96, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node2" class="node">
<title>100</title>
<title>96</title>
<ellipse fill="none" stroke="black" cx="347.87" cy="-126" rx="85.49" ry="18"/>
<text text-anchor="middle" x="347.87" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Full container name.</text>
</g>
<!-- 99&#45;&gt;100 -->
<!-- 95&#45;&gt;96 -->
<g id="edge1" class="edge">
<title>99&#45;&gt;100</title>
<title>95&#45;&gt;96</title>
<path fill="none" stroke="black" d="M174.69,-86.76C206.55,-94.02 245,-102.78 277.47,-110.18"/>
<polygon fill="black" stroke="black" points="276.68,-113.59 287.21,-112.4 278.24,-106.77 276.68,-113.59"/>
</g>
<!-- 102 -->
<!-- name: &quot;Slot&quot;, typeName: &quot;&quot;, id: 102, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 98 -->
<!-- name: &quot;Slot&quot;, typeName: &quot;&quot;, id: 98, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node4" class="node">
<title>102</title>
<title>98</title>
<ellipse fill="none" stroke="black" cx="347.87" cy="-72" rx="27" ry="18"/>
<text text-anchor="middle" x="347.87" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Slot</text>
</g>
<!-- 99&#45;&gt;102 -->
<!-- 95&#45;&gt;98 -->
<g id="edge3" class="edge">
<title>99&#45;&gt;102</title>
<title>95&#45;&gt;98</title>
<path fill="none" stroke="black" d="M218.36,-72C251.03,-72 284.72,-72 309.41,-72"/>
<polygon fill="black" stroke="black" points="309.25,-75.5 319.25,-72 309.25,-68.5 309.25,-75.5"/>
</g>
<!-- 104 -->
<!-- name: &quot;Raw Id (32 bit signed)&quot;, typeName: &quot;&quot;, id: 104, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 100 -->
<!-- name: &quot;Raw Id (32 bit signed)&quot;, typeName: &quot;&quot;, id: 100, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node6" class="node">
<title>104</title>
<title>100</title>
<ellipse fill="none" stroke="black" cx="347.87" cy="-18" rx="93.98" ry="18"/>
<text text-anchor="middle" x="347.87" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Raw Id (32 bit signed)</text>
</g>
<!-- 99&#45;&gt;104 -->
<!-- 95&#45;&gt;100 -->
<g id="edge5" class="edge">
<title>99&#45;&gt;104</title>
<title>95&#45;&gt;100</title>
<path fill="none" stroke="black" d="M174.69,-57.24C205.7,-50.18 242.93,-41.69 274.84,-34.42"/>
<polygon fill="black" stroke="black" points="275.43,-37.87 284.4,-32.24 273.87,-31.05 275.43,-37.87"/>
</g>
<!-- 101 -->
<!-- name: &quot;FullContainerName&quot;, typeName: &quot;&quot;, id: 101, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 97 -->
<!-- name: &quot;FullContainerName&quot;, typeName: &quot;&quot;, id: 97, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>101</title>
<title>97</title>
<ellipse fill="none" stroke="black" cx="559.85" cy="-126" rx="82" ry="18"/>
<text text-anchor="middle" x="559.85" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">FullContainerName</text>
</g>
<!-- 100&#45;&gt;101 -->
<!-- 96&#45;&gt;97 -->
<g id="edge2" class="edge">
<title>100&#45;&gt;101</title>
<title>96&#45;&gt;97</title>
<path fill="none" stroke="black" d="M433.67,-126C444.4,-126 455.42,-126 466.27,-126"/>
<polygon fill="black" stroke="black" points="465.97,-129.5 475.97,-126 465.97,-122.5 465.97,-129.5"/>
</g>
<!-- 103 -->
<!-- name: &quot;byte&quot;, typeName: &quot;&quot;, id: 103, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 99 -->
<!-- name: &quot;byte&quot;, typeName: &quot;&quot;, id: 99, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>103</title>
<title>99</title>
<ellipse fill="none" stroke="black" cx="559.85" cy="-72" rx="27" ry="18"/>
<text text-anchor="middle" x="559.85" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">byte</text>
</g>
<!-- 102&#45;&gt;103 -->
<!-- 98&#45;&gt;99 -->
<g id="edge4" class="edge">
<title>102&#45;&gt;103</title>
<title>98&#45;&gt;99</title>
<path fill="none" stroke="black" d="M375.04,-72C411.74,-72 478.73,-72 520.9,-72"/>
<polygon fill="black" stroke="black" points="520.84,-75.5 530.84,-72 520.84,-68.5 520.84,-75.5"/>
</g>
<!-- 105 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 105, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 101 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 101, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>105</title>
<title>101</title>
<ellipse fill="none" stroke="black" cx="559.85" cy="-18" rx="31.1" ry="18"/>
<text text-anchor="middle" x="559.85" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 104&#45;&gt;105 -->
<!-- 100&#45;&gt;101 -->
<g id="edge6" class="edge">
<title>104&#45;&gt;105</title>
<title>100&#45;&gt;101</title>
<path fill="none" stroke="black" d="M442.2,-18C468.44,-18 495.67,-18 517.22,-18"/>
<polygon fill="black" stroke="black" points="517.05,-21.5 527.05,-18 517.05,-14.5 517.05,-21.5"/>
</g>

Before

(image error) Size: 5.1 KiB

After

(image error) Size: 5.0 KiB

@ -95,7 +95,7 @@
<polygon fill="black" stroke="black" points="210.51,-93.23 218.82,-86.65 208.22,-86.61 210.51,-93.23"/>
</g>
<!-- 13 -->
<!-- name: &quot;Tick&quot;, typeName: &quot;&quot;, id: 13, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;Tick&quot;, typeName: &quot;PlayerInputTick&quot;, id: 13, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;If this packet is referring to the player or a client predicted vehicle they are in control of, this should be the most recently processed PlayerInputTick from their PlayerAuthInputPacket. Otherwise zero.&quot; -->
<g id="node14" class="node">
<title>13</title>
<ellipse fill="none" stroke="black" cx="279.01" cy="-18" rx="27.61" ry="18"/>
@ -186,17 +186,17 @@
<polygon fill="black" stroke="black" points="435.66,-75.5 445.66,-72 435.66,-68.5 435.66,-75.5"/>
</g>
<!-- 14 -->
<!-- name: &quot;unsigned int64&quot;, typeName: &quot;&quot;, id: 14, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- name: &quot;PlayerInputTick&quot;, typeName: &quot;&quot;, id: 14, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node15" class="node">
<title>14</title>
<ellipse fill="none" stroke="black" cx="478.52" cy="-18" rx="64.04" ry="18"/>
<text text-anchor="middle" x="478.52" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">unsigned int64</text>
<ellipse fill="none" stroke="black" cx="478.52" cy="-18" rx="70.03" ry="18"/>
<text text-anchor="middle" x="478.52" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">PlayerInputTick</text>
</g>
<!-- 13&#45;&gt;14 -->
<g id="edge14" class="edge">
<title>13&#45;&gt;14</title>
<path fill="none" stroke="black" d="M307.06,-18C331.74,-18 369.38,-18 403.02,-18"/>
<polygon fill="black" stroke="black" points="402.73,-21.5 412.73,-18 402.73,-14.5 402.73,-21.5"/>
<path fill="none" stroke="black" d="M307.06,-18C330.31,-18 365.06,-18 397.13,-18"/>
<polygon fill="black" stroke="black" points="396.83,-21.5 406.83,-18 396.83,-14.5 396.83,-21.5"/>
</g>
</g>
</svg>

Before

(image error) Size: 10 KiB

After

(image error) Size: 11 KiB

@ -17,7 +17,7 @@
<text text-anchor="middle" x="111.94" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">MoveActorAbsolutePacket</text>
</g>
<!-- 1 -->
<!-- name: &quot;Move Data&quot;, typeName: &quot;MoveActorAbsoluteData&quot;, id: 1, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- name: &quot;Move Data&quot;, typeName: &quot;MoveActorAbsoluteData&quot;, id: 1, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;This is used in legacy client authoritative movement mode to move a client predicted vehicle that the client is in control of. In any other case this is client bound for normal actor motion updates.&quot; -->
<g id="node2" class="node">
<title>1</title>
<ellipse fill="none" stroke="black" cx="311.45" cy="-18" rx="51.56" ry="18"/>

Before

(image error) Size: 2.4 KiB

After

(image error) Size: 2.6 KiB

@ -4,11 +4,11 @@
<!-- Generated by graphviz version 11.0.0 (20240428.1522)
-->
<!-- Title: MovePlayerPacket Pages: 1 -->
<svg width="1059pt" height="584pt"
viewBox="0.00 0.00 1059.30 584.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="1053pt" height="584pt"
viewBox="0.00 0.00 1053.31 584.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 580)">
<title>MovePlayerPacket</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-580 1055.3,-580 1055.3,4 -4,4"/>
<polygon fill="white" stroke="none" points="-4,4 -4,-580 1049.31,-580 1049.31,4 -4,4"/>
<!-- 0 -->
<!-- name: &quot;MovePlayerPacket&quot;, typeName: &quot;&quot;, id: 0, branchId: 19, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
@ -17,7 +17,7 @@
<text text-anchor="middle" x="80.01" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">MovePlayerPacket</text>
</g>
<!-- 1 -->
<!-- name: &quot;Player Runtime ID&quot;, typeName: &quot;ActorRuntimeID&quot;, id: 1, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- name: &quot;Player Runtime ID&quot;, typeName: &quot;ActorRuntimeID&quot;, id: 1, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;If server&#45;bound, this is always the id of the sending player. If client&#45;bound, the target player.&quot; -->
<g id="node2" class="node">
<title>1</title>
<ellipse fill="none" stroke="black" cx="578.27" cy="-549" rx="79.01" ry="18"/>
@ -30,7 +30,7 @@
<polygon fill="black" stroke="black" points="497.78,-562.31 507.46,-558.01 497.21,-555.33 497.78,-562.31"/>
</g>
<!-- 3 -->
<!-- name: &quot;Position&quot;, typeName: &quot;Vec3&quot;, id: 3, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- name: &quot;Position&quot;, typeName: &quot;Vec3&quot;, id: 3, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;The predicted world space position of the player after movement simulation this tick. The server authoritative equivalent of this is PlayerAuthInputPacket::mPos&quot; -->
<g id="node4" class="node">
<title>3</title>
<ellipse fill="none" stroke="black" cx="778.77" cy="-500" rx="41.08" ry="18"/>
@ -43,7 +43,7 @@
<polygon fill="black" stroke="black" points="726.81,-507.52 736.57,-503.4 726.37,-500.54 726.81,-507.52"/>
</g>
<!-- 5 -->
<!-- name: &quot;Rotation&quot;, typeName: &quot;Vec2&quot;, id: 5, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- name: &quot;Rotation&quot;, typeName: &quot;Vec2&quot;, id: 5, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;Rotation in degrees of the direction they should look, separate from their body orientation. The server authoritative equivalent of this is PlayerAuthInputPacket::mRot&quot; -->
<g id="node6" class="node">
<title>5</title>
<ellipse fill="none" stroke="black" cx="578.27" cy="-443" rx="42.58" ry="18"/>
@ -56,7 +56,7 @@
<polygon fill="black" stroke="black" points="523.81,-447.54 533.8,-444 523.79,-440.54 523.81,-447.54"/>
</g>
<!-- 7 -->
<!-- name: &quot;Y&#45;Head Rotation&quot;, typeName: &quot;&quot;, id: 7, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;Y&#45;Head Rotation&quot;, typeName: &quot;&quot;, id: 7, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;Rotation in degrees of the head. Almost always matches Y rotation. The server authoritative equivalent of this is PlayerAuthInputPacket::mYHeadRot&quot; -->
<g id="node8" class="node">
<title>7</title>
<ellipse fill="none" stroke="black" cx="778.77" cy="-392" rx="74.02" ry="18"/>
@ -69,7 +69,7 @@
<polygon fill="black" stroke="black" points="693.9,-391.88 704.05,-388.84 694.22,-384.89 693.9,-391.88"/>
</g>
<!-- 9 -->
<!-- name: &quot;Position Mode&quot;, typeName: &quot;&quot;, id: 9, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;Position Mode&quot;, typeName: &quot;&quot;, id: 9, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;Determines how the client will behave when receiving this, see the enum for details. When sent to the server this is always &#39;Normal&#39; except when in a vehicle then it&#39;s &#39;OnlyHeadRot&#39;.&quot; -->
<g id="node10" class="node">
<title>9</title>
<ellipse fill="none" stroke="black" cx="578.27" cy="-342" rx="65.53" ry="18"/>
@ -82,7 +82,7 @@
<polygon fill="black" stroke="black" points="500.78,-345.5 510.78,-342 500.78,-338.5 500.78,-345.5"/>
</g>
<!-- 11 -->
<!-- name: &quot;On Ground&quot;, typeName: &quot;&quot;, id: 11, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;On Ground&quot;, typeName: &quot;&quot;, id: 11, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;For client bound packets this should have little meaning as it will be reset by the client every frame. For server bound it is true if the player is currently touching the ground. This is indicated by physics trying to move the player down and being stopped by collision. If the player falls freely or moves up it is cleared. If the player isn&#39;t affected by gravity this will stay at whatever value it had. The server authoritative near&#45;equivalent of this is PlayerAuthInputPacket::InputData::VerticalCollision&quot; -->
<g id="node12" class="node">
<title>11</title>
<ellipse fill="none" stroke="black" cx="329.64" cy="-294" rx="53.56" ry="18"/>
@ -95,7 +95,7 @@
<polygon fill="black" stroke="black" points="271.75,-308.59 280.9,-303.25 270.41,-301.72 271.75,-308.59"/>
</g>
<!-- 13 -->
<!-- name: &quot;Riding Runtime ID&quot;, typeName: &quot;ActorRuntimeID&quot;, id: 13, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- name: &quot;Riding Runtime ID&quot;, typeName: &quot;ActorRuntimeID&quot;, id: 13, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;If client bound this has no meaning. If server bound it is the vehicle the client is riding as specified by the last SetActorLinkPacket from the server. The server authoritative near&#45;equivalent is PlayerAuthInputPacket::mClientPredictedVehicle&quot; -->
<g id="node14" class="node">
<title>13</title>
<ellipse fill="none" stroke="black" cx="329.64" cy="-236" rx="80.5" ry="18"/>
@ -123,7 +123,7 @@
<polygon fill="black" stroke="black" points="208.46,-206.3 216.22,-199.1 205.66,-199.89 208.46,-206.3"/>
</g>
<!-- 23 -->
<!-- name: &quot;Tick&quot;, typeName: &quot;&quot;, id: 23, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;Should be the tick we last processed from PlayerAuthInputPacket or 0 if we&#39;re not doing server authoritative movement&quot; -->
<!-- name: &quot;Tick&quot;, typeName: &quot;PlayerInputTick&quot;, id: 23, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;If this packet is referring to the player or a client predicted vehicle they are in control of, this should be the most recently processed PlayerInputTick from their PlayerAuthInputPacket. Otherwise zero.&quot; -->
<g id="node24" class="node">
<title>23</title>
<ellipse fill="none" stroke="black" cx="329.64" cy="-72" rx="27.61" ry="18"/>
@ -139,92 +139,92 @@
<!-- name: &quot;ActorRuntimeID&quot;, typeName: &quot;&quot;, id: 2, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>2</title>
<ellipse fill="none" stroke="black" cx="975.78" cy="-558" rx="72.52" ry="18"/>
<text text-anchor="middle" x="975.78" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">ActorRuntimeID</text>
<ellipse fill="none" stroke="black" cx="972.79" cy="-558" rx="72.52" ry="18"/>
<text text-anchor="middle" x="972.79" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">ActorRuntimeID</text>
</g>
<!-- 1&#45;&gt;2 -->
<g id="edge2" class="edge">
<title>1&#45;&gt;2</title>
<path fill="none" stroke="black" d="M656.94,-550.77C724.7,-552.31 822.75,-554.54 891.99,-556.12"/>
<polygon fill="black" stroke="black" points="891.69,-559.61 901.76,-556.34 891.85,-552.61 891.69,-559.61"/>
<path fill="none" stroke="black" d="M657.29,-550.79C724.32,-552.33 820.68,-554.54 889.05,-556.1"/>
<polygon fill="black" stroke="black" points="888.6,-559.59 898.68,-556.32 888.76,-552.6 888.6,-559.59"/>
</g>
<!-- 4 -->
<!-- name: &quot;Vec3&quot;, typeName: &quot;&quot;, id: 4, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>4</title>
<ellipse fill="none" stroke="black" cx="975.78" cy="-504" rx="30.11" ry="18"/>
<text text-anchor="middle" x="975.78" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">Vec3</text>
<ellipse fill="none" stroke="black" cx="972.79" cy="-504" rx="30.11" ry="18"/>
<text text-anchor="middle" x="972.79" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">Vec3</text>
</g>
<!-- 3&#45;&gt;4 -->
<g id="edge4" class="edge">
<title>3&#45;&gt;4</title>
<path fill="none" stroke="black" d="M820.18,-500.83C853.51,-501.51 900.59,-502.48 934.02,-503.16"/>
<polygon fill="black" stroke="black" points="933.64,-506.66 943.71,-503.36 933.79,-499.66 933.64,-506.66"/>
<path fill="none" stroke="black" d="M820.02,-500.84C852.54,-501.52 898.12,-502.47 930.82,-503.15"/>
<polygon fill="black" stroke="black" points="930.66,-506.64 940.73,-503.35 930.8,-499.65 930.66,-506.64"/>
</g>
<!-- 6 -->
<!-- name: &quot;Vec2&quot;, typeName: &quot;&quot;, id: 6, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>6</title>
<ellipse fill="none" stroke="black" cx="975.78" cy="-450" rx="30.11" ry="18"/>
<text text-anchor="middle" x="975.78" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">Vec2</text>
<ellipse fill="none" stroke="black" cx="972.79" cy="-450" rx="30.11" ry="18"/>
<text text-anchor="middle" x="972.79" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">Vec2</text>
</g>
<!-- 5&#45;&gt;6 -->
<g id="edge6" class="edge">
<title>5&#45;&gt;6</title>
<path fill="none" stroke="black" d="M621.22,-443.74C697.56,-445.09 858.24,-447.94 933.83,-449.28"/>
<polygon fill="black" stroke="black" points="933.63,-452.77 943.69,-449.45 933.75,-445.77 933.63,-452.77"/>
<path fill="none" stroke="black" d="M621.28,-443.75C697.12,-445.1 855.98,-447.93 930.96,-449.27"/>
<polygon fill="black" stroke="black" points="930.67,-452.77 940.73,-449.45 930.79,-445.77 930.67,-452.77"/>
</g>
<!-- 8 -->
<!-- name: &quot;float&quot;, typeName: &quot;&quot;, id: 8, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node9" class="node">
<title>8</title>
<ellipse fill="none" stroke="black" cx="975.78" cy="-396" rx="27.11" ry="18"/>
<text text-anchor="middle" x="975.78" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">float</text>
<ellipse fill="none" stroke="black" cx="972.79" cy="-396" rx="27.11" ry="18"/>
<text text-anchor="middle" x="972.79" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">float</text>
</g>
<!-- 7&#45;&gt;8 -->
<g id="edge8" class="edge">
<title>7&#45;&gt;8</title>
<path fill="none" stroke="black" d="M852.94,-393.5C881.6,-394.09 913.26,-394.74 937.12,-395.23"/>
<polygon fill="black" stroke="black" points="936.91,-398.72 946.98,-395.43 937.06,-391.73 936.91,-398.72"/>
<path fill="none" stroke="black" d="M852.91,-393.52C880.53,-394.1 910.83,-394.73 933.92,-395.21"/>
<polygon fill="black" stroke="black" points="933.71,-398.71 943.78,-395.42 933.85,-391.71 933.71,-398.71"/>
</g>
<!-- 10 -->
<!-- name: &quot;byte&quot;, typeName: &quot;&quot;, id: 10, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node11" class="node">
<title>10</title>
<ellipse fill="none" stroke="black" cx="975.78" cy="-342" rx="27" ry="18"/>
<text text-anchor="middle" x="975.78" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">byte</text>
<ellipse fill="none" stroke="black" cx="972.79" cy="-342" rx="27" ry="18"/>
<text text-anchor="middle" x="972.79" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">byte</text>
</g>
<!-- 9&#45;&gt;10 -->
<g id="edge10" class="edge">
<title>9&#45;&gt;10</title>
<path fill="none" stroke="black" d="M644.14,-342C727.66,-342 870.04,-342 937.38,-342"/>
<polygon fill="black" stroke="black" points="937.16,-345.5 947.16,-342 937.16,-338.5 937.16,-345.5"/>
<path fill="none" stroke="black" d="M644.09,-342C726.87,-342 867.39,-342 934.26,-342"/>
<polygon fill="black" stroke="black" points="933.97,-345.5 943.97,-342 933.97,-338.5 933.97,-345.5"/>
</g>
<!-- 12 -->
<!-- name: &quot;bool&quot;, typeName: &quot;&quot;, id: 12, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node13" class="node">
<title>12</title>
<ellipse fill="none" stroke="black" cx="975.78" cy="-288" rx="27.61" ry="18"/>
<text text-anchor="middle" x="975.78" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">bool</text>
<ellipse fill="none" stroke="black" cx="972.79" cy="-288" rx="27.61" ry="18"/>
<text text-anchor="middle" x="972.79" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">bool</text>
</g>
<!-- 11&#45;&gt;12 -->
<g id="edge12" class="edge">
<title>11&#45;&gt;12</title>
<path fill="none" stroke="black" d="M383.62,-293.51C509.95,-292.33 826.49,-289.38 936.44,-288.36"/>
<polygon fill="black" stroke="black" points="936.43,-291.86 946.4,-288.26 936.36,-284.86 936.43,-291.86"/>
<path fill="none" stroke="black" d="M383.65,-293.5C509.44,-292.33 823.62,-289.39 933.29,-288.36"/>
<polygon fill="black" stroke="black" points="933.26,-291.86 943.22,-288.27 933.19,-284.86 933.26,-291.86"/>
</g>
<!-- 14 -->
<!-- name: &quot;ActorRuntimeID&quot;, typeName: &quot;&quot;, id: 14, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node15" class="node">
<title>14</title>
<ellipse fill="none" stroke="black" cx="975.78" cy="-234" rx="72.52" ry="18"/>
<text text-anchor="middle" x="975.78" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">ActorRuntimeID</text>
<ellipse fill="none" stroke="black" cx="972.79" cy="-234" rx="72.52" ry="18"/>
<text text-anchor="middle" x="972.79" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">ActorRuntimeID</text>
</g>
<!-- 13&#45;&gt;14 -->
<g id="edge14" class="edge">
<title>13&#45;&gt;14</title>
<path fill="none" stroke="black" d="M410.59,-235.75C533.28,-235.37 766.82,-234.65 891.49,-234.26"/>
<polygon fill="black" stroke="black" points="891.34,-237.76 901.32,-234.23 891.31,-230.76 891.34,-237.76"/>
<path fill="none" stroke="black" d="M410.54,-235.75C532.61,-235.37 764.4,-234.65 888.48,-234.26"/>
<polygon fill="black" stroke="black" points="888.28,-237.76 898.26,-234.23 888.25,-230.76 888.28,-237.76"/>
</g>
<!-- 16 -->
<!-- name: &quot;if (0)&quot;, typeName: &quot;&quot;, id: 16, branchId: 0, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
@ -256,17 +256,17 @@
<!-- name: &quot;[No Data]&quot;, typeName: &quot;&quot;, id: 17, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node18" class="node">
<title>17</title>
<ellipse fill="none" stroke="black" cx="975.78" cy="-180" rx="47.57" ry="18"/>
<text text-anchor="middle" x="975.78" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">[No Data]</text>
<ellipse fill="none" stroke="black" cx="972.79" cy="-180" rx="47.57" ry="18"/>
<text text-anchor="middle" x="972.79" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">[No Data]</text>
</g>
<!-- 16&#45;&gt;17 -->
<g id="edge17" class="edge">
<title>16&#45;&gt;17</title>
<path fill="none" stroke="black" d="M820.18,-180C848.1,-180 885.66,-180 916.77,-180"/>
<polygon fill="black" stroke="black" points="916.4,-183.5 926.4,-180 916.4,-176.5 916.4,-183.5"/>
<path fill="none" stroke="black" d="M820.02,-180C847.13,-180 883.32,-180 913.55,-180"/>
<polygon fill="black" stroke="black" points="913.31,-183.5 923.31,-180 913.31,-176.5 913.31,-183.5"/>
</g>
<!-- 19 -->
<!-- name: &quot;Teleportation Cause&quot;, typeName: &quot;&quot;, id: 19, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;Teleportation Cause&quot;, typeName: &quot;&quot;, id: 19, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;Always zero if server bound.&quot; -->
<g id="node20" class="node">
<title>19</title>
<ellipse fill="none" stroke="black" cx="778.77" cy="-126" rx="85.49" ry="18"/>
@ -279,7 +279,7 @@
<polygon fill="black" stroke="black" points="681.42,-129.5 691.42,-126 681.42,-122.5 681.42,-129.5"/>
</g>
<!-- 21 -->
<!-- name: &quot;Source Actor Type&quot;, typeName: &quot;&quot;, id: 21, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;Source Actor Type&quot;, typeName: &quot;&quot;, id: 21, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;Always zero if server bound.&quot; -->
<g id="node22" class="node">
<title>21</title>
<ellipse fill="none" stroke="black" cx="778.77" cy="-72" rx="83" ry="18"/>
@ -295,40 +295,40 @@
<!-- name: &quot;int&quot;, typeName: &quot;&quot;, id: 20, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node21" class="node">
<title>20</title>
<ellipse fill="none" stroke="black" cx="975.78" cy="-126" rx="27" ry="18"/>
<text text-anchor="middle" x="975.78" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">int</text>
<ellipse fill="none" stroke="black" cx="972.79" cy="-126" rx="27" ry="18"/>
<text text-anchor="middle" x="972.79" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">int</text>
</g>
<!-- 19&#45;&gt;20 -->
<g id="edge20" class="edge">
<title>19&#45;&gt;20</title>
<path fill="none" stroke="black" d="M864.74,-126C889.96,-126 916.33,-126 936.92,-126"/>
<polygon fill="black" stroke="black" points="936.82,-129.5 946.82,-126 936.82,-122.5 936.82,-129.5"/>
<path fill="none" stroke="black" d="M864.55,-126C888.96,-126 914.35,-126 934.29,-126"/>
<polygon fill="black" stroke="black" points="934.14,-129.5 944.14,-126 934.14,-122.5 934.14,-129.5"/>
</g>
<!-- 22 -->
<!-- name: &quot;int&quot;, typeName: &quot;&quot;, id: 22, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node23" class="node">
<title>22</title>
<ellipse fill="none" stroke="black" cx="975.78" cy="-72" rx="27" ry="18"/>
<text text-anchor="middle" x="975.78" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">int</text>
<ellipse fill="none" stroke="black" cx="972.79" cy="-72" rx="27" ry="18"/>
<text text-anchor="middle" x="972.79" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">int</text>
</g>
<!-- 21&#45;&gt;22 -->
<g id="edge22" class="edge">
<title>21&#45;&gt;22</title>
<path fill="none" stroke="black" d="M862.19,-72C888.21,-72 915.69,-72 936.99,-72"/>
<polygon fill="black" stroke="black" points="936.94,-75.5 946.94,-72 936.94,-68.5 936.94,-75.5"/>
<path fill="none" stroke="black" d="M862.04,-72C887.05,-72 913.34,-72 933.92,-72"/>
<polygon fill="black" stroke="black" points="933.8,-75.5 943.8,-72 933.8,-68.5 933.8,-75.5"/>
</g>
<!-- 24 -->
<!-- name: &quot;unsigned varint64&quot;, typeName: &quot;&quot;, id: 24, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 27 -->
<!-- name: &quot;PlayerInputTick&quot;, typeName: &quot;&quot;, id: 27, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node25" class="node">
<title>24</title>
<ellipse fill="none" stroke="black" cx="975.78" cy="-18" rx="75.51" ry="18"/>
<text text-anchor="middle" x="975.78" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint64</text>
<title>27</title>
<ellipse fill="none" stroke="black" cx="972.79" cy="-18" rx="70.03" ry="18"/>
<text text-anchor="middle" x="972.79" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">PlayerInputTick</text>
</g>
<!-- 23&#45;&gt;24 -->
<!-- 23&#45;&gt;27 -->
<g id="edge24" class="edge">
<title>23&#45;&gt;24</title>
<path fill="none" stroke="black" d="M357.49,-69.75C448.4,-62.13 746.99,-37.1 892.97,-24.86"/>
<polygon fill="black" stroke="black" points="892.88,-28.38 902.55,-24.06 892.29,-21.4 892.88,-28.38"/>
<title>23&#45;&gt;27</title>
<path fill="none" stroke="black" d="M357.37,-69.75C448.69,-62.06 750.54,-36.63 894.33,-24.52"/>
<polygon fill="black" stroke="black" points="894.47,-28.02 904.14,-23.7 893.89,-21.05 894.47,-28.02"/>
</g>
</g>
</svg>

Before

(image error) Size: 18 KiB

After

(image error) Size: 20 KiB

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 11.0.0 (20240428.1522)
-->
<!-- Title: MovementEffectPacket Pages: 1 -->
<svg width="580pt" height="206pt"
viewBox="0.00 0.00 579.99 206.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 202)">
<title>MovementEffectPacket</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-202 575.99,-202 575.99,4 -4,4"/>
<!-- 0 -->
<!-- name: &quot;MovementEffectPacket&quot;, typeName: &quot;&quot;, id: 0, branchId: 318, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
<title>0</title>
<ellipse fill="none" stroke="black" cx="97.47" cy="-99" rx="97.47" ry="18"/>
<text text-anchor="middle" x="97.47" y="-93.58" font-family="Times New Roman,serif" font-size="14.00">MovementEffectPacket</text>
</g>
<!-- 1 -->
<!-- name: &quot;Target Runtime ID&quot;, typeName: &quot;ActorRuntimeID&quot;, id: 1, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node2" class="node">
<title>1</title>
<ellipse fill="none" stroke="black" cx="310.95" cy="-180" rx="80.01" ry="18"/>
<text text-anchor="middle" x="310.95" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Target Runtime ID</text>
</g>
<!-- 0&#45;&gt;1 -->
<g id="edge1" class="edge">
<title>0&#45;&gt;1</title>
<path fill="none" stroke="black" d="M137.94,-115.79C164.16,-126.77 199.42,-141.2 230.94,-153 238.32,-155.76 246.13,-158.57 253.86,-161.28"/>
<polygon fill="black" stroke="black" points="252.64,-164.56 263.23,-164.53 254.93,-157.95 252.64,-164.56"/>
</g>
<!-- 3 -->
<!-- name: &quot;Effect ID&quot;, typeName: &quot;&quot;, id: 3, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node4" class="node">
<title>3</title>
<ellipse fill="none" stroke="black" cx="310.95" cy="-126" rx="45.08" ry="18"/>
<text text-anchor="middle" x="310.95" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Effect ID</text>
</g>
<!-- 0&#45;&gt;3 -->
<g id="edge3" class="edge">
<title>0&#45;&gt;3</title>
<path fill="none" stroke="black" d="M178.72,-109.25C204.73,-112.57 232.92,-116.17 256.49,-119.17"/>
<polygon fill="black" stroke="black" points="255.79,-122.61 266.15,-120.41 256.68,-115.67 255.79,-122.61"/>
</g>
<!-- 5 -->
<!-- name: &quot;Effect Duration&quot;, typeName: &quot;&quot;, id: 5, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node6" class="node">
<title>5</title>
<ellipse fill="none" stroke="black" cx="310.95" cy="-72" rx="67.53" ry="18"/>
<text text-anchor="middle" x="310.95" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Effect Duration</text>
</g>
<!-- 0&#45;&gt;5 -->
<g id="edge5" class="edge">
<title>0&#45;&gt;5</title>
<path fill="none" stroke="black" d="M178.72,-88.75C198.26,-86.26 219.04,-83.61 238.16,-81.17"/>
<polygon fill="black" stroke="black" points="238.53,-84.65 248.01,-79.91 237.65,-77.7 238.53,-84.65"/>
</g>
<!-- 7 -->
<!-- name: &quot;Tick&quot;, typeName: &quot;PlayerInputTick&quot;, id: 7, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;If this packet is referring to the player or a client predicted vehicle they are in control of, this should be the most recently processed PlayerInputTick from their PlayerAuthInputPacket. Otherwise zero.&quot; -->
<g id="node8" class="node">
<title>7</title>
<ellipse fill="none" stroke="black" cx="310.95" cy="-18" rx="27.61" ry="18"/>
<text text-anchor="middle" x="310.95" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Tick</text>
</g>
<!-- 0&#45;&gt;7 -->
<g id="edge7" class="edge">
<title>0&#45;&gt;7</title>
<path fill="none" stroke="black" d="M137.94,-82.21C164.16,-71.23 199.42,-56.8 230.94,-45 245.29,-39.63 261.27,-34.09 275.08,-29.43"/>
<polygon fill="black" stroke="black" points="275.8,-32.88 284.18,-26.39 273.58,-26.24 275.8,-32.88"/>
</g>
<!-- 2 -->
<!-- name: &quot;ActorRuntimeID&quot;, typeName: &quot;&quot;, id: 2, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>2</title>
<ellipse fill="none" stroke="black" cx="499.47" cy="-180" rx="72.52" ry="18"/>
<text text-anchor="middle" x="499.47" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">ActorRuntimeID</text>
</g>
<!-- 1&#45;&gt;2 -->
<g id="edge2" class="edge">
<title>1&#45;&gt;2</title>
<path fill="none" stroke="black" d="M391.32,-180C399.18,-180 407.18,-180 415.08,-180"/>
<polygon fill="black" stroke="black" points="415.04,-183.5 425.04,-180 415.04,-176.5 415.04,-183.5"/>
</g>
<!-- 4 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 4, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>4</title>
<ellipse fill="none" stroke="black" cx="499.47" cy="-126" rx="31.1" ry="18"/>
<text text-anchor="middle" x="499.47" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 3&#45;&gt;4 -->
<g id="edge4" class="edge">
<title>3&#45;&gt;4</title>
<path fill="none" stroke="black" d="M356.15,-126C386.58,-126 426.76,-126 456.67,-126"/>
<polygon fill="black" stroke="black" points="456.47,-129.5 466.47,-126 456.47,-122.5 456.47,-129.5"/>
</g>
<!-- 6 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 6, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>6</title>
<ellipse fill="none" stroke="black" cx="499.47" cy="-72" rx="31.1" ry="18"/>
<text text-anchor="middle" x="499.47" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 5&#45;&gt;6 -->
<g id="edge6" class="edge">
<title>5&#45;&gt;6</title>
<path fill="none" stroke="black" d="M378.76,-72C404.75,-72 433.73,-72 456.67,-72"/>
<polygon fill="black" stroke="black" points="456.55,-75.5 466.55,-72 456.55,-68.5 456.55,-75.5"/>
</g>
<!-- 8 -->
<!-- name: &quot;PlayerInputTick&quot;, typeName: &quot;&quot;, id: 8, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node9" class="node">
<title>8</title>
<ellipse fill="none" stroke="black" cx="499.47" cy="-18" rx="70.03" ry="18"/>
<text text-anchor="middle" x="499.47" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">PlayerInputTick</text>
</g>
<!-- 7&#45;&gt;8 -->
<g id="edge8" class="edge">
<title>7&#45;&gt;8</title>
<path fill="none" stroke="black" d="M338.67,-18C359.48,-18 389.51,-18 417.94,-18"/>
<polygon fill="black" stroke="black" points="417.63,-21.5 427.63,-18 417.63,-14.5 417.63,-21.5"/>
</g>
</g>
</svg>

After

(image error) Size: 6.6 KiB

@ -9,584 +9,584 @@
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 958)">
<title>PackedItemUseLegacyInventoryTransaction</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-958 2174.96,-958 2174.96,4 -4,4"/>
<!-- 32 -->
<!-- name: &quot;PackedItemUseLegacyInventoryTransaction&quot;, typeName: &quot;&quot;, id: 32, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 28 -->
<!-- name: &quot;PackedItemUseLegacyInventoryTransaction&quot;, typeName: &quot;&quot;, id: 28, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
<title>32</title>
<title>28</title>
<ellipse fill="none" stroke="black" cx="175.31" cy="-342" rx="175.31" ry="18"/>
<text text-anchor="middle" x="175.31" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">PackedItemUseLegacyInventoryTransaction</text>
</g>
<!-- 33 -->
<!-- name: &quot;ID&quot;, typeName: &quot;TypedClientNetId&lt;struct ItemStackLegacyRequestIdTag,int,0&gt;&quot;, id: 33, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 29 -->
<!-- name: &quot;ID&quot;, typeName: &quot;TypedClientNetId&lt;struct ItemStackLegacyRequestIdTag,int,0&gt;&quot;, id: 29, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node2" class="node">
<title>33</title>
<title>29</title>
<ellipse fill="none" stroke="black" cx="871.63" cy="-929" rx="27" ry="18"/>
<text text-anchor="middle" x="871.63" y="-923.58" font-family="Times New Roman,serif" font-size="14.00">ID</text>
</g>
<!-- 32&#45;&gt;33 -->
<!-- 28&#45;&gt;29 -->
<g id="edge1" class="edge">
<title>32&#45;&gt;33</title>
<title>28&#45;&gt;29</title>
<path fill="none" stroke="black" d="M178.5,-360.34C188.04,-432.14 232.8,-696.68 386.63,-828 518.79,-940.83 744.6,-938.37 833.3,-932.4"/>
<polygon fill="black" stroke="black" points="833.41,-935.9 843.13,-931.68 832.9,-928.92 833.41,-935.9"/>
</g>
<!-- 38 -->
<!-- name: &quot;Dependency on &#39;valid ID&#39;&quot;, typeName: &quot;&quot;, id: 38, branchId: 0, recurseId: &#45;1, attributes: 2, notes: &quot;&quot; -->
<!-- 34 -->
<!-- name: &quot;Dependency on &#39;valid ID&#39;&quot;, typeName: &quot;&quot;, id: 34, branchId: 0, recurseId: &#45;1, attributes: 2, notes: &quot;&quot; -->
<g id="node4" class="node">
<title>38</title>
<title>34</title>
<polygon fill="none" stroke="black" points="562.46,-819 410.71,-819 410.71,-783 568.46,-783 568.46,-813 562.46,-819"/>
<polyline fill="none" stroke="black" points="562.46,-819 562.46,-813"/>
<polyline fill="none" stroke="black" points="568.46,-813 562.46,-813"/>
<text text-anchor="middle" x="489.59" y="-795.58" font-family="Times New Roman,serif" font-size="14.00">Dependency on &#39;valid ID&#39;</text>
</g>
<!-- 32&#45;&gt;38 -->
<!-- 28&#45;&gt;34 -->
<g id="edge3" class="edge">
<title>32&#45;&gt;38</title>
<title>28&#45;&gt;34</title>
<path fill="none" stroke="black" d="M188.75,-360.28C236.98,-431.17 411.87,-688.23 469.8,-773.39"/>
<polygon fill="black" stroke="black" points="466.75,-775.12 475.27,-781.42 472.53,-771.18 466.75,-775.12"/>
</g>
<!-- 54 -->
<!-- name: &quot;Actions&quot;, typeName: &quot;&quot;, id: 54, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<!-- 50 -->
<!-- name: &quot;Actions&quot;, typeName: &quot;&quot;, id: 50, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<g id="node20" class="node">
<title>54</title>
<title>50</title>
<ellipse fill="none" stroke="black" cx="1249.18" cy="-558" rx="39.59" ry="18"/>
<text text-anchor="middle" x="1249.18" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">Actions</text>
</g>
<!-- 32&#45;&gt;54 -->
<!-- 28&#45;&gt;50 -->
<g id="edge19" class="edge">
<title>32&#45;&gt;54</title>
<title>28&#45;&gt;50</title>
<path fill="none" stroke="black" d="M190.78,-360.42C221.87,-398.46 299.38,-485.22 386.63,-522 514.29,-575.81 558.54,-550 697.07,-550 697.07,-550 697.07,-550 872.63,-550 989.08,-550 1125.79,-553.89 1197.84,-556.25"/>
<polygon fill="black" stroke="black" points="1197.64,-559.74 1207.75,-556.57 1197.87,-552.75 1197.64,-559.74"/>
</g>
<!-- 60 -->
<!-- name: &quot;Action Type&quot;, typeName: &quot;&quot;, id: 60, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 56 -->
<!-- name: &quot;Action Type&quot;, typeName: &quot;&quot;, id: 56, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node26" class="node">
<title>60</title>
<title>56</title>
<ellipse fill="none" stroke="black" cx="489.59" cy="-495" rx="57.55" ry="18"/>
<text text-anchor="middle" x="489.59" y="-489.57" font-family="Times New Roman,serif" font-size="14.00">Action Type</text>
</g>
<!-- 32&#45;&gt;60 -->
<!-- 28&#45;&gt;56 -->
<g id="edge25" class="edge">
<title>32&#45;&gt;60</title>
<title>28&#45;&gt;56</title>
<path fill="none" stroke="black" d="M206.67,-360.1C246.98,-383.75 320.78,-425.72 386.63,-456 403.44,-463.73 422.25,-471.23 439.1,-477.56"/>
<polygon fill="black" stroke="black" points="437.83,-480.83 448.42,-481.02 440.26,-474.26 437.83,-480.83"/>
</g>
<!-- 62 -->
<!-- name: &quot;Trigger Type&quot;, typeName: &quot;&quot;, id: 62, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;PlayerInput if it&#39;s a direct result from a player&#39;s initial button input, SimulationTick if the player is holding down the input button started from a previous tick.&quot; -->
<!-- 58 -->
<!-- name: &quot;Trigger Type&quot;, typeName: &quot;&quot;, id: 58, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;PlayerInput if it&#39;s a direct result from a player&#39;s initial button input, SimulationTick if the player is holding down the input button started from a previous tick.&quot; -->
<g id="node28" class="node">
<title>62</title>
<title>58</title>
<ellipse fill="none" stroke="black" cx="1249.18" cy="-446" rx="59.55" ry="18"/>
<text text-anchor="middle" x="1249.18" y="-440.57" font-family="Times New Roman,serif" font-size="14.00">Trigger Type</text>
</g>
<!-- 32&#45;&gt;62 -->
<!-- 28&#45;&gt;58 -->
<g id="edge27" class="edge">
<title>32&#45;&gt;62</title>
<title>28&#45;&gt;58</title>
<path fill="none" stroke="black" d="M230.76,-359.53C324.81,-388.21 524.23,-442 697.07,-442 697.07,-442 697.07,-442 872.63,-442 979.15,-442 1102.65,-443.63 1178.09,-444.81"/>
<polygon fill="black" stroke="black" points="1177.75,-448.3 1187.8,-444.96 1177.86,-441.3 1177.75,-448.3"/>
</g>
<!-- 64 -->
<!-- name: &quot;Position&quot;, typeName: &quot;NetworkBlockPosition&quot;, id: 64, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 60 -->
<!-- name: &quot;Position&quot;, typeName: &quot;NetworkBlockPosition&quot;, id: 60, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node30" class="node">
<title>64</title>
<title>60</title>
<ellipse fill="none" stroke="black" cx="1047.18" cy="-394" rx="41.08" ry="18"/>
<text text-anchor="middle" x="1047.18" y="-388.57" font-family="Times New Roman,serif" font-size="14.00">Position</text>
</g>
<!-- 32&#45;&gt;64 -->
<!-- 28&#45;&gt;60 -->
<g id="edge29" class="edge">
<title>32&#45;&gt;64</title>
<title>28&#45;&gt;60</title>
<path fill="none" stroke="black" d="M323.39,-351.96C344.61,-353.35 366.17,-354.73 386.63,-356 613.28,-370.07 883.86,-385.11 994.85,-391.2"/>
<polygon fill="black" stroke="black" points="994.34,-394.68 1004.51,-391.73 994.72,-387.69 994.34,-394.68"/>
</g>
<!-- 66 -->
<!-- name: &quot;Face&quot;, typeName: &quot;&quot;, id: 66, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 62 -->
<!-- name: &quot;Face&quot;, typeName: &quot;&quot;, id: 62, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node32" class="node">
<title>66</title>
<title>62</title>
<ellipse fill="none" stroke="black" cx="871.63" cy="-342" rx="28.61" ry="18"/>
<text text-anchor="middle" x="871.63" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">Face</text>
</g>
<!-- 32&#45;&gt;66 -->
<!-- 28&#45;&gt;62 -->
<g id="edge31" class="edge">
<title>32&#45;&gt;66</title>
<title>28&#45;&gt;62</title>
<path fill="none" stroke="black" d="M351.07,-342C512.54,-342 740.7,-342 831.32,-342"/>
<polygon fill="black" stroke="black" points="831.16,-345.5 841.16,-342 831.16,-338.5 831.16,-345.5"/>
</g>
<!-- 68 -->
<!-- name: &quot;Slot&quot;, typeName: &quot;&quot;, id: 68, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 64 -->
<!-- name: &quot;Slot&quot;, typeName: &quot;&quot;, id: 64, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node34" class="node">
<title>68</title>
<title>64</title>
<ellipse fill="none" stroke="black" cx="698.07" cy="-294" rx="27" ry="18"/>
<text text-anchor="middle" x="698.07" y="-288.57" font-family="Times New Roman,serif" font-size="14.00">Slot</text>
</g>
<!-- 32&#45;&gt;68 -->
<!-- 28&#45;&gt;64 -->
<g id="edge33" class="edge">
<title>32&#45;&gt;68</title>
<title>28&#45;&gt;64</title>
<path fill="none" stroke="black" d="M307.72,-329.89C424.46,-319.13 587.47,-304.1 659.88,-297.43"/>
<polygon fill="black" stroke="black" points="659.96,-300.94 669.6,-296.53 659.32,-293.97 659.96,-300.94"/>
</g>
<!-- 70 -->
<!-- name: &quot;Item&quot;, typeName: &quot;NetworkItemStackDescriptor&quot;, id: 70, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 66 -->
<!-- name: &quot;Item&quot;, typeName: &quot;NetworkItemStackDescriptor&quot;, id: 66, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node36" class="node">
<title>70</title>
<title>66</title>
<ellipse fill="none" stroke="black" cx="1599.16" cy="-238" rx="27.11" ry="18"/>
<text text-anchor="middle" x="1599.16" y="-232.57" font-family="Times New Roman,serif" font-size="14.00">Item</text>
</g>
<!-- 32&#45;&gt;70 -->
<!-- 28&#45;&gt;66 -->
<g id="edge35" class="edge">
<title>32&#45;&gt;70</title>
<title>28&#45;&gt;66</title>
<path fill="none" stroke="black" d="M231.54,-324.59C325.94,-296.43 524.81,-244 697.07,-244 697.07,-244 697.07,-244 1250.18,-244 1363.14,-244 1496.7,-240.8 1560.53,-239.07"/>
<polygon fill="black" stroke="black" points="1560.56,-242.57 1570.46,-238.8 1560.37,-235.58 1560.56,-242.57"/>
</g>
<!-- 72 -->
<!-- name: &quot;From Position&quot;, typeName: &quot;Vec3&quot;, id: 72, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 68 -->
<!-- name: &quot;From Position&quot;, typeName: &quot;Vec3&quot;, id: 68, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;Where the player thinks they are when sending this&quot; -->
<g id="node38" class="node">
<title>72</title>
<title>68</title>
<ellipse fill="none" stroke="black" cx="1047.18" cy="-189" rx="64.04" ry="18"/>
<text text-anchor="middle" x="1047.18" y="-183.57" font-family="Times New Roman,serif" font-size="14.00">From Position</text>
</g>
<!-- 32&#45;&gt;72 -->
<!-- 28&#45;&gt;68 -->
<g id="edge37" class="edge">
<title>32&#45;&gt;72</title>
<title>28&#45;&gt;68</title>
<path fill="none" stroke="black" d="M201.65,-323.83C239.69,-297.67 314.78,-250.33 386.63,-230 593.51,-171.47 850.94,-176.66 974.05,-183.65"/>
<polygon fill="black" stroke="black" points="973.48,-187.12 983.67,-184.21 973.89,-180.13 973.48,-187.12"/>
</g>
<!-- 74 -->
<!-- name: &quot;Click Position&quot;, typeName: &quot;Vec3&quot;, id: 74, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 70 -->
<!-- name: &quot;Click Position&quot;, typeName: &quot;Vec3&quot;, id: 70, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node40" class="node">
<title>74</title>
<title>70</title>
<ellipse fill="none" stroke="black" cx="871.63" cy="-143" rx="63.04" ry="18"/>
<text text-anchor="middle" x="871.63" y="-137.57" font-family="Times New Roman,serif" font-size="14.00">Click Position</text>
</g>
<!-- 32&#45;&gt;74 -->
<!-- 28&#45;&gt;70 -->
<g id="edge39" class="edge">
<title>32&#45;&gt;74</title>
<title>28&#45;&gt;70</title>
<path fill="none" stroke="black" d="M193.94,-323.71C227.7,-290.03 305.38,-218.8 386.63,-188 525.39,-135.39 701.9,-133.83 798.82,-138"/>
<polygon fill="black" stroke="black" points="798.57,-141.49 808.72,-138.46 798.9,-134.5 798.57,-141.49"/>
</g>
<!-- 76 -->
<!-- name: &quot;Target Block Id&quot;, typeName: &quot;&quot;, id: 76, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 72 -->
<!-- name: &quot;Target Block Id&quot;, typeName: &quot;&quot;, id: 72, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node42" class="node">
<title>76</title>
<title>72</title>
<ellipse fill="none" stroke="black" cx="698.07" cy="-76" rx="69.53" ry="18"/>
<text text-anchor="middle" x="698.07" y="-70.58" font-family="Times New Roman,serif" font-size="14.00">Target Block Id</text>
</g>
<!-- 32&#45;&gt;76 -->
<!-- 28&#45;&gt;72 -->
<g id="edge41" class="edge">
<title>32&#45;&gt;76</title>
<title>28&#45;&gt;72</title>
<path fill="none" stroke="black" d="M188.89,-323.86C218.27,-283 295.87,-183.59 386.63,-136 458.86,-98.12 551.82,-84 617.12,-78.82"/>
<polygon fill="black" stroke="black" points="617.34,-82.31 627.06,-78.09 616.83,-75.33 617.34,-82.31"/>
</g>
<!-- 78 -->
<!-- name: &quot;Client Interact Prediction&quot;, typeName: &quot;&quot;, id: 78, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 74 -->
<!-- name: &quot;Client Interact Prediction&quot;, typeName: &quot;&quot;, id: 74, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node44" class="node">
<title>78</title>
<title>74</title>
<ellipse fill="none" stroke="black" cx="489.59" cy="-22" rx="102.96" ry="18"/>
<text text-anchor="middle" x="489.59" y="-16.57" font-family="Times New Roman,serif" font-size="14.00">Client Interact Prediction</text>
</g>
<!-- 32&#45;&gt;78 -->
<!-- 28&#45;&gt;74 -->
<g id="edge43" class="edge">
<title>32&#45;&gt;78</title>
<title>28&#45;&gt;74</title>
<path fill="none" stroke="black" d="M188.78,-323.68C219.15,-279.9 300.77,-167.1 386.63,-90 405.23,-73.29 428.24,-57.6 447.69,-45.5"/>
<polygon fill="black" stroke="black" points="449.49,-48.5 456.2,-40.31 445.84,-42.53 449.49,-48.5"/>
</g>
<!-- 37 -->
<!-- name: &quot;TypedClientNetId&lt;struct ItemStackLegacyRequestIdTag,int,0&gt;&quot;, typeName: &quot;&quot;, id: 37, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 33 -->
<!-- name: &quot;TypedClientNetId&lt;struct ItemStackLegacyRequestIdTag,int,0&gt;&quot;, typeName: &quot;&quot;, id: 33, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>37</title>
<title>33</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-936" rx="247.67" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-930.58" font-family="Times New Roman,serif" font-size="14.00">TypedClientNetId&lt;struct ItemStackLegacyRequestIdTag,int,0&gt;</text>
</g>
<!-- 33&#45;&gt;37 -->
<!-- 29&#45;&gt;33 -->
<g id="edge2" class="edge">
<title>33&#45;&gt;37</title>
<title>29&#45;&gt;33</title>
<path fill="none" stroke="black" d="M899.03,-929.83C960.34,-931.68 1117.11,-936 1248.18,-936 1248.18,-936 1248.18,-936 1452.18,-936 1520.8,-936 1595.04,-936 1663.82,-936"/>
<polygon fill="black" stroke="black" points="1663.75,-939.5 1673.75,-936 1663.75,-932.5 1663.75,-939.5"/>
</g>
<!-- 39 -->
<!-- name: &quot;if (0)&quot;, typeName: &quot;&quot;, id: 39, branchId: 0, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<!-- 35 -->
<!-- name: &quot;if (0)&quot;, typeName: &quot;&quot;, id: 35, branchId: 0, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>39</title>
<title>35</title>
<polygon fill="none" stroke="black" points="1599.16,-898 1558.7,-880 1599.16,-862 1639.62,-880 1599.16,-898"/>
<text text-anchor="middle" x="1599.16" y="-874.58" font-family="Times New Roman,serif" font-size="14.00">if (0)</text>
</g>
<!-- 38&#45;&gt;39 -->
<!-- 34&#45;&gt;35 -->
<g id="edge4" class="edge">
<title>38&#45;&gt;39</title>
<title>34&#45;&gt;35</title>
<path fill="none" stroke="black" d="M568.76,-818.11C671.07,-840.25 840.91,-876 870.63,-876 870.63,-876 870.63,-876 1250.18,-876 1356.27,-876 1480.54,-877.88 1548.14,-879.06"/>
<polygon fill="black" stroke="black" points="1547.71,-882.56 1557.77,-879.23 1547.84,-875.56 1547.71,-882.56"/>
</g>
<!-- 41 -->
<!-- name: &quot;if (1)&quot;, typeName: &quot;&quot;, id: 41, branchId: 1, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<!-- 37 -->
<!-- name: &quot;if (1)&quot;, typeName: &quot;&quot;, id: 37, branchId: 1, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>41</title>
<title>37</title>
<polygon fill="none" stroke="black" points="698.07,-819 657.61,-801 698.07,-783 738.53,-801 698.07,-819"/>
<text text-anchor="middle" x="698.07" y="-795.58" font-family="Times New Roman,serif" font-size="14.00">if (1)</text>
</g>
<!-- 38&#45;&gt;41 -->
<!-- 34&#45;&gt;37 -->
<g id="edge6" class="edge">
<title>38&#45;&gt;41</title>
<title>34&#45;&gt;37</title>
<path fill="none" stroke="black" d="M568.95,-801C594.52,-801 622.25,-801 645.36,-801"/>
<polygon fill="black" stroke="black" points="645.13,-804.5 655.13,-801 645.13,-797.5 645.13,-804.5"/>
</g>
<!-- 40 -->
<!-- name: &quot;[No Data]&quot;, typeName: &quot;&quot;, id: 40, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 36 -->
<!-- name: &quot;[No Data]&quot;, typeName: &quot;&quot;, id: 36, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node6" class="node">
<title>40</title>
<title>36</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-882" rx="47.57" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-876.58" font-family="Times New Roman,serif" font-size="14.00">[No Data]</text>
</g>
<!-- 39&#45;&gt;40 -->
<!-- 35&#45;&gt;36 -->
<g id="edge5" class="edge">
<title>39&#45;&gt;40</title>
<title>35&#45;&gt;36</title>
<path fill="none" stroke="black" d="M1639.98,-880.25C1696.2,-880.6 1799.18,-881.24 1864.01,-881.64"/>
<polygon fill="black" stroke="black" points="1863.72,-885.14 1873.74,-881.7 1863.76,-878.14 1863.72,-885.14"/>
</g>
<!-- 42 -->
<!-- name: &quot;Container Slots&quot;, typeName: &quot;&quot;, id: 42, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<!-- 38 -->
<!-- name: &quot;Container Slots&quot;, typeName: &quot;&quot;, id: 38, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<g id="node8" class="node">
<title>42</title>
<title>38</title>
<ellipse fill="none" stroke="black" cx="871.63" cy="-801" rx="68.03" ry="18"/>
<text text-anchor="middle" x="871.63" y="-795.58" font-family="Times New Roman,serif" font-size="14.00">Container Slots</text>
</g>
<!-- 41&#45;&gt;42 -->
<!-- 37&#45;&gt;38 -->
<g id="edge7" class="edge">
<title>41&#45;&gt;42</title>
<title>37&#45;&gt;38</title>
<path fill="none" stroke="black" d="M739.73,-801C755.33,-801 773.71,-801 791.69,-801"/>
<polygon fill="black" stroke="black" points="791.59,-804.5 801.59,-801 791.59,-797.5 791.59,-804.5"/>
</g>
<!-- 43 -->
<!-- name: &quot;Array Size&quot;, typeName: &quot;&quot;, id: 43, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 39 -->
<!-- name: &quot;Array Size&quot;, typeName: &quot;&quot;, id: 39, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node9" class="node">
<title>43</title>
<title>39</title>
<ellipse fill="none" stroke="black" cx="1047.18" cy="-828" rx="49.57" ry="18"/>
<text text-anchor="middle" x="1047.18" y="-822.58" font-family="Times New Roman,serif" font-size="14.00">Array Size</text>
</g>
<!-- 42&#45;&gt;43 -->
<!-- 38&#45;&gt;39 -->
<g id="edge8" class="edge">
<title>42&#45;&gt;43</title>
<title>38&#45;&gt;39</title>
<path fill="none" stroke="black" d="M930.9,-810.07C949.91,-813.02 970.97,-816.3 989.84,-819.23"/>
<polygon fill="black" stroke="black" points="989.04,-822.65 999.46,-820.73 990.12,-815.74 989.04,-822.65"/>
</g>
<!-- 45 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 45, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<!-- 41 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 41, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<g id="node11" class="node">
<title>45</title>
<title>41</title>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="1047.18" cy="-774" rx="71.52" ry="18"/>
<text text-anchor="middle" x="1047.18" y="-768.58" font-family="Times New Roman,serif" font-size="14.00">example element</text>
</g>
<!-- 42&#45;&gt;45 -->
<!-- 38&#45;&gt;41 -->
<g id="edge10" class="edge">
<title>42&#45;&gt;45</title>
<title>38&#45;&gt;41</title>
<path fill="none" stroke="black" d="M930.9,-791.93C944.73,-789.78 959.65,-787.46 974.02,-785.23"/>
<polygon fill="black" stroke="black" points="974.55,-788.69 983.9,-783.69 973.48,-781.77 974.55,-788.69"/>
</g>
<!-- 44 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 44, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 40 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 40, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node10" class="node">
<title>44</title>
<title>40</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-828" rx="66.53" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-822.58" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 43&#45;&gt;44 -->
<!-- 39&#45;&gt;40 -->
<g id="edge9" class="edge">
<title>43&#45;&gt;44</title>
<title>39&#45;&gt;40</title>
<path fill="none" stroke="black" d="M1097.05,-828C1241.75,-828 1668.86,-828 1845,-828"/>
<polygon fill="black" stroke="black" points="1844.97,-831.5 1854.97,-828 1844.97,-824.5 1844.97,-831.5"/>
</g>
<!-- 46 -->
<!-- name: &quot;Container Enum Name&quot;, typeName: &quot;&quot;, id: 46, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 42 -->
<!-- name: &quot;Container Enum Name&quot;, typeName: &quot;&quot;, id: 42, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node12" class="node">
<title>46</title>
<title>42</title>
<ellipse fill="none" stroke="black" cx="1249.18" cy="-774" rx="94.48" ry="18"/>
<text text-anchor="middle" x="1249.18" y="-768.58" font-family="Times New Roman,serif" font-size="14.00">Container Enum Name</text>
</g>
<!-- 45&#45;&gt;46 -->
<!-- 41&#45;&gt;42 -->
<g id="edge11" class="edge">
<title>45&#45;&gt;46</title>
<title>41&#45;&gt;42</title>
<path fill="none" stroke="black" d="M1118.98,-774C1126.77,-774 1134.82,-774 1142.91,-774"/>
<polygon fill="black" stroke="black" points="1142.85,-777.5 1152.85,-774 1142.85,-770.5 1142.85,-777.5"/>
</g>
<!-- 48 -->
<!-- name: &quot;Slots&quot;, typeName: &quot;&quot;, id: 48, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<!-- 44 -->
<!-- name: &quot;Slots&quot;, typeName: &quot;&quot;, id: 44, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<g id="node14" class="node">
<title>48</title>
<title>44</title>
<ellipse fill="none" stroke="black" cx="1249.18" cy="-720" rx="29.61" ry="18"/>
<text text-anchor="middle" x="1249.18" y="-714.58" font-family="Times New Roman,serif" font-size="14.00">Slots</text>
</g>
<!-- 45&#45;&gt;48 -->
<!-- 41&#45;&gt;44 -->
<g id="edge13" class="edge">
<title>45&#45;&gt;48</title>
<title>41&#45;&gt;44</title>
<path fill="none" stroke="black" d="M1097.11,-760.79C1132.18,-751.32 1178.7,-738.76 1210.81,-730.09"/>
<polygon fill="black" stroke="black" points="1211.32,-733.58 1220.06,-727.59 1209.49,-726.82 1211.32,-733.58"/>
</g>
<!-- 47 -->
<!-- name: &quot;byte&quot;, typeName: &quot;&quot;, id: 47, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 43 -->
<!-- name: &quot;byte&quot;, typeName: &quot;&quot;, id: 43, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node13" class="node">
<title>47</title>
<title>43</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-774" rx="27" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-768.58" font-family="Times New Roman,serif" font-size="14.00">byte</text>
</g>
<!-- 46&#45;&gt;47 -->
<!-- 42&#45;&gt;43 -->
<g id="edge12" class="edge">
<title>46&#45;&gt;47</title>
<title>42&#45;&gt;43</title>
<path fill="none" stroke="black" d="M1343.99,-774C1494.17,-774 1782.11,-774 1884.78,-774"/>
<polygon fill="black" stroke="black" points="1884.57,-777.5 1894.57,-774 1884.57,-770.5 1884.57,-777.5"/>
</g>
<!-- 49 -->
<!-- name: &quot;Array Size&quot;, typeName: &quot;&quot;, id: 49, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 45 -->
<!-- name: &quot;Array Size&quot;, typeName: &quot;&quot;, id: 45, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node15" class="node">
<title>49</title>
<title>45</title>
<ellipse fill="none" stroke="black" cx="1451.18" cy="-720" rx="49.57" ry="18"/>
<text text-anchor="middle" x="1451.18" y="-714.58" font-family="Times New Roman,serif" font-size="14.00">Array Size</text>
</g>
<!-- 48&#45;&gt;49 -->
<!-- 44&#45;&gt;45 -->
<g id="edge14" class="edge">
<title>48&#45;&gt;49</title>
<title>44&#45;&gt;45</title>
<path fill="none" stroke="black" d="M1279.26,-720C1308.23,-720 1353.54,-720 1390.24,-720"/>
<polygon fill="black" stroke="black" points="1389.81,-723.5 1399.81,-720 1389.81,-716.5 1389.81,-723.5"/>
</g>
<!-- 51 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 51, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<!-- 47 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 47, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<g id="node17" class="node">
<title>51</title>
<title>47</title>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="1451.18" cy="-666" rx="71.52" ry="18"/>
<text text-anchor="middle" x="1451.18" y="-660.58" font-family="Times New Roman,serif" font-size="14.00">example element</text>
</g>
<!-- 48&#45;&gt;51 -->
<!-- 44&#45;&gt;47 -->
<g id="edge16" class="edge">
<title>48&#45;&gt;51</title>
<title>44&#45;&gt;47</title>
<path fill="none" stroke="black" d="M1276.74,-712.83C1305.56,-705.05 1352.52,-692.37 1390.31,-682.17"/>
<polygon fill="black" stroke="black" points="1391,-685.6 1399.74,-679.62 1389.18,-678.85 1391,-685.6"/>
</g>
<!-- 50 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 50, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 46 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 46, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node16" class="node">
<title>50</title>
<title>46</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-720" rx="66.53" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-714.58" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 49&#45;&gt;50 -->
<!-- 45&#45;&gt;46 -->
<g id="edge15" class="edge">
<title>49&#45;&gt;50</title>
<title>45&#45;&gt;46</title>
<path fill="none" stroke="black" d="M1501.16,-720C1582.94,-720 1747.89,-720 1845.31,-720"/>
<polygon fill="black" stroke="black" points="1845.04,-723.5 1855.04,-720 1845.04,-716.5 1845.04,-723.5"/>
</g>
<!-- 52 -->
<!-- name: &quot;Slot&quot;, typeName: &quot;&quot;, id: 52, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 48 -->
<!-- name: &quot;Slot&quot;, typeName: &quot;&quot;, id: 48, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node18" class="node">
<title>52</title>
<title>48</title>
<ellipse fill="none" stroke="black" cx="1599.16" cy="-666" rx="27" ry="18"/>
<text text-anchor="middle" x="1599.16" y="-660.58" font-family="Times New Roman,serif" font-size="14.00">Slot</text>
</g>
<!-- 51&#45;&gt;52 -->
<!-- 47&#45;&gt;48 -->
<g id="edge17" class="edge">
<title>51&#45;&gt;52</title>
<title>47&#45;&gt;48</title>
<path fill="none" stroke="black" d="M1523.03,-666C1535.97,-666 1549,-666 1560.49,-666"/>
<polygon fill="black" stroke="black" points="1560.33,-669.5 1570.33,-666 1560.33,-662.5 1560.33,-669.5"/>
</g>
<!-- 53 -->
<!-- name: &quot;byte&quot;, typeName: &quot;&quot;, id: 53, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 49 -->
<!-- name: &quot;byte&quot;, typeName: &quot;&quot;, id: 49, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node19" class="node">
<title>53</title>
<title>49</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-666" rx="27" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-660.58" font-family="Times New Roman,serif" font-size="14.00">byte</text>
</g>
<!-- 52&#45;&gt;53 -->
<!-- 48&#45;&gt;49 -->
<g id="edge18" class="edge">
<title>52&#45;&gt;53</title>
<title>48&#45;&gt;49</title>
<path fill="none" stroke="black" d="M1626.52,-666C1683.53,-666 1818.45,-666 1884.52,-666"/>
<polygon fill="black" stroke="black" points="1884.5,-669.5 1894.5,-666 1884.5,-662.5 1884.5,-669.5"/>
</g>
<!-- 55 -->
<!-- name: &quot;Array Size&quot;, typeName: &quot;&quot;, id: 55, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 51 -->
<!-- name: &quot;Array Size&quot;, typeName: &quot;&quot;, id: 51, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node21" class="node">
<title>55</title>
<title>51</title>
<ellipse fill="none" stroke="black" cx="1451.18" cy="-612" rx="49.57" ry="18"/>
<text text-anchor="middle" x="1451.18" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">Array Size</text>
</g>
<!-- 54&#45;&gt;55 -->
<!-- 50&#45;&gt;51 -->
<g id="edge20" class="edge">
<title>54&#45;&gt;55</title>
<title>50&#45;&gt;51</title>
<path fill="none" stroke="black" d="M1283.66,-567.04C1315.4,-575.61 1363.51,-588.6 1399.87,-598.42"/>
<polygon fill="black" stroke="black" points="1398.72,-601.73 1409.29,-600.96 1400.55,-594.97 1398.72,-601.73"/>
</g>
<!-- 57 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 57, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<!-- 53 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 53, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<g id="node23" class="node">
<title>57</title>
<title>53</title>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="1451.18" cy="-558" rx="71.52" ry="18"/>
<text text-anchor="middle" x="1451.18" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">example element</text>
</g>
<!-- 54&#45;&gt;57 -->
<!-- 50&#45;&gt;53 -->
<g id="edge22" class="edge">
<title>54&#45;&gt;57</title>
<title>50&#45;&gt;53</title>
<path fill="none" stroke="black" d="M1289.22,-558C1311.7,-558 1340.83,-558 1368.11,-558"/>
<polygon fill="black" stroke="black" points="1367.75,-561.5 1377.75,-558 1367.75,-554.5 1367.75,-561.5"/>
</g>
<!-- 56 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 56, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 52 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 52, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node22" class="node">
<title>56</title>
<title>52</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-612" rx="66.53" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 55&#45;&gt;56 -->
<!-- 51&#45;&gt;52 -->
<g id="edge21" class="edge">
<title>55&#45;&gt;56</title>
<title>51&#45;&gt;52</title>
<path fill="none" stroke="black" d="M1501.16,-612C1582.94,-612 1747.89,-612 1845.31,-612"/>
<polygon fill="black" stroke="black" points="1845.04,-615.5 1855.04,-612 1845.04,-608.5 1845.04,-615.5"/>
</g>
<!-- 58 -->
<!-- name: &quot;Action&quot;, typeName: &quot;InventoryAction&quot;, id: 58, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 54 -->
<!-- name: &quot;Action&quot;, typeName: &quot;InventoryAction&quot;, id: 54, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node24" class="node">
<title>58</title>
<title>54</title>
<ellipse fill="none" stroke="black" cx="1599.16" cy="-558" rx="35.6" ry="18"/>
<text text-anchor="middle" x="1599.16" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">Action</text>
</g>
<!-- 57&#45;&gt;58 -->
<!-- 53&#45;&gt;54 -->
<g id="edge23" class="edge">
<title>57&#45;&gt;58</title>
<title>53&#45;&gt;54</title>
<path fill="none" stroke="black" d="M1523.03,-558C1532.84,-558 1542.7,-558 1551.9,-558"/>
<polygon fill="black" stroke="black" points="1551.64,-561.5 1561.64,-558 1551.64,-554.5 1551.64,-561.5"/>
</g>
<!-- 59 -->
<!-- name: &quot;InventoryAction&quot;, typeName: &quot;&quot;, id: 59, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 55 -->
<!-- name: &quot;InventoryAction&quot;, typeName: &quot;&quot;, id: 55, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node25" class="node">
<title>59</title>
<title>55</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-558" rx="71.02" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">InventoryAction</text>
</g>
<!-- 58&#45;&gt;59 -->
<!-- 54&#45;&gt;55 -->
<g id="edge24" class="edge">
<title>58&#45;&gt;59</title>
<title>54&#45;&gt;55</title>
<path fill="none" stroke="black" d="M1635.25,-558C1684.19,-558 1774.39,-558 1840.66,-558"/>
<polygon fill="black" stroke="black" points="1840.39,-561.5 1850.39,-558 1840.39,-554.5 1840.39,-561.5"/>
</g>
<!-- 61 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 61, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 57 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 57, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node27" class="node">
<title>61</title>
<title>57</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-504" rx="66.53" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 60&#45;&gt;61 -->
<!-- 56&#45;&gt;57 -->
<g id="edge26" class="edge">
<title>60&#45;&gt;61</title>
<title>56&#45;&gt;57</title>
<path fill="none" stroke="black" d="M546.92,-497.17C621.11,-499.83 755.63,-504 870.63,-504 870.63,-504 870.63,-504 1452.18,-504 1590.66,-504 1752.09,-504 1845.21,-504"/>
<polygon fill="black" stroke="black" points="1844.99,-507.5 1854.99,-504 1844.99,-500.5 1844.99,-507.5"/>
</g>
<!-- 63 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 63, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 59 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 59, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node29" class="node">
<title>63</title>
<title>59</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-450" rx="66.53" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 62&#45;&gt;63 -->
<!-- 58&#45;&gt;59 -->
<g id="edge28" class="edge">
<title>62&#45;&gt;63</title>
<title>58&#45;&gt;59</title>
<path fill="none" stroke="black" d="M1308.94,-446.35C1430.39,-447.07 1709.01,-448.73 1844.91,-449.54"/>
<polygon fill="black" stroke="black" points="1844.88,-453.04 1854.9,-449.6 1844.92,-446.04 1844.88,-453.04"/>
</g>
<!-- 65 -->
<!-- name: &quot;NetworkBlockPosition&quot;, typeName: &quot;&quot;, id: 65, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 61 -->
<!-- name: &quot;NetworkBlockPosition&quot;, typeName: &quot;&quot;, id: 61, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node31" class="node">
<title>65</title>
<title>61</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-396" rx="94.98" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">NetworkBlockPosition</text>
</g>
<!-- 64&#45;&gt;65 -->
<!-- 60&#45;&gt;61 -->
<g id="edge30" class="edge">
<title>64&#45;&gt;65</title>
<title>60&#45;&gt;61</title>
<path fill="none" stroke="black" d="M1088.59,-394.09C1217.64,-394.39 1622.74,-395.31 1816.72,-395.76"/>
<polygon fill="black" stroke="black" points="1816.54,-399.26 1826.54,-395.78 1816.55,-392.26 1816.54,-399.26"/>
</g>
<!-- 67 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 67, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 63 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 63, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node33" class="node">
<title>67</title>
<title>63</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-342" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 66&#45;&gt;67 -->
<!-- 62&#45;&gt;63 -->
<g id="edge32" class="edge">
<title>66&#45;&gt;67</title>
<title>62&#45;&gt;63</title>
<path fill="none" stroke="black" d="M900.43,-342C962.69,-342 1118.11,-342 1248.18,-342 1248.18,-342 1248.18,-342 1452.18,-342 1610.29,-342 1798.31,-342 1880.43,-342"/>
<polygon fill="black" stroke="black" points="1880.25,-345.5 1890.25,-342 1880.25,-338.5 1880.25,-345.5"/>
</g>
<!-- 69 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 69, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 65 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 65, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node35" class="node">
<title>69</title>
<title>65</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-288" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 68&#45;&gt;69 -->
<!-- 64&#45;&gt;65 -->
<g id="edge34" class="edge">
<title>68&#45;&gt;69</title>
<title>64&#45;&gt;65</title>
<path fill="none" stroke="black" d="M725.2,-293.24C783.03,-291.63 926.24,-288 1046.18,-288 1046.18,-288 1046.18,-288 1452.18,-288 1610.29,-288 1798.31,-288 1880.43,-288"/>
<polygon fill="black" stroke="black" points="1880.25,-291.5 1890.25,-288 1880.25,-284.5 1880.25,-291.5"/>
</g>
<!-- 71 -->
<!-- name: &quot;NetworkItemStackDescriptor&quot;, typeName: &quot;&quot;, id: 71, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 67 -->
<!-- name: &quot;NetworkItemStackDescriptor&quot;, typeName: &quot;&quot;, id: 67, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node37" class="node">
<title>71</title>
<title>67</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-234" rx="119.43" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">NetworkItemStackDescriptor</text>
</g>
<!-- 70&#45;&gt;71 -->
<!-- 66&#45;&gt;67 -->
<g id="edge36" class="edge">
<title>70&#45;&gt;71</title>
<title>66&#45;&gt;67</title>
<path fill="none" stroke="black" d="M1626.52,-237.67C1662.88,-237.22 1730.92,-236.38 1792.58,-235.61"/>
<polygon fill="black" stroke="black" points="1792.54,-239.11 1802.5,-235.49 1792.45,-232.11 1792.54,-239.11"/>
</g>
<!-- 73 -->
<!-- name: &quot;Vec3&quot;, typeName: &quot;&quot;, id: 73, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 69 -->
<!-- name: &quot;Vec3&quot;, typeName: &quot;&quot;, id: 69, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node39" class="node">
<title>73</title>
<title>69</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-180" rx="30.11" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Vec3</text>
</g>
<!-- 72&#45;&gt;73 -->
<!-- 68&#45;&gt;69 -->
<g id="edge38" class="edge">
<title>72&#45;&gt;73</title>
<title>68&#45;&gt;69</title>
<path fill="none" stroke="black" d="M1111.4,-188.35C1280.78,-186.61 1741.44,-181.86 1881.41,-180.42"/>
<polygon fill="black" stroke="black" points="1881.34,-183.92 1891.3,-180.32 1881.26,-176.92 1881.34,-183.92"/>
</g>
<!-- 75 -->
<!-- name: &quot;Vec3&quot;, typeName: &quot;&quot;, id: 75, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 71 -->
<!-- name: &quot;Vec3&quot;, typeName: &quot;&quot;, id: 71, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node41" class="node">
<title>75</title>
<title>71</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-126" rx="30.11" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Vec3</text>
</g>
<!-- 74&#45;&gt;75 -->
<!-- 70&#45;&gt;71 -->
<g id="edge40" class="edge">
<title>74&#45;&gt;75</title>
<title>70&#45;&gt;71</title>
<path fill="none" stroke="black" d="M933.08,-138.58C1007.26,-133.54 1136.9,-126 1248.18,-126 1248.18,-126 1248.18,-126 1452.18,-126 1610.9,-126 1799.77,-126 1881.39,-126"/>
<polygon fill="black" stroke="black" points="1881.35,-129.5 1891.35,-126 1881.35,-122.5 1881.35,-129.5"/>
</g>
<!-- 77 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 77, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 73 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 73, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node43" class="node">
<title>77</title>
<title>73</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-72" rx="66.53" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 76&#45;&gt;77 -->
<!-- 72&#45;&gt;73 -->
<g id="edge42" class="edge">
<title>76&#45;&gt;77</title>
<title>72&#45;&gt;73</title>
<path fill="none" stroke="black" d="M767.89,-74.74C837.93,-73.57 949.61,-72 1046.18,-72 1046.18,-72 1046.18,-72 1452.18,-72 1590.66,-72 1752.09,-72 1845.21,-72"/>
<polygon fill="black" stroke="black" points="1844.99,-75.5 1854.99,-72 1844.99,-68.5 1844.99,-75.5"/>
</g>
<!-- 79 -->
<!-- name: &quot;byte&quot;, typeName: &quot;&quot;, id: 79, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 75 -->
<!-- name: &quot;byte&quot;, typeName: &quot;&quot;, id: 75, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node45" class="node">
<title>79</title>
<title>75</title>
<ellipse fill="none" stroke="black" cx="1923.29" cy="-18" rx="27" ry="18"/>
<text text-anchor="middle" x="1923.29" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">byte</text>
</g>
<!-- 78&#45;&gt;79 -->
<!-- 74&#45;&gt;75 -->
<g id="edge44" class="edge">
<title>78&#45;&gt;79</title>
<title>74&#45;&gt;75</title>
<path fill="none" stroke="black" d="M592.61,-20.34C669.12,-19.24 776.44,-18 870.63,-18 870.63,-18 870.63,-18 1452.18,-18 1613.07,-18 1804.93,-18 1884.67,-18"/>
<polygon fill="black" stroke="black" points="1884.53,-21.5 1894.53,-18 1884.53,-14.5 1884.53,-21.5"/>
</g>

Before

(image error) Size: 33 KiB

After

(image error) Size: 33 KiB

@ -30,7 +30,7 @@
<polygon fill="black" stroke="black" points="220.73,-218.74 231.32,-219.01 223.21,-212.19 220.73,-218.74"/>
</g>
<!-- 3 -->
<!-- name: &quot;Action&quot;, typeName: &quot;&quot;, id: 3, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;Action&quot;, typeName: &quot;&quot;, id: 3, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;See enum table for use cases&quot; -->
<g id="node4" class="node">
<title>3</title>
<ellipse fill="none" stroke="black" cx="282" cy="-180" rx="35.6" ry="18"/>

Before

(image error) Size: 7.7 KiB

After

(image error) Size: 7.7 KiB

File diff suppressed because it is too large Load Diff

Before

(image error) Size: 56 KiB

After

(image error) Size: 55 KiB

@ -9,441 +9,441 @@
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 688)">
<title>PlayerBlockActionData</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-688 835.12,-688 835.12,4 -4,4"/>
<!-- 128 -->
<!-- name: &quot;PlayerBlockActionData&quot;, typeName: &quot;&quot;, id: 128, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 124 -->
<!-- name: &quot;PlayerBlockActionData&quot;, typeName: &quot;&quot;, id: 124, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
<title>128</title>
<title>124</title>
<ellipse fill="none" stroke="black" cx="97.47" cy="-396" rx="97.47" ry="18"/>
<text text-anchor="middle" x="97.47" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">PlayerBlockActionData</text>
</g>
<!-- 129 -->
<!-- name: &quot;Player Action Type&quot;, typeName: &quot;&quot;, id: 129, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 125 -->
<!-- name: &quot;Player Action Type&quot;, typeName: &quot;&quot;, id: 125, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node2" class="node">
<title>129</title>
<title>125</title>
<ellipse fill="none" stroke="black" cx="342.07" cy="-558" rx="83" ry="18"/>
<text text-anchor="middle" x="342.07" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">Player Action Type</text>
</g>
<!-- 128&#45;&gt;129 -->
<!-- 124&#45;&gt;125 -->
<g id="edge1" class="edge">
<title>128&#45;&gt;129</title>
<title>124&#45;&gt;125</title>
<path fill="none" stroke="black" d="M124.89,-413.65C168.76,-442.94 256.63,-501.61 305.76,-534.42"/>
<polygon fill="black" stroke="black" points="303.52,-537.14 313.78,-539.78 307.41,-531.32 303.52,-537.14"/>
</g>
<!-- 131 -->
<!-- name: &quot;Dependency on &#39;Player Action Type&#39;&quot;, typeName: &quot;&quot;, id: 131, branchId: 0, recurseId: &#45;1, attributes: 2, notes: &quot;&quot; -->
<!-- 127 -->
<!-- name: &quot;Dependency on &#39;Player Action Type&#39;&quot;, typeName: &quot;&quot;, id: 127, branchId: 0, recurseId: &#45;1, attributes: 2, notes: &quot;&quot; -->
<g id="node4" class="node">
<title>131</title>
<title>127</title>
<polygon fill="none" stroke="black" points="447.19,-387 230.94,-387 230.94,-351 453.19,-351 453.19,-381 447.19,-387"/>
<polyline fill="none" stroke="black" points="447.19,-387 447.19,-381"/>
<polyline fill="none" stroke="black" points="453.19,-381 447.19,-381"/>
<text text-anchor="middle" x="342.07" y="-363.57" font-family="Times New Roman,serif" font-size="14.00">Dependency on &#39;Player Action Type&#39;</text>
</g>
<!-- 128&#45;&gt;131 -->
<!-- 124&#45;&gt;127 -->
<g id="edge3" class="edge">
<title>128&#45;&gt;131</title>
<title>124&#45;&gt;127</title>
<path fill="none" stroke="black" d="M181.96,-386.71C194.15,-385.35 206.91,-383.93 219.66,-382.51"/>
<polygon fill="black" stroke="black" points="219.81,-386.02 229.36,-381.43 219.03,-379.06 219.81,-386.02"/>
</g>
<!-- 130 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 130, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 126 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 126, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>130</title>
<title>126</title>
<ellipse fill="none" stroke="black" cx="784.05" cy="-666" rx="31.1" ry="18"/>
<text text-anchor="middle" x="784.05" y="-660.58" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 129&#45;&gt;130 -->
<!-- 125&#45;&gt;126 -->
<g id="edge2" class="edge">
<title>129&#45;&gt;130</title>
<title>125&#45;&gt;126</title>
<path fill="none" stroke="black" d="M388.48,-573.21C442.76,-590.95 536.6,-620.24 618.81,-639 660.39,-648.49 708.62,-656.01 742.01,-660.68"/>
<polygon fill="black" stroke="black" points="741.29,-664.11 751.67,-662.01 742.24,-657.18 741.29,-664.11"/>
</g>
<!-- 132 -->
<!-- name: &quot;if (26)&quot;, typeName: &quot;&quot;, id: 132, branchId: 26, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<!-- 128 -->
<!-- name: &quot;if (26)&quot;, typeName: &quot;&quot;, id: 128, branchId: 26, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>132</title>
<title>128</title>
<polygon fill="none" stroke="black" points="536,-576 489.19,-558 536,-540 582.81,-558 536,-576"/>
<text text-anchor="middle" x="536" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">if (26)</text>
</g>
<!-- 131&#45;&gt;132 -->
<!-- 127&#45;&gt;128 -->
<g id="edge4" class="edge">
<title>131&#45;&gt;132</title>
<title>127&#45;&gt;128</title>
<path fill="none" stroke="black" d="M361.82,-387.47C397.95,-423.04 476.95,-500.83 514.45,-537.76"/>
<polygon fill="black" stroke="black" points="511.55,-539.82 521.13,-544.34 516.46,-534.83 511.55,-539.82"/>
</g>
<!-- 137 -->
<!-- name: &quot;if (0)&quot;, typeName: &quot;&quot;, id: 137, branchId: 0, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<!-- 133 -->
<!-- name: &quot;if (0)&quot;, typeName: &quot;&quot;, id: 133, branchId: 0, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<g id="node10" class="node">
<title>137</title>
<title>133</title>
<polygon fill="none" stroke="black" points="536,-468 495.54,-450 536,-432 576.46,-450 536,-468"/>
<text text-anchor="middle" x="536" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">if (0)</text>
</g>
<!-- 131&#45;&gt;137 -->
<!-- 127&#45;&gt;133 -->
<g id="edge9" class="edge">
<title>131&#45;&gt;137</title>
<title>127&#45;&gt;133</title>
<path fill="none" stroke="black" d="M386.62,-387.38C422.43,-402.49 472.3,-423.54 504.12,-436.97"/>
<polygon fill="black" stroke="black" points="502.6,-440.12 513.17,-440.79 505.32,-433.67 502.6,-440.12"/>
</g>
<!-- 142 -->
<!-- name: &quot;if (1)&quot;, typeName: &quot;&quot;, id: 142, branchId: 1, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<!-- 138 -->
<!-- name: &quot;if (1)&quot;, typeName: &quot;&quot;, id: 138, branchId: 1, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<g id="node15" class="node">
<title>142</title>
<title>138</title>
<polygon fill="none" stroke="black" points="536,-387 495.54,-369 536,-351 576.46,-369 536,-387"/>
<text text-anchor="middle" x="536" y="-363.57" font-family="Times New Roman,serif" font-size="14.00">if (1)</text>
</g>
<!-- 131&#45;&gt;142 -->
<!-- 127&#45;&gt;138 -->
<g id="edge14" class="edge">
<title>131&#45;&gt;142</title>
<title>127&#45;&gt;138</title>
<path fill="none" stroke="black" d="M453.6,-369C463.8,-369 473.77,-369 483.04,-369"/>
<polygon fill="black" stroke="black" points="482.86,-372.5 492.86,-369 482.86,-365.5 482.86,-372.5"/>
</g>
<!-- 147 -->
<!-- name: &quot;if (18)&quot;, typeName: &quot;&quot;, id: 147, branchId: 18, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<!-- 143 -->
<!-- name: &quot;if (18)&quot;, typeName: &quot;&quot;, id: 143, branchId: 18, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<g id="node20" class="node">
<title>147</title>
<title>143</title>
<polygon fill="none" stroke="black" points="536,-306 489.19,-288 536,-270 582.81,-288 536,-306"/>
<text text-anchor="middle" x="536" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">if (18)</text>
</g>
<!-- 131&#45;&gt;147 -->
<!-- 127&#45;&gt;143 -->
<g id="edge19" class="edge">
<title>131&#45;&gt;147</title>
<title>127&#45;&gt;143</title>
<path fill="none" stroke="black" d="M386.62,-350.62C421.64,-335.84 470.1,-315.39 501.98,-301.93"/>
<polygon fill="black" stroke="black" points="503.27,-305.19 511.12,-298.08 500.55,-298.74 503.27,-305.19"/>
</g>
<!-- 152 -->
<!-- name: &quot;if (27)&quot;, typeName: &quot;&quot;, id: 152, branchId: 27, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<!-- 148 -->
<!-- name: &quot;if (27)&quot;, typeName: &quot;&quot;, id: 148, branchId: 27, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<g id="node25" class="node">
<title>152</title>
<title>148</title>
<polygon fill="none" stroke="black" points="536,-198 489.19,-180 536,-162 582.81,-180 536,-198"/>
<text text-anchor="middle" x="536" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">if (27)</text>
</g>
<!-- 131&#45;&gt;152 -->
<!-- 127&#45;&gt;148 -->
<g id="edge24" class="edge">
<title>131&#45;&gt;152</title>
<title>127&#45;&gt;148</title>
<path fill="none" stroke="black" d="M361.82,-350.53C397.95,-314.96 476.95,-237.17 514.45,-200.24"/>
<polygon fill="black" stroke="black" points="516.46,-203.17 521.13,-193.66 511.55,-198.18 516.46,-203.17"/>
</g>
<!-- 157 -->
<!-- name: &quot;if (2)&quot;, typeName: &quot;&quot;, id: 157, branchId: 2, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<!-- 153 -->
<!-- name: &quot;if (2)&quot;, typeName: &quot;&quot;, id: 153, branchId: 2, recurseId: &#45;1, attributes: 4, notes: &quot;&quot; -->
<g id="node30" class="node">
<title>157</title>
<title>153</title>
<polygon fill="none" stroke="black" points="536,-90 495.54,-72 536,-54 576.46,-72 536,-90"/>
<text text-anchor="middle" x="536" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">if (2)</text>
</g>
<!-- 131&#45;&gt;157 -->
<!-- 127&#45;&gt;153 -->
<g id="edge29" class="edge">
<title>131&#45;&gt;157</title>
<title>127&#45;&gt;153</title>
<path fill="none" stroke="black" d="M354.78,-350.87C387.96,-299.53 482.54,-153.18 519.72,-95.64"/>
<polygon fill="black" stroke="black" points="522.66,-97.54 525.15,-87.24 516.78,-93.74 522.66,-97.54"/>
</g>
<!-- 133 -->
<!-- name: &quot;Position&quot;, typeName: &quot;BlockPos&quot;, id: 133, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 129 -->
<!-- name: &quot;Position&quot;, typeName: &quot;BlockPos&quot;, id: 129, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node6" class="node">
<title>133</title>
<title>129</title>
<ellipse fill="none" stroke="black" cx="659.9" cy="-612" rx="41.08" ry="18"/>
<text text-anchor="middle" x="659.9" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">Position</text>
</g>
<!-- 132&#45;&gt;133 -->
<!-- 128&#45;&gt;129 -->
<g id="edge5" class="edge">
<title>132&#45;&gt;133</title>
<title>128&#45;&gt;129</title>
<path fill="none" stroke="black" d="M558.79,-567.65C575.63,-575.11 599.37,-585.63 619.51,-594.55"/>
<polygon fill="black" stroke="black" points="618.01,-597.72 628.57,-598.57 620.85,-591.32 618.01,-597.72"/>
</g>
<!-- 135 -->
<!-- name: &quot;Facing&quot;, typeName: &quot;&quot;, id: 135, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 131 -->
<!-- name: &quot;Facing&quot;, typeName: &quot;&quot;, id: 131, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node8" class="node">
<title>135</title>
<title>131</title>
<ellipse fill="none" stroke="black" cx="659.9" cy="-558" rx="35.6" ry="18"/>
<text text-anchor="middle" x="659.9" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">Facing</text>
</g>
<!-- 132&#45;&gt;135 -->
<!-- 128&#45;&gt;131 -->
<g id="edge7" class="edge">
<title>132&#45;&gt;135</title>
<title>128&#45;&gt;131</title>
<path fill="none" stroke="black" d="M584.13,-558C593.46,-558 603.24,-558 612.54,-558"/>
<polygon fill="black" stroke="black" points="612.48,-561.5 622.48,-558 612.48,-554.5 612.48,-561.5"/>
</g>
<!-- 134 -->
<!-- name: &quot;BlockPos&quot;, typeName: &quot;&quot;, id: 134, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 130 -->
<!-- name: &quot;BlockPos&quot;, typeName: &quot;&quot;, id: 130, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>134</title>
<title>130</title>
<ellipse fill="none" stroke="black" cx="784.05" cy="-612" rx="47.07" ry="18"/>
<text text-anchor="middle" x="784.05" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">BlockPos</text>
</g>
<!-- 133&#45;&gt;134 -->
<!-- 129&#45;&gt;130 -->
<g id="edge6" class="edge">
<title>133&#45;&gt;134</title>
<title>129&#45;&gt;130</title>
<path fill="none" stroke="black" d="M701.23,-612C708.98,-612 717.23,-612 725.4,-612"/>
<polygon fill="black" stroke="black" points="725.32,-615.5 735.32,-612 725.32,-608.5 725.32,-615.5"/>
</g>
<!-- 136 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 136, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 132 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 132, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node9" class="node">
<title>136</title>
<title>132</title>
<ellipse fill="none" stroke="black" cx="784.05" cy="-558" rx="31.1" ry="18"/>
<text text-anchor="middle" x="784.05" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 135&#45;&gt;136 -->
<!-- 131&#45;&gt;132 -->
<g id="edge8" class="edge">
<title>135&#45;&gt;136</title>
<title>131&#45;&gt;132</title>
<path fill="none" stroke="black" d="M695.9,-558C710.03,-558 726.45,-558 741.21,-558"/>
<polygon fill="black" stroke="black" points="741.09,-561.5 751.09,-558 741.09,-554.5 741.09,-561.5"/>
</g>
<!-- 138 -->
<!-- name: &quot;Position&quot;, typeName: &quot;BlockPos&quot;, id: 138, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 134 -->
<!-- name: &quot;Position&quot;, typeName: &quot;BlockPos&quot;, id: 134, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node11" class="node">
<title>138</title>
<title>134</title>
<ellipse fill="none" stroke="black" cx="659.9" cy="-504" rx="41.08" ry="18"/>
<text text-anchor="middle" x="659.9" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">Position</text>
</g>
<!-- 137&#45;&gt;138 -->
<!-- 133&#45;&gt;134 -->
<g id="edge10" class="edge">
<title>137&#45;&gt;138</title>
<title>133&#45;&gt;134</title>
<path fill="none" stroke="black" d="M557.13,-458.92C574.06,-466.42 598.76,-477.36 619.59,-486.59"/>
<polygon fill="black" stroke="black" points="618.13,-489.77 628.69,-490.62 620.96,-483.37 618.13,-489.77"/>
</g>
<!-- 140 -->
<!-- name: &quot;Facing&quot;, typeName: &quot;&quot;, id: 140, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 136 -->
<!-- name: &quot;Facing&quot;, typeName: &quot;&quot;, id: 136, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node13" class="node">
<title>140</title>
<title>136</title>
<ellipse fill="none" stroke="black" cx="659.9" cy="-450" rx="35.6" ry="18"/>
<text text-anchor="middle" x="659.9" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">Facing</text>
</g>
<!-- 137&#45;&gt;140 -->
<!-- 133&#45;&gt;136 -->
<g id="edge12" class="edge">
<title>137&#45;&gt;140</title>
<title>133&#45;&gt;136</title>
<path fill="none" stroke="black" d="M577.59,-450C588.91,-450 601.3,-450 612.91,-450"/>
<polygon fill="black" stroke="black" points="612.68,-453.5 622.68,-450 612.68,-446.5 612.68,-453.5"/>
</g>
<!-- 139 -->
<!-- name: &quot;BlockPos&quot;, typeName: &quot;&quot;, id: 139, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 135 -->
<!-- name: &quot;BlockPos&quot;, typeName: &quot;&quot;, id: 135, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node12" class="node">
<title>139</title>
<title>135</title>
<ellipse fill="none" stroke="black" cx="784.05" cy="-504" rx="47.07" ry="18"/>
<text text-anchor="middle" x="784.05" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">BlockPos</text>
</g>
<!-- 138&#45;&gt;139 -->
<!-- 134&#45;&gt;135 -->
<g id="edge11" class="edge">
<title>138&#45;&gt;139</title>
<title>134&#45;&gt;135</title>
<path fill="none" stroke="black" d="M701.23,-504C708.98,-504 717.23,-504 725.4,-504"/>
<polygon fill="black" stroke="black" points="725.32,-507.5 735.32,-504 725.32,-500.5 725.32,-507.5"/>
</g>
<!-- 141 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 141, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 137 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 137, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node14" class="node">
<title>141</title>
<title>137</title>
<ellipse fill="none" stroke="black" cx="784.05" cy="-450" rx="31.1" ry="18"/>
<text text-anchor="middle" x="784.05" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 140&#45;&gt;141 -->
<!-- 136&#45;&gt;137 -->
<g id="edge13" class="edge">
<title>140&#45;&gt;141</title>
<title>136&#45;&gt;137</title>
<path fill="none" stroke="black" d="M695.9,-450C710.03,-450 726.45,-450 741.21,-450"/>
<polygon fill="black" stroke="black" points="741.09,-453.5 751.09,-450 741.09,-446.5 741.09,-453.5"/>
</g>
<!-- 143 -->
<!-- name: &quot;Position&quot;, typeName: &quot;BlockPos&quot;, id: 143, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 139 -->
<!-- name: &quot;Position&quot;, typeName: &quot;BlockPos&quot;, id: 139, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node16" class="node">
<title>143</title>
<title>139</title>
<ellipse fill="none" stroke="black" cx="659.9" cy="-396" rx="41.08" ry="18"/>
<text text-anchor="middle" x="659.9" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">Position</text>
</g>
<!-- 142&#45;&gt;143 -->
<!-- 138&#45;&gt;139 -->
<g id="edge15" class="edge">
<title>142&#45;&gt;143</title>
<title>138&#45;&gt;139</title>
<path fill="none" stroke="black" d="M564.05,-374.99C578.07,-378.1 595.6,-381.98 611.76,-385.56"/>
<polygon fill="black" stroke="black" points="610.67,-388.9 621.19,-387.65 612.18,-382.07 610.67,-388.9"/>
</g>
<!-- 145 -->
<!-- name: &quot;Facing&quot;, typeName: &quot;&quot;, id: 145, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 141 -->
<!-- name: &quot;Facing&quot;, typeName: &quot;&quot;, id: 141, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node18" class="node">
<title>145</title>
<title>141</title>
<ellipse fill="none" stroke="black" cx="659.9" cy="-342" rx="35.6" ry="18"/>
<text text-anchor="middle" x="659.9" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">Facing</text>
</g>
<!-- 142&#45;&gt;145 -->
<!-- 138&#45;&gt;141 -->
<g id="edge17" class="edge">
<title>142&#45;&gt;145</title>
<title>138&#45;&gt;141</title>
<path fill="none" stroke="black" d="M564.05,-363.01C579.24,-359.64 598.55,-355.37 615.78,-351.55"/>
<polygon fill="black" stroke="black" points="616.25,-355.03 625.25,-349.45 614.73,-348.2 616.25,-355.03"/>
</g>
<!-- 144 -->
<!-- name: &quot;BlockPos&quot;, typeName: &quot;&quot;, id: 144, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 140 -->
<!-- name: &quot;BlockPos&quot;, typeName: &quot;&quot;, id: 140, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node17" class="node">
<title>144</title>
<title>140</title>
<ellipse fill="none" stroke="black" cx="784.05" cy="-396" rx="47.07" ry="18"/>
<text text-anchor="middle" x="784.05" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">BlockPos</text>
</g>
<!-- 143&#45;&gt;144 -->
<!-- 139&#45;&gt;140 -->
<g id="edge16" class="edge">
<title>143&#45;&gt;144</title>
<title>139&#45;&gt;140</title>
<path fill="none" stroke="black" d="M701.23,-396C708.98,-396 717.23,-396 725.4,-396"/>
<polygon fill="black" stroke="black" points="725.32,-399.5 735.32,-396 725.32,-392.5 725.32,-399.5"/>
</g>
<!-- 146 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 146, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 142 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 142, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node19" class="node">
<title>146</title>
<title>142</title>
<ellipse fill="none" stroke="black" cx="784.05" cy="-342" rx="31.1" ry="18"/>
<text text-anchor="middle" x="784.05" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 145&#45;&gt;146 -->
<!-- 141&#45;&gt;142 -->
<g id="edge18" class="edge">
<title>145&#45;&gt;146</title>
<title>141&#45;&gt;142</title>
<path fill="none" stroke="black" d="M695.9,-342C710.03,-342 726.45,-342 741.21,-342"/>
<polygon fill="black" stroke="black" points="741.09,-345.5 751.09,-342 741.09,-338.5 741.09,-345.5"/>
</g>
<!-- 148 -->
<!-- name: &quot;Position&quot;, typeName: &quot;BlockPos&quot;, id: 148, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 144 -->
<!-- name: &quot;Position&quot;, typeName: &quot;BlockPos&quot;, id: 144, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node21" class="node">
<title>148</title>
<title>144</title>
<ellipse fill="none" stroke="black" cx="659.9" cy="-288" rx="41.08" ry="18"/>
<text text-anchor="middle" x="659.9" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">Position</text>
</g>
<!-- 147&#45;&gt;148 -->
<!-- 143&#45;&gt;144 -->
<g id="edge20" class="edge">
<title>147&#45;&gt;148</title>
<title>143&#45;&gt;144</title>
<path fill="none" stroke="black" d="M584.13,-288C591.69,-288 599.55,-288 607.22,-288"/>
<polygon fill="black" stroke="black" points="607.11,-291.5 617.11,-288 607.11,-284.5 607.11,-291.5"/>
</g>
<!-- 150 -->
<!-- name: &quot;Facing&quot;, typeName: &quot;&quot;, id: 150, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 146 -->
<!-- name: &quot;Facing&quot;, typeName: &quot;&quot;, id: 146, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node23" class="node">
<title>150</title>
<title>146</title>
<ellipse fill="none" stroke="black" cx="659.9" cy="-234" rx="35.6" ry="18"/>
<text text-anchor="middle" x="659.9" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">Facing</text>
</g>
<!-- 147&#45;&gt;150 -->
<!-- 143&#45;&gt;146 -->
<g id="edge22" class="edge">
<title>147&#45;&gt;150</title>
<title>143&#45;&gt;146</title>
<path fill="none" stroke="black" d="M558.79,-278.35C576.29,-270.6 601.25,-259.54 621.86,-250.41"/>
<polygon fill="black" stroke="black" points="623.08,-253.7 630.8,-246.44 620.24,-247.3 623.08,-253.7"/>
</g>
<!-- 149 -->
<!-- name: &quot;BlockPos&quot;, typeName: &quot;&quot;, id: 149, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 145 -->
<!-- name: &quot;BlockPos&quot;, typeName: &quot;&quot;, id: 145, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node22" class="node">
<title>149</title>
<title>145</title>
<ellipse fill="none" stroke="black" cx="784.05" cy="-288" rx="47.07" ry="18"/>
<text text-anchor="middle" x="784.05" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">BlockPos</text>
</g>
<!-- 148&#45;&gt;149 -->
<!-- 144&#45;&gt;145 -->
<g id="edge21" class="edge">
<title>148&#45;&gt;149</title>
<title>144&#45;&gt;145</title>
<path fill="none" stroke="black" d="M701.23,-288C708.98,-288 717.23,-288 725.4,-288"/>
<polygon fill="black" stroke="black" points="725.32,-291.5 735.32,-288 725.32,-284.5 725.32,-291.5"/>
</g>
<!-- 151 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 151, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 147 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 147, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node24" class="node">
<title>151</title>
<title>147</title>
<ellipse fill="none" stroke="black" cx="784.05" cy="-234" rx="31.1" ry="18"/>
<text text-anchor="middle" x="784.05" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 150&#45;&gt;151 -->
<!-- 146&#45;&gt;147 -->
<g id="edge23" class="edge">
<title>150&#45;&gt;151</title>
<title>146&#45;&gt;147</title>
<path fill="none" stroke="black" d="M695.9,-234C710.03,-234 726.45,-234 741.21,-234"/>
<polygon fill="black" stroke="black" points="741.09,-237.5 751.09,-234 741.09,-230.5 741.09,-237.5"/>
</g>
<!-- 153 -->
<!-- name: &quot;Position&quot;, typeName: &quot;BlockPos&quot;, id: 153, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 149 -->
<!-- name: &quot;Position&quot;, typeName: &quot;BlockPos&quot;, id: 149, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node26" class="node">
<title>153</title>
<title>149</title>
<ellipse fill="none" stroke="black" cx="659.9" cy="-180" rx="41.08" ry="18"/>
<text text-anchor="middle" x="659.9" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Position</text>
</g>
<!-- 152&#45;&gt;153 -->
<!-- 148&#45;&gt;149 -->
<g id="edge25" class="edge">
<title>152&#45;&gt;153</title>
<title>148&#45;&gt;149</title>
<path fill="none" stroke="black" d="M584.13,-180C591.69,-180 599.55,-180 607.22,-180"/>
<polygon fill="black" stroke="black" points="607.11,-183.5 617.11,-180 607.11,-176.5 607.11,-183.5"/>
</g>
<!-- 155 -->
<!-- name: &quot;Facing&quot;, typeName: &quot;&quot;, id: 155, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 151 -->
<!-- name: &quot;Facing&quot;, typeName: &quot;&quot;, id: 151, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node28" class="node">
<title>155</title>
<title>151</title>
<ellipse fill="none" stroke="black" cx="659.9" cy="-126" rx="35.6" ry="18"/>
<text text-anchor="middle" x="659.9" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Facing</text>
</g>
<!-- 152&#45;&gt;155 -->
<!-- 148&#45;&gt;151 -->
<g id="edge27" class="edge">
<title>152&#45;&gt;155</title>
<title>148&#45;&gt;151</title>
<path fill="none" stroke="black" d="M558.79,-170.35C576.29,-162.6 601.25,-151.54 621.86,-142.41"/>
<polygon fill="black" stroke="black" points="623.08,-145.7 630.8,-138.44 620.24,-139.3 623.08,-145.7"/>
</g>
<!-- 154 -->
<!-- name: &quot;BlockPos&quot;, typeName: &quot;&quot;, id: 154, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 150 -->
<!-- name: &quot;BlockPos&quot;, typeName: &quot;&quot;, id: 150, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node27" class="node">
<title>154</title>
<title>150</title>
<ellipse fill="none" stroke="black" cx="784.05" cy="-180" rx="47.07" ry="18"/>
<text text-anchor="middle" x="784.05" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">BlockPos</text>
</g>
<!-- 153&#45;&gt;154 -->
<!-- 149&#45;&gt;150 -->
<g id="edge26" class="edge">
<title>153&#45;&gt;154</title>
<title>149&#45;&gt;150</title>
<path fill="none" stroke="black" d="M701.23,-180C708.98,-180 717.23,-180 725.4,-180"/>
<polygon fill="black" stroke="black" points="725.32,-183.5 735.32,-180 725.32,-176.5 725.32,-183.5"/>
</g>
<!-- 156 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 156, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 152 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 152, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node29" class="node">
<title>156</title>
<title>152</title>
<ellipse fill="none" stroke="black" cx="784.05" cy="-126" rx="31.1" ry="18"/>
<text text-anchor="middle" x="784.05" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 155&#45;&gt;156 -->
<!-- 151&#45;&gt;152 -->
<g id="edge28" class="edge">
<title>155&#45;&gt;156</title>
<title>151&#45;&gt;152</title>
<path fill="none" stroke="black" d="M695.9,-126C710.03,-126 726.45,-126 741.21,-126"/>
<polygon fill="black" stroke="black" points="741.09,-129.5 751.09,-126 741.09,-122.5 741.09,-129.5"/>
</g>
<!-- 158 -->
<!-- name: &quot;Position&quot;, typeName: &quot;BlockPos&quot;, id: 158, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 154 -->
<!-- name: &quot;Position&quot;, typeName: &quot;BlockPos&quot;, id: 154, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node31" class="node">
<title>158</title>
<title>154</title>
<ellipse fill="none" stroke="black" cx="659.9" cy="-72" rx="41.08" ry="18"/>
<text text-anchor="middle" x="659.9" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Position</text>
</g>
<!-- 157&#45;&gt;158 -->
<!-- 153&#45;&gt;154 -->
<g id="edge30" class="edge">
<title>157&#45;&gt;158</title>
<title>153&#45;&gt;154</title>
<path fill="none" stroke="black" d="M577.59,-72C587.05,-72 597.25,-72 607.11,-72"/>
<polygon fill="black" stroke="black" points="606.97,-75.5 616.97,-72 606.97,-68.5 606.97,-75.5"/>
</g>
<!-- 160 -->
<!-- name: &quot;Facing&quot;, typeName: &quot;&quot;, id: 160, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 156 -->
<!-- name: &quot;Facing&quot;, typeName: &quot;&quot;, id: 156, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node33" class="node">
<title>160</title>
<title>156</title>
<ellipse fill="none" stroke="black" cx="659.9" cy="-18" rx="35.6" ry="18"/>
<text text-anchor="middle" x="659.9" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Facing</text>
</g>
<!-- 157&#45;&gt;160 -->
<!-- 153&#45;&gt;156 -->
<g id="edge32" class="edge">
<title>157&#45;&gt;160</title>
<title>153&#45;&gt;156</title>
<path fill="none" stroke="black" d="M557.13,-63.08C574.72,-55.29 600.69,-43.78 622,-34.35"/>
<polygon fill="black" stroke="black" points="623.22,-37.63 630.95,-30.38 620.39,-31.23 623.22,-37.63"/>
</g>
<!-- 159 -->
<!-- name: &quot;BlockPos&quot;, typeName: &quot;&quot;, id: 159, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 155 -->
<!-- name: &quot;BlockPos&quot;, typeName: &quot;&quot;, id: 155, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node32" class="node">
<title>159</title>
<title>155</title>
<ellipse fill="none" stroke="black" cx="784.05" cy="-72" rx="47.07" ry="18"/>
<text text-anchor="middle" x="784.05" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">BlockPos</text>
</g>
<!-- 158&#45;&gt;159 -->
<!-- 154&#45;&gt;155 -->
<g id="edge31" class="edge">
<title>158&#45;&gt;159</title>
<title>154&#45;&gt;155</title>
<path fill="none" stroke="black" d="M701.23,-72C708.98,-72 717.23,-72 725.4,-72"/>
<polygon fill="black" stroke="black" points="725.32,-75.5 735.32,-72 725.32,-68.5 725.32,-75.5"/>
</g>
<!-- 161 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 161, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 157 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 157, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node34" class="node">
<title>161</title>
<title>157</title>
<ellipse fill="none" stroke="black" cx="784.05" cy="-18" rx="31.1" ry="18"/>
<text text-anchor="middle" x="784.05" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 160&#45;&gt;161 -->
<!-- 156&#45;&gt;157 -->
<g id="edge33" class="edge">
<title>160&#45;&gt;161</title>
<title>156&#45;&gt;157</title>
<path fill="none" stroke="black" d="M695.9,-18C710.03,-18 726.45,-18 741.21,-18"/>
<polygon fill="black" stroke="black" points="741.09,-21.5 751.09,-18 741.09,-14.5 741.09,-21.5"/>
</g>

Before

(image error) Size: 24 KiB

After

(image error) Size: 24 KiB

@ -9,88 +9,88 @@
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 94)">
<title>PlayerBlockActions</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-94 1059.83,-94 1059.83,4 -4,4"/>
<!-- 122 -->
<!-- name: &quot;PlayerBlockActions&quot;, typeName: &quot;&quot;, id: 122, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 118 -->
<!-- name: &quot;PlayerBlockActions&quot;, typeName: &quot;&quot;, id: 118, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
<title>122</title>
<title>118</title>
<ellipse fill="none" stroke="black" cx="84.5" cy="-45" rx="84.5" ry="18"/>
<text text-anchor="middle" x="84.5" y="-39.58" font-family="Times New Roman,serif" font-size="14.00">PlayerBlockActions</text>
</g>
<!-- 123 -->
<!-- name: &quot;Player Block Actions&quot;, typeName: &quot;&quot;, id: 123, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<!-- 119 -->
<!-- name: &quot;Player Block Actions&quot;, typeName: &quot;&quot;, id: 119, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<g id="node2" class="node">
<title>123</title>
<title>119</title>
<ellipse fill="none" stroke="black" cx="294.48" cy="-45" rx="89.49" ry="18"/>
<text text-anchor="middle" x="294.48" y="-39.58" font-family="Times New Roman,serif" font-size="14.00">Player Block Actions</text>
</g>
<!-- 122&#45;&gt;123 -->
<!-- 118&#45;&gt;119 -->
<g id="edge1" class="edge">
<title>122&#45;&gt;123</title>
<title>118&#45;&gt;119</title>
<path fill="none" stroke="black" d="M169.49,-45C177.38,-45 185.44,-45 193.46,-45"/>
<polygon fill="black" stroke="black" points="193.24,-48.5 203.24,-45 193.24,-41.5 193.24,-48.5"/>
</g>
<!-- 124 -->
<!-- name: &quot;Player Block Actions count&quot;, typeName: &quot;&quot;, id: 124, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 120 -->
<!-- name: &quot;Player Block Actions count&quot;, typeName: &quot;&quot;, id: 120, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>124</title>
<title>120</title>
<ellipse fill="none" stroke="black" cx="711.95" cy="-72" rx="112.94" ry="18"/>
<text text-anchor="middle" x="711.95" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Player Block Actions count</text>
</g>
<!-- 123&#45;&gt;124 -->
<!-- 119&#45;&gt;120 -->
<g id="edge2" class="edge">
<title>123&#45;&gt;124</title>
<title>119&#45;&gt;120</title>
<path fill="none" stroke="black" d="M380.31,-50.51C442.36,-54.55 527.25,-60.06 595.48,-64.5"/>
<polygon fill="black" stroke="black" points="595,-67.97 605.21,-65.13 595.45,-60.99 595,-67.97"/>
</g>
<!-- 126 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 126, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<!-- 122 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 122, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>126</title>
<title>122</title>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="491.49" cy="-22" rx="71.52" ry="18"/>
<text text-anchor="middle" x="491.49" y="-16.57" font-family="Times New Roman,serif" font-size="14.00">example element</text>
</g>
<!-- 123&#45;&gt;126 -->
<!-- 119&#45;&gt;122 -->
<g id="edge4" class="edge">
<title>123&#45;&gt;126</title>
<title>119&#45;&gt;122</title>
<path fill="none" stroke="black" d="M372.55,-35.91C386.36,-34.28 400.74,-32.59 414.51,-30.96"/>
<polygon fill="black" stroke="black" points="414.89,-34.44 424.41,-29.79 414.07,-27.49 414.89,-34.44"/>
</g>
<!-- 125 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 125, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 121 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 121, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node4" class="node">
<title>125</title>
<title>121</title>
<ellipse fill="none" stroke="black" cx="958.36" cy="-72" rx="31.1" ry="18"/>
<text text-anchor="middle" x="958.36" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 124&#45;&gt;125 -->
<!-- 120&#45;&gt;121 -->
<g id="edge3" class="edge">
<title>124&#45;&gt;125</title>
<title>120&#45;&gt;121</title>
<path fill="none" stroke="black" d="M825.14,-72C857.42,-72 890.65,-72 915.71,-72"/>
<polygon fill="black" stroke="black" points="915.46,-75.5 925.46,-72 915.46,-68.5 915.46,-75.5"/>
</g>
<!-- 127 -->
<!-- name: &quot;Player Block Action&quot;, typeName: &quot;PlayerBlockActionData&quot;, id: 127, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- 123 -->
<!-- name: &quot;Player Block Action&quot;, typeName: &quot;PlayerBlockActionData&quot;, id: 123, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node6" class="node">
<title>127</title>
<title>123</title>
<ellipse fill="none" stroke="black" cx="711.95" cy="-18" rx="85.49" ry="18"/>
<text text-anchor="middle" x="711.95" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Player Block Action</text>
</g>
<!-- 126&#45;&gt;127 -->
<!-- 122&#45;&gt;123 -->
<g id="edge5" class="edge">
<title>126&#45;&gt;127</title>
<title>122&#45;&gt;123</title>
<path fill="none" stroke="black" d="M563.12,-20.71C579.68,-20.4 597.61,-20.08 615.07,-19.76"/>
<polygon fill="black" stroke="black" points="615.01,-23.26 624.95,-19.57 614.89,-16.26 615.01,-23.26"/>
</g>
<!-- 162 -->
<!-- name: &quot;PlayerBlockActionData&quot;, typeName: &quot;&quot;, id: 162, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 158 -->
<!-- name: &quot;PlayerBlockActionData&quot;, typeName: &quot;&quot;, id: 158, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>162</title>
<title>158</title>
<ellipse fill="none" stroke="black" cx="958.36" cy="-18" rx="97.47" ry="18"/>
<text text-anchor="middle" x="958.36" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">PlayerBlockActionData</text>
</g>
<!-- 127&#45;&gt;162 -->
<!-- 123&#45;&gt;158 -->
<g id="edge6" class="edge">
<title>127&#45;&gt;162</title>
<title>123&#45;&gt;158</title>
<path fill="none" stroke="black" d="M797.75,-18C814.37,-18 832.02,-18 849.29,-18"/>
<polygon fill="black" stroke="black" points="849.05,-21.5 859.05,-18 849.05,-14.5 849.05,-21.5"/>
</g>

Before

(image error) Size: 5.1 KiB

After

(image error) Size: 5.1 KiB

@ -4,11 +4,11 @@
<!-- Generated by graphviz version 11.0.0 (20240428.1522)
-->
<!-- Title: PlayerInputPacket Pages: 1 -->
<svg width="416pt" height="152pt"
viewBox="0.00 0.00 416.32 152.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="384pt" height="152pt"
viewBox="0.00 0.00 384.39 152.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 148)">
<title>PlayerInputPacket</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-148 412.32,-148 412.32,4 -4,4"/>
<polygon fill="white" stroke="none" points="-4,4 -4,-148 380.39,-148 380.39,4 -4,4"/>
<!-- 0 -->
<!-- name: &quot;PlayerInputPacket&quot;, typeName: &quot;&quot;, id: 0, branchId: 57, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
@ -17,82 +17,85 @@
<text text-anchor="middle" x="78.01" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">PlayerInputPacket</text>
</g>
<!-- 1 -->
<!-- name: &quot;Move Vector&quot;, typeName: &quot;Vec2&quot;, id: 1, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- name: &quot;Move&quot;, typeName: &quot;Vec2&quot;, id: 1, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;The desired local space move direction of the player in the vehicle. Convert this to world space by rotating by `mRot.y` along the Y (up) axis.
The server authoritative near&#45;equivalent is PlayerAuthInputPacket::mMove with the only difference being that this is scaled by expected movement slowdowns like sneaking and using items.&quot; -->
<g id="node2" class="node">
<title>1</title>
<ellipse fill="none" stroke="black" cx="252.07" cy="-126" rx="60.05" ry="18"/>
<text text-anchor="middle" x="252.07" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Move Vector</text>
<ellipse fill="none" stroke="black" cx="236.1" cy="-126" rx="32.1" ry="18"/>
<text text-anchor="middle" x="236.1" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Move</text>
</g>
<!-- 0&#45;&gt;1 -->
<g id="edge1" class="edge">
<title>0&#45;&gt;1</title>
<path fill="none" stroke="black" d="M125.57,-86.61C148.17,-93.7 175.4,-102.25 198.71,-109.57"/>
<polygon fill="black" stroke="black" points="197.43,-112.83 208.02,-112.49 199.53,-106.16 197.43,-112.83"/>
<path fill="none" stroke="black" d="M122.49,-87.04C145.95,-95.16 174.63,-105.08 197.17,-112.88"/>
<polygon fill="black" stroke="black" points="196,-116.18 206.59,-116.14 198.28,-109.56 196,-116.18"/>
</g>
<!-- 3 -->
<!-- name: &quot;Jumping&quot;, typeName: &quot;&quot;, id: 3, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;Jumping&quot;, typeName: &quot;&quot;, id: 3, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;True if the player is holding down the jump input or is auto&#45;jumping.
In server authoritative movement this is equivalent to `PlayerAuthInputPacket::InputData::Jumping` bit.&quot; -->
<g id="node4" class="node">
<title>3</title>
<ellipse fill="none" stroke="black" cx="252.07" cy="-72" rx="41.58" ry="18"/>
<text text-anchor="middle" x="252.07" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Jumping</text>
<ellipse fill="none" stroke="black" cx="236.1" cy="-72" rx="41.58" ry="18"/>
<text text-anchor="middle" x="236.1" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Jumping</text>
</g>
<!-- 0&#45;&gt;3 -->
<g id="edge3" class="edge">
<title>0&#45;&gt;3</title>
<path fill="none" stroke="black" d="M156.48,-72C170.83,-72 185.5,-72 198.87,-72"/>
<polygon fill="black" stroke="black" points="198.74,-75.5 208.74,-72 198.74,-68.5 198.74,-75.5"/>
<path fill="none" stroke="black" d="M156.14,-72C165.22,-72 174.32,-72 182.94,-72"/>
<polygon fill="black" stroke="black" points="182.85,-75.5 192.85,-72 182.85,-68.5 182.85,-75.5"/>
</g>
<!-- 5 -->
<!-- name: &quot;Sneaking&quot;, typeName: &quot;&quot;, id: 5, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;Sneaking&quot;, typeName: &quot;&quot;, id: 5, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;This is either the predicted sneak state as determined by sneak input or the latest value received from `SetActorDataPacket` depending on timing.
In server authoritative movement the closest equivalent is `PlayerAuthInputPacket::InputData::Sneaking` and does not have the timing issue.&quot; -->
<g id="node6" class="node">
<title>5</title>
<ellipse fill="none" stroke="black" cx="252.07" cy="-18" rx="44.08" ry="18"/>
<text text-anchor="middle" x="252.07" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Sneaking</text>
<ellipse fill="none" stroke="black" cx="236.1" cy="-18" rx="44.08" ry="18"/>
<text text-anchor="middle" x="236.1" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Sneaking</text>
</g>
<!-- 0&#45;&gt;5 -->
<g id="edge5" class="edge">
<title>0&#45;&gt;5</title>
<path fill="none" stroke="black" d="M125.57,-57.39C150.34,-49.61 180.68,-40.09 205.33,-32.36"/>
<polygon fill="black" stroke="black" points="206.27,-35.73 214.76,-29.39 204.17,-29.05 206.27,-35.73"/>
<path fill="none" stroke="black" d="M122.49,-56.96C143.77,-49.6 169.34,-40.75 190.73,-33.35"/>
<polygon fill="black" stroke="black" points="191.76,-36.7 200.07,-30.12 189.47,-30.08 191.76,-36.7"/>
</g>
<!-- 2 -->
<!-- name: &quot;Vec2&quot;, typeName: &quot;&quot;, id: 2, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>2</title>
<ellipse fill="none" stroke="black" cx="378.22" cy="-126" rx="30.11" ry="18"/>
<text text-anchor="middle" x="378.22" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Vec2</text>
<ellipse fill="none" stroke="black" cx="346.28" cy="-126" rx="30.11" ry="18"/>
<text text-anchor="middle" x="346.28" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Vec2</text>
</g>
<!-- 1&#45;&gt;2 -->
<g id="edge2" class="edge">
<title>1&#45;&gt;2</title>
<path fill="none" stroke="black" d="M312.6,-126C320.6,-126 328.66,-126 336.25,-126"/>
<polygon fill="black" stroke="black" points="336.18,-129.5 346.18,-126 336.18,-122.5 336.18,-129.5"/>
<path fill="none" stroke="black" d="M268.68,-126C279.81,-126 292.49,-126 304.29,-126"/>
<polygon fill="black" stroke="black" points="304.19,-129.5 314.19,-126 304.19,-122.5 304.19,-129.5"/>
</g>
<!-- 4 -->
<!-- name: &quot;bool&quot;, typeName: &quot;&quot;, id: 4, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>4</title>
<ellipse fill="none" stroke="black" cx="378.22" cy="-72" rx="27.61" ry="18"/>
<text text-anchor="middle" x="378.22" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">bool</text>
<ellipse fill="none" stroke="black" cx="346.28" cy="-72" rx="27.61" ry="18"/>
<text text-anchor="middle" x="346.28" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">bool</text>
</g>
<!-- 3&#45;&gt;4 -->
<g id="edge4" class="edge">
<title>3&#45;&gt;4</title>
<path fill="none" stroke="black" d="M294.06,-72C308.52,-72 324.71,-72 338.93,-72"/>
<polygon fill="black" stroke="black" points="338.82,-75.5 348.82,-72 338.82,-68.5 338.82,-75.5"/>
<path fill="none" stroke="black" d="M278,-72C287.51,-72 297.59,-72 306.98,-72"/>
<polygon fill="black" stroke="black" points="306.9,-75.5 316.9,-72 306.9,-68.5 306.9,-75.5"/>
</g>
<!-- 6 -->
<!-- name: &quot;bool&quot;, typeName: &quot;&quot;, id: 6, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>6</title>
<ellipse fill="none" stroke="black" cx="378.22" cy="-18" rx="27.61" ry="18"/>
<text text-anchor="middle" x="378.22" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">bool</text>
<ellipse fill="none" stroke="black" cx="346.28" cy="-18" rx="27.61" ry="18"/>
<text text-anchor="middle" x="346.28" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">bool</text>
</g>
<!-- 5&#45;&gt;6 -->
<g id="edge6" class="edge">
<title>5&#45;&gt;6</title>
<path fill="none" stroke="black" d="M296.49,-18C310.33,-18 325.54,-18 338.99,-18"/>
<polygon fill="black" stroke="black" points="338.76,-21.5 348.76,-18 338.76,-14.5 338.76,-21.5"/>
<path fill="none" stroke="black" d="M280.48,-18C289.29,-18 298.49,-18 307.11,-18"/>
<polygon fill="black" stroke="black" points="306.88,-21.5 316.88,-18 306.88,-14.5 306.88,-21.5"/>
</g>
</g>
</svg>

Before

(image error) Size: 4.9 KiB

After

(image error) Size: 5.6 KiB

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 11.0.0 (20240428.1522)
-->
<!-- Title: PlayerInputTick Pages: 1 -->
<svg width="463pt" height="44pt"
viewBox="0.00 0.00 463.23 44.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>PlayerInputTick</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-40 459.23,-40 459.23,4 -4,4"/>
<!-- 24 -->
<!-- name: &quot;PlayerInputTick&quot;, typeName: &quot;&quot;, id: 24, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
<title>24</title>
<ellipse fill="none" stroke="black" cx="70.03" cy="-18" rx="70.03" ry="18"/>
<text text-anchor="middle" x="70.03" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">PlayerInputTick</text>
</g>
<!-- 25 -->
<!-- name: &quot;Input tick&quot;, typeName: &quot;&quot;, id: 25, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;
In server authoritative movement mode the client supplies this in PlayerAuthInputPacket.
For any client&#45;bound packets containing a tick, the server should supply the tick value corresponding to the most recently processed PlayerAuthInputPacket.
This allows the client to adjust any client predictions made while the packet was in flight.
If the packet is being sent to the client but not relating to data of the player or a client&#45;predicted vehicle, it can be zero.
It is also acceptable to specify zero for players, although this may lead to minor visual flickers and less smooth application of CorrectPlayerMovePredictionPacket.
&quot; -->
<g id="node2" class="node">
<title>25</title>
<ellipse fill="none" stroke="black" cx="222.13" cy="-18" rx="46.07" ry="18"/>
<text text-anchor="middle" x="222.13" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Input tick</text>
</g>
<!-- 24&#45;&gt;25 -->
<g id="edge1" class="edge">
<title>24&#45;&gt;25</title>
<path fill="none" stroke="black" d="M140.36,-18C148.41,-18 156.55,-18 164.41,-18"/>
<polygon fill="black" stroke="black" points="164.15,-21.5 174.15,-18 164.15,-14.5 164.15,-21.5"/>
</g>
<!-- 26 -->
<!-- name: &quot;unsigned varint64&quot;, typeName: &quot;&quot;, id: 26, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>26</title>
<ellipse fill="none" stroke="black" cx="379.71" cy="-18" rx="75.51" ry="18"/>
<text text-anchor="middle" x="379.71" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint64</text>
</g>
<!-- 25&#45;&gt;26 -->
<g id="edge2" class="edge">
<title>25&#45;&gt;26</title>
<path fill="none" stroke="black" d="M268.55,-18C276.19,-18 284.35,-18 292.63,-18"/>
<polygon fill="black" stroke="black" points="292.45,-21.5 302.45,-18 292.45,-14.5 292.45,-21.5"/>
</g>
</g>
</svg>

After

(image error) Size: 2.9 KiB

@ -4,485 +4,407 @@
<!-- Generated by graphviz version 11.0.0 (20240428.1522)
-->
<!-- Title: ResourcePacksInfoPacket Pages: 1 -->
<svg width="1093pt" height="854pt"
viewBox="0.00 0.00 1092.77 854.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 850)">
<svg width="1090pt" height="746pt"
viewBox="0.00 0.00 1089.78 746.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 742)">
<title>ResourcePacksInfoPacket</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-850 1088.77,-850 1088.77,4 -4,4"/>
<polygon fill="white" stroke="none" points="-4,4 -4,-742 1085.78,-742 1085.78,4 -4,4"/>
<!-- 0 -->
<!-- name: &quot;ResourcePacksInfoPacket&quot;, typeName: &quot;&quot;, id: 0, branchId: 6, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
<title>0</title>
<ellipse fill="none" stroke="black" cx="108.95" cy="-720" rx="108.95" ry="18"/>
<text text-anchor="middle" x="108.95" y="-714.58" font-family="Times New Roman,serif" font-size="14.00">ResourcePacksInfoPacket</text>
<ellipse fill="none" stroke="black" cx="108.95" cy="-637" rx="108.95" ry="18"/>
<text text-anchor="middle" x="108.95" y="-631.58" font-family="Times New Roman,serif" font-size="14.00">ResourcePacksInfoPacket</text>
</g>
<!-- 1 -->
<!-- name: &quot;Resource Pack Required&quot;, typeName: &quot;&quot;, id: 1, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node2" class="node">
<title>1</title>
<ellipse fill="none" stroke="black" cx="357.35" cy="-821" rx="103.46" ry="18"/>
<text text-anchor="middle" x="357.35" y="-815.58" font-family="Times New Roman,serif" font-size="14.00">Resource Pack Required</text>
<ellipse fill="none" stroke="black" cx="357.35" cy="-713" rx="103.46" ry="18"/>
<text text-anchor="middle" x="357.35" y="-707.58" font-family="Times New Roman,serif" font-size="14.00">Resource Pack Required</text>
</g>
<!-- 0&#45;&gt;1 -->
<g id="edge1" class="edge">
<title>0&#45;&gt;1</title>
<path fill="none" stroke="black" d="M148.55,-737.16C177.43,-749.87 217.96,-767.43 253.89,-782 269.16,-788.19 285.81,-794.65 301.17,-800.49"/>
<polygon fill="black" stroke="black" points="299.55,-803.62 310.14,-803.89 302.03,-797.08 299.55,-803.62"/>
<path fill="none" stroke="black" d="M162.2,-653.12C200.77,-665.01 253.4,-681.24 294.13,-693.81"/>
<polygon fill="black" stroke="black" points="292.98,-697.12 303.57,-696.72 295.05,-690.43 292.98,-697.12"/>
</g>
<!-- 3 -->
<!-- name: &quot;Has Add&#45;on Packs&quot;, typeName: &quot;&quot;, id: 3, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node4" class="node">
<title>3</title>
<ellipse fill="none" stroke="black" cx="589.29" cy="-770" rx="81.5" ry="18"/>
<text text-anchor="middle" x="589.29" y="-764.58" font-family="Times New Roman,serif" font-size="14.00">Has Add&#45;on Packs</text>
<ellipse fill="none" stroke="black" cx="589.29" cy="-662" rx="81.5" ry="18"/>
<text text-anchor="middle" x="589.29" y="-656.58" font-family="Times New Roman,serif" font-size="14.00">Has Add&#45;on Packs</text>
</g>
<!-- 0&#45;&gt;3 -->
<g id="edge3" class="edge">
<title>0&#45;&gt;3</title>
<path fill="none" stroke="black" d="M177.43,-734.34C201.47,-739 228.8,-743.79 253.89,-747 335.74,-757.45 429.51,-763.38 496.89,-766.59"/>
<polygon fill="black" stroke="black" points="496.65,-770.09 506.8,-767.05 496.97,-763.09 496.65,-770.09"/>
<path fill="none" stroke="black" d="M213.45,-642.41C298.32,-646.85 417.26,-653.06 498.25,-657.29"/>
<polygon fill="black" stroke="black" points="497.74,-660.77 507.9,-657.8 498.1,-653.78 497.74,-660.77"/>
</g>
<!-- 5 -->
<!-- name: &quot;Has Scripts&quot;, typeName: &quot;&quot;, id: 5, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node6" class="node">
<title>5</title>
<ellipse fill="none" stroke="black" cx="357.35" cy="-720" rx="54.06" ry="18"/>
<text text-anchor="middle" x="357.35" y="-714.58" font-family="Times New Roman,serif" font-size="14.00">Has Scripts</text>
<ellipse fill="none" stroke="black" cx="357.35" cy="-614" rx="54.06" ry="18"/>
<text text-anchor="middle" x="357.35" y="-608.58" font-family="Times New Roman,serif" font-size="14.00">Has Scripts</text>
</g>
<!-- 0&#45;&gt;5 -->
<g id="edge5" class="edge">
<title>0&#45;&gt;5</title>
<path fill="none" stroke="black" d="M218.38,-720C243.34,-720 269.12,-720 291.54,-720"/>
<polygon fill="black" stroke="black" points="291.43,-723.5 301.43,-720 291.43,-716.5 291.43,-723.5"/>
<path fill="none" stroke="black" d="M204.86,-628.14C234.64,-625.36 266.74,-622.36 293.7,-619.85"/>
<polygon fill="black" stroke="black" points="293.78,-623.36 303.41,-618.94 293.13,-616.39 293.78,-623.36"/>
</g>
<!-- 7 -->
<!-- name: &quot;Resource Packs&quot;, typeName: &quot;&quot;, id: 7, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<g id="node8" class="node">
<title>7</title>
<ellipse fill="none" stroke="black" cx="357.35" cy="-666" rx="71.02" ry="18"/>
<text text-anchor="middle" x="357.35" y="-660.58" font-family="Times New Roman,serif" font-size="14.00">Resource Packs</text>
<ellipse fill="none" stroke="black" cx="357.35" cy="-558" rx="71.02" ry="18"/>
<text text-anchor="middle" x="357.35" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">Resource Packs</text>
</g>
<!-- 0&#45;&gt;7 -->
<g id="edge7" class="edge">
<title>0&#45;&gt;7</title>
<path fill="none" stroke="black" d="M176.3,-705.46C212.06,-697.62 256,-687.99 291.52,-680.21"/>
<polygon fill="black" stroke="black" points="292.24,-683.63 301.26,-678.07 290.74,-676.8 292.24,-683.63"/>
</g>
<!-- 29 -->
<!-- name: &quot;CDN URLs&quot;, typeName: &quot;&quot;, id: 29, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<g id="node30" class="node">
<title>29</title>
<ellipse fill="none" stroke="black" cx="357.35" cy="-126" rx="55.06" ry="18"/>
<text text-anchor="middle" x="357.35" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">CDN URLs</text>
</g>
<!-- 0&#45;&gt;29 -->
<g id="edge29" class="edge">
<title>0&#45;&gt;29</title>
<path fill="none" stroke="black" d="M117.59,-701.57C153.02,-616.17 301.32,-258.66 344.51,-154.56"/>
<polygon fill="black" stroke="black" points="347.62,-156.19 348.22,-145.61 341.15,-153.51 347.62,-156.19"/>
<path fill="none" stroke="black" d="M155.75,-620.32C183.92,-610.26 220.84,-597.41 253.89,-587 267.6,-582.68 282.43,-578.32 296.43,-574.32"/>
<polygon fill="black" stroke="black" points="297.32,-577.71 305.99,-571.62 295.42,-570.97 297.32,-577.71"/>
</g>
<!-- 2 -->
<!-- name: &quot;bool&quot;, typeName: &quot;&quot;, id: 2, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>2</title>
<ellipse fill="none" stroke="black" cx="1018.24" cy="-828" rx="27.61" ry="18"/>
<text text-anchor="middle" x="1018.24" y="-822.58" font-family="Times New Roman,serif" font-size="14.00">bool</text>
<ellipse fill="none" stroke="black" cx="1016.74" cy="-720" rx="27.61" ry="18"/>
<text text-anchor="middle" x="1016.74" y="-714.58" font-family="Times New Roman,serif" font-size="14.00">bool</text>
</g>
<!-- 1&#45;&gt;2 -->
<g id="edge2" class="edge">
<title>1&#45;&gt;2</title>
<path fill="none" stroke="black" d="M460.94,-822.09C610.05,-823.67 879.69,-826.54 979.1,-827.59"/>
<polygon fill="black" stroke="black" points="978.81,-831.09 988.84,-827.7 978.88,-824.09 978.81,-831.09"/>
<path fill="none" stroke="black" d="M461.07,-714.09C609.76,-715.68 878.04,-718.53 977.39,-719.59"/>
<polygon fill="black" stroke="black" points="977.09,-723.09 987.13,-719.7 977.17,-716.09 977.09,-723.09"/>
</g>
<!-- 4 -->
<!-- name: &quot;bool&quot;, typeName: &quot;&quot;, id: 4, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>4</title>
<ellipse fill="none" stroke="black" cx="1018.24" cy="-774" rx="27.61" ry="18"/>
<text text-anchor="middle" x="1018.24" y="-768.58" font-family="Times New Roman,serif" font-size="14.00">bool</text>
<ellipse fill="none" stroke="black" cx="1016.74" cy="-666" rx="27.61" ry="18"/>
<text text-anchor="middle" x="1016.74" y="-660.58" font-family="Times New Roman,serif" font-size="14.00">bool</text>
</g>
<!-- 3&#45;&gt;4 -->
<g id="edge4" class="edge">
<title>3&#45;&gt;4</title>
<path fill="none" stroke="black" d="M671.1,-770.76C763.43,-771.62 910.6,-773 979.44,-773.65"/>
<polygon fill="black" stroke="black" points="979.02,-777.14 989.06,-773.74 979.09,-770.14 979.02,-777.14"/>
<path fill="none" stroke="black" d="M671.07,-662.76C762.88,-663.62 908.89,-665 977.61,-665.64"/>
<polygon fill="black" stroke="black" points="977.19,-669.14 987.22,-665.73 977.26,-662.14 977.19,-669.14"/>
</g>
<!-- 6 -->
<!-- name: &quot;bool&quot;, typeName: &quot;&quot;, id: 6, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>6</title>
<ellipse fill="none" stroke="black" cx="1018.24" cy="-720" rx="27.61" ry="18"/>
<text text-anchor="middle" x="1018.24" y="-714.58" font-family="Times New Roman,serif" font-size="14.00">bool</text>
<ellipse fill="none" stroke="black" cx="1016.74" cy="-612" rx="27.61" ry="18"/>
<text text-anchor="middle" x="1016.74" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">bool</text>
</g>
<!-- 5&#45;&gt;6 -->
<g id="edge6" class="edge">
<title>5&#45;&gt;6</title>
<path fill="none" stroke="black" d="M411.71,-720C540.74,-720 867.21,-720 979,-720"/>
<polygon fill="black" stroke="black" points="978.83,-723.5 988.83,-720 978.83,-716.5 978.83,-723.5"/>
<path fill="none" stroke="black" d="M411.87,-613.84C540.81,-613.44 866.22,-612.45 977.63,-612.12"/>
<polygon fill="black" stroke="black" points="977.44,-615.62 987.43,-612.09 977.42,-608.62 977.44,-615.62"/>
</g>
<!-- 8 -->
<!-- name: &quot;Resource Pack Count&quot;, typeName: &quot;&quot;, id: 8, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node9" class="node">
<title>8</title>
<ellipse fill="none" stroke="black" cx="589.29" cy="-666" rx="92.48" ry="18"/>
<text text-anchor="middle" x="589.29" y="-660.58" font-family="Times New Roman,serif" font-size="14.00">Resource Pack Count</text>
<ellipse fill="none" stroke="black" cx="589.29" cy="-558" rx="92.48" ry="18"/>
<text text-anchor="middle" x="589.29" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">Resource Pack Count</text>
</g>
<!-- 7&#45;&gt;8 -->
<g id="edge8" class="edge">
<title>7&#45;&gt;8</title>
<path fill="none" stroke="black" d="M428.59,-666C446.39,-666 465.89,-666 484.96,-666"/>
<polygon fill="black" stroke="black" points="484.92,-669.5 494.92,-666 484.92,-662.5 484.92,-669.5"/>
<path fill="none" stroke="black" d="M428.59,-558C446.39,-558 465.89,-558 484.96,-558"/>
<polygon fill="black" stroke="black" points="484.92,-561.5 494.92,-558 484.92,-554.5 484.92,-561.5"/>
</g>
<!-- 10 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 10, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<g id="node11" class="node">
<title>10</title>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="589.29" cy="-423" rx="71.52" ry="18"/>
<text text-anchor="middle" x="589.29" y="-417.57" font-family="Times New Roman,serif" font-size="14.00">example element</text>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="589.29" cy="-288" rx="71.52" ry="18"/>
<text text-anchor="middle" x="589.29" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">example element</text>
</g>
<!-- 7&#45;&gt;10 -->
<g id="edge10" class="edge">
<title>7&#45;&gt;10</title>
<path fill="none" stroke="black" d="M375.26,-648.13C415.38,-605.74 516.45,-498.92 563.5,-449.21"/>
<polygon fill="black" stroke="black" points="565.99,-451.66 570.32,-441.99 560.9,-446.85 565.99,-451.66"/>
<path fill="none" stroke="black" d="M373.44,-540.28C412.91,-493.94 519.36,-368.94 565.95,-314.24"/>
<polygon fill="black" stroke="black" points="568.35,-316.82 572.17,-306.93 563.02,-312.28 568.35,-316.82"/>
</g>
<!-- 9 -->
<!-- name: &quot;unsigned short&quot;, typeName: &quot;&quot;, id: 9, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node10" class="node">
<title>9</title>
<ellipse fill="none" stroke="black" cx="1018.24" cy="-666" rx="65.04" ry="18"/>
<text text-anchor="middle" x="1018.24" y="-660.58" font-family="Times New Roman,serif" font-size="14.00">unsigned short</text>
<ellipse fill="none" stroke="black" cx="1016.74" cy="-558" rx="65.04" ry="18"/>
<text text-anchor="middle" x="1016.74" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">unsigned short</text>
</g>
<!-- 8&#45;&gt;9 -->
<g id="edge9" class="edge">
<title>8&#45;&gt;9</title>
<path fill="none" stroke="black" d="M682.15,-666C759.61,-666 869.15,-666 941.63,-666"/>
<polygon fill="black" stroke="black" points="941.42,-669.5 951.42,-666 941.42,-662.5 941.42,-669.5"/>
<path fill="none" stroke="black" d="M682.08,-558C759.18,-558 868.02,-558 940.16,-558"/>
<polygon fill="black" stroke="black" points="939.9,-561.5 949.9,-558 939.9,-554.5 939.9,-561.5"/>
</g>
<!-- 11 -->
<!-- name: &quot;ID&quot;, typeName: &quot;&quot;, id: 11, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node12" class="node">
<title>11</title>
<ellipse fill="none" stroke="black" cx="816.74" cy="-612" rx="27" ry="18"/>
<text text-anchor="middle" x="816.74" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">ID</text>
<ellipse fill="none" stroke="black" cx="816.74" cy="-504" rx="27" ry="18"/>
<text text-anchor="middle" x="816.74" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">ID</text>
</g>
<!-- 10&#45;&gt;11 -->
<g id="edge11" class="edge">
<title>10&#45;&gt;11</title>
<path fill="none" stroke="black" d="M599.48,-441.18C617.45,-474.86 660.54,-546.97 717.77,-585 735.87,-597.02 759.22,-603.73 778.59,-607.45"/>
<polygon fill="black" stroke="black" points="777.82,-610.87 788.26,-609.1 779,-603.97 777.82,-610.87"/>
<path fill="none" stroke="black" d="M597.4,-306.24C613.1,-344.1 654.46,-431.5 717.77,-477 735.41,-489.68 758.75,-496.41 778.22,-499.98"/>
<polygon fill="black" stroke="black" points="777.54,-503.41 787.97,-501.54 778.65,-496.5 777.54,-503.41"/>
</g>
<!-- 13 -->
<!-- name: &quot;Version&quot;, typeName: &quot;&quot;, id: 13, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node14" class="node">
<title>13</title>
<ellipse fill="none" stroke="black" cx="816.74" cy="-558" rx="39.59" ry="18"/>
<text text-anchor="middle" x="816.74" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">Version</text>
<ellipse fill="none" stroke="black" cx="816.74" cy="-450" rx="39.59" ry="18"/>
<text text-anchor="middle" x="816.74" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">Version</text>
</g>
<!-- 10&#45;&gt;13 -->
<g id="edge13" class="edge">
<title>10&#45;&gt;13</title>
<path fill="none" stroke="black" d="M606.25,-440.66C628.81,-464.57 672.37,-507.02 717.77,-531 733.36,-539.23 751.71,-545.15 768.29,-549.31"/>
<polygon fill="black" stroke="black" points="767.42,-552.7 777.95,-551.57 769.01,-545.89 767.42,-552.7"/>
<path fill="none" stroke="black" d="M602.15,-305.83C622.38,-334.83 666.39,-392.1 717.77,-423 732.76,-432.01 750.83,-438.09 767.35,-442.16"/>
<polygon fill="black" stroke="black" points="766.47,-445.55 777,-444.34 768.01,-438.73 766.47,-445.55"/>
</g>
<!-- 15 -->
<!-- name: &quot;Size&quot;, typeName: &quot;&quot;, id: 15, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node16" class="node">
<title>15</title>
<ellipse fill="none" stroke="black" cx="816.74" cy="-504" rx="27" ry="18"/>
<text text-anchor="middle" x="816.74" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">Size</text>
<ellipse fill="none" stroke="black" cx="816.74" cy="-396" rx="27" ry="18"/>
<text text-anchor="middle" x="816.74" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">Size</text>
</g>
<!-- 10&#45;&gt;15 -->
<g id="edge15" class="edge">
<title>10&#45;&gt;15</title>
<path fill="none" stroke="black" d="M624.71,-439.04C650.09,-450.51 685.65,-465.82 717.77,-477 738.06,-484.06 761.2,-490.51 779.9,-495.33"/>
<polygon fill="black" stroke="black" points="778.88,-498.69 789.44,-497.75 780.6,-491.9 778.88,-498.69"/>
<path fill="none" stroke="black" d="M613.07,-305.44C637.7,-323.57 678.7,-351.67 717.77,-369 737.4,-377.71 760.52,-384.24 779.36,-388.7"/>
<polygon fill="black" stroke="black" points="778.47,-392.08 789,-390.87 780.02,-385.25 778.47,-392.08"/>
</g>
<!-- 17 -->
<!-- name: &quot;Content Key&quot;, typeName: &quot;&quot;, id: 17, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node18" class="node">
<title>17</title>
<ellipse fill="none" stroke="black" cx="816.74" cy="-450" rx="57.55" ry="18"/>
<text text-anchor="middle" x="816.74" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">Content Key</text>
<ellipse fill="none" stroke="black" cx="816.74" cy="-342" rx="57.55" ry="18"/>
<text text-anchor="middle" x="816.74" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">Content Key</text>
</g>
<!-- 10&#45;&gt;17 -->
<g id="edge17" class="edge">
<title>10&#45;&gt;17</title>
<path fill="none" stroke="black" d="M654.59,-430.7C684.83,-434.32 720.81,-438.63 751.09,-442.26"/>
<polygon fill="black" stroke="black" points="750.54,-445.72 760.89,-443.43 751.37,-438.77 750.54,-445.72"/>
<path fill="none" stroke="black" d="M642.3,-300.46C677.3,-308.84 723.43,-319.89 759.32,-328.49"/>
<polygon fill="black" stroke="black" points="758.09,-331.79 768.63,-330.72 759.72,-324.98 758.09,-331.79"/>
</g>
<!-- 19 -->
<!-- name: &quot;Sub Pack Name&quot;, typeName: &quot;&quot;, id: 19, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node20" class="node">
<title>19</title>
<ellipse fill="none" stroke="black" cx="816.74" cy="-396" rx="70.52" ry="18"/>
<text text-anchor="middle" x="816.74" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">Sub Pack Name</text>
<ellipse fill="none" stroke="black" cx="816.74" cy="-288" rx="70.52" ry="18"/>
<text text-anchor="middle" x="816.74" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">Sub Pack Name</text>
</g>
<!-- 10&#45;&gt;19 -->
<g id="edge19" class="edge">
<title>10&#45;&gt;19</title>
<path fill="none" stroke="black" d="M654.59,-415.3C681.48,-412.08 712.89,-408.32 740.81,-404.97"/>
<polygon fill="black" stroke="black" points="741.12,-408.46 750.63,-403.8 740.28,-401.51 741.12,-408.46"/>
<path fill="none" stroke="black" d="M661.01,-288C684.42,-288 710.65,-288 734.77,-288"/>
<polygon fill="black" stroke="black" points="734.54,-291.5 744.54,-288 734.54,-284.5 734.54,-291.5"/>
</g>
<!-- 21 -->
<!-- name: &quot;Content Identity&quot;, typeName: &quot;&quot;, id: 21, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node22" class="node">
<title>21</title>
<ellipse fill="none" stroke="black" cx="816.74" cy="-342" rx="70.52" ry="18"/>
<text text-anchor="middle" x="816.74" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">Content Identity</text>
<ellipse fill="none" stroke="black" cx="816.74" cy="-234" rx="70.52" ry="18"/>
<text text-anchor="middle" x="816.74" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">Content Identity</text>
</g>
<!-- 10&#45;&gt;21 -->
<g id="edge21" class="edge">
<title>10&#45;&gt;21</title>
<path fill="none" stroke="black" d="M624.71,-406.96C650.09,-395.49 685.65,-380.18 717.77,-369 729.38,-364.96 741.93,-361.12 754.04,-357.67"/>
<polygon fill="black" stroke="black" points="754.85,-361.08 763.55,-355.02 752.98,-354.33 754.85,-361.08"/>
<path fill="none" stroke="black" d="M642.3,-275.54C675.39,-267.62 718.43,-257.31 753.35,-248.94"/>
<polygon fill="black" stroke="black" points="754,-252.39 762.91,-246.65 752.37,-245.58 754,-252.39"/>
</g>
<!-- 23 -->
<!-- name: &quot;Has Scripts&quot;, typeName: &quot;&quot;, id: 23, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node24" class="node">
<title>23</title>
<ellipse fill="none" stroke="black" cx="816.74" cy="-288" rx="54.06" ry="18"/>
<text text-anchor="middle" x="816.74" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">Has Scripts</text>
<ellipse fill="none" stroke="black" cx="816.74" cy="-180" rx="54.06" ry="18"/>
<text text-anchor="middle" x="816.74" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Has Scripts</text>
</g>
<!-- 10&#45;&gt;23 -->
<g id="edge23" class="edge">
<title>10&#45;&gt;23</title>
<path fill="none" stroke="black" d="M606.25,-405.34C628.81,-381.43 672.37,-338.98 717.77,-315 730.21,-308.43 744.39,-303.34 758.03,-299.44"/>
<polygon fill="black" stroke="black" points="758.6,-302.91 767.35,-296.95 756.79,-296.15 758.6,-302.91"/>
<path fill="none" stroke="black" d="M613.07,-270.56C637.7,-252.43 678.7,-224.33 717.77,-207 730.88,-201.19 745.54,-196.34 759.44,-192.44"/>
<polygon fill="black" stroke="black" points="760.17,-195.87 768.93,-189.9 758.36,-189.11 760.17,-195.87"/>
</g>
<!-- 25 -->
<!-- name: &quot;Is Addon Pack&quot;, typeName: &quot;&quot;, id: 25, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;Indicates this pack is part of an Add&#45;On. Helps clients determine if the pack must be downloaded to join the server as Add&#45;On packs are required to play without issues.&quot; -->
<g id="node26" class="node">
<title>25</title>
<ellipse fill="none" stroke="black" cx="816.74" cy="-234" rx="67.03" ry="18"/>
<text text-anchor="middle" x="816.74" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">Is Addon Pack</text>
<ellipse fill="none" stroke="black" cx="816.74" cy="-126" rx="67.03" ry="18"/>
<text text-anchor="middle" x="816.74" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Is Addon Pack</text>
</g>
<!-- 10&#45;&gt;25 -->
<g id="edge25" class="edge">
<title>10&#45;&gt;25</title>
<path fill="none" stroke="black" d="M599.48,-404.82C617.45,-371.14 660.54,-299.03 717.77,-261 726.77,-255.02 737.07,-250.36 747.53,-246.72"/>
<polygon fill="black" stroke="black" points="748.51,-250.08 757,-243.75 746.41,-243.41 748.51,-250.08"/>
<path fill="none" stroke="black" d="M602.15,-270.17C622.38,-241.17 666.39,-183.9 717.77,-153 727.3,-147.27 738.07,-142.73 748.89,-139.13"/>
<polygon fill="black" stroke="black" points="749.7,-142.54 758.24,-136.28 747.66,-135.85 749.7,-142.54"/>
</g>
<!-- 27 -->
<!-- name: &quot;Is Ray Tracing Capable&quot;, typeName: &quot;&quot;, id: 27, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node28" class="node">
<title>27</title>
<ellipse fill="none" stroke="black" cx="816.74" cy="-180" rx="98.97" ry="18"/>
<text text-anchor="middle" x="816.74" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Is Ray Tracing Capable</text>
<ellipse fill="none" stroke="black" cx="816.74" cy="-72" rx="98.97" ry="18"/>
<text text-anchor="middle" x="816.74" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Is Ray Tracing Capable</text>
</g>
<!-- 10&#45;&gt;27 -->
<g id="edge27" class="edge">
<title>10&#45;&gt;27</title>
<path fill="none" stroke="black" d="M595.79,-404.74C609.32,-363.02 648.27,-260.2 717.77,-207 722.72,-203.21 728.17,-199.96 733.88,-197.16"/>
<polygon fill="black" stroke="black" points="735.23,-200.39 743.01,-193.2 732.45,-193.96 735.23,-200.39"/>
<path fill="none" stroke="black" d="M597.4,-269.76C613.1,-231.9 654.46,-144.5 717.77,-99 723.05,-95.21 728.84,-91.95 734.88,-89.14"/>
<polygon fill="black" stroke="black" points="735.94,-92.49 743.84,-85.43 733.26,-86.03 735.94,-92.49"/>
</g>
<!-- 29 -->
<!-- name: &quot;CDN URL&quot;, typeName: &quot;&quot;, id: 29, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node30" class="node">
<title>29</title>
<ellipse fill="none" stroke="black" cx="816.74" cy="-18" rx="51.06" ry="18"/>
<text text-anchor="middle" x="816.74" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">CDN URL</text>
</g>
<!-- 10&#45;&gt;29 -->
<g id="edge29" class="edge">
<title>10&#45;&gt;29</title>
<path fill="none" stroke="black" d="M594.48,-269.88C605.9,-224.66 641.91,-106.13 717.77,-45 728.88,-36.05 742.75,-30.06 756.53,-26.05"/>
<polygon fill="black" stroke="black" points="757.21,-29.49 766.03,-23.62 755.48,-22.7 757.21,-29.49"/>
</g>
<!-- 12 -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 12, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node13" class="node">
<title>12</title>
<ellipse fill="none" stroke="black" cx="1018.24" cy="-612" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1018.24" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">string</text>
<ellipse fill="none" stroke="black" cx="1016.74" cy="-504" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1016.74" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 11&#45;&gt;12 -->
<g id="edge12" class="edge">
<title>11&#45;&gt;12</title>
<path fill="none" stroke="black" d="M844.23,-612C877.73,-612 935.8,-612 975.34,-612"/>
<polygon fill="black" stroke="black" points="975.2,-615.5 985.2,-612 975.2,-608.5 975.2,-615.5"/>
<path fill="none" stroke="black" d="M844.03,-504C877.28,-504 934.91,-504 974.15,-504"/>
<polygon fill="black" stroke="black" points="973.93,-507.5 983.93,-504 973.93,-500.5 973.93,-507.5"/>
</g>
<!-- 14 -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 14, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node15" class="node">
<title>14</title>
<ellipse fill="none" stroke="black" cx="1018.24" cy="-558" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1018.24" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">string</text>
<ellipse fill="none" stroke="black" cx="1016.74" cy="-450" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1016.74" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 13&#45;&gt;14 -->
<g id="edge14" class="edge">
<title>13&#45;&gt;14</title>
<path fill="none" stroke="black" d="M856.68,-558C890.91,-558 940.59,-558 975.6,-558"/>
<polygon fill="black" stroke="black" points="975.36,-561.5 985.36,-558 975.36,-554.5 975.36,-561.5"/>
<path fill="none" stroke="black" d="M856.39,-450C890.26,-450 939.38,-450 974.11,-450"/>
<polygon fill="black" stroke="black" points="973.78,-453.5 983.78,-450 973.78,-446.5 973.78,-453.5"/>
</g>
<!-- 16 -->
<!-- name: &quot;unsigned int64&quot;, typeName: &quot;&quot;, id: 16, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node17" class="node">
<title>16</title>
<ellipse fill="none" stroke="black" cx="1018.24" cy="-504" rx="64.04" ry="18"/>
<text text-anchor="middle" x="1018.24" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">unsigned int64</text>
<ellipse fill="none" stroke="black" cx="1016.74" cy="-396" rx="64.04" ry="18"/>
<text text-anchor="middle" x="1016.74" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">unsigned int64</text>
</g>
<!-- 15&#45;&gt;16 -->
<g id="edge16" class="edge">
<title>15&#45;&gt;16</title>
<path fill="none" stroke="black" d="M844.23,-504C869.28,-504 908.05,-504 942.55,-504"/>
<polygon fill="black" stroke="black" points="942.55,-507.5 952.55,-504 942.55,-500.5 942.55,-507.5"/>
<path fill="none" stroke="black" d="M844.03,-396C868.8,-396 907.08,-396 941.23,-396"/>
<polygon fill="black" stroke="black" points="941.11,-399.5 951.11,-396 941.11,-392.5 941.11,-399.5"/>
</g>
<!-- 18 -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 18, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node19" class="node">
<title>18</title>
<ellipse fill="none" stroke="black" cx="1018.24" cy="-450" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1018.24" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
<ellipse fill="none" stroke="black" cx="1016.74" cy="-342" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1016.74" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 17&#45;&gt;18 -->
<g id="edge18" class="edge">
<title>17&#45;&gt;18</title>
<path fill="none" stroke="black" d="M874.64,-450C906.73,-450 946.12,-450 975.37,-450"/>
<polygon fill="black" stroke="black" points="975.32,-453.5 985.32,-450 975.32,-446.5 975.32,-453.5"/>
<path fill="none" stroke="black" d="M874.75,-342C906.37,-342 945.03,-342 973.85,-342"/>
<polygon fill="black" stroke="black" points="973.65,-345.5 983.65,-342 973.65,-338.5 973.65,-345.5"/>
</g>
<!-- 20 -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 20, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node21" class="node">
<title>20</title>
<ellipse fill="none" stroke="black" cx="1018.24" cy="-396" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1018.24" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
<ellipse fill="none" stroke="black" cx="1016.74" cy="-288" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1016.74" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 19&#45;&gt;20 -->
<g id="edge20" class="edge">
<title>19&#45;&gt;20</title>
<path fill="none" stroke="black" d="M887.52,-396C916.81,-396 949.91,-396 975.34,-396"/>
<polygon fill="black" stroke="black" points="975.28,-399.5 985.28,-396 975.28,-392.5 975.28,-399.5"/>
<path fill="none" stroke="black" d="M887.55,-288C916.38,-288 948.85,-288 973.89,-288"/>
<polygon fill="black" stroke="black" points="973.68,-291.5 983.68,-288 973.68,-284.5 973.68,-291.5"/>
</g>
<!-- 22 -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 22, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node23" class="node">
<title>22</title>
<ellipse fill="none" stroke="black" cx="1018.24" cy="-342" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1018.24" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
<ellipse fill="none" stroke="black" cx="1016.74" cy="-234" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1016.74" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 21&#45;&gt;22 -->
<g id="edge22" class="edge">
<title>21&#45;&gt;22</title>
<path fill="none" stroke="black" d="M887.52,-342C916.81,-342 949.91,-342 975.34,-342"/>
<polygon fill="black" stroke="black" points="975.28,-345.5 985.28,-342 975.28,-338.5 975.28,-345.5"/>
<path fill="none" stroke="black" d="M887.55,-234C916.38,-234 948.85,-234 973.89,-234"/>
<polygon fill="black" stroke="black" points="973.68,-237.5 983.68,-234 973.68,-230.5 973.68,-237.5"/>
</g>
<!-- 24 -->
<!-- name: &quot;bool&quot;, typeName: &quot;&quot;, id: 24, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node25" class="node">
<title>24</title>
<ellipse fill="none" stroke="black" cx="1018.24" cy="-288" rx="27.61" ry="18"/>
<text text-anchor="middle" x="1018.24" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">bool</text>
<ellipse fill="none" stroke="black" cx="1016.74" cy="-180" rx="27.61" ry="18"/>
<text text-anchor="middle" x="1016.74" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">bool</text>
</g>
<!-- 23&#45;&gt;24 -->
<g id="edge24" class="edge">
<title>23&#45;&gt;24</title>
<path fill="none" stroke="black" d="M871.2,-288C905.13,-288 948.24,-288 978.81,-288"/>
<polygon fill="black" stroke="black" points="978.75,-291.5 988.75,-288 978.75,-284.5 978.75,-291.5"/>
<path fill="none" stroke="black" d="M871.06,-180C904.63,-180 947.18,-180 977.43,-180"/>
<polygon fill="black" stroke="black" points="977.26,-183.5 987.26,-180 977.26,-176.5 977.26,-183.5"/>
</g>
<!-- 26 -->
<!-- name: &quot;bool&quot;, typeName: &quot;&quot;, id: 26, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node27" class="node">
<title>26</title>
<ellipse fill="none" stroke="black" cx="1018.24" cy="-234" rx="27.61" ry="18"/>
<text text-anchor="middle" x="1018.24" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">bool</text>
<ellipse fill="none" stroke="black" cx="1016.74" cy="-126" rx="27.61" ry="18"/>
<text text-anchor="middle" x="1016.74" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">bool</text>
</g>
<!-- 25&#45;&gt;26 -->
<g id="edge26" class="edge">
<title>25&#45;&gt;26</title>
<path fill="none" stroke="black" d="M884.17,-234C915.67,-234 952.17,-234 978.97,-234"/>
<polygon fill="black" stroke="black" points="978.67,-237.5 988.67,-234 978.67,-230.5 978.67,-237.5"/>
<path fill="none" stroke="black" d="M884.22,-126C915.2,-126 950.97,-126 977.37,-126"/>
<polygon fill="black" stroke="black" points="977.28,-129.5 987.28,-126 977.28,-122.5 977.28,-129.5"/>
</g>
<!-- 28 -->
<!-- name: &quot;bool&quot;, typeName: &quot;&quot;, id: 28, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node29" class="node">
<title>28</title>
<ellipse fill="none" stroke="black" cx="1018.24" cy="-180" rx="27.61" ry="18"/>
<text text-anchor="middle" x="1018.24" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">bool</text>
<ellipse fill="none" stroke="black" cx="1016.74" cy="-72" rx="27.61" ry="18"/>
<text text-anchor="middle" x="1016.74" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">bool</text>
</g>
<!-- 27&#45;&gt;28 -->
<g id="edge28" class="edge">
<title>27&#45;&gt;28</title>
<path fill="none" stroke="black" d="M916.03,-180C938.35,-180 960.77,-180 978.82,-180"/>
<polygon fill="black" stroke="black" points="978.76,-183.5 988.76,-180 978.76,-176.5 978.76,-183.5"/>
<path fill="none" stroke="black" d="M916.16,-72C937.93,-72 959.73,-72 977.36,-72"/>
<polygon fill="black" stroke="black" points="977.34,-75.5 987.34,-72 977.34,-68.5 977.34,-75.5"/>
</g>
<!-- 30 -->
<!-- name: &quot;Array Size&quot;, typeName: &quot;&quot;, id: 30, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 30, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node31" class="node">
<title>30</title>
<ellipse fill="none" stroke="black" cx="589.29" cy="-126" rx="49.57" ry="18"/>
<text text-anchor="middle" x="589.29" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Array Size</text>
<ellipse fill="none" stroke="black" cx="1016.74" cy="-18" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1016.74" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 29&#45;&gt;30 -->
<g id="edge30" class="edge">
<title>29&#45;&gt;30</title>
<path fill="none" stroke="black" d="M412.85,-126C447.48,-126 492.35,-126 528.04,-126"/>
<polygon fill="black" stroke="black" points="527.77,-129.5 537.77,-126 527.77,-122.5 527.77,-129.5"/>
</g>
<!-- 32 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 32, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<g id="node33" class="node">
<title>32</title>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="589.29" cy="-72" rx="71.52" ry="18"/>
<text text-anchor="middle" x="589.29" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">example element</text>
</g>
<!-- 29&#45;&gt;32 -->
<g id="edge32" class="edge">
<title>29&#45;&gt;32</title>
<path fill="none" stroke="black" d="M402.96,-115.52C437.55,-107.4 485.95,-96.04 524.61,-86.96"/>
<polygon fill="black" stroke="black" points="525.35,-90.38 534.28,-84.68 523.75,-83.56 525.35,-90.38"/>
</g>
<!-- 31 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 31, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node32" class="node">
<title>31</title>
<ellipse fill="none" stroke="black" cx="1018.24" cy="-126" rx="66.53" ry="18"/>
<text text-anchor="middle" x="1018.24" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 30&#45;&gt;31 -->
<g id="edge31" class="edge">
<title>30&#45;&gt;31</title>
<path fill="none" stroke="black" d="M639.27,-126C712.85,-126 852.58,-126 939.98,-126"/>
<polygon fill="black" stroke="black" points="939.92,-129.5 949.92,-126 939.92,-122.5 939.92,-129.5"/>
</g>
<!-- 33 -->
<!-- name: &quot;First&quot;, typeName: &quot;&quot;, id: 33, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node34" class="node">
<title>33</title>
<ellipse fill="none" stroke="black" cx="816.74" cy="-72" rx="27.61" ry="18"/>
<text text-anchor="middle" x="816.74" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">First</text>
</g>
<!-- 32&#45;&gt;33 -->
<g id="edge33" class="edge">
<title>32&#45;&gt;33</title>
<path fill="none" stroke="black" d="M661.01,-72C699.48,-72 745.57,-72 777.39,-72"/>
<polygon fill="black" stroke="black" points="777.33,-75.5 787.33,-72 777.33,-68.5 777.33,-75.5"/>
</g>
<!-- 35 -->
<!-- name: &quot;Second&quot;, typeName: &quot;&quot;, id: 35, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node36" class="node">
<title>35</title>
<ellipse fill="none" stroke="black" cx="816.74" cy="-18" rx="39.09" ry="18"/>
<text text-anchor="middle" x="816.74" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Second</text>
</g>
<!-- 32&#45;&gt;35 -->
<g id="edge35" class="edge">
<title>32&#45;&gt;35</title>
<path fill="none" stroke="black" d="M642.3,-59.54C681.07,-50.26 733.5,-37.7 770.54,-28.83"/>
<polygon fill="black" stroke="black" points="771.12,-32.29 780.03,-26.55 769.49,-25.48 771.12,-32.29"/>
</g>
<!-- 34 -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 34, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node35" class="node">
<title>34</title>
<ellipse fill="none" stroke="black" cx="1018.24" cy="-72" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1018.24" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 33&#45;&gt;34 -->
<g id="edge34" class="edge">
<title>33&#45;&gt;34</title>
<path fill="none" stroke="black" d="M844.65,-72C878.26,-72 936.14,-72 975.52,-72"/>
<polygon fill="black" stroke="black" points="975.34,-75.5 985.34,-72 975.34,-68.5 975.34,-75.5"/>
</g>
<!-- 36 -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 36, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node37" class="node">
<title>36</title>
<ellipse fill="none" stroke="black" cx="1018.24" cy="-18" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1018.24" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 35&#45;&gt;36 -->
<g id="edge36" class="edge">
<title>35&#45;&gt;36</title>
<path fill="none" stroke="black" d="M856.21,-18C890.39,-18 940.24,-18 975.41,-18"/>
<polygon fill="black" stroke="black" points="975.21,-21.5 985.21,-18 975.21,-14.5 975.21,-21.5"/>
<path fill="none" stroke="black" d="M868.22,-18C901.03,-18 943.3,-18 974.17,-18"/>
<polygon fill="black" stroke="black" points="973.89,-21.5 983.89,-18 973.89,-14.5 973.89,-21.5"/>
</g>
</g>
</svg>

Before

(image error) Size: 26 KiB

After

(image error) Size: 22 KiB

@ -56,7 +56,7 @@
<polygon fill="black" stroke="black" points="208.32,-86.43 217.78,-81.65 207.4,-79.49 208.32,-86.43"/>
</g>
<!-- 7 -->
<!-- name: &quot;Tick&quot;, typeName: &quot;&quot;, id: 7, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;Which frame we&#39;re correcting; should match the tick in the Player Auth Input packet. (Can be 0 if not doing server auth movement.)&quot; -->
<!-- name: &quot;Tick&quot;, typeName: &quot;PlayerInputTick&quot;, id: 7, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;If this packet is referring to the player or a client predicted vehicle they are in control of, this should be the most recently processed PlayerInputTick from their PlayerAuthInputPacket. Otherwise zero.&quot; -->
<g id="node8" class="node">
<title>7</title>
<ellipse fill="none" stroke="black" cx="291.49" cy="-18" rx="27.61" ry="18"/>
@ -108,17 +108,17 @@
<polygon fill="black" stroke="black" points="1072.12,-75.5 1082.12,-72 1072.12,-68.5 1072.12,-75.5"/>
</g>
<!-- 8 -->
<!-- name: &quot;unsigned varint64&quot;, typeName: &quot;&quot;, id: 8, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- name: &quot;PlayerInputTick&quot;, typeName: &quot;&quot;, id: 8, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node9" class="node">
<title>8</title>
<ellipse fill="none" stroke="black" cx="1163.14" cy="-18" rx="75.51" ry="18"/>
<text text-anchor="middle" x="1163.14" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint64</text>
<ellipse fill="none" stroke="black" cx="1163.14" cy="-18" rx="70.03" ry="18"/>
<text text-anchor="middle" x="1163.14" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">PlayerInputTick</text>
</g>
<!-- 7&#45;&gt;8 -->
<g id="edge8" class="edge">
<title>7&#45;&gt;8</title>
<path fill="none" stroke="black" d="M319.47,-18C434.31,-18 885.24,-18 1076.08,-18"/>
<polygon fill="black" stroke="black" points="1075.94,-21.5 1085.94,-18 1075.94,-14.5 1075.94,-21.5"/>
<path fill="none" stroke="black" d="M319.47,-18C435.37,-18 893.64,-18 1081.33,-18"/>
<polygon fill="black" stroke="black" points="1081.24,-21.5 1091.24,-18 1081.24,-14.5 1081.24,-21.5"/>
</g>
</g>
</svg>

Before

(image error) Size: 7.3 KiB

After

(image error) Size: 7.3 KiB

@ -4,11 +4,11 @@
<!-- Generated by graphviz version 11.0.0 (20240428.1522)
-->
<!-- Title: SetActorMotionPacket Pages: 1 -->
<svg width="583pt" height="152pt"
viewBox="0.00 0.00 582.99 152.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="577pt" height="152pt"
viewBox="0.00 0.00 577.00 152.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 148)">
<title>SetActorMotionPacket</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-148 578.99,-148 578.99,4 -4,4"/>
<polygon fill="white" stroke="none" points="-4,4 -4,-148 573,-148 573,4 -4,4"/>
<!-- 0 -->
<!-- name: &quot;SetActorMotionPacket&quot;, typeName: &quot;&quot;, id: 0, branchId: 40, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
@ -43,56 +43,56 @@
<polygon fill="black" stroke="black" points="258.47,-75.5 268.47,-72 258.47,-68.5 258.47,-75.5"/>
</g>
<!-- 5 -->
<!-- name: &quot;Server Tick&quot;, typeName: &quot;&quot;, id: 5, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;Tick&quot;, typeName: &quot;PlayerInputTick&quot;, id: 5, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;If this packet is referring to the player or a client predicted vehicle they are in control of, this should be the most recently processed PlayerInputTick from their PlayerAuthInputPacket. Otherwise zero.&quot; -->
<g id="node6" class="node">
<title>5</title>
<ellipse fill="none" stroke="black" cx="307.95" cy="-18" rx="54.06" ry="18"/>
<text text-anchor="middle" x="307.95" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Server Tick</text>
<ellipse fill="none" stroke="black" cx="307.95" cy="-18" rx="27.61" ry="18"/>
<text text-anchor="middle" x="307.95" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Tick</text>
</g>
<!-- 0&#45;&gt;5 -->
<g id="edge5" class="edge">
<title>0&#45;&gt;5</title>
<path fill="none" stroke="black" d="M154.07,-57.32C185.01,-49.36 223,-39.59 253.37,-31.78"/>
<polygon fill="black" stroke="black" points="253.91,-35.25 262.72,-29.37 252.17,-28.48 253.91,-35.25"/>
<path fill="none" stroke="black" d="M154.07,-57.32C191.28,-47.75 238.7,-35.55 270.79,-27.3"/>
<polygon fill="black" stroke="black" points="271.59,-30.71 280.4,-24.83 269.85,-23.93 271.59,-30.71"/>
</g>
<!-- 2 -->
<!-- name: &quot;ActorRuntimeID&quot;, typeName: &quot;&quot;, id: 2, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>2</title>
<ellipse fill="none" stroke="black" cx="499.47" cy="-126" rx="72.52" ry="18"/>
<text text-anchor="middle" x="499.47" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">ActorRuntimeID</text>
<ellipse fill="none" stroke="black" cx="496.48" cy="-126" rx="72.52" ry="18"/>
<text text-anchor="middle" x="496.48" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">ActorRuntimeID</text>
</g>
<!-- 1&#45;&gt;2 -->
<g id="edge2" class="edge">
<title>1&#45;&gt;2</title>
<path fill="none" stroke="black" d="M388.23,-126C397.14,-126 406.25,-126 415.21,-126"/>
<polygon fill="black" stroke="black" points="414.95,-129.5 424.95,-126 414.95,-122.5 414.95,-129.5"/>
<path fill="none" stroke="black" d="M388.33,-126C396.19,-126 404.18,-126 412.08,-126"/>
<polygon fill="black" stroke="black" points="412.05,-129.5 422.05,-126 412.05,-122.5 412.05,-129.5"/>
</g>
<!-- 4 -->
<!-- name: &quot;Vec3&quot;, typeName: &quot;&quot;, id: 4, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>4</title>
<ellipse fill="none" stroke="black" cx="499.47" cy="-72" rx="30.11" ry="18"/>
<text text-anchor="middle" x="499.47" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Vec3</text>
<ellipse fill="none" stroke="black" cx="496.48" cy="-72" rx="30.11" ry="18"/>
<text text-anchor="middle" x="496.48" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Vec3</text>
</g>
<!-- 3&#45;&gt;4 -->
<g id="edge4" class="edge">
<title>3&#45;&gt;4</title>
<path fill="none" stroke="black" d="M345.94,-72C378.13,-72 424.69,-72 457.89,-72"/>
<polygon fill="black" stroke="black" points="457.52,-75.5 467.52,-72 457.52,-68.5 457.52,-75.5"/>
<path fill="none" stroke="black" d="M345.8,-72C377.2,-72 422.25,-72 454.72,-72"/>
<polygon fill="black" stroke="black" points="454.54,-75.5 464.54,-72 454.54,-68.5 454.54,-75.5"/>
</g>
<!-- 6 -->
<!-- name: &quot;unsigned varint64&quot;, typeName: &quot;&quot;, id: 6, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- name: &quot;PlayerInputTick&quot;, typeName: &quot;&quot;, id: 6, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>6</title>
<ellipse fill="none" stroke="black" cx="499.47" cy="-18" rx="75.51" ry="18"/>
<text text-anchor="middle" x="499.47" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint64</text>
<ellipse fill="none" stroke="black" cx="496.48" cy="-18" rx="70.03" ry="18"/>
<text text-anchor="middle" x="496.48" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">PlayerInputTick</text>
</g>
<!-- 5&#45;&gt;6 -->
<g id="edge6" class="edge">
<title>5&#45;&gt;6</title>
<path fill="none" stroke="black" d="M362.5,-18C378.04,-18 395.4,-18 412.4,-18"/>
<polygon fill="black" stroke="black" points="411.97,-21.5 421.97,-18 411.97,-14.5 411.97,-21.5"/>
<path fill="none" stroke="black" d="M335.68,-18C356.49,-18 386.52,-18 414.94,-18"/>
<polygon fill="black" stroke="black" points="414.64,-21.5 424.64,-18 414.64,-14.5 414.64,-21.5"/>
</g>
</g>
</svg>

Before

(image error) Size: 5.0 KiB

After

(image error) Size: 5.2 KiB

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 11.0.0 (20240428.1522)
-->
<!-- Title: SetMovementAuthorityPacket Pages: 1 -->
<svg width="592pt" height="44pt"
viewBox="0.00 0.00 591.75 44.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>SetMovementAuthorityPacket</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-40 587.75,-40 587.75,4 -4,4"/>
<!-- 0 -->
<!-- name: &quot;SetMovementAuthorityPacket&quot;, typeName: &quot;&quot;, id: 0, branchId: 319, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
<title>0</title>
<ellipse fill="none" stroke="black" cx="121.92" cy="-18" rx="121.92" ry="18"/>
<text text-anchor="middle" x="121.92" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">SetMovementAuthorityPacket</text>
</g>
<!-- 1 -->
<!-- name: &quot;NewAuthMovementMode&quot;, typeName: &quot;&quot;, id: 1, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node2" class="node">
<title>1</title>
<ellipse fill="none" stroke="black" cx="386.79" cy="-18" rx="106.95" ry="18"/>
<text text-anchor="middle" x="386.79" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">NewAuthMovementMode</text>
</g>
<!-- 0&#45;&gt;1 -->
<g id="edge1" class="edge">
<title>0&#45;&gt;1</title>
<path fill="none" stroke="black" d="M243.97,-18C252.03,-18 260.14,-18 268.18,-18"/>
<polygon fill="black" stroke="black" points="267.98,-21.5 277.98,-18 267.98,-14.5 267.98,-21.5"/>
</g>
<!-- 2 -->
<!-- name: &quot;byte&quot;, typeName: &quot;&quot;, id: 2, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>2</title>
<ellipse fill="none" stroke="black" cx="556.75" cy="-18" rx="27" ry="18"/>
<text text-anchor="middle" x="556.75" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">byte</text>
</g>
<!-- 1&#45;&gt;2 -->
<g id="edge2" class="edge">
<title>1&#45;&gt;2</title>
<path fill="none" stroke="black" d="M494.16,-18C502.6,-18 510.72,-18 518.13,-18"/>
<polygon fill="black" stroke="black" points="518,-21.5 528,-18 518,-14.5 518,-21.5"/>
</g>
</g>
</svg>

After

(image error) Size: 2.3 KiB

@ -1,280 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 11.0.0 (20240428.1522)
-->
<!-- Title: ShulkerBoxRecipe Pages: 1 -->
<svg width="1003pt" height="422pt"
viewBox="0.00 0.00 1002.95 422.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 418)">
<title>ShulkerBoxRecipe</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-418 998.95,-418 998.95,4 -4,4"/>
<!-- 6 -->
<!-- name: &quot;ShulkerBoxRecipe&quot;, typeName: &quot;&quot;, id: 6, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
<title>6</title>
<ellipse fill="none" stroke="black" cx="80.01" cy="-153" rx="80.01" ry="18"/>
<text text-anchor="middle" x="80.01" y="-147.57" font-family="Times New Roman,serif" font-size="14.00">ShulkerBoxRecipe</text>
</g>
<!-- 7 -->
<!-- name: &quot;Recipe Unique Id&quot;, typeName: &quot;&quot;, id: 7, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node2" class="node">
<title>7</title>
<ellipse fill="none" stroke="black" cx="624.13" cy="-392" rx="76.01" ry="18"/>
<text text-anchor="middle" x="624.13" y="-386.57" font-family="Times New Roman,serif" font-size="14.00">Recipe Unique Id</text>
</g>
<!-- 6&#45;&gt;7 -->
<g id="edge1" class="edge">
<title>6&#45;&gt;7</title>
<path fill="none" stroke="black" d="M89.05,-171.28C104.72,-204.8 142.56,-276.2 196.01,-315 297.27,-388.51 446.9,-399.05 539.53,-397.38"/>
<polygon fill="black" stroke="black" points="539.39,-400.89 549.3,-397.15 539.22,-393.89 539.39,-400.89"/>
</g>
<!-- 9 -->
<!-- name: &quot;Ingredient List&quot;, typeName: &quot;&quot;, id: 9, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<g id="node4" class="node">
<title>9</title>
<ellipse fill="none" stroke="black" cx="264.54" cy="-288" rx="64.04" ry="18"/>
<text text-anchor="middle" x="264.54" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">Ingredient List</text>
</g>
<!-- 6&#45;&gt;9 -->
<g id="edge3" class="edge">
<title>6&#45;&gt;9</title>
<path fill="none" stroke="black" d="M104.5,-170.37C136.76,-194.23 194.91,-237.24 231.24,-264.11"/>
<polygon fill="black" stroke="black" points="229.09,-266.87 239.21,-270.01 233.25,-261.25 229.09,-266.87"/>
</g>
<!-- 15 -->
<!-- name: &quot;Production List&quot;, typeName: &quot;&quot;, id: 15, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<g id="node10" class="node">
<title>15</title>
<ellipse fill="none" stroke="black" cx="264.54" cy="-180" rx="68.53" ry="18"/>
<text text-anchor="middle" x="264.54" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Production List</text>
</g>
<!-- 6&#45;&gt;15 -->
<g id="edge9" class="edge">
<title>6&#45;&gt;15</title>
<path fill="none" stroke="black" d="M147.94,-162.9C162.61,-165.07 178.2,-167.38 193.01,-169.57"/>
<polygon fill="black" stroke="black" points="192.25,-172.99 202.66,-170.99 193.28,-166.07 192.25,-172.99"/>
</g>
<!-- 21 -->
<!-- name: &quot;Recipe ID&quot;, typeName: &quot;mce::UUID&quot;, id: 21, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node16" class="node">
<title>21</title>
<ellipse fill="none" stroke="black" cx="264.54" cy="-126" rx="48.57" ry="18"/>
<text text-anchor="middle" x="264.54" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Recipe ID</text>
</g>
<!-- 6&#45;&gt;21 -->
<g id="edge15" class="edge">
<title>6&#45;&gt;21</title>
<path fill="none" stroke="black" d="M147.94,-143.1C167.49,-140.21 188.64,-137.08 207.45,-134.3"/>
<polygon fill="black" stroke="black" points="207.94,-137.76 217.32,-132.84 206.91,-130.84 207.94,-137.76"/>
</g>
<!-- 23 -->
<!-- name: &quot;Recipe Tag&quot;, typeName: &quot;&quot;, id: 23, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;Available ones: CARTOGRAPHY_TABLE, CRAFTING_TABLE, SMITHING_TABLE, STONECUTTER, FURNACE_TAG, BLAST_FURNACE_TAG, SMOKER_TAG, CAMPFIRE_TAG, SOUL_CAMPFIRE_TAG&quot; -->
<g id="node18" class="node">
<title>23</title>
<ellipse fill="none" stroke="black" cx="624.13" cy="-74" rx="53.56" ry="18"/>
<text text-anchor="middle" x="624.13" y="-68.58" font-family="Times New Roman,serif" font-size="14.00">Recipe Tag</text>
</g>
<!-- 6&#45;&gt;23 -->
<g id="edge17" class="edge">
<title>6&#45;&gt;23</title>
<path fill="none" stroke="black" d="M109.17,-136.05C131.78,-123.38 164.8,-106.93 196.01,-99 322.01,-67 475.36,-67.07 559.77,-70.32"/>
<polygon fill="black" stroke="black" points="559.57,-73.81 569.7,-70.73 559.86,-66.82 559.57,-73.81"/>
</g>
<!-- 25 -->
<!-- name: &quot;Priority&quot;, typeName: &quot;&quot;, id: 25, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node20" class="node">
<title>25</title>
<ellipse fill="none" stroke="black" cx="264.54" cy="-22" rx="38.09" ry="18"/>
<text text-anchor="middle" x="264.54" y="-16.57" font-family="Times New Roman,serif" font-size="14.00">Priority</text>
</g>
<!-- 6&#45;&gt;25 -->
<g id="edge19" class="edge">
<title>6&#45;&gt;25</title>
<path fill="none" stroke="black" d="M101.56,-135.35C124.08,-116.34 161.6,-85.65 196.01,-62 206.39,-54.87 218.08,-47.67 228.78,-41.38"/>
<polygon fill="black" stroke="black" points="230.45,-44.46 237.35,-36.42 226.95,-38.4 230.45,-44.46"/>
</g>
<!-- 8 -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 8, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>8</title>
<ellipse fill="none" stroke="black" cx="865.55" cy="-396" rx="31.1" ry="18"/>
<text text-anchor="middle" x="865.55" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 7&#45;&gt;8 -->
<g id="edge2" class="edge">
<title>7&#45;&gt;8</title>
<path fill="none" stroke="black" d="M700.22,-393.25C740.71,-393.93 789.13,-394.74 822.88,-395.3"/>
<polygon fill="black" stroke="black" points="822.6,-398.8 832.66,-395.47 822.72,-391.8 822.6,-398.8"/>
</g>
<!-- 10 -->
<!-- name: &quot;Array Size&quot;, typeName: &quot;&quot;, id: 10, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>10</title>
<ellipse fill="none" stroke="black" cx="440.59" cy="-342" rx="49.57" ry="18"/>
<text text-anchor="middle" x="440.59" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">Array Size</text>
</g>
<!-- 9&#45;&gt;10 -->
<g id="edge4" class="edge">
<title>9&#45;&gt;10</title>
<path fill="none" stroke="black" d="M308.56,-301.35C333.67,-309.14 365.4,-318.98 391.35,-327.03"/>
<polygon fill="black" stroke="black" points="390.05,-330.29 400.64,-329.91 392.12,-323.61 390.05,-330.29"/>
</g>
<!-- 12 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 12, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>12</title>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="440.59" cy="-288" rx="71.52" ry="18"/>
<text text-anchor="middle" x="440.59" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">example element</text>
</g>
<!-- 9&#45;&gt;12 -->
<g id="edge6" class="edge">
<title>9&#45;&gt;12</title>
<path fill="none" stroke="black" d="M328.87,-288C338.16,-288 347.84,-288 357.44,-288"/>
<polygon fill="black" stroke="black" points="357.14,-291.5 367.14,-288 357.14,-284.5 357.14,-291.5"/>
</g>
<!-- 11 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 11, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node6" class="node">
<title>11</title>
<ellipse fill="none" stroke="black" cx="865.55" cy="-342" rx="66.53" ry="18"/>
<text text-anchor="middle" x="865.55" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 10&#45;&gt;11 -->
<g id="edge5" class="edge">
<title>10&#45;&gt;11</title>
<path fill="none" stroke="black" d="M490.52,-342C563.36,-342 700.98,-342 787.44,-342"/>
<polygon fill="black" stroke="black" points="787.25,-345.5 797.25,-342 787.25,-338.5 787.25,-345.5"/>
</g>
<!-- 13 -->
<!-- name: &quot;Ingredient&quot;, typeName: &quot;RecipeIngredient&quot;, id: 13, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node8" class="node">
<title>13</title>
<ellipse fill="none" stroke="black" cx="624.13" cy="-288" rx="47.57" ry="18"/>
<text text-anchor="middle" x="624.13" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">Ingredient</text>
</g>
<!-- 12&#45;&gt;13 -->
<g id="edge7" class="edge">
<title>12&#45;&gt;13</title>
<path fill="none" stroke="black" d="M512.56,-288C529.93,-288 548.32,-288 565.01,-288"/>
<polygon fill="black" stroke="black" points="564.74,-291.5 574.74,-288 564.74,-284.5 564.74,-291.5"/>
</g>
<!-- 14 -->
<!-- name: &quot;RecipeIngredient&quot;, typeName: &quot;&quot;, id: 14, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node9" class="node">
<title>14</title>
<ellipse fill="none" stroke="black" cx="865.55" cy="-288" rx="73.52" ry="18"/>
<text text-anchor="middle" x="865.55" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">RecipeIngredient</text>
</g>
<!-- 13&#45;&gt;14 -->
<g id="edge8" class="edge">
<title>13&#45;&gt;14</title>
<path fill="none" stroke="black" d="M672.14,-288C703,-288 744.22,-288 780.59,-288"/>
<polygon fill="black" stroke="black" points="780.2,-291.5 790.2,-288 780.2,-284.5 780.2,-291.5"/>
</g>
<!-- 16 -->
<!-- name: &quot;Array Size&quot;, typeName: &quot;&quot;, id: 16, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node11" class="node">
<title>16</title>
<ellipse fill="none" stroke="black" cx="440.59" cy="-234" rx="49.57" ry="18"/>
<text text-anchor="middle" x="440.59" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">Array Size</text>
</g>
<!-- 15&#45;&gt;16 -->
<g id="edge10" class="edge">
<title>15&#45;&gt;16</title>
<path fill="none" stroke="black" d="M309.91,-193.77C334.74,-201.47 365.72,-211.08 391.18,-218.98"/>
<polygon fill="black" stroke="black" points="390.04,-222.29 400.63,-221.91 392.12,-215.61 390.04,-222.29"/>
</g>
<!-- 18 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 18, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<g id="node13" class="node">
<title>18</title>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="440.59" cy="-180" rx="71.52" ry="18"/>
<text text-anchor="middle" x="440.59" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">example element</text>
</g>
<!-- 15&#45;&gt;18 -->
<g id="edge12" class="edge">
<title>15&#45;&gt;18</title>
<path fill="none" stroke="black" d="M333.33,-180C341.25,-180 349.38,-180 357.47,-180"/>
<polygon fill="black" stroke="black" points="357.31,-183.5 367.31,-180 357.31,-176.5 357.31,-183.5"/>
</g>
<!-- 17 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 17, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node12" class="node">
<title>17</title>
<ellipse fill="none" stroke="black" cx="865.55" cy="-234" rx="66.53" ry="18"/>
<text text-anchor="middle" x="865.55" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 16&#45;&gt;17 -->
<g id="edge11" class="edge">
<title>16&#45;&gt;17</title>
<path fill="none" stroke="black" d="M490.52,-234C563.36,-234 700.98,-234 787.44,-234"/>
<polygon fill="black" stroke="black" points="787.25,-237.5 797.25,-234 787.25,-230.5 787.25,-237.5"/>
</g>
<!-- 19 -->
<!-- name: &quot;Produced Item&quot;, typeName: &quot;NetworkItemInstanceDescriptor&quot;, id: 19, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node14" class="node">
<title>19</title>
<ellipse fill="none" stroke="black" cx="624.13" cy="-180" rx="66.03" ry="18"/>
<text text-anchor="middle" x="624.13" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Produced Item</text>
</g>
<!-- 18&#45;&gt;19 -->
<g id="edge13" class="edge">
<title>18&#45;&gt;19</title>
<path fill="none" stroke="black" d="M512.56,-180C523.75,-180 535.36,-180 546.66,-180"/>
<polygon fill="black" stroke="black" points="546.32,-183.5 556.32,-180 546.32,-176.5 546.32,-183.5"/>
</g>
<!-- 20 -->
<!-- name: &quot;NetworkItemInstanceDescriptor&quot;, typeName: &quot;&quot;, id: 20, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node15" class="node">
<title>20</title>
<ellipse fill="none" stroke="black" cx="865.55" cy="-180" rx="129.41" ry="18"/>
<text text-anchor="middle" x="865.55" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">NetworkItemInstanceDescriptor</text>
</g>
<!-- 19&#45;&gt;20 -->
<g id="edge14" class="edge">
<title>19&#45;&gt;20</title>
<path fill="none" stroke="black" d="M690.55,-180C701.25,-180 712.69,-180 724.39,-180"/>
<polygon fill="black" stroke="black" points="724.17,-183.5 734.17,-180 724.17,-176.5 724.17,-183.5"/>
</g>
<!-- 22 -->
<!-- name: &quot;mce::UUID&quot;, typeName: &quot;&quot;, id: 22, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node17" class="node">
<title>22</title>
<ellipse fill="none" stroke="black" cx="865.55" cy="-126" rx="52.56" ry="18"/>
<text text-anchor="middle" x="865.55" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">mce::UUID</text>
</g>
<!-- 21&#45;&gt;22 -->
<g id="edge16" class="edge">
<title>21&#45;&gt;22</title>
<path fill="none" stroke="black" d="M313.55,-126C420.99,-126 680.83,-126 801.28,-126"/>
<polygon fill="black" stroke="black" points="800.98,-129.5 810.98,-126 800.98,-122.5 800.98,-129.5"/>
</g>
<!-- 24 -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 24, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node19" class="node">
<title>24</title>
<ellipse fill="none" stroke="black" cx="865.55" cy="-72" rx="31.1" ry="18"/>
<text text-anchor="middle" x="865.55" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 23&#45;&gt;24 -->
<g id="edge18" class="edge">
<title>23&#45;&gt;24</title>
<path fill="none" stroke="black" d="M677.97,-73.56C721.58,-73.19 782.64,-72.68 822.87,-72.35"/>
<polygon fill="black" stroke="black" points="822.65,-75.85 832.62,-72.27 822.59,-68.85 822.65,-75.85"/>
</g>
<!-- 26 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 26, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node21" class="node">
<title>26</title>
<ellipse fill="none" stroke="black" cx="865.55" cy="-18" rx="31.1" ry="18"/>
<text text-anchor="middle" x="865.55" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 25&#45;&gt;26 -->
<g id="edge20" class="edge">
<title>25&#45;&gt;26</title>
<path fill="none" stroke="black" d="M303.01,-21.75C409.15,-21.04 711.33,-19.02 822.68,-18.28"/>
<polygon fill="black" stroke="black" points="822.59,-21.78 832.56,-18.21 822.54,-14.78 822.59,-21.78"/>
</g>
</g>
</svg>

Before

(image error) Size: 15 KiB

@ -4,11 +4,11 @@
<!-- Generated by graphviz version 11.0.0 (20240428.1522)
-->
<!-- Title: SyncedPlayerMovementSettings Pages: 1 -->
<svg width="695pt" height="152pt"
viewBox="0.00 0.00 694.76 152.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="691pt" height="152pt"
viewBox="0.00 0.00 690.77 152.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 148)">
<title>SyncedPlayerMovementSettings</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-148 690.76,-148 690.76,4 -4,4"/>
<polygon fill="white" stroke="none" points="-4,4 -4,-148 686.77,-148 686.77,4 -4,4"/>
<!-- 155 -->
<!-- name: &quot;SyncedPlayerMovementSettings&quot;, typeName: &quot;&quot;, id: 155, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
@ -17,82 +17,82 @@
<text text-anchor="middle" x="130.4" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">SyncedPlayerMovementSettings</text>
</g>
<!-- 156 -->
<!-- name: &quot;Authority Mode&quot;, typeName: &quot;&quot;, id: 156, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;Authority Mode&quot;, typeName: &quot;&quot;, id: 156, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;See explanation of modes in enum table&quot; -->
<g id="node2" class="node">
<title>156</title>
<ellipse fill="none" stroke="black" cx="442.68" cy="-126" rx="70.03" ry="18"/>
<text text-anchor="middle" x="442.68" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Authority Mode</text>
<ellipse fill="none" stroke="black" cx="440.69" cy="-126" rx="70.03" ry="18"/>
<text text-anchor="middle" x="440.69" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Authority Mode</text>
</g>
<!-- 155&#45;&gt;156 -->
<g id="edge1" class="edge">
<title>155&#45;&gt;156</title>
<path fill="none" stroke="black" d="M213.33,-86.26C262.93,-94.89 325.47,-105.78 372.56,-113.97"/>
<polygon fill="black" stroke="black" points="371.93,-117.41 382.38,-115.68 373.13,-110.52 371.93,-117.41"/>
<path fill="none" stroke="black" d="M212.8,-86.26C261.92,-94.86 323.81,-105.7 370.54,-113.89"/>
<polygon fill="black" stroke="black" points="369.83,-117.32 380.28,-115.59 371.04,-110.42 369.83,-117.32"/>
</g>
<!-- 158 -->
<!-- name: &quot;Rewind History Size&quot;, typeName: &quot;&quot;, id: 158, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;Rewind History Size&quot;, typeName: &quot;&quot;, id: 158, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;When using server authoritative movement mode, this determines the number of ticks the client keeps in history for use in processing corrections. Should at least account for the largest expected round trip latency. In Bedrock this is 40 ticks.&quot; -->
<g id="node4" class="node">
<title>158</title>
<ellipse fill="none" stroke="black" cx="442.68" cy="-72" rx="86.99" ry="18"/>
<text text-anchor="middle" x="442.68" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Rewind History Size</text>
<ellipse fill="none" stroke="black" cx="440.69" cy="-72" rx="86.99" ry="18"/>
<text text-anchor="middle" x="440.69" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Rewind History Size</text>
</g>
<!-- 155&#45;&gt;158 -->
<g id="edge3" class="edge">
<title>155&#45;&gt;158</title>
<path fill="none" stroke="black" d="M261.19,-72C288.82,-72 317.55,-72 343.75,-72"/>
<polygon fill="black" stroke="black" points="343.69,-75.5 353.69,-72 343.69,-68.5 343.69,-75.5"/>
<path fill="none" stroke="black" d="M261.25,-72C288.34,-72 316.46,-72 342.14,-72"/>
<polygon fill="black" stroke="black" points="341.86,-75.5 351.86,-72 341.86,-68.5 341.86,-75.5"/>
</g>
<!-- 160 -->
<!-- name: &quot;Server Authoratative Block Breaking&quot;, typeName: &quot;&quot;, id: 160, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;Server Authoritative Block Breaking&quot;, typeName: &quot;&quot;, id: 160, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node6" class="node">
<title>160</title>
<ellipse fill="none" stroke="black" cx="442.68" cy="-18" rx="145.87" ry="18"/>
<text text-anchor="middle" x="442.68" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Server Authoratative Block Breaking</text>
<ellipse fill="none" stroke="black" cx="440.69" cy="-18" rx="143.88" ry="18"/>
<text text-anchor="middle" x="440.69" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Server Authoritative Block Breaking</text>
</g>
<!-- 155&#45;&gt;160 -->
<g id="edge5" class="edge">
<title>155&#45;&gt;160</title>
<path fill="none" stroke="black" d="M213.33,-57.74C253.71,-50.71 302.68,-42.19 344.89,-34.84"/>
<polygon fill="black" stroke="black" points="345.3,-38.33 354.55,-33.16 344.1,-31.43 345.3,-38.33"/>
<path fill="none" stroke="black" d="M212.8,-57.74C253.01,-50.7 301.77,-42.16 343.78,-34.8"/>
<polygon fill="black" stroke="black" points="344.13,-38.29 353.37,-33.12 342.92,-31.4 344.13,-38.29"/>
</g>
<!-- 157 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 157, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>157</title>
<ellipse fill="none" stroke="black" cx="655.66" cy="-126" rx="31.1" ry="18"/>
<text text-anchor="middle" x="655.66" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">varint</text>
<ellipse fill="none" stroke="black" cx="651.67" cy="-126" rx="31.1" ry="18"/>
<text text-anchor="middle" x="651.67" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 156&#45;&gt;157 -->
<g id="edge2" class="edge">
<title>156&#45;&gt;157</title>
<path fill="none" stroke="black" d="M513.06,-126C546.09,-126 584.51,-126 612.99,-126"/>
<polygon fill="black" stroke="black" points="612.64,-129.5 622.64,-126 612.64,-122.5 612.64,-129.5"/>
<path fill="none" stroke="black" d="M510.98,-126C543.32,-126 580.74,-126 608.71,-126"/>
<polygon fill="black" stroke="black" points="608.56,-129.5 618.56,-126 608.56,-122.5 608.56,-129.5"/>
</g>
<!-- 159 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 159, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>159</title>
<ellipse fill="none" stroke="black" cx="655.66" cy="-72" rx="31.1" ry="18"/>
<text text-anchor="middle" x="655.66" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">varint</text>
<ellipse fill="none" stroke="black" cx="651.67" cy="-72" rx="31.1" ry="18"/>
<text text-anchor="middle" x="651.67" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 158&#45;&gt;159 -->
<g id="edge4" class="edge">
<title>158&#45;&gt;159</title>
<path fill="none" stroke="black" d="M530.1,-72C558.63,-72 589.07,-72 612.73,-72"/>
<polygon fill="black" stroke="black" points="612.58,-75.5 622.58,-72 612.58,-68.5 612.58,-75.5"/>
<path fill="none" stroke="black" d="M527.89,-72C555.75,-72 585.41,-72 608.59,-72"/>
<polygon fill="black" stroke="black" points="608.56,-75.5 618.56,-72 608.56,-68.5 608.56,-75.5"/>
</g>
<!-- 161 -->
<!-- name: &quot;bool&quot;, typeName: &quot;&quot;, id: 161, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>161</title>
<ellipse fill="none" stroke="black" cx="655.66" cy="-18" rx="27.61" ry="18"/>
<text text-anchor="middle" x="655.66" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">bool</text>
<ellipse fill="none" stroke="black" cx="651.67" cy="-18" rx="27.61" ry="18"/>
<text text-anchor="middle" x="651.67" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">bool</text>
</g>
<!-- 160&#45;&gt;161 -->
<g id="edge6" class="edge">
<title>160&#45;&gt;161</title>
<path fill="none" stroke="black" d="M588.77,-18C598.59,-18 607.87,-18 616.21,-18"/>
<polygon fill="black" stroke="black" points="616.17,-21.5 626.17,-18 616.17,-14.5 616.17,-21.5"/>
<path fill="none" stroke="black" d="M584.83,-18C594.63,-18 603.9,-18 612.22,-18"/>
<polygon fill="black" stroke="black" points="612.18,-21.5 622.18,-18 612.18,-14.5 612.18,-21.5"/>
</g>
</g>
</svg>

Before

(image error) Size: 5.2 KiB

After

(image error) Size: 5.5 KiB

@ -9,36 +9,36 @@
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>TypedClientNetId&lt;struct ItemStackLegacyRequestIdTag,int,0&gt;</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-40 821.5,-40 821.5,4 -4,4"/>
<!-- 34 -->
<!-- name: &quot;TypedClientNetId&lt;struct ItemStackLegacyRequestIdTag,int,0&gt;&quot;, typeName: &quot;&quot;, id: 34, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 30 -->
<!-- name: &quot;TypedClientNetId&lt;struct ItemStackLegacyRequestIdTag,int,0&gt;&quot;, typeName: &quot;&quot;, id: 30, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
<title>34</title>
<title>30</title>
<ellipse fill="none" stroke="black" cx="247.67" cy="-18" rx="247.67" ry="18"/>
<text text-anchor="middle" x="247.67" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">TypedClientNetId&lt;struct ItemStackLegacyRequestIdTag,int,0&gt;</text>
</g>
<!-- 35 -->
<!-- name: &quot;Raw Id (32 bit signed)&quot;, typeName: &quot;&quot;, id: 35, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 31 -->
<!-- name: &quot;Raw Id (32 bit signed)&quot;, typeName: &quot;&quot;, id: 31, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node2" class="node">
<title>35</title>
<title>31</title>
<ellipse fill="none" stroke="black" cx="625.31" cy="-18" rx="93.98" ry="18"/>
<text text-anchor="middle" x="625.31" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Raw Id (32 bit signed)</text>
</g>
<!-- 34&#45;&gt;35 -->
<!-- 30&#45;&gt;31 -->
<g id="edge1" class="edge">
<title>34&#45;&gt;35</title>
<title>30&#45;&gt;31</title>
<path fill="none" stroke="black" d="M495.83,-18C504.05,-18 512.11,-18 519.93,-18"/>
<polygon fill="black" stroke="black" points="519.69,-21.5 529.69,-18 519.69,-14.5 519.69,-21.5"/>
</g>
<!-- 36 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 36, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 32 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 32, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>36</title>
<title>32</title>
<ellipse fill="none" stroke="black" cx="786.4" cy="-18" rx="31.1" ry="18"/>
<text text-anchor="middle" x="786.4" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 35&#45;&gt;36 -->
<!-- 31&#45;&gt;32 -->
<g id="edge2" class="edge">
<title>35&#45;&gt;36</title>
<title>31&#45;&gt;32</title>
<path fill="none" stroke="black" d="M719.77,-18C728.12,-18 736.25,-18 743.79,-18"/>
<polygon fill="black" stroke="black" points="743.58,-21.5 753.58,-18 743.58,-14.5 743.58,-21.5"/>
</g>

Before

(image error) Size: 2.5 KiB

After

(image error) Size: 2.5 KiB

@ -9,36 +9,36 @@
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>TypedClientNetId&lt;struct ItemStackRequestIdTag,int,0&gt;</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-40 767.61,-40 767.61,4 -4,4"/>
<!-- 86 -->
<!-- name: &quot;TypedClientNetId&lt;struct ItemStackRequestIdTag,int,0&gt;&quot;, typeName: &quot;&quot;, id: 86, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 82 -->
<!-- name: &quot;TypedClientNetId&lt;struct ItemStackRequestIdTag,int,0&gt;&quot;, typeName: &quot;&quot;, id: 82, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
<title>86</title>
<title>82</title>
<ellipse fill="none" stroke="black" cx="220.72" cy="-18" rx="220.72" ry="18"/>
<text text-anchor="middle" x="220.72" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">TypedClientNetId&lt;struct ItemStackRequestIdTag,int,0&gt;</text>
</g>
<!-- 87 -->
<!-- name: &quot;Raw Id (32 bit signed)&quot;, typeName: &quot;&quot;, id: 87, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 83 -->
<!-- name: &quot;Raw Id (32 bit signed)&quot;, typeName: &quot;&quot;, id: 83, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node2" class="node">
<title>87</title>
<title>83</title>
<ellipse fill="none" stroke="black" cx="571.42" cy="-18" rx="93.98" ry="18"/>
<text text-anchor="middle" x="571.42" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Raw Id (32 bit signed)</text>
</g>
<!-- 86&#45;&gt;87 -->
<!-- 82&#45;&gt;83 -->
<g id="edge1" class="edge">
<title>86&#45;&gt;87</title>
<title>82&#45;&gt;83</title>
<path fill="none" stroke="black" d="M441.57,-18C449.79,-18 457.87,-18 465.72,-18"/>
<polygon fill="black" stroke="black" points="465.55,-21.5 475.55,-18 465.55,-14.5 465.55,-21.5"/>
</g>
<!-- 88 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 88, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 84 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 84, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>88</title>
<title>84</title>
<ellipse fill="none" stroke="black" cx="732.5" cy="-18" rx="31.1" ry="18"/>
<text text-anchor="middle" x="732.5" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 87&#45;&gt;88 -->
<!-- 83&#45;&gt;84 -->
<g id="edge2" class="edge">
<title>87&#45;&gt;88</title>
<title>83&#45;&gt;84</title>
<path fill="none" stroke="black" d="M665.88,-18C674.23,-18 682.36,-18 689.9,-18"/>
<polygon fill="black" stroke="black" points="689.69,-21.5 699.69,-18 689.69,-14.5 689.69,-21.5"/>
</g>

Before

(image error) Size: 2.5 KiB

After

(image error) Size: 2.5 KiB

@ -4,11 +4,11 @@
<!-- Generated by graphviz version 11.0.0 (20240428.1522)
-->
<!-- Title: UpdateAttributesPacket Pages: 1 -->
<svg width="1465pt" height="908pt"
viewBox="0.00 0.00 1464.84 908.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="1255pt" height="908pt"
viewBox="0.00 0.00 1255.26 908.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 904)">
<title>UpdateAttributesPacket</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-904 1460.84,-904 1460.84,4 -4,4"/>
<polygon fill="white" stroke="none" points="-4,4 -4,-904 1251.26,-904 1251.26,4 -4,4"/>
<!-- 0 -->
<!-- name: &quot;UpdateAttributesPacket&quot;, typeName: &quot;&quot;, id: 0, branchId: 29, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
@ -17,498 +17,498 @@
<text text-anchor="middle" x="98.97" y="-646.58" font-family="Times New Roman,serif" font-size="14.00">UpdateAttributesPacket</text>
</g>
<!-- 1 -->
<!-- name: &quot;Target Runtime ID&quot;, typeName: &quot;ActorRuntimeID&quot;, id: 1, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<!-- name: &quot;RuntimeID&quot;, typeName: &quot;ActorRuntimeID&quot;, id: 1, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;Target Runtime ID&quot; -->
<g id="node2" class="node">
<title>1</title>
<ellipse fill="none" stroke="black" cx="655.66" cy="-868" rx="80.01" ry="18"/>
<text text-anchor="middle" x="655.66" y="-862.58" font-family="Times New Roman,serif" font-size="14.00">Target Runtime ID</text>
<ellipse fill="none" stroke="black" cx="460.55" cy="-868" rx="51.06" ry="18"/>
<text text-anchor="middle" x="460.55" y="-862.58" font-family="Times New Roman,serif" font-size="14.00">RuntimeID</text>
</g>
<!-- 0&#45;&gt;1 -->
<g id="edge1" class="edge">
<title>0&#45;&gt;1</title>
<path fill="none" stroke="black" d="M142.57,-668.59C243.13,-707.75 494.92,-805.8 603.5,-848.08"/>
<polygon fill="black" stroke="black" points="602.17,-851.32 612.76,-851.68 604.71,-844.79 602.17,-851.32"/>
<path fill="none" stroke="black" d="M129.09,-669.49C194.43,-708.74 352.54,-803.72 423.74,-846.49"/>
<polygon fill="black" stroke="black" points="421.92,-849.48 432.3,-851.63 425.53,-843.48 421.92,-849.48"/>
</g>
<!-- 3 -->
<!-- name: &quot;Attribute List&quot;, typeName: &quot;&quot;, id: 3, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;AttributeData &#45; Helper Struct&quot; -->
<g id="node4" class="node">
<title>3</title>
<ellipse fill="none" stroke="black" cx="386.79" cy="-652" rx="59.55" ry="18"/>
<text text-anchor="middle" x="386.79" y="-646.58" font-family="Times New Roman,serif" font-size="14.00">Attribute List</text>
<ellipse fill="none" stroke="black" cx="293.48" cy="-652" rx="59.55" ry="18"/>
<text text-anchor="middle" x="293.48" y="-646.58" font-family="Times New Roman,serif" font-size="14.00">Attribute List</text>
</g>
<!-- 0&#45;&gt;3 -->
<g id="edge3" class="edge">
<title>0&#45;&gt;3</title>
<path fill="none" stroke="black" d="M198.33,-652C236.95,-652 280.38,-652 315.71,-652"/>
<polygon fill="black" stroke="black" points="315.37,-655.5 325.37,-652 315.37,-648.5 315.37,-655.5"/>
<path fill="none" stroke="black" d="M198.2,-652C206.3,-652 214.37,-652 222.2,-652"/>
<polygon fill="black" stroke="black" points="221.96,-655.5 231.96,-652 221.96,-648.5 221.96,-655.5"/>
</g>
<!-- 37 -->
<!-- name: &quot;Count of ticks since simulation started&quot;, typeName: &quot;&quot;, id: 37, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;Tick&quot;, typeName: &quot;PlayerInputTick&quot;, id: 37, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;If this packet is referring to the player or a client predicted vehicle they are in control of, this should be the most recently processed PlayerInputTick from their PlayerAuthInputPacket. Otherwise zero.&quot; -->
<g id="node38" class="node">
<title>37</title>
<ellipse fill="none" stroke="black" cx="386.79" cy="-328" rx="152.86" ry="18"/>
<text text-anchor="middle" x="386.79" y="-322.57" font-family="Times New Roman,serif" font-size="14.00">Count of ticks since simulation started</text>
<ellipse fill="none" stroke="black" cx="293.48" cy="-328" rx="27.61" ry="18"/>
<text text-anchor="middle" x="293.48" y="-322.57" font-family="Times New Roman,serif" font-size="14.00">Tick</text>
</g>
<!-- 0&#45;&gt;37 -->
<g id="edge37" class="edge">
<title>0&#45;&gt;37</title>
<path fill="none" stroke="black" d="M115.74,-634.12C163.36,-580.14 305.83,-418.64 362.33,-354.59"/>
<polygon fill="black" stroke="black" points="364.72,-357.17 368.71,-347.36 359.47,-352.54 364.72,-357.17"/>
<path fill="none" stroke="black" d="M110.87,-633.65C143.19,-579.25 238.62,-418.66 276.61,-354.71"/>
<polygon fill="black" stroke="black" points="279.53,-356.65 281.63,-346.27 273.51,-353.08 279.53,-356.65"/>
</g>
<!-- 2 -->
<!-- name: &quot;ActorRuntimeID&quot;, typeName: &quot;&quot;, id: 2, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>2</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-882" rx="72.52" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-876.58" font-family="Times New Roman,serif" font-size="14.00">ActorRuntimeID</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-882" rx="72.52" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-876.58" font-family="Times New Roman,serif" font-size="14.00">ActorRuntimeID</text>
</g>
<!-- 1&#45;&gt;2 -->
<g id="edge2" class="edge">
<title>1&#45;&gt;2</title>
<path fill="none" stroke="black" d="M735.83,-869.53C873.84,-872.2 1157.13,-877.68 1297.59,-880.4"/>
<polygon fill="black" stroke="black" points="1297.11,-883.89 1307.17,-880.58 1297.24,-876.89 1297.11,-883.89"/>
<path fill="none" stroke="black" d="M511.91,-868.99C633.1,-871.37 941.93,-877.44 1090.89,-880.37"/>
<polygon fill="black" stroke="black" points="1090.62,-883.87 1100.69,-880.56 1090.76,-876.87 1090.62,-883.87"/>
</g>
<!-- 4 -->
<!-- name: &quot;Array Size&quot;, typeName: &quot;&quot;, id: 4, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>4</title>
<ellipse fill="none" stroke="black" cx="1038.2" cy="-824" rx="49.57" ry="18"/>
<text text-anchor="middle" x="1038.2" y="-818.58" font-family="Times New Roman,serif" font-size="14.00">Array Size</text>
<ellipse fill="none" stroke="black" cx="834.61" cy="-824" rx="49.57" ry="18"/>
<text text-anchor="middle" x="834.61" y="-818.58" font-family="Times New Roman,serif" font-size="14.00">Array Size</text>
</g>
<!-- 3&#45;&gt;4 -->
<g id="edge4" class="edge">
<title>3&#45;&gt;4</title>
<path fill="none" stroke="black" d="M432.69,-663.89C549.62,-694.86 863.04,-777.87 986.36,-810.53"/>
<polygon fill="black" stroke="black" points="985.31,-813.88 995.88,-813.06 987.11,-807.11 985.31,-813.88"/>
<path fill="none" stroke="black" d="M335.45,-665.07C433.36,-696.31 680.62,-775.19 785.44,-808.63"/>
<polygon fill="black" stroke="black" points="784.29,-811.94 794.88,-811.64 786.41,-805.27 784.29,-811.94"/>
</g>
<!-- 6 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 6, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>6</title>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="655.66" cy="-612" rx="71.52" ry="18"/>
<text text-anchor="middle" x="655.66" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">example element</text>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="460.55" cy="-612" rx="71.52" ry="18"/>
<text text-anchor="middle" x="460.55" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">example element</text>
</g>
<!-- 3&#45;&gt;6 -->
<g id="edge6" class="edge">
<title>3&#45;&gt;6</title>
<path fill="none" stroke="black" d="M440.84,-644.05C481.25,-637.99 537.34,-629.58 581.94,-622.9"/>
<polygon fill="black" stroke="black" points="582.44,-626.36 591.81,-621.42 581.4,-619.44 582.44,-626.36"/>
<path fill="none" stroke="black" d="M340.9,-640.75C358.28,-636.54 378.31,-631.69 396.92,-627.18"/>
<polygon fill="black" stroke="black" points="397.61,-630.61 406.5,-624.86 395.96,-623.81 397.61,-630.61"/>
</g>
<!-- 5 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 5, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node6" class="node">
<title>5</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-828" rx="66.53" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-822.58" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-828" rx="66.53" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-822.58" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 4&#45;&gt;5 -->
<g id="edge5" class="edge">
<title>4&#45;&gt;5</title>
<path fill="none" stroke="black" d="M1088.07,-824.57C1144.32,-825.23 1237.42,-826.32 1303.41,-827.1"/>
<polygon fill="black" stroke="black" points="1303.02,-830.59 1313.06,-827.21 1303.11,-823.59 1303.02,-830.59"/>
<path fill="none" stroke="black" d="M884.42,-824.58C939.88,-825.23 1031.16,-826.31 1096.36,-827.08"/>
<polygon fill="black" stroke="black" points="1096.25,-830.58 1106.29,-827.2 1096.33,-823.58 1096.25,-830.58"/>
</g>
<!-- 7 -->
<!-- name: &quot;Min Value&quot;, typeName: &quot;&quot;, id: 7, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node8" class="node">
<title>7</title>
<ellipse fill="none" stroke="black" cx="1038.2" cy="-770" rx="48.57" ry="18"/>
<text text-anchor="middle" x="1038.2" y="-764.58" font-family="Times New Roman,serif" font-size="14.00">Min Value</text>
<ellipse fill="none" stroke="black" cx="834.61" cy="-770" rx="48.57" ry="18"/>
<text text-anchor="middle" x="834.61" y="-764.58" font-family="Times New Roman,serif" font-size="14.00">Min Value</text>
</g>
<!-- 6&#45;&gt;7 -->
<g id="edge7" class="edge">
<title>6&#45;&gt;7</title>
<path fill="none" stroke="black" d="M677.42,-629.55C699.51,-647.46 736.13,-674.98 771.66,-692 841.25,-725.33 928.01,-747.54 983.03,-759.46"/>
<polygon fill="black" stroke="black" points="982.28,-762.88 992.79,-761.54 983.73,-756.03 982.28,-762.88"/>
<path fill="none" stroke="black" d="M480.12,-629.56C500.31,-647.79 534.25,-675.98 568.07,-693 636.87,-727.62 723.73,-749.09 779,-760.29"/>
<polygon fill="black" stroke="black" points="777.98,-763.66 788.47,-762.17 779.34,-756.79 777.98,-763.66"/>
</g>
<!-- 9 -->
<!-- name: &quot;Max Value&quot;, typeName: &quot;&quot;, id: 9, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node10" class="node">
<title>9</title>
<ellipse fill="none" stroke="black" cx="1038.2" cy="-715" rx="50.56" ry="18"/>
<text text-anchor="middle" x="1038.2" y="-709.58" font-family="Times New Roman,serif" font-size="14.00">Max Value</text>
<ellipse fill="none" stroke="black" cx="834.61" cy="-715" rx="50.56" ry="18"/>
<text text-anchor="middle" x="834.61" y="-709.58" font-family="Times New Roman,serif" font-size="14.00">Max Value</text>
</g>
<!-- 6&#45;&gt;9 -->
<g id="edge9" class="edge">
<title>6&#45;&gt;9</title>
<path fill="none" stroke="black" d="M690.5,-628.14C713.08,-638.4 743.66,-651.34 771.66,-660 842,-681.74 925.49,-697.45 979.81,-706.37"/>
<polygon fill="black" stroke="black" points="979.02,-709.79 989.46,-707.93 980.14,-702.88 979.02,-709.79"/>
<path fill="none" stroke="black" d="M492.48,-628.54C513.34,-639.11 541.76,-652.4 568.07,-661 637.79,-683.79 721.08,-698.85 775.55,-707.14"/>
<polygon fill="black" stroke="black" points="774.82,-710.57 785.22,-708.58 775.85,-703.65 774.82,-710.57"/>
</g>
<!-- 11 -->
<!-- name: &quot;Current Value&quot;, typeName: &quot;&quot;, id: 11, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node12" class="node">
<title>11</title>
<ellipse fill="none" stroke="black" cx="1038.2" cy="-659" rx="62.04" ry="18"/>
<text text-anchor="middle" x="1038.2" y="-653.58" font-family="Times New Roman,serif" font-size="14.00">Current Value</text>
<ellipse fill="none" stroke="black" cx="834.61" cy="-659" rx="62.04" ry="18"/>
<text text-anchor="middle" x="834.61" y="-653.58" font-family="Times New Roman,serif" font-size="14.00">Current Value</text>
</g>
<!-- 6&#45;&gt;11 -->
<g id="edge11" class="edge">
<title>6&#45;&gt;11</title>
<path fill="none" stroke="black" d="M705.58,-625.26C725.88,-630.29 749.77,-635.63 771.66,-639 836.58,-649 911.23,-654.06 964.81,-656.59"/>
<polygon fill="black" stroke="black" points="964.59,-660.08 974.74,-657.03 964.91,-653.09 964.59,-660.08"/>
<path fill="none" stroke="black" d="M508.38,-625.73C526.83,-630.65 548.3,-635.77 568.07,-639 632.79,-649.56 707.31,-654.56 760.9,-656.91"/>
<polygon fill="black" stroke="black" points="760.7,-660.41 770.84,-657.33 760.99,-653.41 760.7,-660.41"/>
</g>
<!-- 13 -->
<!-- name: &quot;Default Min Value&quot;, typeName: &quot;&quot;, id: 13, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node14" class="node">
<title>13</title>
<ellipse fill="none" stroke="black" cx="851.17" cy="-612" rx="77.51" ry="18"/>
<text text-anchor="middle" x="851.17" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">Default Min Value</text>
<ellipse fill="none" stroke="black" cx="647.58" cy="-612" rx="77.51" ry="18"/>
<text text-anchor="middle" x="647.58" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">Default Min Value</text>
</g>
<!-- 6&#45;&gt;13 -->
<g id="edge13" class="edge">
<title>6&#45;&gt;13</title>
<path fill="none" stroke="black" d="M727.62,-612C738.78,-612 750.44,-612 761.94,-612"/>
<polygon fill="black" stroke="black" points="761.84,-615.5 771.84,-612 761.84,-608.5 761.84,-615.5"/>
<path fill="none" stroke="black" d="M532.56,-612C540.99,-612 549.68,-612 558.31,-612"/>
<polygon fill="black" stroke="black" points="558.1,-615.5 568.1,-612 558.1,-608.5 558.1,-615.5"/>
</g>
<!-- 15 -->
<!-- name: &quot;Default Max Value&quot;, typeName: &quot;&quot;, id: 15, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node16" class="node">
<title>15</title>
<ellipse fill="none" stroke="black" cx="851.17" cy="-558" rx="79.51" ry="18"/>
<text text-anchor="middle" x="851.17" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">Default Max Value</text>
<ellipse fill="none" stroke="black" cx="647.58" cy="-558" rx="79.51" ry="18"/>
<text text-anchor="middle" x="647.58" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">Default Max Value</text>
</g>
<!-- 6&#45;&gt;15 -->
<g id="edge15" class="edge">
<title>6&#45;&gt;15</title>
<path fill="none" stroke="black" d="M704.49,-598.65C729.97,-591.54 761.59,-582.72 788.85,-575.11"/>
<polygon fill="black" stroke="black" points="789.7,-578.51 798.39,-572.45 787.82,-571.77 789.7,-578.51"/>
<path fill="none" stroke="black" d="M508.24,-598.37C531.93,-591.46 560.98,-582.98 586.33,-575.58"/>
<polygon fill="black" stroke="black" points="587.24,-578.96 595.86,-572.8 585.28,-572.24 587.24,-578.96"/>
</g>
<!-- 17 -->
<!-- name: &quot;Default Value&quot;, typeName: &quot;&quot;, id: 17, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node18" class="node">
<title>17</title>
<ellipse fill="none" stroke="black" cx="851.17" cy="-504" rx="60.54" ry="18"/>
<text text-anchor="middle" x="851.17" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">Default Value</text>
<ellipse fill="none" stroke="black" cx="647.58" cy="-504" rx="60.54" ry="18"/>
<text text-anchor="middle" x="647.58" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">Default Value</text>
</g>
<!-- 6&#45;&gt;17 -->
<g id="edge17" class="edge">
<title>6&#45;&gt;17</title>
<path fill="none" stroke="black" d="M677.54,-594.54C699.74,-576.66 736.44,-549 771.66,-531 779.25,-527.12 787.52,-523.6 795.75,-520.47"/>
<polygon fill="black" stroke="black" points="796.85,-523.79 805.06,-517.1 794.47,-517.21 796.85,-523.79"/>
<path fill="none" stroke="black" d="M480.66,-594.43C501.04,-576.46 534.88,-548.74 568.07,-531 575.59,-526.99 583.82,-523.39 592.03,-520.22"/>
<polygon fill="black" stroke="black" points="593.13,-523.55 601.33,-516.84 590.74,-516.97 593.13,-523.55"/>
</g>
<!-- 19 -->
<!-- name: &quot;Attribute Name&quot;, typeName: &quot;&quot;, id: 19, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node20" class="node">
<title>19</title>
<ellipse fill="none" stroke="black" cx="851.17" cy="-450" rx="67.03" ry="18"/>
<text text-anchor="middle" x="851.17" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">Attribute Name</text>
<ellipse fill="none" stroke="black" cx="647.58" cy="-450" rx="67.03" ry="18"/>
<text text-anchor="middle" x="647.58" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">Attribute Name</text>
</g>
<!-- 6&#45;&gt;19 -->
<g id="edge19" class="edge">
<title>6&#45;&gt;19</title>
<path fill="none" stroke="black" d="M667.43,-594.01C685.5,-565.29 724.6,-509.08 771.66,-477 777.53,-473 784.04,-469.55 790.73,-466.57"/>
<polygon fill="black" stroke="black" points="791.97,-469.84 799.92,-462.84 789.34,-463.36 791.97,-469.84"/>
<path fill="none" stroke="black" d="M471.19,-593.98C487.46,-565.23 523.03,-508.96 568.07,-477 573.78,-472.95 580.15,-469.47 586.72,-466.48"/>
<polygon fill="black" stroke="black" points="587.84,-469.8 595.75,-462.76 585.17,-463.33 587.84,-469.8"/>
</g>
<!-- 21 -->
<!-- name: &quot;Attribute Modifier&quot;, typeName: &quot;&quot;, id: 21, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<g id="node22" class="node">
<title>21</title>
<ellipse fill="none" stroke="black" cx="851.17" cy="-396" rx="77.51" ry="18"/>
<text text-anchor="middle" x="851.17" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">Attribute Modifier</text>
<ellipse fill="none" stroke="black" cx="647.58" cy="-396" rx="77.51" ry="18"/>
<text text-anchor="middle" x="647.58" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">Attribute Modifier</text>
</g>
<!-- 6&#45;&gt;21 -->
<g id="edge21" class="edge">
<title>6&#45;&gt;21</title>
<path fill="none" stroke="black" d="M662.88,-593.79C676.57,-556.35 712.87,-470.32 771.66,-423 776.04,-419.48 780.91,-416.4 786.01,-413.71"/>
<polygon fill="black" stroke="black" points="787.11,-417.07 794.69,-409.66 784.14,-410.72 787.11,-417.07"/>
<path fill="none" stroke="black" d="M466.92,-593.79C478.88,-556.37 511.2,-470.36 568.07,-423 572.28,-419.5 576.97,-416.44 581.91,-413.77"/>
<polygon fill="black" stroke="black" points="583.41,-416.93 590.94,-409.47 580.4,-410.61 583.41,-416.93"/>
</g>
<!-- 8 -->
<!-- name: &quot;float&quot;, typeName: &quot;&quot;, id: 8, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node9" class="node">
<title>8</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-774" rx="27.11" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-768.58" font-family="Times New Roman,serif" font-size="14.00">float</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-774" rx="27.11" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-768.58" font-family="Times New Roman,serif" font-size="14.00">float</text>
</g>
<!-- 7&#45;&gt;8 -->
<g id="edge8" class="edge">
<title>7&#45;&gt;8</title>
<path fill="none" stroke="black" d="M1086.99,-770.56C1155.55,-771.36 1280.41,-772.83 1342.78,-773.56"/>
<polygon fill="black" stroke="black" points="1342.47,-777.06 1352.51,-773.67 1342.55,-770.06 1342.47,-777.06"/>
<path fill="none" stroke="black" d="M883.34,-770.56C951.23,-771.37 1074.31,-772.82 1136.14,-773.56"/>
<polygon fill="black" stroke="black" points="1135.75,-777.05 1145.79,-773.67 1135.83,-770.05 1135.75,-777.05"/>
</g>
<!-- 10 -->
<!-- name: &quot;float&quot;, typeName: &quot;&quot;, id: 10, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node11" class="node">
<title>10</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-720" rx="27.11" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-714.58" font-family="Times New Roman,serif" font-size="14.00">float</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-720" rx="27.11" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-714.58" font-family="Times New Roman,serif" font-size="14.00">float</text>
</g>
<!-- 9&#45;&gt;10 -->
<g id="edge10" class="edge">
<title>9&#45;&gt;10</title>
<path fill="none" stroke="black" d="M1089.17,-715.73C1158.19,-716.74 1281.15,-718.55 1342.84,-719.45"/>
<polygon fill="black" stroke="black" points="1342.41,-722.94 1352.46,-719.59 1342.51,-715.95 1342.41,-722.94"/>
<path fill="none" stroke="black" d="M885.5,-715.74C953.7,-716.75 1074.54,-718.53 1135.83,-719.44"/>
<polygon fill="black" stroke="black" points="1135.69,-722.94 1145.74,-719.59 1135.8,-715.94 1135.69,-722.94"/>
</g>
<!-- 12 -->
<!-- name: &quot;float&quot;, typeName: &quot;&quot;, id: 12, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node13" class="node">
<title>12</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-666" rx="27.11" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-660.58" font-family="Times New Roman,serif" font-size="14.00">float</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-666" rx="27.11" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-660.58" font-family="Times New Roman,serif" font-size="14.00">float</text>
</g>
<!-- 11&#45;&gt;12 -->
<g id="edge12" class="edge">
<title>11&#45;&gt;12</title>
<path fill="none" stroke="black" d="M1100.58,-660.26C1170.93,-661.7 1284.02,-664.02 1342.53,-665.22"/>
<polygon fill="black" stroke="black" points="1342.23,-668.72 1352.3,-665.43 1342.38,-661.72 1342.23,-668.72"/>
<path fill="none" stroke="black" d="M896.84,-660.27C966.64,-661.71 1078.51,-664.03 1136.37,-665.23"/>
<polygon fill="black" stroke="black" points="1135.95,-668.72 1146.02,-665.43 1136.09,-661.72 1135.95,-668.72"/>
</g>
<!-- 14 -->
<!-- name: &quot;float&quot;, typeName: &quot;&quot;, id: 14, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node15" class="node">
<title>14</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-612" rx="27.11" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">float</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-612" rx="27.11" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-606.58" font-family="Times New Roman,serif" font-size="14.00">float</text>
</g>
<!-- 13&#45;&gt;14 -->
<g id="edge14" class="edge">
<title>13&#45;&gt;14</title>
<path fill="none" stroke="black" d="M928.97,-612C1043.87,-612 1256.22,-612 1342.45,-612"/>
<polygon fill="black" stroke="black" points="1342.24,-615.5 1352.24,-612 1342.24,-608.5 1342.24,-615.5"/>
<path fill="none" stroke="black" d="M725.51,-612C839.81,-612 1050.2,-612 1135.91,-612"/>
<polygon fill="black" stroke="black" points="1135.87,-615.5 1145.87,-612 1135.87,-608.5 1135.87,-615.5"/>
</g>
<!-- 16 -->
<!-- name: &quot;float&quot;, typeName: &quot;&quot;, id: 16, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node17" class="node">
<title>16</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-558" rx="27.11" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">float</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-558" rx="27.11" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-552.58" font-family="Times New Roman,serif" font-size="14.00">float</text>
</g>
<!-- 15&#45;&gt;16 -->
<g id="edge16" class="edge">
<title>15&#45;&gt;16</title>
<path fill="none" stroke="black" d="M930.95,-558C1046.32,-558 1256.81,-558 1342.5,-558"/>
<polygon fill="black" stroke="black" points="1342.47,-561.5 1352.47,-558 1342.47,-554.5 1342.47,-561.5"/>
<path fill="none" stroke="black" d="M727.49,-558C842.23,-558 1050.72,-558 1135.92,-558"/>
<polygon fill="black" stroke="black" points="1135.83,-561.5 1145.83,-558 1135.83,-554.5 1135.83,-561.5"/>
</g>
<!-- 18 -->
<!-- name: &quot;float&quot;, typeName: &quot;&quot;, id: 18, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node19" class="node">
<title>18</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-504" rx="27.11" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">float</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-504" rx="27.11" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-498.57" font-family="Times New Roman,serif" font-size="14.00">float</text>
</g>
<!-- 17&#45;&gt;18 -->
<g id="edge18" class="edge">
<title>17&#45;&gt;18</title>
<path fill="none" stroke="black" d="M911.99,-504C1021.58,-504 1251.63,-504 1342.36,-504"/>
<polygon fill="black" stroke="black" points="1342.21,-507.5 1352.21,-504 1342.21,-500.5 1342.21,-507.5"/>
<path fill="none" stroke="black" d="M708.57,-504C817.77,-504 1046.06,-504 1136.08,-504"/>
<polygon fill="black" stroke="black" points="1135.84,-507.5 1145.84,-504 1135.84,-500.5 1135.84,-507.5"/>
</g>
<!-- 20 -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 20, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node21" class="node">
<title>20</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-450" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-450" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 19&#45;&gt;20 -->
<g id="edge20" class="edge">
<title>19&#45;&gt;20</title>
<path fill="none" stroke="black" d="M918.53,-450C1028.94,-450 1247.26,-450 1338.6,-450"/>
<polygon fill="black" stroke="black" points="1338.35,-453.5 1348.35,-450 1338.35,-446.5 1338.35,-453.5"/>
<path fill="none" stroke="black" d="M715.09,-450C824.84,-450 1040.77,-450 1131.74,-450"/>
<polygon fill="black" stroke="black" points="1131.71,-453.5 1141.71,-450 1131.71,-446.5 1131.71,-453.5"/>
</g>
<!-- 22 -->
<!-- name: &quot;Array Size&quot;, typeName: &quot;&quot;, id: 22, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node23" class="node">
<title>22</title>
<ellipse fill="none" stroke="black" cx="1038.2" cy="-396" rx="49.57" ry="18"/>
<text text-anchor="middle" x="1038.2" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">Array Size</text>
<ellipse fill="none" stroke="black" cx="834.61" cy="-396" rx="49.57" ry="18"/>
<text text-anchor="middle" x="834.61" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">Array Size</text>
</g>
<!-- 21&#45;&gt;22 -->
<g id="edge22" class="edge">
<title>21&#45;&gt;22</title>
<path fill="none" stroke="black" d="M929.03,-396C945.02,-396 961.64,-396 976.92,-396"/>
<polygon fill="black" stroke="black" points="976.8,-399.5 986.8,-396 976.8,-392.5 976.8,-399.5"/>
<path fill="none" stroke="black" d="M725.44,-396C741.42,-396 758.05,-396 773.33,-396"/>
<polygon fill="black" stroke="black" points="773.21,-399.5 783.21,-396 773.21,-392.5 773.21,-399.5"/>
</g>
<!-- 24 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 24, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<g id="node25" class="node">
<title>24</title>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="1038.2" cy="-234" rx="71.52" ry="18"/>
<text text-anchor="middle" x="1038.2" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">example element</text>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="834.61" cy="-234" rx="71.52" ry="18"/>
<text text-anchor="middle" x="834.61" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">example element</text>
</g>
<!-- 21&#45;&gt;24 -->
<g id="edge24" class="edge">
<title>21&#45;&gt;24</title>
<path fill="none" stroke="black" d="M872.32,-378.35C905.27,-349.51 970.78,-292.15 1008.55,-259.08"/>
<polygon fill="black" stroke="black" points="1010.71,-261.84 1015.93,-252.62 1006.1,-256.57 1010.71,-261.84"/>
<path fill="none" stroke="black" d="M668.73,-378.35C701.68,-349.51 767.19,-292.15 804.96,-259.08"/>
<polygon fill="black" stroke="black" points="807.12,-261.84 812.34,-252.62 802.51,-256.57 807.12,-261.84"/>
</g>
<!-- 23 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 23, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node24" class="node">
<title>23</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-396" rx="66.53" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-396" rx="66.53" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 22&#45;&gt;23 -->
<g id="edge23" class="edge">
<title>22&#45;&gt;23</title>
<path fill="none" stroke="black" d="M1088.07,-396C1144.32,-396 1237.42,-396 1303.41,-396"/>
<polygon fill="black" stroke="black" points="1303.06,-399.5 1313.06,-396 1303.06,-392.5 1303.06,-399.5"/>
<path fill="none" stroke="black" d="M884.42,-396C939.88,-396 1031.16,-396 1096.36,-396"/>
<polygon fill="black" stroke="black" points="1096.29,-399.5 1106.29,-396 1096.29,-392.5 1096.29,-399.5"/>
</g>
<!-- 25 -->
<!-- name: &quot;ID&quot;, typeName: &quot;&quot;, id: 25, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node26" class="node">
<title>25</title>
<ellipse fill="none" stroke="black" cx="1207.76" cy="-342" rx="27" ry="18"/>
<text text-anchor="middle" x="1207.76" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">ID</text>
<ellipse fill="none" stroke="black" cx="1004.17" cy="-342" rx="27" ry="18"/>
<text text-anchor="middle" x="1004.17" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">ID</text>
</g>
<!-- 24&#45;&gt;25 -->
<g id="edge25" class="edge">
<title>24&#45;&gt;25</title>
<path fill="none" stroke="black" d="M1059.4,-251.66C1080.1,-269.19 1113.71,-296.1 1145.72,-315 1154.4,-320.12 1164.23,-324.88 1173.42,-328.93"/>
<polygon fill="black" stroke="black" points="1171.85,-332.07 1182.42,-332.75 1174.58,-325.62 1171.85,-332.07"/>
<path fill="none" stroke="black" d="M855.81,-251.66C876.51,-269.19 910.12,-296.1 942.13,-315 950.81,-320.12 960.64,-324.88 969.83,-328.93"/>
<polygon fill="black" stroke="black" points="968.26,-332.07 978.83,-332.75 970.99,-325.62 968.26,-332.07"/>
</g>
<!-- 27 -->
<!-- name: &quot;Name&quot;, typeName: &quot;&quot;, id: 27, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node28" class="node">
<title>27</title>
<ellipse fill="none" stroke="black" cx="1207.76" cy="-288" rx="32.1" ry="18"/>
<text text-anchor="middle" x="1207.76" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">Name</text>
<ellipse fill="none" stroke="black" cx="1004.17" cy="-288" rx="32.1" ry="18"/>
<text text-anchor="middle" x="1004.17" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">Name</text>
</g>
<!-- 24&#45;&gt;27 -->
<g id="edge27" class="edge">
<title>24&#45;&gt;27</title>
<path fill="none" stroke="black" d="M1083.66,-248.33C1110.18,-256.88 1143.5,-267.61 1168.78,-275.76"/>
<polygon fill="black" stroke="black" points="1167.4,-278.99 1177.99,-278.73 1169.55,-272.33 1167.4,-278.99"/>
<path fill="none" stroke="black" d="M880.07,-248.33C906.59,-256.88 939.91,-267.61 965.19,-275.76"/>
<polygon fill="black" stroke="black" points="963.81,-278.99 974.4,-278.73 965.96,-272.33 963.81,-278.99"/>
</g>
<!-- 29 -->
<!-- name: &quot;Amount&quot;, typeName: &quot;&quot;, id: 29, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node30" class="node">
<title>29</title>
<ellipse fill="none" stroke="black" cx="1207.76" cy="-234" rx="40.58" ry="18"/>
<text text-anchor="middle" x="1207.76" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">Amount</text>
<ellipse fill="none" stroke="black" cx="1004.17" cy="-234" rx="40.58" ry="18"/>
<text text-anchor="middle" x="1004.17" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">Amount</text>
</g>
<!-- 24&#45;&gt;29 -->
<g id="edge29" class="edge">
<title>24&#45;&gt;29</title>
<path fill="none" stroke="black" d="M1109.78,-234C1125.16,-234 1141.16,-234 1155.62,-234"/>
<polygon fill="black" stroke="black" points="1155.33,-237.5 1165.33,-234 1155.33,-230.5 1155.33,-237.5"/>
<path fill="none" stroke="black" d="M906.19,-234C921.57,-234 937.57,-234 952.03,-234"/>
<polygon fill="black" stroke="black" points="951.74,-237.5 961.74,-234 951.74,-230.5 951.74,-237.5"/>
</g>
<!-- 31 -->
<!-- name: &quot;Operation&quot;, typeName: &quot;&quot;, id: 31, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node32" class="node">
<title>31</title>
<ellipse fill="none" stroke="black" cx="1207.76" cy="-180" rx="47.57" ry="18"/>
<text text-anchor="middle" x="1207.76" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Operation</text>
<ellipse fill="none" stroke="black" cx="1004.17" cy="-180" rx="47.57" ry="18"/>
<text text-anchor="middle" x="1004.17" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Operation</text>
</g>
<!-- 24&#45;&gt;31 -->
<g id="edge31" class="edge">
<title>24&#45;&gt;31</title>
<path fill="none" stroke="black" d="M1083.66,-219.67C1107.1,-212.12 1135.85,-202.85 1159.66,-195.18"/>
<polygon fill="black" stroke="black" points="1160.68,-198.53 1169.13,-192.13 1158.53,-191.87 1160.68,-198.53"/>
<path fill="none" stroke="black" d="M880.07,-219.67C903.51,-212.12 932.26,-202.85 956.07,-195.18"/>
<polygon fill="black" stroke="black" points="957.09,-198.53 965.54,-192.13 954.94,-191.87 957.09,-198.53"/>
</g>
<!-- 33 -->
<!-- name: &quot;Operand&quot;, typeName: &quot;&quot;, id: 33, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node34" class="node">
<title>33</title>
<ellipse fill="none" stroke="black" cx="1207.76" cy="-126" rx="43.08" ry="18"/>
<text text-anchor="middle" x="1207.76" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Operand</text>
<ellipse fill="none" stroke="black" cx="1004.17" cy="-126" rx="43.08" ry="18"/>
<text text-anchor="middle" x="1004.17" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Operand</text>
</g>
<!-- 24&#45;&gt;33 -->
<g id="edge33" class="edge">
<title>24&#45;&gt;33</title>
<path fill="none" stroke="black" d="M1059.4,-216.34C1080.1,-198.81 1113.71,-171.9 1145.72,-153 1151.81,-149.4 1158.47,-145.99 1165.07,-142.87"/>
<polygon fill="black" stroke="black" points="1166.28,-146.17 1173.95,-138.86 1163.39,-139.79 1166.28,-146.17"/>
<path fill="none" stroke="black" d="M855.81,-216.34C876.51,-198.81 910.12,-171.9 942.13,-153 948.22,-149.4 954.88,-145.99 961.48,-142.87"/>
<polygon fill="black" stroke="black" points="962.69,-146.17 970.36,-138.86 959.8,-139.79 962.69,-146.17"/>
</g>
<!-- 35 -->
<!-- name: &quot;isSerializable?&quot;, typeName: &quot;&quot;, id: 35, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node36" class="node">
<title>35</title>
<ellipse fill="none" stroke="black" cx="1207.76" cy="-72" rx="62.04" ry="18"/>
<text text-anchor="middle" x="1207.76" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">isSerializable?</text>
<ellipse fill="none" stroke="black" cx="1004.17" cy="-72" rx="62.04" ry="18"/>
<text text-anchor="middle" x="1004.17" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">isSerializable?</text>
</g>
<!-- 24&#45;&gt;35 -->
<g id="edge35" class="edge">
<title>24&#45;&gt;35</title>
<path fill="none" stroke="black" d="M1049.44,-215.96C1066.27,-187.68 1102.31,-132.66 1145.72,-99 1149.38,-96.16 1153.38,-93.56 1157.53,-91.17"/>
<polygon fill="black" stroke="black" points="1158.81,-94.46 1166.05,-86.72 1155.56,-88.25 1158.81,-94.46"/>
<path fill="none" stroke="black" d="M845.85,-215.96C862.68,-187.68 898.72,-132.66 942.13,-99 945.79,-96.16 949.79,-93.56 953.94,-91.17"/>
<polygon fill="black" stroke="black" points="955.22,-94.46 962.46,-86.72 951.97,-88.25 955.22,-94.46"/>
</g>
<!-- 26 -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 26, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node27" class="node">
<title>26</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-342" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-342" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 25&#45;&gt;26 -->
<g id="edge26" class="edge">
<title>25&#45;&gt;26</title>
<path fill="none" stroke="black" d="M1235.19,-342C1262.74,-342 1306.29,-342 1338.5,-342"/>
<polygon fill="black" stroke="black" points="1338.29,-345.5 1348.29,-342 1338.29,-338.5 1338.29,-345.5"/>
<path fill="none" stroke="black" d="M1031.51,-342C1058.36,-342 1100.41,-342 1131.84,-342"/>
<polygon fill="black" stroke="black" points="1131.8,-345.5 1141.8,-342 1131.8,-338.5 1131.8,-345.5"/>
</g>
<!-- 28 -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 28, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node29" class="node">
<title>28</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-288" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-288" rx="31.1" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 27&#45;&gt;28 -->
<g id="edge28" class="edge">
<title>27&#45;&gt;28</title>
<path fill="none" stroke="black" d="M1240.23,-288C1267.81,-288 1308.13,-288 1338.43,-288"/>
<polygon fill="black" stroke="black" points="1338.41,-291.5 1348.41,-288 1338.41,-284.5 1338.41,-291.5"/>
<path fill="none" stroke="black" d="M1036.48,-288C1063.38,-288 1102.38,-288 1131.94,-288"/>
<polygon fill="black" stroke="black" points="1131.65,-291.5 1141.65,-288 1131.65,-284.5 1131.65,-291.5"/>
</g>
<!-- 30 -->
<!-- name: &quot;float&quot;, typeName: &quot;&quot;, id: 30, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node31" class="node">
<title>30</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-234" rx="27.11" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">float</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-234" rx="27.11" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">float</text>
</g>
<!-- 29&#45;&gt;30 -->
<g id="edge30" class="edge">
<title>29&#45;&gt;30</title>
<path fill="none" stroke="black" d="M1248.55,-234C1276.88,-234 1314.69,-234 1342.55,-234"/>
<polygon fill="black" stroke="black" points="1342.31,-237.5 1352.31,-234 1342.31,-230.5 1342.31,-237.5"/>
<path fill="none" stroke="black" d="M1045.12,-234C1072.6,-234 1108.86,-234 1135.88,-234"/>
<polygon fill="black" stroke="black" points="1135.69,-237.5 1145.69,-234 1135.69,-230.5 1135.69,-237.5"/>
</g>
<!-- 32 -->
<!-- name: &quot;int&quot;, typeName: &quot;&quot;, id: 32, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node33" class="node">
<title>32</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-180" rx="27" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">int</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-180" rx="27" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">int</text>
</g>
<!-- 31&#45;&gt;32 -->
<g id="edge32" class="edge">
<title>31&#45;&gt;32</title>
<path fill="none" stroke="black" d="M1255.64,-180C1283.05,-180 1317.18,-180 1342.8,-180"/>
<polygon fill="black" stroke="black" points="1342.75,-183.5 1352.75,-180 1342.75,-176.5 1342.75,-183.5"/>
<path fill="none" stroke="black" d="M1052.13,-180C1078.58,-180 1111.19,-180 1135.97,-180"/>
<polygon fill="black" stroke="black" points="1135.94,-183.5 1145.94,-180 1135.94,-176.5 1135.94,-183.5"/>
</g>
<!-- 34 -->
<!-- name: &quot;int&quot;, typeName: &quot;&quot;, id: 34, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node35" class="node">
<title>34</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-126" rx="27" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">int</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-126" rx="27" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">int</text>
</g>
<!-- 33&#45;&gt;34 -->
<g id="edge34" class="edge">
<title>33&#45;&gt;34</title>
<path fill="none" stroke="black" d="M1251.17,-126C1279.18,-126 1315.55,-126 1342.56,-126"/>
<polygon fill="black" stroke="black" points="1342.36,-129.5 1352.36,-126 1342.36,-122.5 1342.36,-129.5"/>
<path fill="none" stroke="black" d="M1047.71,-126C1074.94,-126 1109.96,-126 1136.16,-126"/>
<polygon fill="black" stroke="black" points="1136.01,-129.5 1146.01,-126 1136.01,-122.5 1136.01,-129.5"/>
</g>
<!-- 36 -->
<!-- name: &quot;bool&quot;, typeName: &quot;&quot;, id: 36, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node37" class="node">
<title>36</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-72" rx="27.61" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">bool</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-72" rx="27.61" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">bool</text>
</g>
<!-- 35&#45;&gt;36 -->
<g id="edge36" class="edge">
<title>35&#45;&gt;36</title>
<path fill="none" stroke="black" d="M1270.22,-72C1294.12,-72 1320.77,-72 1341.86,-72"/>
<polygon fill="black" stroke="black" points="1341.75,-75.5 1351.75,-72 1341.75,-68.5 1341.75,-75.5"/>
<path fill="none" stroke="black" d="M1066.51,-72C1089.64,-72 1115.27,-72 1135.67,-72"/>
<polygon fill="black" stroke="black" points="1135.51,-75.5 1145.51,-72 1135.51,-68.5 1135.51,-75.5"/>
</g>
<!-- 38 -->
<!-- name: &quot;unsigned varint64&quot;, typeName: &quot;&quot;, id: 38, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- name: &quot;PlayerInputTick&quot;, typeName: &quot;&quot;, id: 38, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node39" class="node">
<title>38</title>
<ellipse fill="none" stroke="black" cx="1381.32" cy="-18" rx="75.51" ry="18"/>
<text text-anchor="middle" x="1381.32" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint64</text>
<ellipse fill="none" stroke="black" cx="1174.74" cy="-18" rx="70.03" ry="18"/>
<text text-anchor="middle" x="1174.74" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">PlayerInputTick</text>
</g>
<!-- 37&#45;&gt;38 -->
<g id="edge38" class="edge">
<title>37&#45;&gt;38</title>
<path fill="none" stroke="black" d="M401.06,-309.99C451.47,-243.83 639,-18 850.17,-18 850.17,-18 850.17,-18 1039.2,-18 1126.01,-18 1225.26,-18 1294.23,-18"/>
<polygon fill="black" stroke="black" points="1293.94,-21.5 1303.94,-18 1293.94,-14.5 1293.94,-21.5"/>
<path fill="none" stroke="black" d="M303.01,-310.89C336.75,-245.9 467.81,-18 646.58,-18 646.58,-18 646.58,-18 835.61,-18 923.75,-18 1024.81,-18 1093.31,-18"/>
<polygon fill="black" stroke="black" points="1092.93,-21.5 1102.93,-18 1092.93,-14.5 1092.93,-21.5"/>
</g>
</g>
</svg>

Before

(image error) Size: 27 KiB

After

(image error) Size: 27 KiB

@ -4,11 +4,11 @@
<!-- Generated by graphviz version 11.0.0 (20240428.1522)
-->
<!-- Title: UpdatePlayerGameTypePacket Pages: 1 -->
<svg width="751pt" height="152pt"
viewBox="0.00 0.00 750.65 152.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg width="622pt" height="152pt"
viewBox="0.00 0.00 621.91 152.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 148)">
<title>UpdatePlayerGameTypePacket</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-148 746.65,-148 746.65,4 -4,4"/>
<polygon fill="white" stroke="none" points="-4,4 -4,-148 617.91,-148 617.91,4 -4,4"/>
<!-- 0 -->
<!-- name: &quot;UpdatePlayerGameTypePacket&quot;, typeName: &quot;&quot;, id: 0, branchId: 151, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
@ -20,79 +20,79 @@
<!-- name: &quot;Player game type&quot;, typeName: &quot;&quot;, id: 1, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node2" class="node">
<title>1</title>
<ellipse fill="none" stroke="black" cx="430.21" cy="-126" rx="74.02" ry="18"/>
<text text-anchor="middle" x="430.21" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Player game type</text>
<ellipse fill="none" stroke="black" cx="363.84" cy="-126" rx="74.02" ry="18"/>
<text text-anchor="middle" x="363.84" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">Player game type</text>
</g>
<!-- 0&#45;&gt;1 -->
<g id="edge1" class="edge">
<title>0&#45;&gt;1</title>
<path fill="none" stroke="black" d="M207.47,-86.26C254.4,-94.67 313.27,-105.22 358.56,-113.34"/>
<polygon fill="black" stroke="black" points="357.82,-116.76 368.28,-115.08 359.05,-109.87 357.82,-116.76"/>
<path fill="none" stroke="black" d="M195.55,-87.55C227.8,-94.96 266.21,-103.79 298.08,-111.11"/>
<polygon fill="black" stroke="black" points="297.06,-114.47 307.59,-113.3 298.63,-107.65 297.06,-114.47"/>
</g>
<!-- 3 -->
<!-- name: &quot;Target player&quot;, typeName: &quot;ActorUniqueID&quot;, id: 3, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node4" class="node">
<title>3</title>
<ellipse fill="none" stroke="black" cx="430.21" cy="-72" rx="59.55" ry="18"/>
<text text-anchor="middle" x="430.21" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Target player</text>
<ellipse fill="none" stroke="black" cx="363.84" cy="-72" rx="59.55" ry="18"/>
<text text-anchor="middle" x="363.84" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">Target player</text>
</g>
<!-- 0&#45;&gt;3 -->
<g id="edge3" class="edge">
<title>0&#45;&gt;3</title>
<path fill="none" stroke="black" d="M253.94,-72C289.85,-72 327.67,-72 358.95,-72"/>
<polygon fill="black" stroke="black" points="358.65,-75.5 368.65,-72 358.65,-68.5 358.65,-75.5"/>
<path fill="none" stroke="black" d="M254.32,-72C267.4,-72 280.34,-72 292.47,-72"/>
<polygon fill="black" stroke="black" points="292.32,-75.5 302.32,-72 292.32,-68.5 292.32,-75.5"/>
</g>
<!-- 5 -->
<!-- name: &quot;Player ReplayStateComponent tick&quot;, typeName: &quot;&quot;, id: 5, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- name: &quot;Tick&quot;, typeName: &quot;PlayerInputTick&quot;, id: 5, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;Most relevant to supply for transitioning into and out of spectator while in motion&quot; -->
<g id="node6" class="node">
<title>5</title>
<ellipse fill="none" stroke="black" cx="430.21" cy="-18" rx="140.38" ry="18"/>
<text text-anchor="middle" x="430.21" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Player ReplayStateComponent tick</text>
<ellipse fill="none" stroke="black" cx="363.84" cy="-18" rx="27.61" ry="18"/>
<text text-anchor="middle" x="363.84" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Tick</text>
</g>
<!-- 0&#45;&gt;5 -->
<g id="edge5" class="edge">
<title>0&#45;&gt;5</title>
<path fill="none" stroke="black" d="M207.47,-57.74C246.67,-50.71 294.22,-42.19 335.21,-34.85"/>
<polygon fill="black" stroke="black" points="335.59,-38.33 344.82,-33.12 334.36,-31.44 335.59,-38.33"/>
<path fill="none" stroke="black" d="M195.55,-56.45C238.17,-46.66 291.54,-34.39 326.38,-26.38"/>
<polygon fill="black" stroke="black" points="327.01,-29.83 335.97,-24.18 325.44,-23.01 327.01,-29.83"/>
</g>
<!-- 2 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 2, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>2</title>
<ellipse fill="none" stroke="black" cx="674.62" cy="-126" rx="31.1" ry="18"/>
<text text-anchor="middle" x="674.62" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">varint</text>
<ellipse fill="none" stroke="black" cx="543.88" cy="-126" rx="31.1" ry="18"/>
<text text-anchor="middle" x="543.88" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 1&#45;&gt;2 -->
<g id="edge2" class="edge">
<title>1&#45;&gt;2</title>
<path fill="none" stroke="black" d="M504.6,-126C546.29,-126 596.97,-126 631.9,-126"/>
<polygon fill="black" stroke="black" points="631.59,-129.5 641.59,-126 631.59,-122.5 631.59,-129.5"/>
<path fill="none" stroke="black" d="M438.29,-126C459.76,-126 482.48,-126 501.24,-126"/>
<polygon fill="black" stroke="black" points="501.14,-129.5 511.14,-126 501.14,-122.5 501.14,-129.5"/>
</g>
<!-- 4 -->
<!-- name: &quot;ActorUniqueID&quot;, typeName: &quot;&quot;, id: 4, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>4</title>
<ellipse fill="none" stroke="black" cx="674.62" cy="-72" rx="68.03" ry="18"/>
<text text-anchor="middle" x="674.62" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">ActorUniqueID</text>
<ellipse fill="none" stroke="black" cx="543.88" cy="-72" rx="68.03" ry="18"/>
<text text-anchor="middle" x="543.88" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">ActorUniqueID</text>
</g>
<!-- 3&#45;&gt;4 -->
<g id="edge4" class="edge">
<title>3&#45;&gt;4</title>
<path fill="none" stroke="black" d="M490.2,-72C521.68,-72 560.84,-72 594.88,-72"/>
<polygon fill="black" stroke="black" points="594.7,-75.5 604.7,-72 594.7,-68.5 594.7,-75.5"/>
<path fill="none" stroke="black" d="M423.63,-72C436.61,-72 450.56,-72 464.18,-72"/>
<polygon fill="black" stroke="black" points="464.01,-75.5 474.01,-72 464.01,-68.5 464.01,-75.5"/>
</g>
<!-- 6 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 6, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- name: &quot;PlayerInputTick&quot;, typeName: &quot;&quot;, id: 6, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>6</title>
<ellipse fill="none" stroke="black" cx="674.62" cy="-18" rx="66.53" ry="18"/>
<text text-anchor="middle" x="674.62" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
<ellipse fill="none" stroke="black" cx="543.88" cy="-18" rx="70.03" ry="18"/>
<text text-anchor="middle" x="543.88" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">PlayerInputTick</text>
</g>
<!-- 5&#45;&gt;6 -->
<g id="edge6" class="edge">
<title>5&#45;&gt;6</title>
<path fill="none" stroke="black" d="M570.82,-18C579.47,-18 588,-18 596.22,-18"/>
<polygon fill="black" stroke="black" points="596.09,-21.5 606.09,-18 596.09,-14.5 596.09,-21.5"/>
<path fill="none" stroke="black" d="M391.88,-18C410.69,-18 436.84,-18 462.09,-18"/>
<polygon fill="black" stroke="black" points="462.09,-21.5 472.09,-18 462.09,-14.5 462.09,-21.5"/>
</g>
</g>
</svg>

Before

(image error) Size: 5.0 KiB

After

(image error) Size: 5.1 KiB

@ -0,0 +1,306 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 11.0.0 (20240428.1522)
-->
<!-- Title: UserDataShapelessRecipe Pages: 1 -->
<svg width="1059pt" height="476pt"
viewBox="0.00 0.00 1058.84 476.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 472)">
<title>UserDataShapelessRecipe</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-472 1054.84,-472 1054.84,4 -4,4"/>
<!-- 6 -->
<!-- name: &quot;UserDataShapelessRecipe&quot;, typeName: &quot;&quot;, id: 6, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
<title>6</title>
<ellipse fill="none" stroke="black" cx="107.95" cy="-180" rx="107.95" ry="18"/>
<text text-anchor="middle" x="107.95" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">UserDataShapelessRecipe</text>
</g>
<!-- 7 -->
<!-- name: &quot;Recipe Unique Id&quot;, typeName: &quot;&quot;, id: 7, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node2" class="node">
<title>7</title>
<ellipse fill="none" stroke="black" cx="680.02" cy="-450" rx="76.01" ry="18"/>
<text text-anchor="middle" x="680.02" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">Recipe Unique Id</text>
</g>
<!-- 6&#45;&gt;7 -->
<g id="edge1" class="edge">
<title>6&#45;&gt;7</title>
<path fill="none" stroke="black" d="M117.12,-198.39C135.26,-236.93 182.86,-326.16 251.9,-369 356.61,-433.97 501.48,-449.01 592.7,-451.39"/>
<polygon fill="black" stroke="black" points="592.52,-454.89 602.59,-451.6 592.67,-447.89 592.52,-454.89"/>
</g>
<!-- 9 -->
<!-- name: &quot;Ingredient List&quot;, typeName: &quot;&quot;, id: 9, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<g id="node4" class="node">
<title>9</title>
<ellipse fill="none" stroke="black" cx="320.43" cy="-342" rx="64.04" ry="18"/>
<text text-anchor="middle" x="320.43" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">Ingredient List</text>
</g>
<!-- 6&#45;&gt;9 -->
<g id="edge3" class="edge">
<title>6&#45;&gt;9</title>
<path fill="none" stroke="black" d="M132.28,-197.96C170.29,-227.21 245.61,-285.19 288.2,-317.96"/>
<polygon fill="black" stroke="black" points="286.01,-320.69 296.07,-324.02 290.28,-315.15 286.01,-320.69"/>
</g>
<!-- 15 -->
<!-- name: &quot;Production List&quot;, typeName: &quot;&quot;, id: 15, branchId: 0, recurseId: &#45;1, attributes: 8, notes: &quot;&quot; -->
<g id="node10" class="node">
<title>15</title>
<ellipse fill="none" stroke="black" cx="320.43" cy="-234" rx="68.53" ry="18"/>
<text text-anchor="middle" x="320.43" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">Production List</text>
</g>
<!-- 6&#45;&gt;15 -->
<g id="edge9" class="edge">
<title>6&#45;&gt;15</title>
<path fill="none" stroke="black" d="M168.42,-195.26C196.86,-202.55 230.84,-211.27 259.35,-218.59"/>
<polygon fill="black" stroke="black" points="258.37,-221.95 268.93,-221.04 260.11,-215.17 258.37,-221.95"/>
</g>
<!-- 21 -->
<!-- name: &quot;Recipe ID&quot;, typeName: &quot;mce::UUID&quot;, id: 21, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node16" class="node">
<title>21</title>
<ellipse fill="none" stroke="black" cx="320.43" cy="-180" rx="48.57" ry="18"/>
<text text-anchor="middle" x="320.43" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">Recipe ID</text>
</g>
<!-- 6&#45;&gt;21 -->
<g id="edge15" class="edge">
<title>6&#45;&gt;21</title>
<path fill="none" stroke="black" d="M216.35,-180C231.47,-180 246.53,-180 260.29,-180"/>
<polygon fill="black" stroke="black" points="259.99,-183.5 269.99,-180 259.99,-176.5 259.99,-183.5"/>
</g>
<!-- 23 -->
<!-- name: &quot;Recipe Tag&quot;, typeName: &quot;&quot;, id: 23, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;Available ones: CARTOGRAPHY_TABLE, CRAFTING_TABLE, SMITHING_TABLE, STONECUTTER, FURNACE_TAG, BLAST_FURNACE_TAG, SMOKER_TAG, CAMPFIRE_TAG, SOUL_CAMPFIRE_TAG&quot; -->
<g id="node18" class="node">
<title>23</title>
<ellipse fill="none" stroke="black" cx="496.48" cy="-131" rx="53.56" ry="18"/>
<text text-anchor="middle" x="496.48" y="-125.58" font-family="Times New Roman,serif" font-size="14.00">Recipe Tag</text>
</g>
<!-- 6&#45;&gt;23 -->
<g id="edge17" class="edge">
<title>6&#45;&gt;23</title>
<path fill="none" stroke="black" d="M176.72,-165.81C200.42,-161.22 227.26,-156.43 251.9,-153 312.83,-144.51 382.81,-138.59 432.08,-135.04"/>
<polygon fill="black" stroke="black" points="432.28,-138.54 442.01,-134.34 431.79,-131.55 432.28,-138.54"/>
</g>
<!-- 25 -->
<!-- name: &quot;Priority&quot;, typeName: &quot;&quot;, id: 25, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node20" class="node">
<title>25</title>
<ellipse fill="none" stroke="black" cx="680.02" cy="-75" rx="38.09" ry="18"/>
<text text-anchor="middle" x="680.02" y="-69.58" font-family="Times New Roman,serif" font-size="14.00">Priority</text>
</g>
<!-- 6&#45;&gt;25 -->
<g id="edge19" class="edge">
<title>6&#45;&gt;25</title>
<path fill="none" stroke="black" d="M154.83,-163.43C182.64,-153.84 218.99,-142.11 251.9,-134 386.99,-100.73 551.06,-84.67 630.82,-78.37"/>
<polygon fill="black" stroke="black" points="630.75,-81.88 640.45,-77.62 630.21,-74.9 630.75,-81.88"/>
</g>
<!-- 27 -->
<!-- name: &quot;**NULL**&quot;, typeName: &quot;RecipeUnlockingRequirement&quot;, id: 27, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node22" class="node">
<title>27</title>
<ellipse fill="none" stroke="black" cx="320.43" cy="-21" rx="52.56" ry="18"/>
<text text-anchor="middle" x="320.43" y="-15.57" font-family="Times New Roman,serif" font-size="14.00">**NULL**</text>
</g>
<!-- 6&#45;&gt;27 -->
<g id="edge21" class="edge">
<title>6&#45;&gt;27</title>
<path fill="none" stroke="black" d="M129.74,-162.18C157.12,-138.97 207.03,-97.54 251.9,-65 262.22,-57.52 273.75,-49.78 284.32,-42.93"/>
<polygon fill="black" stroke="black" points="285.89,-46.08 292.42,-37.73 282.11,-40.19 285.89,-46.08"/>
</g>
<!-- 8 -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 8, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>8</title>
<ellipse fill="none" stroke="black" cx="921.44" cy="-450" rx="31.1" ry="18"/>
<text text-anchor="middle" x="921.44" y="-444.57" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 7&#45;&gt;8 -->
<g id="edge2" class="edge">
<title>7&#45;&gt;8</title>
<path fill="none" stroke="black" d="M756.44,-450C796.78,-450 844.93,-450 878.58,-450"/>
<polygon fill="black" stroke="black" points="878.33,-453.5 888.33,-450 878.33,-446.5 878.33,-453.5"/>
</g>
<!-- 10 -->
<!-- name: &quot;Array Size&quot;, typeName: &quot;&quot;, id: 10, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node5" class="node">
<title>10</title>
<ellipse fill="none" stroke="black" cx="680.02" cy="-396" rx="49.57" ry="18"/>
<text text-anchor="middle" x="680.02" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">Array Size</text>
</g>
<!-- 9&#45;&gt;10 -->
<g id="edge4" class="edge">
<title>9&#45;&gt;10</title>
<path fill="none" stroke="black" d="M365.69,-355.1C383.91,-360.08 405.31,-365.42 424.96,-369 491.08,-381.07 567.94,-388.31 619.66,-392.21"/>
<polygon fill="black" stroke="black" points="619.21,-395.69 629.44,-392.93 619.72,-388.7 619.21,-395.69"/>
</g>
<!-- 12 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 12, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<g id="node7" class="node">
<title>12</title>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="496.48" cy="-342" rx="71.52" ry="18"/>
<text text-anchor="middle" x="496.48" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">example element</text>
</g>
<!-- 9&#45;&gt;12 -->
<g id="edge6" class="edge">
<title>9&#45;&gt;12</title>
<path fill="none" stroke="black" d="M384.76,-342C394.05,-342 403.73,-342 413.33,-342"/>
<polygon fill="black" stroke="black" points="413.03,-345.5 423.03,-342 413.03,-338.5 413.03,-345.5"/>
</g>
<!-- 11 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 11, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node6" class="node">
<title>11</title>
<ellipse fill="none" stroke="black" cx="921.44" cy="-396" rx="66.53" ry="18"/>
<text text-anchor="middle" x="921.44" y="-390.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 10&#45;&gt;11 -->
<g id="edge5" class="edge">
<title>10&#45;&gt;11</title>
<path fill="none" stroke="black" d="M730.04,-396C762.65,-396 806.16,-396 843.35,-396"/>
<polygon fill="black" stroke="black" points="843.16,-399.5 853.16,-396 843.16,-392.5 843.16,-399.5"/>
</g>
<!-- 13 -->
<!-- name: &quot;Ingredient&quot;, typeName: &quot;RecipeIngredient&quot;, id: 13, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node8" class="node">
<title>13</title>
<ellipse fill="none" stroke="black" cx="680.02" cy="-342" rx="47.57" ry="18"/>
<text text-anchor="middle" x="680.02" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">Ingredient</text>
</g>
<!-- 12&#45;&gt;13 -->
<g id="edge7" class="edge">
<title>12&#45;&gt;13</title>
<path fill="none" stroke="black" d="M568.45,-342C585.82,-342 604.21,-342 620.9,-342"/>
<polygon fill="black" stroke="black" points="620.63,-345.5 630.63,-342 620.63,-338.5 620.63,-345.5"/>
</g>
<!-- 14 -->
<!-- name: &quot;RecipeIngredient&quot;, typeName: &quot;&quot;, id: 14, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node9" class="node">
<title>14</title>
<ellipse fill="none" stroke="black" cx="921.44" cy="-342" rx="73.52" ry="18"/>
<text text-anchor="middle" x="921.44" y="-336.57" font-family="Times New Roman,serif" font-size="14.00">RecipeIngredient</text>
</g>
<!-- 13&#45;&gt;14 -->
<g id="edge8" class="edge">
<title>13&#45;&gt;14</title>
<path fill="none" stroke="black" d="M728.03,-342C758.89,-342 800.11,-342 836.48,-342"/>
<polygon fill="black" stroke="black" points="836.08,-345.5 846.08,-342 836.08,-338.5 836.08,-345.5"/>
</g>
<!-- 16 -->
<!-- name: &quot;Array Size&quot;, typeName: &quot;&quot;, id: 16, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node11" class="node">
<title>16</title>
<ellipse fill="none" stroke="black" cx="496.48" cy="-288" rx="49.57" ry="18"/>
<text text-anchor="middle" x="496.48" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">Array Size</text>
</g>
<!-- 15&#45;&gt;16 -->
<g id="edge10" class="edge">
<title>15&#45;&gt;16</title>
<path fill="none" stroke="black" d="M365.8,-247.77C390.63,-255.47 421.61,-265.08 447.06,-272.98"/>
<polygon fill="black" stroke="black" points="445.93,-276.29 456.52,-275.91 448,-269.61 445.93,-276.29"/>
</g>
<!-- 18 -->
<!-- name: &quot;example element&quot;, typeName: &quot;&quot;, id: 18, branchId: 0, recurseId: &#45;1, attributes: 16, notes: &quot;&quot; -->
<g id="node13" class="node">
<title>18</title>
<ellipse fill="none" stroke="black" stroke-dasharray="1,5" cx="496.48" cy="-234" rx="71.52" ry="18"/>
<text text-anchor="middle" x="496.48" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">example element</text>
</g>
<!-- 15&#45;&gt;18 -->
<g id="edge12" class="edge">
<title>15&#45;&gt;18</title>
<path fill="none" stroke="black" d="M389.22,-234C397.13,-234 405.27,-234 413.35,-234"/>
<polygon fill="black" stroke="black" points="413.2,-237.5 423.2,-234 413.2,-230.5 413.2,-237.5"/>
</g>
<!-- 17 -->
<!-- name: &quot;unsigned varint&quot;, typeName: &quot;&quot;, id: 17, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node12" class="node">
<title>17</title>
<ellipse fill="none" stroke="black" cx="921.44" cy="-288" rx="66.53" ry="18"/>
<text text-anchor="middle" x="921.44" y="-282.57" font-family="Times New Roman,serif" font-size="14.00">unsigned varint</text>
</g>
<!-- 16&#45;&gt;17 -->
<g id="edge11" class="edge">
<title>16&#45;&gt;17</title>
<path fill="none" stroke="black" d="M546.41,-288C619.25,-288 756.87,-288 843.33,-288"/>
<polygon fill="black" stroke="black" points="843.14,-291.5 853.14,-288 843.14,-284.5 843.14,-291.5"/>
</g>
<!-- 19 -->
<!-- name: &quot;Produced Item&quot;, typeName: &quot;NetworkItemInstanceDescriptor&quot;, id: 19, branchId: 0, recurseId: &#45;1, attributes: 256, notes: &quot;&quot; -->
<g id="node14" class="node">
<title>19</title>
<ellipse fill="none" stroke="black" cx="680.02" cy="-234" rx="66.03" ry="18"/>
<text text-anchor="middle" x="680.02" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">Produced Item</text>
</g>
<!-- 18&#45;&gt;19 -->
<g id="edge13" class="edge">
<title>18&#45;&gt;19</title>
<path fill="none" stroke="black" d="M568.45,-234C579.63,-234 591.24,-234 602.55,-234"/>
<polygon fill="black" stroke="black" points="602.21,-237.5 612.21,-234 602.21,-230.5 602.21,-237.5"/>
</g>
<!-- 20 -->
<!-- name: &quot;NetworkItemInstanceDescriptor&quot;, typeName: &quot;&quot;, id: 20, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node15" class="node">
<title>20</title>
<ellipse fill="none" stroke="black" cx="921.44" cy="-234" rx="129.41" ry="18"/>
<text text-anchor="middle" x="921.44" y="-228.57" font-family="Times New Roman,serif" font-size="14.00">NetworkItemInstanceDescriptor</text>
</g>
<!-- 19&#45;&gt;20 -->
<g id="edge14" class="edge">
<title>19&#45;&gt;20</title>
<path fill="none" stroke="black" d="M746.44,-234C757.14,-234 768.58,-234 780.28,-234"/>
<polygon fill="black" stroke="black" points="780.06,-237.5 790.06,-234 780.06,-230.5 780.06,-237.5"/>
</g>
<!-- 22 -->
<!-- name: &quot;mce::UUID&quot;, typeName: &quot;&quot;, id: 22, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node17" class="node">
<title>22</title>
<ellipse fill="none" stroke="black" cx="921.44" cy="-180" rx="52.56" ry="18"/>
<text text-anchor="middle" x="921.44" y="-174.57" font-family="Times New Roman,serif" font-size="14.00">mce::UUID</text>
</g>
<!-- 21&#45;&gt;22 -->
<g id="edge16" class="edge">
<title>21&#45;&gt;22</title>
<path fill="none" stroke="black" d="M369.43,-180C476.88,-180 736.72,-180 857.17,-180"/>
<polygon fill="black" stroke="black" points="856.87,-183.5 866.87,-180 856.87,-176.5 856.87,-183.5"/>
</g>
<!-- 24 -->
<!-- name: &quot;string&quot;, typeName: &quot;&quot;, id: 24, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node19" class="node">
<title>24</title>
<ellipse fill="none" stroke="black" cx="921.44" cy="-126" rx="31.1" ry="18"/>
<text text-anchor="middle" x="921.44" y="-120.58" font-family="Times New Roman,serif" font-size="14.00">string</text>
</g>
<!-- 23&#45;&gt;24 -->
<g id="edge18" class="edge">
<title>23&#45;&gt;24</title>
<path fill="none" stroke="black" d="M550.19,-130.38C635.29,-129.37 801.21,-127.41 878.69,-126.49"/>
<polygon fill="black" stroke="black" points="878.43,-130 888.39,-126.38 878.35,-123 878.43,-130"/>
</g>
<!-- 26 -->
<!-- name: &quot;varint&quot;, typeName: &quot;&quot;, id: 26, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node21" class="node">
<title>26</title>
<ellipse fill="none" stroke="black" cx="921.44" cy="-72" rx="31.1" ry="18"/>
<text text-anchor="middle" x="921.44" y="-66.58" font-family="Times New Roman,serif" font-size="14.00">varint</text>
</g>
<!-- 25&#45;&gt;26 -->
<g id="edge20" class="edge">
<title>25&#45;&gt;26</title>
<path fill="none" stroke="black" d="M718.42,-74.53C761.89,-73.99 833.4,-73.09 878.65,-72.52"/>
<polygon fill="black" stroke="black" points="878.64,-76.02 888.6,-72.4 878.56,-69.02 878.64,-76.02"/>
</g>
<!-- 28 -->
<!-- name: &quot;RecipeUnlockingRequirement&quot;, typeName: &quot;&quot;, id: 28, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node23" class="node">
<title>28</title>
<ellipse fill="none" stroke="black" cx="921.44" cy="-18" rx="121.42" ry="18"/>
<text text-anchor="middle" x="921.44" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">RecipeUnlockingRequirement</text>
</g>
<!-- 27&#45;&gt;28 -->
<g id="edge22" class="edge">
<title>27&#45;&gt;28</title>
<path fill="none" stroke="black" d="M373.28,-20.74C464.89,-20.28 658.04,-19.31 788.55,-18.66"/>
<polygon fill="black" stroke="black" points="788.3,-22.16 798.28,-18.61 788.27,-15.16 788.3,-22.16"/>
</g>
</g>
</svg>

After

(image error) Size: 16 KiB

@ -9,36 +9,36 @@
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>std::optional&lt;class Vec3&gt;</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-40 443.26,-40 443.26,4 -4,4"/>
<!-- 39 -->
<!-- name: &quot;std::optional&lt;class Vec3&gt;&quot;, typeName: &quot;&quot;, id: 39, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 45 -->
<!-- name: &quot;std::optional&lt;class Vec3&gt;&quot;, typeName: &quot;&quot;, id: 45, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
<title>39</title>
<title>45</title>
<ellipse fill="none" stroke="black" cx="107.45" cy="-18" rx="107.45" ry="18"/>
<text text-anchor="middle" x="107.45" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;class Vec3&gt;</text>
</g>
<!-- 40 -->
<!-- name: &quot;Has Value&quot;, typeName: &quot;&quot;, id: 40, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;If true, follow with appropriate data type, otherwise nothing&quot; -->
<!-- 46 -->
<!-- name: &quot;Has Value&quot;, typeName: &quot;&quot;, id: 46, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;If true, follow with appropriate data type, otherwise nothing&quot; -->
<g id="node2" class="node">
<title>40</title>
<title>46</title>
<ellipse fill="none" stroke="black" cx="299.47" cy="-18" rx="48.57" ry="18"/>
<text text-anchor="middle" x="299.47" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Has Value</text>
</g>
<!-- 39&#45;&gt;40 -->
<!-- 45&#45;&gt;46 -->
<g id="edge1" class="edge">
<title>39&#45;&gt;40</title>
<title>45&#45;&gt;46</title>
<path fill="none" stroke="black" d="M215.12,-18C223.33,-18 231.41,-18 239.13,-18"/>
<polygon fill="black" stroke="black" points="239.01,-21.5 249.01,-18 239.01,-14.5 239.01,-21.5"/>
</g>
<!-- 41 -->
<!-- name: &quot;bool&quot;, typeName: &quot;&quot;, id: 41, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 47 -->
<!-- name: &quot;bool&quot;, typeName: &quot;&quot;, id: 47, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>41</title>
<title>47</title>
<ellipse fill="none" stroke="black" cx="411.65" cy="-18" rx="27.61" ry="18"/>
<text text-anchor="middle" x="411.65" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">bool</text>
</g>
<!-- 40&#45;&gt;41 -->
<!-- 46&#45;&gt;47 -->
<g id="edge2" class="edge">
<title>40&#45;&gt;41</title>
<title>46&#45;&gt;47</title>
<path fill="none" stroke="black" d="M348.48,-18C356.49,-18 364.7,-18 372.42,-18"/>
<polygon fill="black" stroke="black" points="372.17,-21.5 382.17,-18 372.17,-14.5 372.17,-21.5"/>
</g>

Before

(image error) Size: 2.4 KiB

After

(image error) Size: 2.4 KiB

@ -9,36 +9,36 @@
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 40)">
<title>std::optional&lt;enum CameraPreset::AudioListener&gt;</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-40 622.9,-40 622.9,4 -4,4"/>
<!-- 46 -->
<!-- name: &quot;std::optional&lt;enum CameraPreset::AudioListener&gt;&quot;, typeName: &quot;&quot;, id: 46, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<!-- 52 -->
<!-- name: &quot;std::optional&lt;enum CameraPreset::AudioListener&gt;&quot;, typeName: &quot;&quot;, id: 52, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;&quot; -->
<g id="node1" class="node">
<title>46</title>
<title>52</title>
<ellipse fill="none" stroke="black" cx="197.27" cy="-18" rx="197.27" ry="18"/>
<text text-anchor="middle" x="197.27" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">std::optional&lt;enum CameraPreset::AudioListener&gt;</text>
</g>
<!-- 47 -->
<!-- name: &quot;Has Value&quot;, typeName: &quot;&quot;, id: 47, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;If true, follow with appropriate data type, otherwise nothing&quot; -->
<!-- 53 -->
<!-- name: &quot;Has Value&quot;, typeName: &quot;&quot;, id: 53, branchId: 0, recurseId: &#45;1, attributes: 0, notes: &quot;If true, follow with appropriate data type, otherwise nothing&quot; -->
<g id="node2" class="node">
<title>47</title>
<title>53</title>
<ellipse fill="none" stroke="black" cx="479.11" cy="-18" rx="48.57" ry="18"/>
<text text-anchor="middle" x="479.11" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">Has Value</text>
</g>
<!-- 46&#45;&gt;47 -->
<!-- 52&#45;&gt;53 -->
<g id="edge1" class="edge">
<title>46&#45;&gt;47</title>
<title>52&#45;&gt;53</title>
<path fill="none" stroke="black" d="M394.91,-18C403.28,-18 411.33,-18 418.9,-18"/>
<polygon fill="black" stroke="black" points="418.86,-21.5 428.86,-18 418.86,-14.5 418.86,-21.5"/>
</g>
<!-- 48 -->
<!-- name: &quot;bool&quot;, typeName: &quot;&quot;, id: 48, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<!-- 54 -->
<!-- name: &quot;bool&quot;, typeName: &quot;&quot;, id: 54, branchId: 0, recurseId: &#45;1, attributes: 512, notes: &quot;&quot; -->
<g id="node3" class="node">
<title>48</title>
<title>54</title>
<ellipse fill="none" stroke="black" cx="591.29" cy="-18" rx="27.61" ry="18"/>
<text text-anchor="middle" x="591.29" y="-12.57" font-family="Times New Roman,serif" font-size="14.00">bool</text>
</g>
<!-- 47&#45;&gt;48 -->
<!-- 53&#45;&gt;54 -->
<g id="edge2" class="edge">
<title>47&#45;&gt;48</title>
<title>53&#45;&gt;54</title>
<path fill="none" stroke="black" d="M528.11,-18C536.12,-18 544.34,-18 552.06,-18"/>
<polygon fill="black" stroke="black" points="551.8,-21.5 561.8,-18 551.8,-14.5 551.8,-21.5"/>
</g>

Before

(image error) Size: 2.5 KiB

After

(image error) Size: 2.5 KiB

@ -141,6 +141,8 @@
<td><a href="PlayerBlockActionData.html">PlayerBlockActionData diagram</a></td>
</tr><tr><td>PlayerBlockActions</td>
<td><a href="PlayerBlockActions.html">PlayerBlockActions diagram</a></td>
</tr><tr><td>PlayerInputTick</td>
<td><a href="PlayerInputTick.html">PlayerInputTick diagram</a></td>
</tr><tr><td>PositionTrackingId</td>
<td><a href="PositionTrackingId.html">PositionTrackingId diagram</a></td>
</tr><tr><td>PotionMixDataEntry</td>
@ -167,8 +169,6 @@
<td><a href="ShapelessChemistryRecipe.html">ShapelessChemistryRecipe diagram</a></td>
</tr><tr><td>ShapelessRecipe</td>
<td><a href="ShapelessRecipe.html">ShapelessRecipe diagram</a></td>
</tr><tr><td>ShulkerBoxRecipe</td>
<td><a href="ShulkerBoxRecipe.html">ShulkerBoxRecipe diagram</a></td>
</tr><tr><td>SmithingTransformRecipe</td>
<td><a href="SmithingTransformRecipe.html">SmithingTransformRecipe diagram</a></td>
</tr><tr><td>SmithingTrimRecipe</td>
@ -195,6 +195,8 @@
<td><a href="TypedServerNetId_struct ItemStackNetIdTag,int,0_.html">TypedServerNetId&lt;struct ItemStackNetIdTag,int,0&gt; diagram</a></td>
</tr><tr><td>TypedServerNetId&lt;struct RecipeNetIdTag,unsigned int,0&gt;</td>
<td><a href="TypedServerNetId_struct RecipeNetIdTag,unsigned int,0_.html">TypedServerNetId&lt;struct RecipeNetIdTag,unsigned int,0&gt; diagram</a></td>
</tr><tr><td>UserDataShapelessRecipe</td>
<td><a href="UserDataShapelessRecipe.html">UserDataShapelessRecipe diagram</a></td>
</tr><tr><td>Vec2</td>
<td><a href="Vec2.html">Vec2 diagram</a></td>
</tr><tr><td>Vec3</td>