private void Initialize(int protocolVersion)
        {
            this.dataTypes       = new DataTypes(protocolVersion);
            this.packetType      = new PacketTypeHandler().GetTypeHandler(protocolVersion);
            this.protocolVersion = protocolVersion;

            if (!Directory.Exists(ReplayFileDirectory))
            {
                Directory.CreateDirectory(ReplayFileDirectory);
            }
            if (!Directory.Exists(temporaryCache))
            {
                Directory.CreateDirectory(temporaryCache);
            }

            recordStream    = new BinaryWriter(new FileStream(Path.Combine(temporaryCache, recordingTmpFileName), FileMode.Create, FileAccess.ReadWrite));
            recordStartTime = DateTime.Now;

            MetaData           = new MetaDataHandler();
            MetaData.date      = (long)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalMilliseconds;
            MetaData.protocol  = protocolVersion;
            MetaData.mcversion = ProtocolHandler.ProtocolVersion2MCVer(protocolVersion);
            MetaData.SaveToFile();

            playerLastPosition = new Location(0, 0, 0);
            WriteLog("Start recording.");
        }