barneygale / quarry

Python library that implements the Minecraft network protocol and data types
Other
527 stars 75 forks source link

According to wiki.vg this data type is wrong. And how to respond to tab completes? #187

Open ajh123 opened 1 year ago

ajh123 commented 1 year ago

https://github.com/barneygale/quarry/blob/8adc03095d244621aa8cf3a956c0af5c0a7b1058/quarry/types/buffer/v1_13.py#L294

Wiki.vg says the parser id is a Varint, above we are treating it as a string, Is this a change past 1.13?. When using my code I get the error below because the parser ID is not meant to be a string (because it's too big?)

image

ajh123 commented 1 year ago

BTW, I'm using 1.19.2 vanilla

ajh123 commented 1 year ago

Solved by writing my own command node packer. I wish it could be implemented into quarry.

ajh123 commented 1 year ago

I have been trying to send this packet (under quarry it's called "tab_complete") to the client but I can't seem how to construct its array properly.

class TabCompleteProtocol(ChatProtocol): # <-- Just a normal ServerProtocol
    def packet_tab_complete(self, buff: Buffer1_19_1): # <-- Buffer1_19_1 is there just for type hints
        trans_id = buff.unpack_varint()
        msg = buff.unpack_string()

        array = []
        array.append(("msg", False))
        array.append(("123", False))

        output = b""
        for e in array:
            output+=self.buff_type.pack_string(e[0])
            output+=self.buff_type.pack("?", e[1])

        self.send_packet(
            "tab_complete",
            self.buff_type.pack_varint(trans_id),
            self.buff_type.pack_varint(3), # Start of the text to replace.
            self.buff_type.pack_varint(3), # Length of the text to replace.
            self.buff_type.pack_varint(len(array)), # Number of elements in the following array.
            self.buff_type.pack_byte_array(output)
        )

The problem is I can't seem to figure out how to construct the array. Or are my Varints wrong?

davidawesome02 commented 1 year ago

the packet name might be wrong, this program is outdated af for names

davidawesome02 commented 1 year ago

Solved by writing my own command node packer. I wish it could be implemented into quarry.

NICE JOB BRO, that is cool

davidawesome02 commented 1 year ago

Also make a pull request and try to merge it, if owner ever gets active he might

ajh123 commented 1 year ago

the packet name might be wrong, this program is outdated af for names

It's not the name because that's what Qurray calls it in it's files. The problem is how I'm adding the data to the packet.