public HeldItemChangePacket(Client client, byte slot) : base(client)
        {
            PacketId = 0x40;
            MCSerializer serializer = new MCSerializer();

            serializer.WriteByte(slot);
            Data = serializer.GetBytes();
        }
Exemple #2
0
        public DeclareRecipesPacket(Client client) : base(client)
        {
            PacketId = 0x5B;
            MCSerializer serializer = new MCSerializer();

            serializer.WriteVarInt(0);
            Data = serializer.GetBytes();
        }
Exemple #3
0
        public LoginSuccessPacket(Client client, Guid uuid, String playerName) : base(client)
        {
            PacketId = 0x02;
            MCSerializer serializer = new MCSerializer();

            serializer.WriteString(uuid.ToString());
            serializer.WriteString(playerName);
            Data = serializer.GetBytes();
        }
        public EntityStatusPacket(Client client, Entity entity, byte status) : base(client)
        {
            PacketId = 0x1C;
            MCSerializer serializer = new MCSerializer();

            serializer.WriteInt(entity.EntityId);
            serializer.WriteByte(status);
            Data = serializer.GetBytes();
        }
Exemple #5
0
        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();
        }
Exemple #8
0
        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();
        }