private Task DispatchPacket(ServerboundPluginMessage packet)
 {
     return(Task.CompletedTask);
 }
Example #2
0
        private Task DispatchPacket(UncompressedPacket packet)
        {
            var  br = new SpanReader(packet.Data);
            Task task;

            switch (packet.PacketId)
            {
            // Teleport Confirm
            case 0x00:
                task = DispatchPacket(TeleportConfirm.Deserialize(ref br));
                break;

            // Chat Message
            case 0x03:
                task = DispatchPacket(ServerboundChatMessage.Deserialize(ref br));
                break;

            // Client Settings
            case 0x05:
                task = DispatchPacket(ClientSettings.Deserialize(ref br));
                break;

            // Plugin Message
            case 0x0A:
                task = DispatchPacket(ServerboundPluginMessage.Deserialize(ref br));
                break;

            // Keep Alive
            case 0x0C:
                task = DispatchPacket(ServerboundKeepAlive.Deserialize(ref br));
                break;

            // Player On Ground
            case 0x0D:
                task = DispatchPacket(PlayerOnGround.Deserialize(ref br));
                break;

            // Player Position
            case 0x0E:
                task = DispatchPacket(PlayerPosition.Deserialize(ref br));
                break;

            // Position And Look
            case 0x0F:
                task = DispatchPacket(ServerboundPositionAndLook.Deserialize(ref br));
                break;

            // Player Look
            case 0x10:
                task = DispatchPacket(PlayerLook.Deserialize(ref br));
                break;

            // Player Digging
            case 0x14:
                task = DispatchPacket(PlayerDigging.Deserialize(ref br));
                break;

            // Entity Action
            case 0x15:
                task = DispatchPacket(EntityAction.Deserialize(ref br));
                break;

            // Held Item Change
            case 0x1A:
                task = DispatchPacket(ServerboundHeldItemChange.Deserialize(ref br));
                break;

            // Animation
            case 0x1D:
                task = DispatchPacket(ServerboundAnimation.Deserialize(ref br));
                break;

            // Player Block Placement
            case 0x1F:
                task = DispatchPacket(PlayerBlockPlacement.Deserialize(ref br));
                break;

            // Use Item
            case 0x20:
                task = DispatchPacket(UseItem.Deserialize(ref br));
                break;

            // Click Window
            case 0x08:
                task = DispatchPacket(ClickWindow.Deserialize(ref br));
                break;

            // Close Window
            case 0x09:
                task = DispatchPacket(ServerboundCloseWindow.Deserialize(ref br));
                break;

            default:
                Logger.LogWarning($"Unrecognizable packet id: 0x{packet.PacketId:X2}.");
                return(Task.CompletedTask);
            }

            if (!br.IsCosumed)
            {
                throw new InvalidDataException($"Packet data is not fully consumed.");
            }
            return(task);
        }