Esempio n. 1
0
    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
Esempio n. 2
0
    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
Esempio n. 3
0
 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_))
Esempio n. 4
0
 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))
Esempio n. 5
0
 def encode(self) -> bytes:
     return Buffer.pack_optional(Buffer.pack_string, self.identifier)