Difference between revisions of "Object Data"

From wiki.vg
Jump to navigation Jump to search
(Undo revision 7214 by Javaprophet (talk) restoring formatting change that was reverted without explanation, temp reverting this to restore)
(Use Template:Type for type links.)
 
(19 intermediate revisions by 8 users not shown)
Line 1: Line 1:
== Object Data ==
+
This article documents the '''Data''' field in the [[Protocol#Spawn Entity|Spawn Entity]] packet. The field is of type Int, and the meaning of its contents depend on the [[Entity_metadata|type of entity]] being spawned, as defined in the Type field of the same packet, and is documented below.
  
In the "Spawn Object/Vehicle" packet, additional metadata about the spawned entity may be provided.  The length and contents of this extra data depend on the type of object being spawned.  No matter what, the server must send at least one integer to the client, although 0 is a valid value.  If a number other than zero is provided (for all entities), the following data is appended to the end of the object data (as of [[Protocol version numbers|15w31a, protocol 49]] this data is always required):
+
== [[Entity_metadata#Item_Frame|Item Frame]] ==
  
 
{| class="wikitable"
 
{| class="wikitable"
|- class="row0"
+
|-
! class="col0" | Field Name
+
! Value
! class="col1" | Field Type
+
! Orientation
! class="col2" | Example
+
|-
! class="col3" | Notes
+
| 0
|- class="row2"
+
| Down
| class="col0 centeralign" | Speed X
+
|-
| class="col1 centeralign" | Short
+
| 1
| class="col2 centeralign" | <code>0</code>
+
| Up
| class="col3" | The speed of the object, same units as [[Protocol#Entity Velocity|Entity Velocity]]
+
|-
|- class="row2"
+
| 2
| class="col0 centeralign" | Speed Y
+
| North
| class="col1 centeralign" | Short
+
|-
| class="col2 centeralign" | <code>0</code>
+
| 3
| class="col3" | The speed of the object, same units as [[Protocol#Entity Velocity|Entity Velocity]]
+
| South
|- class="row2"
+
|-
| class="col0 centeralign" | Speed Z
+
| 4
| class="col1 centeralign" | Short
+
| West
| class="col2 centeralign" | <code>0</code>
+
|-
| class="col3" | The speed of the object, same units as [[Protocol#Entity Velocity|Entity Velocity]]
+
| 5
|}
+
| East
 +
|}
  
== Meaning of int field ==
+
The Notchian client clamps invalid values into the valid range through the modulus operator. If the resulting value is negative, the absolute value is used.
  
 +
Velocity in the packet is always ignored.
  
=== Minecarts (id 10)===
+
== [[Entity_metadata#Painting|Painting]] ==
  
The int value itself specifies the minecart's functionality:
+
{| class="wikitable"
 +
|-
 +
! Value
 +
! Orientation
 +
|-
 +
| 2
 +
| North
 +
|-
 +
| 3
 +
| South
 +
|-
 +
| 4
 +
| West
 +
|-
 +
| 5
 +
| East
 +
|}
  
{| class="wikitable"
+
The Notchian client clamps invalid values into the valid range through the modulus operator. If the resulting value is negative, the absolute value is used.
|- class="row0"
 
! class="col0" | Value
 
! class="col1" | Minecart functionality
 
|- class="row1"
 
| class="col0 centeralign" | 0
 
| class="col1 centeralign" | Empty (ride-able) minecart
 
|- class="row2"
 
| class="col0 centeralign" | 1
 
| class="col1 centeralign" | Chest minecart
 
|- class="row3"
 
| class="col0 centeralign" | 2
 
| class="col1 centeralign" | Furnace (powered) minecart
 
|- class="row4"
 
| class="col0 centeralign" | 3
 
| class="col1 centeralign" | TNT minecart
 
|- class="row5"
 
| class="col0 centeralign" | 4
 
| class="col1 centeralign" | Spawner minecart
 
|- class="row6"
 
| class="col0 centeralign" | 5
 
| class="col1 centeralign" | Hopper minecart
 
|- class="row7"
 
| class="col0 centeralign" | 6
 
| class="col1 centeralign" | Command Block minecart
 
|}
 
  
=== Item Frame (id 71) ===
+
{{Warning|Although the values of 0 and 1 are invalid, the Notchian client uses the same clamping algorithm as [[#Item_Frame|Item Frame]], which can result in any value from 0 to 5. If the resulting value is invalid, the entity will fail to spawn.}}
  
{| class="wikitable"
+
Velocity in the packet is always ignored.
|- class="row0"
 
! class="col0" | Field Name
 
! class="col1" | Field Type
 
! class="col2" | Example
 
! class="col3" | Notes
 
|- class="row1"
 
| class="col0 centeralign" | Orientation
 
| class="col1 centeralign" | int
 
| class="col2 centeralign" | <code>3</code>
 
| class="col3" | 0-3: South, West, North, East
 
|}
 
  
=== Falling Block (id 70) ===
+
== [[Entity_metadata#Falling_Block|Falling Block]] ==
  
 
{| class="wikitable"
 
{| class="wikitable"
|- class="row0"
+
|-
! class="col0" | Field Name
+
! Field name
! class="col1" | Field Type
+
! Field type
! class="col2" | Example
+
! Notes
! class="col3" | Notes
+
|-
|- class="row1"
+
| Block state ID
| class="col0 centeralign" | Block Type
+
| {{Type|Int}}
| class="col1 centeralign" | int
+
| ID of the block state that the falling block will represent.
| class="col2 centeralign" | <code>12</code>
+
|}
| class="col3" | <code>BlockID | (Metadata << 0x10)</code>
+
 
|}
+
Velocity in the packet is always ignored.
  
=== Splash Potions (id 73) ===
+
== [[Entity_metadata#Fishing_Hook|Fishing Hook]] ==
  
 
{| class="wikitable"
 
{| class="wikitable"
|- class="row0"
+
! Field name
! class="col0" | Field Name
+
! Field type
! class="col1" | Field Type
+
! Notes
! class="col2" | Example
+
|-
! class="col3" | Notes
+
| Owner
|- class="row1"
+
| {{Type|Int}}
| class="col0 centeralign" | Entity ID
+
| The entity ID of the owner
| class="col1 centeralign" | int
+
|}
| class="col2 centeralign" | <code>64</code>
 
| class="col3" | Potion data value
 
|}
 
  
For more information on potion data values, see [http://www.minecraftwiki.net/wiki/Data_values#Potions].
+
{{Warning|If the entity with the Owner ID doesn't exist in the client, the entity will fail to spawn.}}
  
=== Fishing Float (id 90) ===
+
Velocity in the packet is ignored, and instead should be inferred from the shooter's position.
{| class="wikitable"
 
! Field Name !! Field Type !! Example !! Notes
 
|-
 
| Owner || int ||  || The entity ID of the owner
 
|}
 
  
 +
{{Need Info|What's the exact algorithm for determining this?}}
  
 +
== [[Entity_metadata#Projectile|Projectile]] ==
  
=== Projectiles ([[Entities#Objects|Any projectile]])===
+
{| class="wikitable"
 +
|-
 +
! Field name
 +
! Field type
 +
! Notes
 +
|-
 +
| Owner ID
 +
| {{Type|Int}}
 +
| The entity ID of the owner
 +
|}
  
This includes ghast fireballs, arrows, and fishhooks (probably more).
+
== [[Entity_metadata#Warden|Warden]] ==
  
 
{| class="wikitable"
 
{| class="wikitable"
|- class="row0"
+
|-
! class="col0" | Field Name
+
! Field name
! class="col1" | Field Type
+
! Field type
! class="col2" | Example
+
! Notes
! class="col3" | Notes
+
|-
|- class="row1"
+
| Pose
| class="col0 centeralign" | Entity ID
+
| {{Type|Int}}
| class="col1 centeralign" | int
+
| If a value of 1 is specified, the Warden will spawn in the [[Entity_metadata#Entity_Metadata_Format|emerging pose]].
| class="col2 centeralign" | <code>64</code>
+
Any other value is silently ignored.
| class="col3" | The entity ID of the thrower
+
|}
|}
+
 
 +
 
 +
[[Category:Protocol Details]]
 +
[[Category:Minecraft Modern]]

Latest revision as of 22:32, 24 February 2024

This article documents the Data field in the Spawn Entity packet. The field is of type Int, and the meaning of its contents depend on the type of entity being spawned, as defined in the Type field of the same packet, and is documented below.

Item Frame

Value Orientation
0 Down
1 Up
2 North
3 South
4 West
5 East

The Notchian client clamps invalid values into the valid range through the modulus operator. If the resulting value is negative, the absolute value is used.

Velocity in the packet is always ignored.

Painting

Value Orientation
2 North
3 South
4 West
5 East

The Notchian client clamps invalid values into the valid range through the modulus operator. If the resulting value is negative, the absolute value is used.

Warning.png Although the values of 0 and 1 are invalid, the Notchian client uses the same clamping algorithm as Item Frame, which can result in any value from 0 to 5. If the resulting value is invalid, the entity will fail to spawn.

Velocity in the packet is always ignored.

Falling Block

Field name Field type Notes
Block state ID Int ID of the block state that the falling block will represent.

Velocity in the packet is always ignored.

Fishing Hook

Field name Field type Notes
Owner Int The entity ID of the owner

Warning.png If the entity with the Owner ID doesn't exist in the client, the entity will fail to spawn.

Velocity in the packet is ignored, and instead should be inferred from the shooter's position.

Huh.png The following information needs to be added to this page:
What's the exact algorithm for determining this?

Projectile

Field name Field type Notes
Owner ID Int The entity ID of the owner

Warden

Field name Field type Notes
Pose Int If a value of 1 is specified, the Warden will spawn in the emerging pose.

Any other value is silently ignored.