public void SendPacket(OutgoingPacket packet)
        {
            List <byte>        buffer = new List <byte>();
            PacketOutgoingType type   = packet.GetBuffer(protocolversion, buffer);

            SendPacket(type, buffer);
        }
Exemple #2
0
        /// <summary>
        /// Send a location update to the server
        /// </summary>
        /// <param name="location">The new location of the player</param>
        /// <param name="onGround">True if the player is on the ground</param>
        /// <param name="yaw">Optional new yaw for updating player look</param>
        /// <param name="pitch">Optional new pitch for updating player look</param>
        /// <returns>True if the location update was successfully sent</returns>
        public bool SendLocationUpdate(Location location, bool onGround, float?yaw = null, float?pitch = null)
        {
            if (handler.GetTerrainEnabled())
            {
                byte[]             yawpitch   = new byte[0];
                PacketOutgoingType packetType = PacketOutgoingType.PlayerPosition;

                if (yaw.HasValue && pitch.HasValue)
                {
                    yawpitch   = dataTypes.ConcatBytes(dataTypes.GetFloat(yaw.Value), dataTypes.GetFloat(pitch.Value));
                    packetType = PacketOutgoingType.PlayerPositionAndLook;
                }

                try
                {
                    SendPacket(packetType, dataTypes.ConcatBytes(
                                   dataTypes.GetDouble(location.X),
                                   dataTypes.GetDouble(location.Y),
                                   protocolversion < MC18Version
                            ? dataTypes.GetDouble(location.Y + 1.62)
                            : new byte[0],
                                   dataTypes.GetDouble(location.Z),
                                   yawpitch,
                                   new byte[] { onGround ? (byte)1 : (byte)0 }));
                    return(true);
                }
                catch (SocketException) { return(false); }
            }
            else
            {
                return(false);
            }
        }
Exemple #3
0
        public override int getPacketOutgoingID(PacketOutgoingType packet)
        {
            switch (packet)
            {
            case PacketOutgoingType.KeepAlive: return(0x00);

            case PacketOutgoingType.ChatMessage: return(0x01);

            case PacketOutgoingType.PlayerBlockPlacement: return(0x08);

            case PacketOutgoingType.ClientSettings: return(0x15);

            default: return(0xFF);
            }
        }
Exemple #4
0
        public override int getPacketOutgoingID(PacketOutgoingType packet)
        {
            switch (packet)
            {
            case PacketOutgoingType.TabComplete: return(0x01);

            case PacketOutgoingType.ChatMessage: return(0x02);

            case PacketOutgoingType.ClientStatus: return(0x03);

            case PacketOutgoingType.ClientSettings: return(0x04);

            case PacketOutgoingType.PluginMessage: return(0x09);

            case PacketOutgoingType.KeepAlive: return(0x0B);

            case PacketOutgoingType.PlayerPositionAndLook: return(0x0E);

            case PacketOutgoingType.ResourcePackStatus: return(0x18);

            default: return(0xFF);
            }
        }
Exemple #5
0
 /// <summary>
 /// Send a packet to the server.  Packet ID, compression, and encryption will be handled automatically.
 /// </summary>
 /// <param name="packet">packet type</param>
 /// <param name="packetData">packet Data</param>
 private void SendPacket(PacketOutgoingType packet, IEnumerable <byte> packetData)
 {
     SendPacket(Protocol18PacketTypes.GetPacketOutgoingID(packet, protocolversion), packetData);
 }
