/// <summary>
        /// Sends the specified writer.
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="version">The version.</param>
        /// <remarks></remarks>
        protected override void OnSend(BigEndianStream writer, int version)
        {
            if (writer == null)
                throw new System.ArgumentNullException("writer");
            writer.Write(Code);
            if (version >= 32)
                return;
            if (ProtocolVersion != 0)
                version = ProtocolVersion;
#pragma warning restore 618
            writer.Write(version);
            writer.Write(UserName);
            //Not used
            if (version <= 27)
                writer.Write((long) 0);
            if (version >= 23 && version <= 30)
                writer.Write(Unknown);

            writer.Write(0);
            if (version >= 27)
                writer.Write(0);
            else
                writer.Write((byte) 0);
            writer.Write((Byte) 0);
            writer.Write((byte) 0);
            writer.Write((byte) 0);
        }
        /// <summary>
        ///   Receives the specified reader.
        /// </summary>
        /// <param name="reader"> The reader. </param>
        /// <param name="version"> The version. </param>
        /// <remarks>
        /// </remarks>
        protected override void OnReceive(BigEndianStream reader, int version)
        {
            if (reader == null)
                throw new ArgumentNullException("reader");

            UserType = reader.ReadByte ();
        }
Example #3
0
        /// <summary>
        ///   Receives the specified reader.
        /// </summary>
        /// <param name="reader"> The reader. </param>
        /// <param name="version"> The version. </param>
        /// <remarks>
        /// </remarks>
        protected override void OnReceive(BigEndianStream reader, int version)
        {
            if (reader == null)
                throw new ArgumentNullException("reader");

            TeamName = reader.ReadString16();
            Mode = reader.ReadByte();
            if (Mode == 2 || Mode == 0)
            {
                TeamDisplayName = reader.ReadString16();
                TeamPrefix = reader.ReadString16();
                TeamSufix = reader.ReadString16();
                if (version >= 60)
                    FriendlyFire = reader.ReadByte();
                else
                    FriendlyFire = (byte) (reader.ReadBoolean() ? 1 : 0);
            }
            if (Mode == 0 || Mode == 3 || Mode == 4)
            {
                PlayerCount = reader.ReadInt16();

                var collection = new List<string>();

                for (int i = 0; i < PlayerCount; i++)
                {
                    collection.Add(reader.ReadString16());
                }

                Players = collection.ToArray();
            }
        }
        public async Task StringTestAsync()
        {
            MemoryStream memStream = new MemoryStream();
            BigEndianStream bigEndianStream = new BigEndianStream(memStream);

            string testString = "Hello, World!";

            await bigEndianStream.WriteAsync(testString);

            memStream.Seek(0, SeekOrigin.Begin);

            var result = await bigEndianStream.ReadString16Async();

            Assert.AreEqual(testString, result);

            Assert.AreEqual(memStream.Position, memStream.Length);


            memStream.SetLength(0);

            bigEndianStream.Write8(testString);

            memStream.Seek(0, SeekOrigin.Begin);

            result = await bigEndianStream.ReadString8Async();

            Assert.AreEqual(testString, result);

            Assert.AreEqual(memStream.Position, memStream.Length);
        }
