Add packets for entity interaction and trade list
This commit is contained in:
+46
-1
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user