// ==UserScript== // @name Aternos Auto-Start and Restart Bot // @namespace https://aternos.org/ // @version 3.6 // @description Start Aternos server and handle actions automatically without countdown logic. // @author Zephyr5929 // @match https://aternos.org/server/* // @grant none // @license MIT // @icon https://media.forgecdn.net/avatars/375/55/637549609568691156.png // @downloadURL https://update.greasyfork.icu/scripts/524506/Aternos%20Auto-Start%20and%20Restart%20Bot.user.js // @updateURL https://update.greasyfork.icu/scripts/524506/Aternos%20Auto-Start%20and%20Restart%20Bot.meta.js // ==/UserScript== (function () { 'use strict'; // Constants const INITIAL_DELAY_MS = 10000; // 10 seconds // State tracking let startExecuted = false; let confirmSkipped = false; // Function to wait for the DOM to be ready function onDOMReady(callback) { if (document.readyState === "complete" || document.readyState === "interactive") { callback(); } else { document.addEventListener("DOMContentLoaded", callback); } } // Function to check if an element is visible function isVisible(selector) { const element = document.querySelector(selector); return element && element.offsetParent !== null; // Ensures the element is visible in the DOM } // Function to simulate a click on an element function clickElement(selector) { const element = document.querySelector(selector); if (element) { console.log(`Clicking element: ${selector}`); element.click(); return true; } else { console.warn(`Element not found: ${selector}`); return false; } } // Main logic to handle server start function handleServerStart() { // Check if the Restart button is visible if (isVisible("#restart")) { console.log("'Restart' button is visible. Skipping 'Start' and 'Confirm now!' actions."); return; } // Check if the Start button is visible and click it if (isVisible("#start")) { console.log("'Start' button is visible. Starting the server..."); if (clickElement("#start")) { startExecuted = true; // Track that "Start" was clicked monitorStopOrConfirmButton(); // Start monitoring for the "Stop" or "Confirm now!" button } } else { console.warn("'Start' button is not visible. No action taken."); } } // Function to monitor for either the "Stop" or "Confirm now!" button function monitorStopOrConfirmButton() { console.log("Monitoring for 'Stop' or 'Confirm now!' button..."); const observer = new MutationObserver(() => { if (isVisible("#stop")) { console.log("'Stop' button detected. Skipping 'Confirm now!' and proceeding..."); confirmSkipped = true; // Mark that we skipped confirm observer.disconnect(); // Stop observing } else if (isVisible("#confirm")) { console.log("'Confirm now!' button detected. Clicking..."); if (clickElement("#confirm")) { observer.disconnect(); // Stop observing after clicking "Confirm now!" } } }); observer.observe(document.body, { childList: true, subtree: true, }); // Safety fallback to stop observing after a timeout setTimeout(() => observer.disconnect(), 30000); // Stops monitoring after 30 seconds } // Initialize the script onDOMReady(() => { console.log("Page loaded. Waiting 10 seconds before starting..."); setTimeout(() => { handleServerStart(); }, INITIAL_DELAY_MS); }); })();