Example #5
0
 protected virtual Task OnSendAsync(BigEndianStream writer, int version)
 {
     return Task.Run(() =>
     {
         OnSend(writer, version);
     });
 }
        /// <summary>
        /// Sends the specified writer.
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="version">The version.</param>
        /// <remarks></remarks>
        protected override void OnSend(BigEndianStream writer, int version)
        {
            if (writer == null)
                throw new ArgumentNullException("writer");
            writer.Write(Code);

            if (version >= 32)
            {
                byte d = 0;

                d |= (byte)((Flying ? 1 : 0) << 0);
                d |= (byte)((InstantBuild ? 1 : 0) << 1);
                d |= (byte)((MayFly ? 1 : 0) << 2);
                d |= (byte)((Invulnerable ? 1 : 0) << 3);
                writer.Write(d);
                writer.Write(FlyingSpeed);
                writer.Write(WalkSpeed);
            }
            else
            {
                writer.Write(Flying);
                writer.Write(InstantBuild);
                writer.Write(MayFly);
                writer.Write(Invulnerable);
            }
        }
        public void StringTest()
        {
            MemoryStream memStream = new MemoryStream();
            BigEndianStream bigEndianStream = new BigEndianStream(memStream);

            string testString = "Hello, World!";

            bigEndianStream.Write(testString);

            memStream.Seek(0, SeekOrigin.Begin);

            var result = bigEndianStream.ReadString16();

            Assert.AreEqual(testString, result);

            Assert.AreEqual(memStream.Position, memStream.Length);


            memStream.SetLength(0);

            bigEndianStream.Write8(testString);

            memStream.Seek(0, SeekOrigin.Begin);

            result = bigEndianStream.ReadString8();

            Assert.AreEqual(testString, result);

            Assert.AreEqual(memStream.Position, memStream.Length);
        }
 /// <summary>
 ///   Receives the specified reader.
 /// </summary>
 /// <param name="reader"> The reader. </param>
 /// <param name="version"> The version. </param>
 /// <remarks>
 /// </remarks>
 protected override void OnReceive(BigEndianStream reader, int version)
 {
     if (reader == null)
         throw new ArgumentNullException("reader");
     Slot = reader.ReadInt16 ();
     Item = ItemStack.Read(reader);
 }
        /// <summary>
        /// Receives the specified reader.
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <param name="version">The version.</param>
        /// <remarks></remarks>
        protected override void OnReceive(BigEndianStream reader, int version)
        {
            if (reader == null)
                throw new ArgumentNullException("reader");
            if (version >= 32)
            {
                byte dataByte = reader.ReadByte();
                Flying = (dataByte & 0x1) != 0;
                InstantBuild = (dataByte & 0x2) != 0;
                MayFly = (dataByte & 0x4) != 0;
                Invulnerable = (dataByte & 0x8) != 0;
                FlyingSpeed = reader.ReadByte();
                WalkSpeed = reader.ReadByte();
            }
            else
            {
                Flying = reader.ReadBoolean();
                InstantBuild = reader.ReadBoolean();
                MayFly = reader.ReadBoolean();
                Invulnerable = reader.ReadBoolean();

                FlyingSpeed = 15;
                WalkSpeed = 25;
            }
        }
Example #10
0
        /// <summary>
        ///   Receives the specified reader.
        /// </summary>
        /// <param name="reader"> The reader. </param>
        /// <param name="version"> The version. </param>
        /// <remarks>
        /// </remarks>
        protected override void OnReceive(BigEndianStream reader, int version)
        {
            if (reader == null)
                throw new ArgumentNullException("reader");
            if (version >= 32)
                return;
#pragma warning disable 618
            ProtocolVersion = reader.ReadInt32 ();
            UserName = reader.ReadString16 ();
            if (ProtocolVersion != 0)
                version = ProtocolVersion;
            //Not used
            if (version <= 27)
                reader.ReadInt64 ();
            if (version >= 23 && version <= 30)
                Unknown = reader.ReadString16 ();
            reader.ReadInt32 ();
            if (version >= 27)
                reader.ReadInt32 ();
            else
                reader.ReadByte ();
            reader.ReadByte ();
            reader.ReadByte ();
            reader.ReadByte ();
        }
 /// <summary>
 /// Sends the specified writer.
 /// </summary>
 /// <param name="writer">The writer.</param>
 /// <param name="version">The version.</param>
 /// <remarks></remarks>
 protected override void OnSend(BigEndianStream writer, int version)
 {
     if (writer == null)
         throw new ArgumentNullException("writer");
     if (version >= 38)
     {
         writer.Write(Code);
         writer.Write((byte)EntityIds.Count());
         foreach (var item in EntityIds)
         {
             writer.Write(item);
         }
     }
     else
     {
         if (EntityIds == null || EntityIds.Count() == 0)
         {
             writer.Write(Code);
             writer.Write(0);
         }
         else
         foreach (var item in EntityIds)
         {
             writer.Write(Code);
             writer.Write(item);
         }
     }
 }
 /// <summary>
 /// Receives the specified reader.
 /// </summary>
 /// <param name="reader">The reader.</param>
 /// <param name="version">The version.</param>
 /// <remarks></remarks>
 protected override void OnReceive(BigEndianStream reader, int version)
 {
     if (reader == null)
         throw new System.ArgumentNullException("reader");
     EntityId = reader.ReadInt32();
     Name = reader.ReadString16();
     PositionX = reader.ReadInt32();
     PositionY = reader.ReadInt32();
     PositionZ = reader.ReadInt32();
     Rotation = reader.ReadByte();
     Pitch = reader.ReadByte();
     CurrentItem = reader.ReadInt16();
     if (version >= 38)
         MetaData = reader.ReadMetaData(version);
     else
     {
         MetaData = new MetadataInfo();
         MetaData.Data = new System.Collections.Generic.Dictionary<byte, object>
         {
             {17,(byte)0},
             {0,(byte)0},
             {16,(byte)0},
             {33,(short)300},
             {72,(int)0}
         };
     }
 }
