NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Map Selector for CraftNite // @namespace https://openuserjs.org/user/KeineAhnung4u // @version 1.0 // @description Allows users to select a map before starting the game in CraftNite. // @author KeineAhnung4u // @match https://craftnite.io/* // @run-at document-start // @license MIT // @copyright 2025, KeineAhnung4u (https://openuserjs.org/users/KeineAhnung4u) // ==/UserScript== function addGlobal(name, value) { var script = document.createElement('script'); script.textContent = `window.${name} = ${value};`; (document.head||document.documentElement).appendChild(script); script.remove(); } function addInputAbovePlayButton() { const playBtn = document.getElementById('playbtn'); const customServer = document.createElement('input'); customServer.id = 'customServer'; customServer.type = 'text'; customServer.placeholder = 'Enter map name (e.g., ffa1, ffa2)'; customServer.value = localStorage.getItem('lastServer') ? localStorage.getItem('lastServer') : ''; playBtn.parentNode.insertBefore(customServer, playBtn); const lineBreak = document.createElement('br'); customServer.parentNode.insertBefore(lineBreak, customServer); } window.addEventListener('load', addInputAbovePlayButton); function customStartBtn() { let nameValue = document.getElementById('name').value; addGlobal('playerName', nameValue ? JSON.stringify(nameValue) : JSON.stringify('unnamed')) setCookie("name", playerName, 365); setCookie("skin", playerSkin, 365); var inputValue = (document.getElementById('customServer').value || '').trim(); var localStorageValue = localStorage.getItem('lastServer'); if (inputValue === 'Random server 4u' || !inputValue) { requestServerName(); } else if (localStorageValue && inputValue === 'Last server') { localStorage.setItem('lastServer', localStorageValue); G.gameServerAddress = localStorageValue; playGame(); } else { localStorage.setItem('lastServer', inputValue); G.gameServerAddress = inputValue; playGame(); } } var originalSend = window.XMLHttpRequest.prototype.send; var originalOpen = window.XMLHttpRequest.prototype.open; window.XMLHttpRequest.prototype.open = function(method, url) { this._url = url; return originalOpen.apply(this, arguments); }; window.XMLHttpRequest.prototype.send = function() { if (this._url && this._url.startsWith('https://craftnite.io/gs/requestServer.php')){ this.addEventListener('readystatechange', function() { if (this.readyState === 4) { var inputValue = (document.getElementById('customServer')?.value || '').trim(); var localStorageValue = localStorage.getItem('lastServer'); if (inputValue === 'Random server' || !inputValue) { localStorage.setItem('lastServer', this.responseText); return this.responseText } } }, false); } if (this._url.startsWith('https://craftnite.io') || this._url === 'a.zip') { return originalSend.apply(this, arguments); } }; window.addEventListener('load', () => { const playBtn = document.getElementById('playbtn'); if (playBtn) { playBtn.removeAttribute('onclick'); playBtn.onclick = customStartBtn; } });