public boolean teleport() {
        if (Players.getLocal().getAnimation() == -1) {
            Timer wait = new Timer(1);
            final WidgetChild TELEPORT_TAB = Widgets.get(275, 46);
            if (Tabs.ABILITY_BOOK.open() && !TELEPORT_TAB.visible()) {
                WidgetChild magicTabButton = Widgets.get(275, 41);
                magicTabButton.click(true);
            } else {
                final WidgetChild HOME_TELEPORT = Widgets.get(275, 16).getChildren()[155];
                if (!HOME_TELEPORT.visible()) {
                    TELEPORT_TAB.click(true);
                } else {
                    WidgetChild lodeButton = Widgets.get(1092, id);
                    if (!lodeButton.validate()) {
                        HOME_TELEPORT.click(true);
                        wait.setEndIn(Random.nextGaussian(3000,5000,400));
                        while (!lodeButton.validate() && wait.isRunning()) {
                            Task.sleep(25, 50);
                        }
                    } else {
                        lodeButton.click(true);
                        wait.setEndIn(Random.nextGaussian(3000,5000,400));
                        while (wait.isRunning()) {
                            Task.sleep(25, 50);
                        }
                    }
                }
            }
        }
        return hasArrived();
    }