Example #13
0
 /// <summary>
 ///   Receives the specified reader.
 /// </summary>
 /// <param name="reader"> The reader. </param>
 /// <param name="version"> The version. </param>
 /// <remarks>
 /// </remarks>
 protected override void OnReceive(BigEndianStream reader, int version)
 {
     if (reader == null)
         throw new ArgumentNullException("reader");
     EntityId = reader.ReadInt32 ();
     InnerData = MetadataInfo.Read(reader, version);
 }
Example #14
0
 /// <summary>
 ///   Receives the specified reader.
 /// </summary>
 /// <param name="reader"> The reader. </param>
 /// <param name="version"> The version. </param>
 /// <remarks>
 /// </remarks>
 protected override void OnReceive(BigEndianStream reader, int version)
 {
     if (reader == null)
         throw new ArgumentNullException("reader");
     PositionX = reader.ReadDouble ();
     PositionY = reader.ReadDouble ();
     PositionZ = reader.ReadDouble ();
     Radius = reader.ReadSingle ();
     var records = new ExplosionRecord[RecordCount = reader.ReadInt32 ()];
     for (int i = 0; i < RecordCount; i++)
     {
         var record = new ExplosionRecord ();
         record.OffsetX = reader.ReadByte ();
         record.OffsetY = reader.ReadByte ();
         record.OffsetZ = reader.ReadByte ();
         records[i] = record;
     }
     Records = records;
     if (version >= 36)
     {
         VelocityX = reader.ReadSingle ();
         VelocityY = reader.ReadSingle ();
         VelocityZ = reader.ReadSingle ();
     }
 }
 /// <summary>
 /// Receives the specified reader.
 /// </summary>
 /// <param name="reader">The reader.</param>
 /// <param name="version">The version.</param>
 /// <remarks></remarks>
 protected override void OnReceive(BigEndianStream reader, int version)
 {
     if (reader == null)
         throw new System.ArgumentNullException("reader");
     Channel = reader.ReadString16();
     InternalData = reader.ReadBytes(reader.ReadInt16());
 }
Example #16
0
        /// <summary>
        ///   Sends the specified writer.
        /// </summary>
        /// <param name="writer"> The writer. </param>
        /// <param name="version"> The version. </param>
        /// <remarks>
        /// </remarks>
        protected override void OnSend(BigEndianStream writer, int version)
        {
            if (writer == null)
                throw new ArgumentNullException("writer");
            writer.Write(Code);

            writer.Write(TeamName);
            writer.Write(Mode);
            if (Mode == 2 || Mode == 0)
            {
                writer.Write(TeamDisplayName);
                writer.Write(TeamPrefix);
                writer.Write(TeamSufix);
                if (version >= 60)
                    writer.Write(FriendlyFire);
                else
                    writer.Write(FriendlyFire != 0);
            }

            Players = Players ?? new string[0];
            writer.Write(PlayerCount);
            if (Mode == 0 || Mode == 3 || Mode == 4)
            {
                foreach (var player in Players)
                {
                    writer.Write(player);
                }
            }
        }
