Add packets for entity interaction and trade list

This commit is contained in:
2021-02-20 23:04:48 +00:00
parent af1db24cd5
commit b72c335ff7
4 changed files with 112 additions and 2 deletions
+46 -1
View File
@@ -8,7 +8,7 @@ from minecraft.networking.types import (
Float, Direction, PositionAndLook
)
from protocol.types import Nbt, Slot, Entry
from protocol.types import Nbt, Slot, Entry, Trade
import blocks
@@ -391,3 +391,48 @@ class EntityActionPacket(Packet):
{'action_id': VarInt},
{'jump_boost': VarInt},
]
class InteractEntityPacket(Packet):
# Sent when the client attacks or right-clicks another entity
# https://wiki.vg/Protocol#Interact_Entity
id = 0x0E
packet_name = 'interact entity'
definition = [
{'entity_id': VarInt},
{'type': VarInt},
#{'target_x': Float},
#{'target_y': Float},
#{'target_z': Float},
{'hand': VarInt},
{'sneaking': Boolean},
]
class TradeListPacket(Packet):
# The list of trades a villager NPC is offering.
# https://wiki.vg/Protocol#Trade_List
id = 0x26
packet_name = 'trade list'
fields = (
'window_id',
'size',
'trades',
'villager_level',
'experience',
'is_regular_villager',
'can_restock',
)
def read(self, file_object):
self.window_id = VarInt.read(file_object)
self.size = Byte.read(file_object)
self.trades = []
for _ in range(self.size):
trade = Trade.read(file_object)
self.trades.append(trade)
self.villager_level = VarInt.read(file_object)
self.experience = VarInt.read(file_object)
self.is_regular_villager = Boolean.read(file_object)
self.can_restock = Boolean.read(file_object)