Add living entity packets
This commit is contained in:
@@ -307,3 +307,58 @@ class EntityMetadataPacket(Packet):
|
||||
entry = Entry.read(file_object)
|
||||
if not entry: break
|
||||
self.metadata.append(entry)
|
||||
|
||||
|
||||
class SpawnLivingEntityPacket(Packet):
|
||||
# Sent by the server when a living entity is spawned
|
||||
# https://wiki.vg/Protocol#Spawn_Entity
|
||||
|
||||
id = 0x02
|
||||
packet_name = 'spawn living entity'
|
||||
|
||||
definition = [
|
||||
{'entity_id': VarInt},
|
||||
{'entity_uuid': UUID},
|
||||
{'type': VarInt},
|
||||
{'x': Double},
|
||||
{'y': Double},
|
||||
{'z': Double},
|
||||
{'yaw': Angle},
|
||||
{'pitch': Angle},
|
||||
{'head_pitch': Angle},
|
||||
{'x_velocity': Short},
|
||||
{'y_velocity': Short},
|
||||
{'z_velocity': Short},
|
||||
]
|
||||
|
||||
class EntityPositionPacket(Packet):
|
||||
# Sent by the server when an entity moves less then 8 blocks
|
||||
# https://wiki.vg/Protocol#Spawn_Entity
|
||||
|
||||
id = 0x27
|
||||
packet_name = 'entity position'
|
||||
|
||||
definition = [
|
||||
{'entity_id': VarInt},
|
||||
{'delta_x': Short},
|
||||
{'delta_y': Short},
|
||||
{'delta_z': Short},
|
||||
{'on_ground': Boolean},
|
||||
]
|
||||
|
||||
class EntityPositionRotationPacket(Packet):
|
||||
# Sent by the server when an entity rotates and moves
|
||||
# https://wiki.vg/Protocol#Entity_Position_and_Rotation
|
||||
|
||||
id = 0x28
|
||||
packet_name = 'entity position and rotation'
|
||||
|
||||
definition = [
|
||||
{'entity_id': VarInt},
|
||||
{'delta_x': Short},
|
||||
{'delta_y': Short},
|
||||
{'delta_z': Short},
|
||||
{'yaw': Angle},
|
||||
{'pitch': Angle},
|
||||
{'on_ground': Boolean},
|
||||
]
|
||||
|
@@ -40,10 +40,9 @@ class Nbt(Type):
|
||||
@staticmethod
|
||||
def read(file_object):
|
||||
type_id = Byte.read(file_object)
|
||||
if type_id == TAG_End:
|
||||
return None
|
||||
if type_id != TAG_Compound:
|
||||
raise Exception("Invalid NBT header")
|
||||
#raise Exception("Invalid NBT header")
|
||||
return None
|
||||
name = ShortPrefixedByteArray.read(file_object).decode('utf-8')
|
||||
a = Nbt.decode_tag(file_object, TAG_Compound)
|
||||
a['_name'] = name
|
||||
@@ -119,10 +118,14 @@ class Slot(Type):
|
||||
@staticmethod
|
||||
def read(file_object):
|
||||
present = Boolean.read(file_object)
|
||||
item_id = VarInt.read(file_object) if present else None
|
||||
item_count = Byte.read(file_object) if present else None
|
||||
print('slot read', present, item_id, item_count)
|
||||
nbt = Nbt.read(file_object) if present else None
|
||||
if present:
|
||||
item_id = VarInt.read(file_object)
|
||||
item_count = Byte.read(file_object)
|
||||
nbt = Nbt.read(file_object)
|
||||
else:
|
||||
item_id = None
|
||||
item_count = None
|
||||
nbt = None
|
||||
return Slot(present, item_id, item_count, nbt)
|
||||
|
||||
@staticmethod
|
||||
|
Reference in New Issue
Block a user