Example #17
0
 /// <summary>
 ///   Receives the specified reader.
 /// </summary>
 /// <param name="reader"> The reader. </param>
 /// <param name="version"> The version. </param>
 /// <remarks>
 /// </remarks>
 protected override void OnReceive(BigEndianStream reader, int version)
 {
     if (reader == null)
         throw new ArgumentNullException("reader");
     EntityId = reader.ReadInt32 ();
     HeadYaw = reader.ReadByte ();
 }
 /// <summary>
 ///   Receives the specified reader.
 /// </summary>
 /// <param name="reader"> The reader. </param>
 /// <param name="version"> The version. </param>
 /// <remarks>
 /// </remarks>
 protected override void OnReceive(BigEndianStream reader, int version)
 {
     if (reader == null)
         throw new ArgumentNullException("reader");
     StatisticId = reader.ReadInt32 ();
     Amount = version >=72 ? reader.ReadInt32() : reader.ReadByte ();
 }
        /// <summary>
        ///   Receives the specified reader.
        /// </summary>
        /// <param name="reader"> The reader. </param>
        /// <param name="version"> The version. </param>
        /// <remarks>
        /// </remarks>
        protected override void OnReceive(BigEndianStream reader, int version)
        {
            if (reader == null)
                throw new ArgumentNullException("reader");

            Reason = reader.ReadClassicString ();
        }
        /// <summary>
        ///   Receives the specified reader.
        /// </summary>
        /// <param name="reader"> The reader. </param>
        /// <param name="version"> The version. </param>
        /// <remarks>
        /// </remarks>
        protected override void OnReceive(BigEndianStream reader, int version)
        {
            if (reader == null)
                throw new ArgumentNullException("reader");
            ChunkX = reader.ReadInt32 ();
            ChunkZ = reader.ReadInt32 ();
            Size = reader.ReadInt16 ();
            var coordinates = new List<short> ();
            var types = new List<byte> ();
            var metadata = new List<byte> ();

            for (int i = 0; i < Size; i++)
            {
                coordinates.Add(reader.ReadInt16 ());
            }

            for (int i = 0; i < Size; i++)
            {
                types.Add(reader.ReadByte ());
            }

            for (int i = 0; i < Size; i++)
            {
                metadata.Add(reader.ReadByte ());
            }

            CoordiateArray = coordinates;
            TypeArray = types;
            MetadataArray = metadata;
        }
Example #21
0
 /// <summary>
 ///   Receives the specified reader.
 /// </summary>
 /// <param name="reader"> The reader. </param>
 /// <param name="version"> The version. </param>
 /// <remarks>
 /// </remarks>
 protected override void OnReceive(BigEndianStream reader, int version)
 {
     if (reader == null)
         throw new ArgumentNullException("reader");
     WindowId = reader.ReadByte ();
     Enchantment = reader.ReadByte ();
 }
 /// <summary>
 /// Sends the specified writer.
 /// </summary>
 /// <param name="writer">The writer.</param>
 /// <param name="version">The version.</param>
 /// <remarks></remarks>
 protected override void OnSend(BigEndianStream writer, int version)
 {
     if (writer == null)
         throw new System.ArgumentNullException("writer");
     writer.Write(Code);
     writer.Write(ResponseType);
 }
Example #23
0
 /// <summary>
 /// Receives the specified reader.
 /// </summary>
 /// <param name="reader">The reader.</param>
 /// <param name="version">The version.</param>
 /// <remarks></remarks>
 protected override void OnReceive(BigEndianStream reader, int version)
 {
     if (reader == null)
         throw new ArgumentNullException("reader");
     CollectedId = reader.ReadInt32();
     CollectorId = reader.ReadInt32();
 }
