protected override void OnKeyDown(KeyboardKeyEventArgs e)
        {
            base.OnKeyDown(e);

            // If chat add to text
            if (guiChat != null && guiChat.visible == true)
            {
                guiChat.InputText(e.Key);
            }

            switch (e.Key)
            {
            case Key.P:
                Player?.World?.AddWaypoint(new BlockPos(Player.Pos).Offset(FaceSides.Up),
                                           new OpenTK.Color(255, 0, 0, 127), "TEST");
                break;

            case Key.Escape:
                if (GuiScreen is GuiScreenMainMenu || KeyboardState.IsKeyDown(Key.Escape))
                {
                    return;
                }

                if (GuiScreen != null)
                {
                    CloseGuiScreen();
                }
                else
                {
                    OpenGuiScreen(new GuiScreenIngameMenu());
                }
                break;

            case Key.E:
                if (KeyboardState.IsKeyDown(Key.E))
                {
                    return;
                }

                if (guiChat != null && guiChat.visible)
                {
                    return;
                }

                if (GuiScreen is GuiScreenInventory)
                {
                    CloseGuiScreen();
                    return;
                }

                if (GuiScreen == null)
                {
                    OpenGuiScreen(new GuiScreenInventory());
                }
                break;

            case Key.Up:

                if (KeyboardState.IsKeyDown(Key.Up))
                {
                    return;
                }

                if (guiChat != null)
                {
                    if (guiChat.visible == true)
                    {
                        guiChat.ShowHistoryUP();
                    }
                }

                break;

            case Key.Down:

                if (KeyboardState.IsKeyDown(Key.Down))
                {
                    return;
                }

                if (guiChat != null)
                {
                    if (guiChat.visible == true)
                    {
                        guiChat.ShowHistoryDOWN();
                    }
                }

                break;

            case Key.Enter:
                if (KeyboardState.IsKeyDown(Key.Enter))
                {
                    return;
                }

                if (guiChat == null)
                {
                    guiChat = new GuiChat();
                    return;
                }
                else
                {
                    guiChat.Init();
                    guiChat.ToggleVisibillity();
                }

                break;

            case Key.F2:
                _takeScreenshot = true;
                break;

            case Key.F11:
                if (WindowState != WindowState.Fullscreen)
                {
                    _lastWindowState = WindowState;
                    WindowState      = WindowState.Fullscreen;
                }
                else
                {
                    WindowState = _lastWindowState;
                }

                break;
            }

            if (AllowInput())
            {
                switch (e.Key)
                {
                case Key.Q:
                    if (KeyboardState.IsKeyDown(Key.Q))
                    {
                        return;
                    }

                    if (e.Control)
                    {
                        Player.DropHeldStack();
                    }
                    else
                    {
                        Player?.DropHeldItem();
                    }
                    break;

                case Key.R:
                    if (!e.Control || KeyboardState.IsKeyDown(Key.R))
                    {
                        return;
                    }

                    Shader.ReloadAll();
                    SettingsManager.Load();
                    TextureManager.Reload();

                    WorldRenderer.RenderDistance = SettingsManager.GetInt("renderdistance");
                    _sensitivity = SettingsManager.GetFloat("sensitivity");

                    if (e.Shift)
                    {
                        JsonModelLoader.Reload();
                        World?.DestroyChunkModels();
                    }

                    break;
                }

                if (GuiScreen == null)
                {
                    for (int i = 0; i < 9; i++)
                    {
                        if (e.Key == Key.Number1 + i)
                        {
                            Player?.SetSelectedSlot(i);

                            break;
                        }
                    }
                }
            }

            if (e.Alt && e.Key == Key.F4)
            {
                Exit();
            }

            KeyboardState = e.Keyboard;
        }
 public GuiChatConfirmLink(GuiChat par1GuiChat, GuiScreen par2GuiScreen, string par3Str, int par4, ChatClickData par5ChatClickData) : base(par2GuiScreen, par3Str, par4)
 {
     Field_50055_b = par1GuiChat;
     Field_50056_a = par5ChatClickData;
 }