protected override void Parse(EndianBinaryReader r) { EID = ReadVarInt(r); Yaw = r.ReadSByte() * Math.PI / 128; Pitch = r.ReadSByte() * Math.PI / 128; Unknown = r.ReadBoolean(); }
protected override void Parse(EndianBinaryReader r) { Locale = ReadString8(r); ViewDistance = r.ReadByte(); ChatFlags = r.ReadByte(); ChatColors = r.ReadBoolean(); DisplayedSkinParts = r.ReadByte(); }
protected override void Parse(EndianBinaryReader r) { Yaw = r.ReadSingle () * Math.PI / 180; Pitch = r.ReadSingle () * Math.PI / 180; OnGround = r.ReadBoolean (); #if DEBUG //Console.WriteLine("P L: " + Pitch); #endif }
protected override void Parse(EndianBinaryReader r) { EID = ReadVarInt(r); Delta = new CoordDouble(); Delta.X = ((double)r.ReadSByte()) / scale; Delta.Y = ((double)r.ReadSByte()) / scale; Delta.Z = ((double)r.ReadSByte()) / scale; OnGround = r.ReadBoolean(); }
protected override void Parse(EndianBinaryReader r) { EID = ReadVarInt(r); Delta = new CoordDouble (); Delta.X = ((double)r.ReadSByte ()) / 32; Delta.Y = ((double)r.ReadSByte ()) / 32; Delta.Z = ((double)r.ReadSByte ()) / 32; Yaw = r.ReadSByte () * Math.PI / 128; Pitch = r.ReadSByte () * Math.PI / 128; OnGround = r.ReadBoolean(); }
protected override void Parse(EndianBinaryReader r) { EID = ReadVarInt(r); Effect = (PlayerEffects)r.ReadSByte(); Amplifier = r.ReadSByte(); Duration = ReadVarInt(r); HideParticles = r.ReadBoolean(); #if DEBUGPACKET if (Effect.ToString() == ((int)Effect).ToString()) throw new NotImplementedException(Effect.ToString()); #endif }
protected override void Parse(EndianBinaryReader r) { int columnCount = r.ReadInt16(); int compressedLength = r.ReadInt32(); Unknown = r.ReadBoolean(); CompressedChunkColumns = r.ReadBytesOrThrow(compressedLength); ColumnMeta = new UItem[columnCount]; for (int n = 0; n < columnCount; n++) { ColumnMeta [n] = new UItem(r); } }
protected override void Parse(EndianBinaryReader r) { Position = new CoordDouble(); Position.X = r.ReadDouble(); Position.Y = r.ReadDouble(); Position.Z = r.ReadDouble(); Yaw = r.ReadSingle() * Math.PI / 180; Pitch = r.ReadSingle() * Math.PI / 180; OnGround = r.ReadBoolean(); #if DEBUG //Console.WriteLine("PPL: " + Pitch); #endif }
protected override void Parse(EndianBinaryReader r) { ParticleID = r.ReadInt32(); LongDistance = r.ReadBoolean(); Position = new CoordDouble(); Position.X = r.ReadSingle(); Position.Y = r.ReadSingle(); Position.Z = r.ReadSingle(); Size = new CoordDouble(); Size.X = r.ReadSingle(); Size.Y = r.ReadSingle(); Size.Z = r.ReadSingle(); Speed = r.ReadSingle(); Count = r.ReadInt32(); Debug.WriteLine(this); }
protected override void Parse(EndianBinaryReader r) { EntityID = r.ReadInt32(); GameMode = (GameMode)r.ReadByte(); Dimension = (Dimensions)r.ReadSByte(); Difficulty = r.ReadByte(); MaxPlayers = r.ReadByte(); LevelType = ReadString8(r); ReducedDebug = r.ReadBoolean(); #if DEBUGPACKET if (Dimension.ToString() == ((int)Dimension).ToString()) throw new NotImplementedException(Dimension.ToString()); if (GameMode.ToString() == ((int)GameMode).ToString()) throw new NotImplementedException(GameMode.ToString()); #endif }
protected override void Parse(EndianBinaryReader r) { X = r.ReadInt32(); Z = r.ReadInt32(); Complete = r.ReadBoolean(); ChunkBitMap = r.ReadUInt16(); int length = ReadVarInt(r); InitBuffer(); if (length != BlockType.Length + BlockMeta.Length + BlockLight.Length + BlockSkyLight.Length + (Complete ? Biome.Length : 0)) throw new InvalidDataException(); var s = r.BaseStream; ReadBuffer(s, BlockType); ReadBuffer(s, BlockMeta); ReadBuffer(s, BlockLight); ReadBuffer(s, BlockSkyLight); if (Complete) ReadBuffer(s, Biome); }
protected override void Parse(EndianBinaryReader r) { OnGround = r.ReadBoolean (); }
public void Parse(EndianBinaryReader reader, uint size) { var maxReadPos = reader.BaseStream.Position + size; while(reader.BaseStream.Position < maxReadPos) { if (objectStack.Count != 0) { var count = reader.ReadUInt16(); var propString = ""; for (var i = 0; i < count; i++) { propString += (char) reader.ReadByte(); } objectStack.Peek().CurrentProperty = propString; } var type = (Globals.Amf0Types)reader.ReadByte(); switch (type) { case Globals.Amf0Types.Number: { var value = reader.ReadDouble(); if(objectStack.Count != 0) { objectStack.Peek().Numbers.Add(objectStack.Peek().CurrentProperty, value); } else { amfData.Numbers.Add(value); } } break; case Globals.Amf0Types.Boolean: { var value = reader.ReadBoolean(); if (objectStack.Count != 0) { objectStack.Peek().Booleans.Add(objectStack.Peek().CurrentProperty, value); } else { amfData.Booleans.Add(value); } } break; case Globals.Amf0Types.String: { var count = reader.ReadUInt16(); var pushString = ""; for (var i = 0; i < count; i++) { pushString += (char) reader.ReadByte(); } if (objectStack.Count != 0) { objectStack.Peek().Strings.Add(objectStack.Peek().CurrentProperty, pushString); } else { amfData.Strings.Add(pushString); } } break; case Globals.Amf0Types.Null: if (objectStack.Count != 0) { objectStack.Peek().Nulls++; } else { amfData.Nulls++; } break; case Globals.Amf0Types.Object: case Globals.Amf0Types.Array: { if(type == Globals.Amf0Types.Array) { var arrayLength = reader.ReadInt32(); } var objectAdd = new AmfObject(); objectStack.Push(objectAdd); } break; case Globals.Amf0Types.ObjectEnd: { if(objectStack.Count == 1) { amfData.Objects.Add(objectStack.Pop()); } else if(objectStack.Count > 1) { var mostRecentObject = objectStack.Pop(); objectStack.Peek().Objects.Add(objectStack.Peek().CurrentProperty, mostRecentObject); } } break; default: throw new ArgumentOutOfRangeException(); } /* switch (type) { case Amf0Types.Array: case Amf0Types.Object: { if(type == Amf0Types.Array) { var arrayLength = reader.ReadInt32(); Console.WriteLine("Array:" + arrayLength); } bool hasProperty = false; string property = ""; var objectAdd = new AmfObject(); while (reader.BaseStream.Position < maxReadPos) { if(!hasProperty) { property = ""; var propertyStringLength = reader.ReadUInt16(); for (var i = 0; i < propertyStringLength; i++) { property += (char)reader.ReadByte(); } hasProperty = true; } if (hasProperty == true) { if(property.Length == 0) { amfData.Objects.Add(objectAdd); break; } var objtype = (Amf0Types)reader.ReadByte(); parseType(objtype, reader, ref objectAdd.Nulls, objectNumbers: objectAdd.Numbers, objectBooleans: objectAdd.Booleans, objectStrings: objectAdd.Strings, property: property); hasProperty = false; } } } break; default: parseType(type, reader, ref amfData.Nulls, amfData.Numbers, amfData.Booleans, amfData.Strings); break; }*/ } }
//jesus f**k note to self: fix this private static void parseType(Globals.Amf0Types type, EndianBinaryReader reader, ref uint Nulls, List<double> Numbers = null, List<bool> Booleans = null, List<string> Strings = null, Dictionary<string, string> objectStrings = null, Dictionary<string, double> objectNumbers = null, Dictionary<string, bool> objectBooleans = null, string property = "") { switch (type) { case Globals.Amf0Types.Number: if (Numbers != null) Numbers.Add(reader.ReadDouble()); else objectNumbers.Add(property, reader.ReadDouble()); break; case Globals.Amf0Types.Boolean: if (Booleans != null) Booleans.Add(reader.ReadBoolean()); else objectBooleans.Add(property, reader.ReadBoolean()); break; case Globals.Amf0Types.String: { var count = reader.ReadUInt16(); var pushString = ""; for (var i = 0; i < count; i++) { pushString += (char) reader.ReadByte(); } if (Strings != null) Strings.Add(pushString); else objectStrings.Add(property, pushString); } break; case Globals.Amf0Types.Null: Nulls++; break; case Globals.Amf0Types.Array: break; case Globals.Amf0Types.ObjectEnd: break; default: throw new ArgumentOutOfRangeException(); } }
protected override void Parse(EndianBinaryReader r) { EID = r.ReadInt32(); VehicleID = r.ReadInt32(); Leash = r.ReadBoolean(); }
protected override void Parse(EndianBinaryReader r) { WindowID = r.ReadByte(); ActionID = r.ReadInt16(); Accepted = r.ReadBoolean(); }
protected override void Parse(EndianBinaryReader r) { Command = ReadString8(r); if (r.ReadBoolean()) Position = CoordInt.Read(r); }
//Only parsed so we can block it protected override void Parse(EndianBinaryReader r) { //Console.WriteLine("Player List Item:"); //Console.WriteLine(BitConverter.ToString(PacketBuffer)); return; //Ignore the data, we just want to block the package #if !DEBUG #else #pragma warning disable 162 Action = (Actions)ReadVarInt(r); int count = ReadVarInt(r); Players = new List<PlayerItem>(count); switch (Action) { case Actions.AddPlayer: for (int n = 0; n < count; n++) { var i = new PlayerItem(); i.UUID = new Guid(r.ReadBytesOrThrow(16)); i.Name = ReadString8(r); int props = ReadVarInt(r); for (int p = 0; p < props; p++) { string name = ReadString8(r); string value = ReadString8(r); bool signed = r.ReadBoolean(); if (signed) { string sign = ReadString8(r); } throw new NotImplementedException(); } i.Gamemode = (GameMode)ReadVarInt(r); i.Ping = ReadVarInt(r); Players.Add(i); } break; case Actions.UpdateGamemode: for (int n = 0; n < count; n++) { var i = new PlayerItem(); i.UUID = new Guid(r.ReadBytesOrThrow(16)); i.Gamemode = (GameMode)ReadVarInt(r); Players.Add(i); } break; case Actions.UpdateLatency: for (int n = 0; n < count; n++) { var i = new PlayerItem(); i.UUID = new Guid(r.ReadBytesOrThrow(16)); i.Ping = ReadVarInt(r); Players.Add(i); } break; case Actions.RemovePlayer: for (int n = 0; n < count; n++) { var i = new PlayerItem(); i.UUID = new Guid(r.ReadBytesOrThrow(16)); Players.Add(i); } break; default: throw new NotImplementedException("Action: " + Action); } #pragma warning restore 162 #endif }