| 1234567891011121314151617181920212223242526272829303132333435363738 | #include "server/packets/WorldPackets.h"#include "common/network/Packets.h"void WorldPackets::sendChunk(ServerPlayer& p, World& w, int cx, int cz) {    constexpr int size = BlockStorage::SEGMENT;    cx *= size;    cz *= size;    OutPacket out = OutPacket::reliable(        w.blocks.getHeight() * size * size * sizeof(Block::Id) * 2 + 10);    out.writeU16(Packets::S_WORLD_SEGMENT);    out.writeS32(cx);    out.writeS32(cz);    int endX = cx + size;    int endZ = cz + size;    Block::Id current = w.blocks.get(cx, 0, cz);    uint16 counter = 0;    for(int y = 0; y < w.blocks.getHeight(); y++) {        for(int x = cx; x < endX; x++) {            for(int z = cz; z < endZ; z++) {                Block::Id id = w.blocks.get(x, y, z);                if(current == id && counter < 65535) {                    counter++;                } else {                    out.writeU16(current);                    out.writeU16(counter);                    current = id;                    counter = 1;                }            }        }    }    out.writeU16(current);    out.writeU16(counter);    p.send(out);}
 |