public async Task GetVersionsForPlatformAsync_GivenPcPlatform_ReturnsVersions()
        {
            var sut = new MinecraftDataReader(TestDataLocator.GetMinecraftDataPath());

            var result = (await sut.GetVersionsForPlatformAsync(MinecraftPlatform.Pc)).ToList();

            Assert.NotEmpty(result);
            Assert.Contains(new MinecraftVersion("1.11.2"), result);
        }
        /// <summary>
        /// Packets are handled here.
        /// </summary>
        /// <param name="id">Packet ID</param>
        /// <param name="data">Packet byte[] data</param>
        private void HandlePacketClassic(int id, byte[] data)
        {
            using (var reader = new MinecraftDataReader(data, NetworkMode))
            {
                if (ServerResponseClassic.ServerResponse[id] == null)
                {
                    return;
                }

                var packet = ServerResponseClassic.ServerResponse[id]().ReadPacket(reader);

                RaisePacketHandled(id, packet, null);
            }
        }
Exemple #3
0
        /// <summary>
        /// Packets are handled here. Compression and encryption are handled here too
        /// </summary>
        /// <param name="id">Packet ID</param>
        /// <param name="data">Packet byte[] data</param>
        private void HandlePacketModern(int id, byte[] data)
        {
            using (var reader = new MinecraftDataReader(data, NetworkMode))
            {
                IPacket packet;

                switch (_minecraft.State)
                {
                    #region Status

                case ServerState.ModernStatus:
                    if (ServerResponse.Status[id] == null)
                    {
                        break;
                    }

                    packet = ServerResponse.Status[id]().ReadPacket(reader);

                    RaisePacketHandled(id, packet, ServerState.ModernStatus);

                    break;

                    #endregion Status

                    #region Login

                case ServerState.ModernLogin:
                    if (ServerResponse.Login[id] == null)
                    {
                        break;
                    }

                    packet = ServerResponse.Login[id]().ReadPacket(reader);

                    RaisePacketHandled(id, packet, ServerState.ModernLogin);

                    if (id == 0x01)
                    {
                        ModernEnableEncryption(packet);      // -- Low-level encryption handle
                    }
                    if (id == 0x03)
                    {
                        ModernSetCompression(packet);     // -- Low-level compression handle
                    }
                    break;

                    #endregion Login

                    #region Play

                case ServerState.ModernPlay:
                    if (ServerResponse.Play[id] == null)
                    {
                        break;
                    }

                    packet = ServerResponse.Play[id]().ReadPacket(reader);

                    if (ServerResponse.Play[id]() == null)
                    {
                        throw new Exception("");
                    }

                    RaisePacketHandled(id, packet, ServerState.ModernPlay);

                    if (id == 0x46)
                    {
                        ModernSetCompression(packet);     // -- Low-level compression handle
                    }
                    // Connection lost
                    if (id == 0x40)
                    {
                        Crashed = true;
                    }

                    break;

                    #endregion Play
                }
            }
        }
        private static async Task <VersionDefinition> GetDefinitionsForVersion()
        {
            var sut = new MinecraftDataReader(TestDataLocator.GetMinecraftDataPath());

            return(await sut.GetDefinitionForVersionAsnyc(MinecraftPlatform.Pc, new MinecraftVersion("1.9.2")));
        }