private static EntityProperty[] ReadEntityPropertyArray(PacketDataReader reader, int length = 0) { if (length == 0) { length = reader.Read <int>(); } var array = new EntityProperty[length]; for (var i = 0; i < length; i++) { var property = new EntityProperty(); property.Key = reader.Read <string>(); property.Value = reader.Read <double>(); var listLength = reader.Read <short>(); property.Modifiers = new Modifiers[listLength]; for (var j = 0; j < listLength; j++) { property.Modifiers[j] = new Modifiers { UUID = reader.Read <BigInteger>(), Amount = reader.Read <double>(), Operation = reader.Read <sbyte>() } } ; array[i] = property; } return(array); }
public override void FromReader(PacketDataReader reader) { Value = new Position( reader.Read <int>(), reader.Read <int>(), reader.Read <int>()); }
private static EntityMetadataList ReadEntityMetadata(PacketDataReader reader, int length = 0) { if (length == 0) { length++; } var array = new EntityMetadataList(length); while (true) { byte key = reader.Read <byte>(); if (key == 127) { break; } var type = (byte)((key & 0xE0) >> 5); var index = (byte)(key & 0x1F); var entry = EntityMetadataList.EntryTypes[type](); entry.FromReader(reader); entry.Index = index; array[index] = entry; } return(array); }
private static ItemStack ReadItemStack(PacketDataReader reader, int length = 0) { var itemStack = new ItemStack(reader.Read <short>()); if (itemStack.Empty) { return(itemStack); } itemStack.Count = reader.Read <byte>(); itemStack.Damage = reader.Read <short>(); var buffLength = reader.Read <short>(); if (buffLength == -1 || buffLength == 0) { return(itemStack); } itemStack.Nbt = new NbtCompound(); var buffer = reader.Read <byte[]>(null, buffLength); var nbt = new NbtFile(); nbt.LoadFromBuffer(buffer, 0, buffLength, NbtCompression.GZip, null); itemStack.Nbt = nbt.RootTag; return(itemStack); }
public override void FromReader(PacketDataReader reader) { Value = new Rotation( reader.Read <float>(), reader.Read <float>(), reader.Read <float>()); }
public override void Read(PacketDataReader reader) { AvailableFields = new int[reader.ReadInt()]; for (int i = 0; i < AvailableFields.Length; i++) { AvailableFields[i] = reader.ReadInt(); } }
private static Chunk ReadChunk(PacketDataReader reader, int length = 0) { var chunk = new Chunk(new Coordinates2D(reader.Read <int>(), reader.Read <int>())); //chunk.Coordinates = new Coordinates2D(reader.Read<int>(), reader.Read<int>()); chunk.GroundUp = reader.Read <bool>(); var primaryBitMap = reader.Read <ushort>(); chunk.OverWorld = true; // TODO: From World class var size = reader.Read <VarInt>(); var data = reader.Read <byte[]>(null, size); var sectionCount = Chunk.GetSectionCount(primaryBitMap); var chunkRawBlocks = new byte[sectionCount * Chunk.TwoByteData]; var chunkRawBlocksLight = new byte[sectionCount * Chunk.HalfByteData]; var chunkRawSkylight = new byte[sectionCount * Chunk.HalfByteData]; Buffer.BlockCopy(data, 0, chunkRawBlocks, 0, chunkRawBlocks.Length * sizeof(byte)); Buffer.BlockCopy(data, chunkRawBlocks.Length, chunkRawBlocksLight, 0, chunkRawBlocksLight.Length * sizeof(byte)); Buffer.BlockCopy(data, chunkRawBlocks.Length + chunkRawBlocksLight.Length, chunkRawSkylight, 0, chunkRawSkylight.Length * sizeof(byte)); for (int y = 0, i = 0; y < 16; y++) { if ((primaryBitMap & (1 << y)) > 0) { // Blocks & Metadata var rawBlocks = new byte[Chunk.TwoByteData]; Buffer.BlockCopy(chunkRawBlocks, i * rawBlocks.Length, rawBlocks, 0, rawBlocks.Length * sizeof(byte)); // Light, convert to 1 byte per block var rawBlockLight = new byte[Chunk.HalfByteData]; Buffer.BlockCopy(chunkRawBlocksLight, i * rawBlockLight.Length, rawBlockLight, 0, rawBlockLight.Length * sizeof(byte)); // Sky light, convert to 1 byte per block var rawSkyLight = new byte[Chunk.HalfByteData]; if (chunk.OverWorld) { Buffer.BlockCopy(chunkRawSkylight, i * rawSkyLight.Length, rawSkyLight, 0, rawSkyLight.Length * sizeof(byte)); } chunk.Sections[y].BuildFromNibbleData(rawBlocks, rawBlockLight, rawSkyLight); i++; } } if (chunk.GroundUp) { Buffer.BlockCopy(data, data.Length - chunk.Biomes.Length, chunk.Biomes, 0, chunk.Biomes.Length * sizeof(byte)); } return(chunk); }
private static ItemStack[] ReadItemStackArray(PacketDataReader reader, int length = 0) { if (length == 0) { length = reader.Read <short>(); } var array = new ItemStack[length]; for (int i = 0; i < length; i++) { array[i] = reader.Read <ItemStack>(); } return(array); }
private static StatisticsEntry[] ReadStatisticsEntryArray(PacketDataReader reader, int length = 0) { if (length == 0) { length = reader.Read <VarInt>(); } var array = new StatisticsEntry[length]; for (var i = 0; i < array.Length; i++) { array[i] = new StatisticsEntry { StatisticsName = reader.Read <string>(), Value = reader.Read <VarInt>() } } ; return(array); }
private static ChunkColumnMetadata[] ReadChunkColumnMetadataArray(PacketDataReader reader, int length = 0) { if (length == 0) { length = reader.Read <VarInt>(); } var array = new ChunkColumnMetadata[length]; for (var i = 0; i < length; i++) { array[i] = new ChunkColumnMetadata { Coordinates = new Coordinates2D(reader.Read <int>(), reader.Read <int>()), PrimaryBitMap = reader.Read <ushort>(), AddBitMap = reader.Read <ushort>() }; } return(array); }
private static BlockPosition[] ReadBlockPositionArray(PacketDataReader reader, int length = 0) { if (length == 0) { length = reader.Read <int>(); } var array = new BlockPosition[length]; for (var i = 0; i < length; i++) { var coordinates = reader.Read <short>(); var y = coordinates & 0xFF; var z = (coordinates >> 8) & 0xf; var x = (coordinates >> 12) & 0xf; var blockIDMeta = reader.Read <VarInt>(); array[i] = new BlockPosition((ushort)blockIDMeta, new Position(x, y, z)); } return(array); }
public override void Read(PacketDataReader reader) { PlayerName = reader.ReadString(); }
public override void Read(PacketDataReader reader) { WonGame = reader.ReadBool(); }
public abstract void Read(PacketDataReader reader);
public override void Read(PacketDataReader reader) { Field = reader.ReadInt(); }
public override void FromReader(PacketDataReader reader) { Value = reader.Read(Value); }
private static Position ReadPosition(PacketDataReader reader, int length = 0) { return(MineLib.Core.Data.Position.FromLong(reader.Read <long>())); }
public override void Read(PacketDataReader reader) { Board = new Board(); Board.Read(reader); }
private static BigInteger ReadBigInteger(PacketDataReader reader, int length = 0) { return(new BigInteger(reader.Read <byte[]>(null, 4))); }
private static Chunk[] ReadChunkArray(PacketDataReader reader, int length = 0) { var groundUp = reader.Read <bool>(); var count = reader.Read <VarInt>(); var metadata = reader.Read <ChunkColumnMetadata[]>(null, count); //var metadata = ChunkColumnMetadataList.FromReader(reader); int totalSections = 0; foreach (var meta in metadata) { totalSections += Chunk.GetSectionCount(meta.PrimaryBitMap); } var size = totalSections * (Chunk.TwoByteData + Chunk.HalfByteData + (groundUp ? Chunk.HalfByteData : 0)) + metadata.Length * Chunk.BiomesLength; var data = reader.Read <byte[]>(null, size); var chunks = new List <Chunk>(); int offset = 0; foreach (var meta in metadata) { var chunk = new Chunk(meta.Coordinates); chunk.OverWorld = true; var primaryBitMap = meta.PrimaryBitMap; var sectionCount = Chunk.GetSectionCount(primaryBitMap); var chunkRawBlocks = new byte[sectionCount * Chunk.TwoByteData]; var chunkRawBlocksLight = new byte[sectionCount * Chunk.HalfByteData]; var chunkRawSkylight = new byte[sectionCount * Chunk.HalfByteData]; var chunkLength = sectionCount * (Chunk.TwoByteData + Chunk.HalfByteData + (chunk.OverWorld ? Chunk.HalfByteData : 0)) + Chunk.BiomesLength; var chunkData = new byte[chunkLength]; Buffer.BlockCopy(data, offset, chunkData, 0, chunkData.Length * sizeof(byte)); Buffer.BlockCopy(chunkData, 0, chunkRawBlocks, 0, chunkRawBlocks.Length * sizeof(byte)); Buffer.BlockCopy(chunkData, chunkRawBlocks.Length, chunkRawBlocksLight, 0, chunkRawBlocksLight.Length * sizeof(byte)); Buffer.BlockCopy(chunkData, chunkRawBlocks.Length + chunkRawBlocksLight.Length, chunkRawSkylight, 0, chunkRawSkylight.Length * sizeof(byte)); if (groundUp) { Buffer.BlockCopy(chunkData, chunkRawBlocks.Length + chunkRawBlocksLight.Length + chunkRawSkylight.Length, chunk.Biomes, 0, Chunk.BiomesLength * sizeof(byte)); } for (int y = 0, i = 0; y < 16; y++) { if ((primaryBitMap & (1 << y)) > 0) { // Blocks & Metadata var rawBlocks = new byte[Chunk.TwoByteData]; Buffer.BlockCopy(chunkRawBlocks, i * rawBlocks.Length, rawBlocks, 0, rawBlocks.Length * sizeof(byte)); // Light var rawBlockLight = new byte[Chunk.HalfByteData]; Buffer.BlockCopy(chunkRawBlocksLight, i * rawBlockLight.Length, rawBlockLight, 0, rawBlockLight.Length * sizeof(byte)); // Sky light var rawSkyLight = new byte[Chunk.HalfByteData]; if (chunk.OverWorld) { Buffer.BlockCopy(chunkRawSkylight, i * rawSkyLight.Length, rawSkyLight, 0, rawSkyLight.Length * sizeof(byte)); } chunk.Sections[y].BuildFromNibbleData(rawBlocks, rawBlockLight, rawSkyLight); i++; } } chunks.Add(chunk); offset += chunkLength; } if (offset != data.Length) { throw new NetworkHandlerException("Map Chunk Bulk reading error: offset != data.Length"); } return(chunks.ToArray()); }
public override void Read(PacketDataReader reader) { Type = (PlayerType)reader.ReadByte(); }
private static PlayerData[] ReadPlayerDataArray(PacketDataReader reader, int length = 0) { return(null); }
public override void FromReader(PacketDataReader reader) { Value = reader.Read <ItemStack>(); }
public abstract void FromReader(PacketDataReader reader);