Example #24
0
 /// <summary>
 ///   Sends the specified writer.
 /// </summary>
 /// <param name="writer"> The writer. </param>
 /// <param name="version"> The version. </param>
 /// <remarks>
 /// </remarks>
 protected override void OnSend(BigEndianStream writer, int version)
 {
     if (writer == null)
         throw new ArgumentNullException("writer");
     writer.Write(Code);
     writer.Write(Number);
 }
Example #25
0
        /// <summary>
        /// Reads the specified stream.
        /// </summary>
        /// <param name="stream">The stream.</param>
        /// <returns></returns>
        /// <remarks></remarks>
        public static ItemStack Read(BigEndianStream stream)
        {
            if (stream == null)
                throw new System.ArgumentNullException("stream");
            var stack = new ItemStack();
            if ((stack.ItemType = stream.ReadInt16()) >= 0)
            {
                stack.Count = stream.ReadByte();
                stack.Durability = stream.ReadInt16();
            }
            else
                return stack;
            if (((stream.Owner as PacketEndPoint).Version >=36 && stack.ItemType != -1) || (EnchantHelper.Enchantable.Contains(stack.ItemType) && !((stream.Owner as PacketEndPoint).Use12w18aFix && !(_12w18a.Contains(stack.ItemType)))))//12w18a fix
            {
                short hasData = stream.ReadInt16();
                if (hasData > 0)
                {
                    stack.AdditionalData = stream.ReadBytes(hasData);
                }
            }
            if (stack.AdditionalData == null)
                stack.AdditionalData = new byte[0];

            return stack;
        }
        /// <summary>
        ///   Receives the specified reader.
        /// </summary>
        /// <param name="reader"> The reader. </param>
        /// <param name="version"> The version. </param>
        /// <remarks>
        /// </remarks>
        protected override void OnReceive(BigEndianStream reader, int version)
        {
            if (reader == null)
                throw new ArgumentNullException("reader");

            Position = reader.ReadByte();
            ScoreName = reader.ReadString16();
        }
Example #27
0
 /// <summary>
 ///   Receives the specified reader.
 /// </summary>
 /// <param name="reader"> The reader. </param>
 /// <param name="version"> The version. </param>
 /// <remarks>
 /// </remarks>
 protected override void OnReceive(BigEndianStream reader, int version)
 {
     if (reader == null)
         throw new ArgumentNullException("reader");
     WindowId = reader.ReadByte ();
     Count = reader.ReadInt16 ();
     Items = InventoryPacket.ParsePayload(reader, Count);
 }
 /// <summary>
 ///   Receives the specified reader.
 /// </summary>
 /// <param name="reader"> The reader. </param>
 /// <param name="version"> The version. </param>
 /// <remarks>
 /// </remarks>
 protected override void OnReceive(BigEndianStream reader, int version)
 {
     if (reader == null)
         throw new ArgumentNullException("reader");
     if (version >= 40)
         Time = reader.ReadInt64 ();
     DayTime = reader.ReadInt64 ();
 }
Example #29
0
 /// <summary>
 /// Receives the specified reader.
 /// </summary>
 /// <param name="reader">The reader.</param>
 /// <param name="version">The version.</param>
 /// <remarks></remarks>
 protected override void OnReceive(BigEndianStream reader, int version)
 {
     if (reader == null)
         throw new System.ArgumentNullException("reader");
     PositionX = reader.ReadInt32();
     PositionZ = reader.ReadInt32();
     Mode = reader.ReadBoolean();
 }
        public ClassicClientInterface(BigEndianStream stream, int version)
            : base(new PacketEndPoint(stream, version))
        {
            //_thread.Name = "Client Thread";
            stream.Context = PacketContext.Client;

            PrepareEndPoint();
        }