Exemplo n.º 1
0
    def write(self, stream, packet):
        assert packet.__class__.PACKET_DIRECTION == PacketDirection.SERVERBOUND \
            if self._mode == PacketSerializer.Mode.CLIENT else \
            packet.__class__.PACKET_DIRECTION == PacketDirection.CLIENTBOUND, \
            "packet has invalid direction for this serializer"

        buf = StringIO()
        StreamIO.write_varint(buf, packet.__class__.PACKET_ID)
        packet.__class__.write(buf, packet)
        data = buf.getvalue()
        buf.close()

        if self.is_compression_enabled():
            buf = StringIO()

            if len(data) >= self.get_threshold():
                StreamIO.write_varint(buf, len(data))
                data = zlib.compress(data)
            else:
                StreamIO.write_varint(buf, 0)

            StreamIO.write(buf, data)
            data = buf.getvalue()
            buf.close()

        buf = StringIO()
        StreamIO.write_string(buf, data)
        data = buf.getvalue()
        buf.close()

        StreamIO.write(stream, data)
Exemplo n.º 2
0
    def write(stream, tag):
        for i in tag.keys():
            StreamIO.write_ubyte(stream, tag[i].__class__.TYPE_ID)
            StreamIO.write_ushort(stream, len(i.encode("utf8")))
            StreamIO.write(stream, i.encode("utf8"))
            tag[i].__class__.write(stream, tag[i])

        StreamIO.write_ubyte(stream, NBTTagEnd.TYPE_ID)
Exemplo n.º 3
0
 def write(stream, tag):
     StreamIO.write_ushort(stream, len(tag.get().encode("utf8")))
     StreamIO.write(stream, tag.get().encode("utf8"))
Exemplo n.º 4
0
 def write(stream, packet):
     StreamIO.write_string(stream, packet.get_channel().encode("utf8"))
     StreamIO.write(stream, packet.get_bytes())