@Override
    public void deserialize(Buffer buf) {
        collectorName = buf.readString();
        worldX = buf.readShort();
        if (worldX < -255 || worldX > 255)
            throw new RuntimeException("Forbidden value on worldX = " + worldX + ", it doesn't respect the following condition : worldX < -255 || worldX > 255");
        worldY = buf.readShort();
        if (worldY < -255 || worldY > 255)
            throw new RuntimeException("Forbidden value on worldY = " + worldY + ", it doesn't respect the following condition : worldY < -255 || worldY > 255");
        mapId = buf.readInt();
        subAreaId = buf.readShort();
        if (subAreaId < 0)
            throw new RuntimeException("Forbidden value on subAreaId = " + subAreaId + ", it doesn't respect the following condition : subAreaId < 0");
        userName = buf.readString();
        experience = buf.readDouble();
        int limit = buf.readUShort();
        objectsInfos = new ObjectItemQuantity[limit];
        for (int i = 0; i < limit; i++) {
            objectsInfos[i] = new ObjectItemQuantity();
            objectsInfos[i].deserialize(buf);
        }
    }