/// <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 (); }
/// <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); }
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; } }
/// <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} }; } }
/// <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); }
/// <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()); }
/// <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); } } }
/// <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; }
/// <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); }
/// <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(); }
/// <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); }
/// <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(); }
/// <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 (); }
/// <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(); }