public DeclareRecipesPacket(Client client) : base(client) { PacketId = 0x5B; MCSerializer serializer = new MCSerializer(); serializer.WriteVarInt(0); Data = serializer.GetBytes(); }
public void Write(MCSerializer serializer) { serializer.WriteShort(SolidBlockCount); serializer.WriteByte(Data.BitsPerVar); if (Pallete != null) { serializer.WriteVarInt(Pallete.Count); foreach (int val in Pallete) { serializer.WriteVarInt(val); } } serializer.WriteVarInt(Data.Data.Length); foreach (long val in Data.Data) { serializer.WriteLong(val); } }
public new async Task SendToClient() { MCSerializer serializer = new MCSerializer(); serializer.WriteVarInt((int)action); serializer.WriteVarInt(players.Count); foreach (Player player in players) { serializer.WriteBytes(player.UUID.ToByteArray()); switch (action) { case PlayerInfoAction.AddPlayer: { serializer.WriteString(player.Name); serializer.WriteVarInt(0); serializer.WriteVarInt((int)player.Gamemode); serializer.WriteVarInt(player.Latency); serializer.WriteBool(false); //serializer.WriteString(player.DisplayName.ToString()); break; } case PlayerInfoAction.UpdateGamemode: { serializer.WriteVarInt((int)player.Gamemode); break; } case PlayerInfoAction.UpdateLatency: { serializer.WriteVarInt(player.Latency); break; } case PlayerInfoAction.UpdateDisplayName: { if (player.DisplayName.Message != player.Name) { serializer.WriteBool(true); serializer.WriteString(player.DisplayName.ToString()); } else { serializer.WriteBool(false); } break; } } } Data = serializer.GetBytes(); await base.SendToClient(); }
public JoinGamePacket(Client client, int entityID, byte gamemode, int dimension, long seedHash) : base(client) { PacketId = 0x26; MCSerializer serializer = new MCSerializer(); serializer.WriteInt(entityID); serializer.WriteByte(gamemode); serializer.WriteInt(dimension); serializer.WriteLong(seedHash); serializer.WriteByte(69); serializer.WriteString("default"); serializer.WriteVarInt(16); serializer.WriteBool(false); serializer.WriteBool(true); Data = serializer.GetBytes(); }
public PlayerPositionLookPacket(Client client, Entity entity) : base(client) { PacketId = 0x36; MCSerializer serializer = new MCSerializer(); serializer.WriteDouble(entity.X); serializer.WriteDouble(entity.Y); serializer.WriteDouble(entity.Z); serializer.WriteFloat(entity.Yaw); serializer.WriteFloat(entity.Pitch); serializer.WriteByte(0); Random random = new Random(); serializer.WriteVarInt(random.Next()); Data = serializer.GetBytes(); }
public ChunkDataPacket(Client client, ChunkColumn column) : base(client) { PacketId = 0x22; MCSerializer serializer = new MCSerializer(); serializer.WriteInt(column.X); serializer.WriteInt(column.Z); serializer.WriteBool(true); serializer.WriteVarInt(column.SectionMask); NbtWriter heightmapWriter = new NbtWriter(serializer.Stream, "root"); BitStorage heightmapStorage = new BitStorage(9, 256); for (int y = 0; y < 256; y++) { for (int z = 0; z < 16; z++) { for (int x = 0; x < 16; x++) { if (column.GetBlock(x, y, z).StateId != 0) { heightmapStorage.Set(ChunkColumn.GetHeightmapIdx(x, z), y); } } } } heightmapWriter.WriteLongArray("MOTION_BLOCKING", heightmapStorage.Data); heightmapWriter.EndCompound(); heightmapWriter.Finish(); for (int y = 0; y < 256; y += 4) { for (int z = 0; z < 16; z += 4) { for (int x = 0; x < 16; x += 4) { serializer.WriteInt((int)column.GetBiome(x, y, z)); } } } MCSerializer dataSerializer = new MCSerializer(); int primaryBitMask = column.SectionMask; for (int y = 0; y < 16; y++) { if ((primaryBitMask & 0b1) == 1) { column.Sections[y].Write(dataSerializer); } primaryBitMask >>= 1; } byte[] encodedChunkData = dataSerializer.GetBytes(); serializer.WriteVarInt(encodedChunkData.Length); serializer.WriteBytes(encodedChunkData); // TODO: Block Entities serializer.WriteVarInt(0); Data = serializer.GetBytes(); }