Esempio n. 1
0
 def encode(self) -> bytes:
     return (Buffer.pack("i", self.entity_id) +
             Buffer.pack("?", self.is_hardcore) +
             Buffer.pack("B", self.gamemode) +
             Buffer.pack("b", self.prev_gamemode) +
             Buffer.pack_varint(len(self.world_names)) +
             b"".join([Buffer.pack_string(w) for w in self.world_names]) +
             Buffer.pack_nbt(self.dim_codec) +
             Buffer.pack_nbt(self.dimension) +
             Buffer.pack_string(self.world_name) +
             Buffer.pack("q", self.hashed_seed) +
             Buffer.pack_varint(self.max_players) +
             Buffer.pack_varint(self.view_distance) +
             Buffer.pack("?", self.reduced_debug_info) +
             Buffer.pack("?", self.enable_respawn_screen) +
             Buffer.pack("?", self.is_debug) +
             Buffer.pack("?", self.is_flat))
Esempio n. 2
0
 def encode(self) -> bytes:
     return (Buffer.pack_nbt(self.dimension) +
             Buffer.pack_string(self.world_name) +
             Buffer.pack("l", self.hashed_seed) +
             Buffer.pack("B", self.gamemode) +
             Buffer.pack("B", self.prev_gamemode) +
             Buffer.pack("?", self.is_debug) +
             Buffer.pack("?", self.is_flat) +
             Buffer.pack("?", self.copy_metadata))
Esempio n. 3
0
    def encode(self) -> bytes:
        out = Buffer.pack("i", self.chunk.x) + Buffer.pack("i", self.chunk.z) + Buffer.pack("?", self.full)

        mask = 0
        chunk_sections_buffer = Buffer()

        for y, section in self.chunk.sections.items():  # pack chunk columns into buffer and generate a bitmask
            if y >= 0:
                mask |= 1 << y
                chunk_sections_buffer.write(Buffer.pack_chunk_section(section))

        out += Buffer.pack_varint(mask) + Buffer.pack_nbt(
            nbt.TAG_Compound("", [self.chunk["Heightmaps"]["MOTION_BLOCKING"], self.chunk["Heightmaps"]["WORLD_SURFACE"]])
        )

        if self.full:
            out += Buffer.pack_varint(len(Chunk["Biomes"])) + b"".join([Buffer.pack_varint(n) for n in Chunk["Biomes"]])

        out += len(chunk_sections_buffer) + chunk_sections_buffer.read()

        # here we would pack the block entities, but we don't support them yet so we just send an array with length of 0
        out += Buffer.pack_varint(0)

        return out
Esempio n. 4
0
 def encode(self) -> bytes:
     return Buffer.pack_pos(self.x, self.y, self.z) + Buffer.pack("B", self.action) + Buffer.pack_nbt(self.nbt_data)
Esempio n. 5
0
 def encode(self) -> bytes:
     return Buffer.pack_varint(self.transaction_id) + Buffer.pack_nbt(
         self.nbt)