Exemple #6
0
        /// <summary>
        /// Get packet ID of the specified outgoing packet
        /// </summary>
        /// <param name="packet">Abstract packet numbering</param>
        /// <param name="protocol">Protocol version</param>
        /// <returns>Packet ID</returns>
        public static int GetPacketOutgoingID(PacketOutgoingType packet, int protocol)
        {
            if (protocol <= Protocol18Handler.MC18Version) // MC 1.7 and 1.8
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x00);

                case PacketOutgoingType.ResourcePackStatus: return(0x19);

                case PacketOutgoingType.ChatMessage: return(0x01);

                case PacketOutgoingType.ClientStatus: return(0x16);

                case PacketOutgoingType.ClientSettings: return(0x15);

                case PacketOutgoingType.PluginMessage: return(0x17);

                case PacketOutgoingType.TabComplete: return(0x14);

                case PacketOutgoingType.PlayerPosition: return(0x04);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x06);

                case PacketOutgoingType.TeleportConfirm: throw new InvalidOperationException("Teleport confirm is not supported in protocol " + protocol);
                }
            }
            else if (protocol <= Protocol18Handler.MC1112Version) // MC 1.9, 1,10 and 1.11
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x0B);

                case PacketOutgoingType.ResourcePackStatus: return(0x16);

                case PacketOutgoingType.ChatMessage: return(0x02);

                case PacketOutgoingType.ClientStatus: return(0x03);

                case PacketOutgoingType.ClientSettings: return(0x04);

                case PacketOutgoingType.PluginMessage: return(0x09);

                case PacketOutgoingType.TabComplete: return(0x01);

                case PacketOutgoingType.PlayerPosition: return(0x0C);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x0D);

                case PacketOutgoingType.TeleportConfirm: return(0x00);
                }
            }
            else if (protocol <= Protocol18Handler.MC112Version) // MC 1.12
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x0C);

                case PacketOutgoingType.ResourcePackStatus: return(0x18);

                case PacketOutgoingType.ChatMessage: return(0x03);

                case PacketOutgoingType.ClientStatus: return(0x04);

                case PacketOutgoingType.ClientSettings: return(0x05);

                case PacketOutgoingType.PluginMessage: return(0x0A);

                case PacketOutgoingType.TabComplete: return(0x02);

                case PacketOutgoingType.PlayerPosition: return(0x0E);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x0F);

                case PacketOutgoingType.TeleportConfirm: return(0x00);
                }
            }
            else if (protocol <= Protocol18Handler.MC1122Version) // 1.12.2
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x0B);

                case PacketOutgoingType.ResourcePackStatus: return(0x18);

                case PacketOutgoingType.ChatMessage: return(0x02);

                case PacketOutgoingType.ClientStatus: return(0x03);

                case PacketOutgoingType.ClientSettings: return(0x04);

                case PacketOutgoingType.PluginMessage: return(0x09);

                case PacketOutgoingType.TabComplete: return(0x01);

                case PacketOutgoingType.PlayerPosition: return(0x0D);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x0E);

                case PacketOutgoingType.TeleportConfirm: return(0x00);
                }
            }
            else if (protocol < Protocol18Handler.MC114Version) // MC 1.13 to 1.13.2
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x0E);

                case PacketOutgoingType.ResourcePackStatus: return(0x1D);

                case PacketOutgoingType.ChatMessage: return(0x02);

                case PacketOutgoingType.ClientStatus: return(0x03);

                case PacketOutgoingType.ClientSettings: return(0x04);

                case PacketOutgoingType.PluginMessage: return(0x0A);

                case PacketOutgoingType.TabComplete: return(0x05);

                case PacketOutgoingType.PlayerPosition: return(0x10);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x11);

                case PacketOutgoingType.TeleportConfirm: return(0x00);
                }
            }
            else // MC 1.14
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x0F);

                case PacketOutgoingType.ResourcePackStatus: return(0x1F);

                case PacketOutgoingType.ChatMessage: return(0x03);

                case PacketOutgoingType.ClientStatus: return(0x04);

                case PacketOutgoingType.ClientSettings: return(0x05);

                case PacketOutgoingType.PluginMessage: return(0x0B);

                case PacketOutgoingType.TabComplete: return(0x06);

                case PacketOutgoingType.PlayerPosition: return(0x11);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x12);

                case PacketOutgoingType.TeleportConfirm: return(0x00);
                }
            }

            throw new System.ComponentModel.InvalidEnumArgumentException("Unknown PacketOutgoingType (protocol=" + protocol + ")", (int)packet, typeof(PacketOutgoingType));
        }
 private void SendPacket(PacketOutgoingType packet, IEnumerable <byte> packetData)
 {
     SendPacket(handler.getProtocol().getPacketOutgoingID(packet), packetData);
 }
 private void SendPacket(PacketOutgoingType packetID, IEnumerable <byte> packetData)
 {
     SendPacket(getPacketOutgoingID(packetID), packetData);
 }
        /// <summary>
        /// Get packet ID of the specified outgoing packet
        /// </summary>
        /// <remarks>
        /// When adding a new packet, see https://wiki.vg/Protocol_version_numbers
        /// For each switch below, see the corresponding page (e.g. MC 1.7, then 1.9) and add the ID
        /// By the way, also look for packet layout changes across versions and handle them in Protocol18.cs
        /// Please add entries in the same order as they are displayed in PacketOutgoingType.cs
        /// </remarks>
        /// <param name="packet">Abstract packet numbering</param>
        /// <param name="protocol">Protocol version</param>
        /// <returns>Packet ID</returns>
        public static int GetPacketOutgoingID(PacketOutgoingType packet, int protocol)
        {
            if (protocol <= Protocol18Handler.MC18Version) // MC 1.7 and 1.8
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x00);

                case PacketOutgoingType.ResourcePackStatus: return(0x19);

                case PacketOutgoingType.ChatMessage: return(0x01);

                case PacketOutgoingType.ClientStatus: return(0x16);

                case PacketOutgoingType.ClientSettings: return(0x15);

                case PacketOutgoingType.PluginMessage: return(0x17);

                case PacketOutgoingType.TabComplete: return(0x14);

                case PacketOutgoingType.EntityAction: return(0x0B);

                case PacketOutgoingType.PlayerPosition: return(0x04);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x06);

                case PacketOutgoingType.TeleportConfirm: throw new InvalidOperationException("Teleport confirm is not supported in protocol " + protocol);

                case PacketOutgoingType.HeldItemChange: return(0x17);

                case PacketOutgoingType.InteractEntity: return(0x02);

                case PacketOutgoingType.UseItem: throw new InvalidOperationException("Use item is not supported in protocol " + protocol);

                case PacketOutgoingType.ClickWindow: return(0x0E);

                case PacketOutgoingType.CloseWindow: return(0x0D);

                case PacketOutgoingType.PlayerBlockPlacement: return(0x08);

                case PacketOutgoingType.CreativeInventoryAction: return(0x10);

                case PacketOutgoingType.Animation: return(0x0A);

                case PacketOutgoingType.PlayerDigging: return(0x07);
                }
            }
            else if (protocol <= Protocol18Handler.MC1112Version) // MC 1.9, 1,10 and 1.11
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x0B);

                case PacketOutgoingType.ResourcePackStatus: return(0x16);

                case PacketOutgoingType.ChatMessage: return(0x02);

                case PacketOutgoingType.ClientStatus: return(0x03);

                case PacketOutgoingType.ClientSettings: return(0x04);

                case PacketOutgoingType.PluginMessage: return(0x09);

                case PacketOutgoingType.TabComplete: return(0x01);

                case PacketOutgoingType.EntityAction: return(0x14);

                case PacketOutgoingType.PlayerPosition: return(0x0C);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x0D);

                case PacketOutgoingType.TeleportConfirm: return(0x00);

                case PacketOutgoingType.HeldItemChange: return(0x17);

                case PacketOutgoingType.InteractEntity: return(0x0A);

                case PacketOutgoingType.UseItem: return(0x1D);

                case PacketOutgoingType.ClickWindow: return(0x07);

                case PacketOutgoingType.CloseWindow: return(0x08);

                case PacketOutgoingType.PlayerBlockPlacement: return(0x1C);

                case PacketOutgoingType.CreativeInventoryAction: return(0x18);

                case PacketOutgoingType.Animation: return(0x1A);

                case PacketOutgoingType.PlayerDigging: return(0x13);
                }
            }
            else if (protocol <= Protocol18Handler.MC112Version) // MC 1.12
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x0C);

                case PacketOutgoingType.ResourcePackStatus: return(0x18);

                case PacketOutgoingType.ChatMessage: return(0x03);

                case PacketOutgoingType.ClientStatus: return(0x04);

                case PacketOutgoingType.ClientSettings: return(0x05);

                case PacketOutgoingType.PluginMessage: return(0x0A);

                case PacketOutgoingType.TabComplete: return(0x02);

                case PacketOutgoingType.EntityAction: return(0x15);

                case PacketOutgoingType.PlayerPosition: return(0x0E);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x0F);

                case PacketOutgoingType.TeleportConfirm: return(0x00);

                case PacketOutgoingType.HeldItemChange: return(0x1A);

                case PacketOutgoingType.InteractEntity: return(0x0B);

                case PacketOutgoingType.UseItem: return(0x20);

                case PacketOutgoingType.ClickWindow: return(0x07);

                case PacketOutgoingType.CloseWindow: return(0x08);

                case PacketOutgoingType.PlayerBlockPlacement: return(0x1F);

                case PacketOutgoingType.CreativeInventoryAction: return(0x1B);

                case PacketOutgoingType.Animation: return(0x1D);

                case PacketOutgoingType.PlayerDigging: return(0x14);
                }
            }
            else if (protocol <= Protocol18Handler.MC1122Version) // 1.12.2
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x0B);

                case PacketOutgoingType.ResourcePackStatus: return(0x18);

                case PacketOutgoingType.ChatMessage: return(0x02);

                case PacketOutgoingType.ClientStatus: return(0x03);

                case PacketOutgoingType.ClientSettings: return(0x04);

                case PacketOutgoingType.PluginMessage: return(0x09);

                case PacketOutgoingType.TabComplete: return(0x01);

                case PacketOutgoingType.EntityAction: return(0x15);

                case PacketOutgoingType.PlayerPosition: return(0x0D);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x0E);

                case PacketOutgoingType.TeleportConfirm: return(0x00);

                case PacketOutgoingType.HeldItemChange: return(0x1F);

                case PacketOutgoingType.InteractEntity: return(0x0A);

                case PacketOutgoingType.UseItem: return(0x20);

                case PacketOutgoingType.ClickWindow: return(0x07);

                case PacketOutgoingType.CloseWindow: return(0x08);

                case PacketOutgoingType.PlayerBlockPlacement: return(0x1F);

                case PacketOutgoingType.CreativeInventoryAction: return(0x1B);

                case PacketOutgoingType.Animation: return(0x1D);

                case PacketOutgoingType.PlayerDigging: return(0x14);
                }
            }
            else if (protocol < Protocol18Handler.MC114Version) // MC 1.13 to 1.13.2
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x0E);

                case PacketOutgoingType.ResourcePackStatus: return(0x1D);

                case PacketOutgoingType.ChatMessage: return(0x02);

                case PacketOutgoingType.ClientStatus: return(0x03);

                case PacketOutgoingType.ClientSettings: return(0x04);

                case PacketOutgoingType.PluginMessage: return(0x0A);

                case PacketOutgoingType.TabComplete: return(0x05);

                case PacketOutgoingType.EntityAction: return(0x19);

                case PacketOutgoingType.PlayerPosition: return(0x10);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x11);

                case PacketOutgoingType.TeleportConfirm: return(0x00);

                case PacketOutgoingType.HeldItemChange: return(0x21);

                case PacketOutgoingType.InteractEntity: return(0x0D);

                case PacketOutgoingType.UseItem: return(0x2A);

                case PacketOutgoingType.ClickWindow: return(0x08);

                case PacketOutgoingType.CloseWindow: return(0x09);

                case PacketOutgoingType.PlayerBlockPlacement: return(0x29);

                case PacketOutgoingType.CreativeInventoryAction: return(0x24);

                case PacketOutgoingType.Animation: return(0x27);

                case PacketOutgoingType.PlayerDigging: return(0x18);
                }
            }
            else // MC 1.14 to 1.15
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x0F);

                case PacketOutgoingType.ResourcePackStatus: return(0x1F);

                case PacketOutgoingType.ChatMessage: return(0x03);

                case PacketOutgoingType.ClientStatus: return(0x04);

                case PacketOutgoingType.ClientSettings: return(0x05);

                case PacketOutgoingType.PluginMessage: return(0x0B);

                case PacketOutgoingType.TabComplete: return(0x06);

                case PacketOutgoingType.EntityAction: return(0x1B);

                case PacketOutgoingType.PlayerPosition: return(0x11);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x12);

                case PacketOutgoingType.TeleportConfirm: return(0x00);

                case PacketOutgoingType.HeldItemChange: return(0x23);

                case PacketOutgoingType.InteractEntity: return(0x0E);

                case PacketOutgoingType.UseItem: return(0x2D);

                case PacketOutgoingType.ClickWindow: return(0x09);

                case PacketOutgoingType.CloseWindow: return(0x0A);

                case PacketOutgoingType.PlayerBlockPlacement: return(0x2C);

                case PacketOutgoingType.CreativeInventoryAction: return(0x26);

                case PacketOutgoingType.Animation: return(0x2A);

                case PacketOutgoingType.PlayerDigging: return(0x1A);
                }
            }

            throw new System.ComponentModel.InvalidEnumArgumentException("Unknown PacketOutgoingType (protocol=" + protocol + ")", (int)packet, typeof(PacketOutgoingType));
        }
 public void WritePacket(PacketOutgoingType packetOutgoingType, IEnumerable <byte> data)
 {
     WritePacket(Protocol18PacketTypes.GetPacketOutgoingID(packetOutgoingType, protocolVersion), data);
 }
