def encode(self) -> bytes: out = ( Buffer.pack_varint(self.map_id) + Buffer.pack("b", self.scale) + Buffer.pack("?", self.tracking_pos) + Buffer.pack("?", self.locked) + Buffer.pack_varint(len(self.icons)) ) for icon in self.icons: out += Buffer.pack_varint(icon["type"]) + Buffer.pack("b", icon["x"]) + Buffer.pack("b", icon["z"]) display_name = icon.get("display_name") if display_name is not None: out += Buffer.pack("?", True) + Buffer.pack_chat(Chat(display_name)) else: out += Buffer.pack("?", False) out += ( Buffer.pack("B", self.cols) + Buffer.pack_optional((lambda x: Buffer.pack("B", x)), self.rows) + Buffer.pack_optional((lambda x: Buffer.pack("b", x)), self.x) + Buffer.pack_optional((lambda z: Buffer.pack("b", z)), self.z) ) if self.data is not None: out += Buffer.pack("?", True) + Buffer.pack_varint(len(self.data)) + Buffer.pack("?", True) + self.data else: out += Buffer.pack("?", False) + Buffer.pack("?", False) return out
def encode(self) -> bytes: out = Buffer.pack_varint(self.action) + len(self.players) if self.action == 0: # add player for player in self.players: out += ( Buffer.pack_uuid(player["uuid"]) + Buffer.pack_string(player["name"]) + Buffer.pack_varint(len(player["properties"])) ) for prop in player["properties"]: out += ( Buffer.pack_string(prop["name"]) + Buffer.pack_string(prop["value"]) + Buffer.pack_optional(Buffer.pack_string, prop.get("signature")) ) out += ( Buffer.pack_varint(player["gamemode"]) + Buffer.pack_varint(player["ping"]) + Buffer.pack_optional(Buffer.pack_chat, player["display_name"]) ) elif self.action == 1: # update gamemode out += b"".join(Buffer.pack_uuid(p["uuid"]) + Buffer.pack_varint(p["gamemode"]) for p in self.players) elif self.action == 2: # update latency out += b"".join(Buffer.pack_uuid(p["uuid"]) + Buffer.pack_varint(p["ping"]) for p in self.players) elif self.action == 3: # update display name out += b"".join(Buffer.pack_uuid(p["uuid"]) + Buffer.pack_optional(p.get("display_name")) for p in self.players) elif self.action == 4: out += b"".join(Buffer.pack_uuid(p["uuid"]) for p in self.players) return out
def encode(self) -> bytes: return (Buffer.pack_string(self.objective_name) + Buffer.pack("b", self.mode) + Buffer.pack_optional( Buffer.pack_chat, Chat(self.objective_value)) + Buffer.pack_optional(Buffer.pack_varint, self.type_))
def encode(self) -> bytes: return (Buffer.pack("b", self.flags) + Buffer.pack_optional(Buffer.pack_varint, self.source) + Buffer.pack_optional(Buffer.pack_string, self.sound))
def encode(self) -> bytes: return Buffer.pack_optional(Buffer.pack_string, self.identifier)