Exemple #11
0
        /// <summary>
        /// Get packet ID of the specified outgoing packet
        /// </summary>
        /// <remarks>
        /// When adding a new packet, see https://wiki.vg/Protocol_version_numbers
        /// For each switch below, see the corresponding page (e.g. MC 1.7, then 1.9) and add the ID
        /// By the way, also look for packet layout changes across versions and handle them in Protocol18.cs
        /// Please add entries in the same order as they are displayed in PacketOutgoingType.cs
        /// </remarks>
        /// <param name="packet">Abstract packet numbering</param>
        /// <param name="protocol">Protocol version</param>
        /// <returns>Packet ID</returns>
        public static int GetPacketOutgoingID(PacketOutgoingType packet, int protocol)
        {
            if (protocol <= Protocol18Handler.MC18Version) // MC 1.7 and 1.8
            {
                switch (packet)
                {
                    case PacketOutgoingType.KeepAlive: return 0x00;
                    case PacketOutgoingType.ResourcePackStatus: return 0x19;
                    case PacketOutgoingType.ChatMessage: return 0x01;
                    case PacketOutgoingType.ClientStatus: return 0x16;
                    case PacketOutgoingType.ClientSettings: return 0x15;
                    case PacketOutgoingType.PluginMessage: return 0x17;
                    case PacketOutgoingType.TabComplete: return 0x14;
                    case PacketOutgoingType.EntityAction: return 0x0B;
                    case PacketOutgoingType.PlayerPosition: return 0x04;
                    case PacketOutgoingType.PlayerPositionAndLook: return 0x06;
                    case PacketOutgoingType.TeleportConfirm: throw new InvalidOperationException("Teleport confirm is not supported in protocol " + protocol);
                    case PacketOutgoingType.HeldItemChange: return 0x17;
                    case PacketOutgoingType.InteractEntity: return 0x02;
                    case PacketOutgoingType.UseItem: throw new InvalidOperationException("Use item is not supported in protocol " + protocol);
                    case PacketOutgoingType.ClickWindow: return 0x0E;
                    case PacketOutgoingType.CloseWindow: return 0x0D;
                    case PacketOutgoingType.PlayerBlockPlacement: return 0x08;
                    case PacketOutgoingType.CreativeInventoryAction: return 0x10;
                    case PacketOutgoingType.Animation: return 0x0A;
                    case PacketOutgoingType.PlayerDigging: return 0x07;
                    case PacketOutgoingType.UpdateSign: return 0x12;
                    case PacketOutgoingType.UpdateCommandBlock: return 0x20;
                }
            }
            else if (protocol <= Protocol18Handler.MC1112Version) // MC 1.9, 1,10 and 1.11
            {
                switch (packet)
                {
                    case PacketOutgoingType.KeepAlive: return 0x0B;
                    case PacketOutgoingType.ResourcePackStatus: return 0x16;
                    case PacketOutgoingType.ChatMessage: return 0x02;
                    case PacketOutgoingType.ClientStatus: return 0x03;
                    case PacketOutgoingType.ClientSettings: return 0x04;
                    case PacketOutgoingType.PluginMessage: return 0x09;
                    case PacketOutgoingType.TabComplete: return 0x01;
                    case PacketOutgoingType.EntityAction: return 0x14;
                    case PacketOutgoingType.PlayerPosition: return 0x0C;
                    case PacketOutgoingType.PlayerPositionAndLook: return 0x0D;
                    case PacketOutgoingType.TeleportConfirm: return 0x00;
                    case PacketOutgoingType.HeldItemChange: return 0x17;
                    case PacketOutgoingType.InteractEntity: return 0x0A;
                    case PacketOutgoingType.UseItem: return 0x1D;
                    case PacketOutgoingType.ClickWindow: return 0x07;
                    case PacketOutgoingType.CloseWindow: return 0x08;
                    case PacketOutgoingType.PlayerBlockPlacement: return 0x1C;
                    case PacketOutgoingType.CreativeInventoryAction: return 0x18;
                    case PacketOutgoingType.Animation: return 0x1A;
                    case PacketOutgoingType.PlayerDigging: return 0x13;
                    case PacketOutgoingType.UpdateSign: return 0x19;
                    case PacketOutgoingType.UpdateCommandBlock: return 0x20;
                }
            }
            else if (protocol <= Protocol18Handler.MC112Version) // MC 1.12
            {
                switch (packet)
                {
                    case PacketOutgoingType.KeepAlive: return 0x0C;
                    case PacketOutgoingType.ResourcePackStatus: return 0x18;
                    case PacketOutgoingType.ChatMessage: return 0x03;
                    case PacketOutgoingType.ClientStatus: return 0x04;
                    case PacketOutgoingType.ClientSettings: return 0x05;
                    case PacketOutgoingType.PluginMessage: return 0x0A;
                    case PacketOutgoingType.TabComplete: return 0x02;
                    case PacketOutgoingType.EntityAction: return 0x15;
                    case PacketOutgoingType.PlayerPosition: return 0x0E;
                    case PacketOutgoingType.PlayerPositionAndLook: return 0x0F;
                    case PacketOutgoingType.TeleportConfirm: return 0x00;
                    case PacketOutgoingType.HeldItemChange: return 0x1A;
                    case PacketOutgoingType.InteractEntity: return 0x0B;
                    case PacketOutgoingType.UseItem: return 0x20;
                    case PacketOutgoingType.ClickWindow: return 0x07;
                    case PacketOutgoingType.CloseWindow: return 0x08;
                    case PacketOutgoingType.PlayerBlockPlacement: return 0x1F;
                    case PacketOutgoingType.CreativeInventoryAction: return 0x1B;
                    case PacketOutgoingType.Animation: return 0x1D;
                    case PacketOutgoingType.PlayerDigging: return 0x14;
                    case PacketOutgoingType.UpdateSign: return 0x1C;
                    case PacketOutgoingType.UpdateCommandBlock: return 0x20;
                }
            }
            else if (protocol <= Protocol18Handler.MC1122Version) // 1.12.2
            {
                switch (packet)
                {
                    case PacketOutgoingType.KeepAlive: return 0x0B;
                    case PacketOutgoingType.ResourcePackStatus: return 0x18;
                    case PacketOutgoingType.ChatMessage: return 0x02;
                    case PacketOutgoingType.ClientStatus: return 0x03;
                    case PacketOutgoingType.ClientSettings: return 0x04;
                    case PacketOutgoingType.PluginMessage: return 0x09;
                    case PacketOutgoingType.TabComplete: return 0x01;
                    case PacketOutgoingType.EntityAction: return 0x15;
                    case PacketOutgoingType.PlayerPosition: return 0x0D;
                    case PacketOutgoingType.PlayerPositionAndLook: return 0x0E;
                    case PacketOutgoingType.TeleportConfirm: return 0x00;
                    case PacketOutgoingType.HeldItemChange: return 0x1F;
                    case PacketOutgoingType.InteractEntity: return 0x0A;
                    case PacketOutgoingType.UseItem: return 0x20;
                    case PacketOutgoingType.ClickWindow: return 0x07;
                    case PacketOutgoingType.CloseWindow: return 0x08;
                    case PacketOutgoingType.PlayerBlockPlacement: return 0x1F;
                    case PacketOutgoingType.CreativeInventoryAction: return 0x1B;
                    case PacketOutgoingType.Animation: return 0x1D;
                    case PacketOutgoingType.PlayerDigging: return 0x14;
                    case PacketOutgoingType.UpdateSign: return 0x1C;
                    case PacketOutgoingType.UpdateCommandBlock: return 0x20;
                }
            }
            else if (protocol < Protocol18Handler.MC114Version) // MC 1.13 to 1.13.2
            {
                switch (packet)
                {
                    case PacketOutgoingType.KeepAlive: return 0x0E;
                    case PacketOutgoingType.ResourcePackStatus: return 0x1D;
                    case PacketOutgoingType.ChatMessage: return 0x02;
                    case PacketOutgoingType.ClientStatus: return 0x03;
                    case PacketOutgoingType.ClientSettings: return 0x04;
                    case PacketOutgoingType.PluginMessage: return 0x0A;
                    case PacketOutgoingType.TabComplete: return 0x05;
                    case PacketOutgoingType.EntityAction: return 0x19;
                    case PacketOutgoingType.PlayerPosition: return 0x10;
                    case PacketOutgoingType.PlayerPositionAndLook: return 0x11;
                    case PacketOutgoingType.TeleportConfirm: return 0x00;
                    case PacketOutgoingType.HeldItemChange: return 0x21;
                    case PacketOutgoingType.InteractEntity: return 0x0D;
                    case PacketOutgoingType.UseItem: return 0x2A;
                    case PacketOutgoingType.ClickWindow: return 0x08;
                    case PacketOutgoingType.CloseWindow: return 0x09;
                    case PacketOutgoingType.PlayerBlockPlacement: return 0x29;
                    case PacketOutgoingType.CreativeInventoryAction: return 0x24;
                    case PacketOutgoingType.Animation: return 0x27;
                    case PacketOutgoingType.PlayerDigging: return 0x18;
                    case PacketOutgoingType.UpdateSign: return 0x26;
                    case PacketOutgoingType.UpdateCommandBlock: return 0x22;
                }
            }
            else if (protocol <= Protocol18Handler.MC1152Version) //MC 1.14 to 1.15.2
            {
                switch (packet)
                {
                    case PacketOutgoingType.KeepAlive: return 0x0F;
                    case PacketOutgoingType.ResourcePackStatus: return 0x1F;
                    case PacketOutgoingType.ChatMessage: return 0x03;
                    case PacketOutgoingType.ClientStatus: return 0x04;
                    case PacketOutgoingType.ClientSettings: return 0x05;
                    case PacketOutgoingType.PluginMessage: return 0x0B;
                    case PacketOutgoingType.TabComplete: return 0x06;
                    case PacketOutgoingType.EntityAction: return 0x1B;
                    case PacketOutgoingType.PlayerPosition: return 0x11;
                    case PacketOutgoingType.PlayerPositionAndLook: return 0x12;
                    case PacketOutgoingType.TeleportConfirm: return 0x00;
                    case PacketOutgoingType.HeldItemChange: return 0x23;
                    case PacketOutgoingType.InteractEntity: return 0x0E;
                    case PacketOutgoingType.UseItem: return 0x2D;
                    case PacketOutgoingType.ClickWindow: return 0x09;
                    case PacketOutgoingType.CloseWindow: return 0x0A;
                    case PacketOutgoingType.PlayerBlockPlacement: return 0x2C;
                    case PacketOutgoingType.CreativeInventoryAction: return 0x26;
                    case PacketOutgoingType.Animation: return 0x2A;
                    case PacketOutgoingType.PlayerDigging: return 0x1A;
                    case PacketOutgoingType.UpdateSign: return 0x29;
                    case PacketOutgoingType.UpdateCommandBlock: return 0x24;
                }
            }
            else
            {
                switch (packet)
                {
                    case PacketOutgoingType.KeepAlive: return 0x10;
                    case PacketOutgoingType.ResourcePackStatus: return 0x20;
                    case PacketOutgoingType.ChatMessage: return 0x03;
                    case PacketOutgoingType.ClientStatus: return 0x04;
                    case PacketOutgoingType.ClientSettings: return 0x05;
                    case PacketOutgoingType.PluginMessage: return 0x0B;
                    case PacketOutgoingType.TabComplete: return 0x06;
                    case PacketOutgoingType.EntityAction: return 0x1C;
                    case PacketOutgoingType.PlayerPosition: return 0x12;
                    case PacketOutgoingType.PlayerPositionAndLook: return 0x13;
                    case PacketOutgoingType.TeleportConfirm: return 0x00;
                    case PacketOutgoingType.HeldItemChange: return 0x24;
                    case PacketOutgoingType.InteractEntity: return 0x0E;
                    case PacketOutgoingType.UseItem: return 0x2E;
                    case PacketOutgoingType.ClickWindow: return 0x09;
                    case PacketOutgoingType.CloseWindow: return 0x0A;
                    case PacketOutgoingType.PlayerBlockPlacement: return 0x2C;
                    case PacketOutgoingType.CreativeInventoryAction: return 0x27;
                    case PacketOutgoingType.Animation: return 0x2B;
                    case PacketOutgoingType.PlayerDigging: return 0x1B;
                    case PacketOutgoingType.UpdateSign: return 0x2A;
                    case PacketOutgoingType.UpdateCommandBlock: return 0x24;
                }
            }

            throw new System.ComponentModel.InvalidEnumArgumentException("Unknown PacketOutgoingType (protocol=" + protocol + ")", (int)packet, typeof(PacketOutgoingType));
        }
        private int getPacketOutgoingID(PacketOutgoingType packet, int protocol)
        {
            if (protocol < 107)
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x00);

                case PacketOutgoingType.ResourcePackStatus: return(0x19);

                case PacketOutgoingType.ChatMessage: return(0x01);

                case PacketOutgoingType.ClientStatus: return(0x16);

                case PacketOutgoingType.ClientSettings: return(0x15);

                case PacketOutgoingType.PluginMessage: return(0x17);

                case PacketOutgoingType.TabComplete: return(0x14);

                case PacketOutgoingType.PlayerPosition: return(0x04);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x06);

                case PacketOutgoingType.TeleportConfirm: throw new InvalidOperationException("Teleport confirm is not supported in protocol " + protocol);
                }
            }
            else if (protocol < 318)
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x0B);

                case PacketOutgoingType.ResourcePackStatus: return(0x16);

                case PacketOutgoingType.ChatMessage: return(0x02);

                case PacketOutgoingType.ClientStatus: return(0x03);

                case PacketOutgoingType.ClientSettings: return(0x04);

                case PacketOutgoingType.PluginMessage: return(0x09);

                case PacketOutgoingType.TabComplete: return(0x01);

                case PacketOutgoingType.PlayerPosition: return(0x0C);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x0D);

                case PacketOutgoingType.TeleportConfirm: return(0x00);
                }
            }
            else if (protocolversion < 332)
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x0C);

                case PacketOutgoingType.ResourcePackStatus: return(0x17);

                case PacketOutgoingType.ChatMessage: return(0x03);

                case PacketOutgoingType.ClientStatus: return(0x04);

                case PacketOutgoingType.ClientSettings: return(0x05);

                case PacketOutgoingType.PluginMessage: return(0x0A);

                case PacketOutgoingType.TabComplete: return(0x02);

                case PacketOutgoingType.PlayerPosition: return(0x0D);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x0E);

                case PacketOutgoingType.TeleportConfirm: return(0x00);
                }
            }
            else if (protocol < 336)
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x0C);

                case PacketOutgoingType.ResourcePackStatus: return(0x17);

                case PacketOutgoingType.ChatMessage: return(0x03);

                case PacketOutgoingType.ClientStatus: return(0x04);

                case PacketOutgoingType.ClientSettings: return(0x05);

                case PacketOutgoingType.PluginMessage: return(0x0A);

                case PacketOutgoingType.TabComplete: return(0x02);

                case PacketOutgoingType.PlayerPosition: return(0x0E);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x0F);

                case PacketOutgoingType.TeleportConfirm: return(0x00);
                }
            }
            else
            {
                switch (packet)
                {
                case PacketOutgoingType.KeepAlive: return(0x0B);

                case PacketOutgoingType.ResourcePackStatus: return(0x17);

                case PacketOutgoingType.ChatMessage: return(0x02);

                case PacketOutgoingType.ClientStatus: return(0x03);

                case PacketOutgoingType.ClientSettings: return(0x04);

                case PacketOutgoingType.PluginMessage: return(0x09);

                case PacketOutgoingType.TabComplete: return(0x01);

                case PacketOutgoingType.PlayerPosition: return(0x0D);

                case PacketOutgoingType.PlayerPositionAndLook: return(0x0E);

                case PacketOutgoingType.TeleportConfirm: return(0x00);
                }
            }

            throw new System.ComponentModel.InvalidEnumArgumentException("Unknown PacketOutgoingType (protocol=" + protocol + ")", (int)packet, typeof(PacketOutgoingType));
        }
Exemple #13
0
 public abstract int getPacketOutgoingID(PacketOutgoingType packet);