您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
hack client for bloxd.io, revived with poop client's hook
// ==UserScript== // @name Melon Hub Revived (bloxd.io) // @namespace https://github.com/OfficiallyMelon/Melon-Hub // @version v1.0.1.2 Fixed // @description hack client for bloxd.io, revived with poop client's hook // @author melon // @match https://*.bloxd.io* // @icon https://bloxd.io* // @grant GM_getValue // @grant GM_setValue // @grant unsafeWindow // @license MIT // @run-at document-start // ==/UserScript== /******/ (() => { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_require__ = {}; /******/ /************************************************************************/ /******/ /* webpack/runtime/define property getters */ /******/ (() => { __webpack_require__.d = (exports, definition) => { for(var key in definition) { if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); } } }; })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ (() => { __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) })(); /******/ /************************************************************************/ var __webpack_exports__ = {}; __webpack_require__.d(__webpack_exports__, { n9: () => (/* binding */ addOutput), oP: () => (/* binding */ injectionStatus) }); // hook by wang var S = { fakeMouseEvent(t) { let e = { button: 0, buttons: 1, clientX: Math.floor(Math.random() * 999 + 1), clientY: Math.floor(Math.random() * 999 + 1), screenX: Math.floor(Math.random() * 999 + 1), screenY: Math.floor(Math.random() * 999 + 1), target: document.querySelector("#noa-container"), type: t, isTrusted: !0, view: window, bubbles: !0, cancelable: !0, timeStamp: performance.now() }; return e.prototype = MouseEvent.prototype, e; } }; var s = { keys(t) { var e = [], i = 0; for (var o in t) t != null && (e[i] = o, i++); return e; }, values(t) { for (var e = this.keys(t), i = [], o = 0, n = 0; o < e.length;) { var c = e[o], d = t[c]; i[n] = d, n++, o++; } return i; }, assign(t, ...e) { let i = Object(t); for (let o = 0; o < e.length; o++) { let n = e[o]; if (n != null) for (let c in n) i[c] = n[c]; } return i; } }; var A = { wpRequire: null, _cachedNoa: null, get noa() { return this?._cachedNoa || (this._cachedNoa = s.values(this.bloxdProps).find(t => t?.entities)), this._cachedNoa; }, init() { if (!window.webpackChunkbloxd) { throw new Error("webpackChunkbloxd not available"); } let t = Math.floor(Math.random() * 9999999 + 1); window.webpackChunkbloxd.push([[t], {}, i => this.wpRequire = i]); this.bloxdProps = s.values(this.findModule("nonBlocksClient:") || this.findModuleAlternative())?.find(i => typeof i == "object") || null; if (!this.bloxdProps) { throw new Error("bloxdProps not found"); } }, findModule(t) { if (!this.wpRequire) return null; let e = this.wpRequire.m; for (let i in e) { let o = e[i]; if (o && o.toString().includes(t)) { addOutput("Hook Debug:", `Found module with identifier: ${t}`); return this.wpRequire(i); } } addError("Hook Debug:", `Module with identifier ${t} not found`); return null; }, findModuleAlternative() { const identifiers = ["nonBlocksClient:", "bloxdClient", "gameClient", "entities"]; for (let id of identifiers) { let module = this.findModule(id); if (module) return module; } addError("Hook Debug:", "No alternative module found"); return null; } }; var l = A; var C = { get getPosition() { return s.values(l.noa?.entities || [])[28] || (() => [0, 0, 0]); }, get getMoveState() { return s.values(l.noa?.entities || [])[36] || (() => ({})); }, get getPhysicsBody() { return s.values(l.noa?.entities || [])[30] || (() => ({})); }, get registry() { return s.values(l.noa || [])[17] || ({}); }, get getBlockSolidity() { return s.values(this.registry)[5] || (() => false); }, get getBlockID() { return l.noa?.bloxd ? l.noa.bloxd[Object.getOwnPropertyNames(l.noa.bloxd.constructor.prototype)[3]]?.bind(l.noa.bloxd) : (() => 0); }, get getHeldItem() { return s.values(l.noa?.entities || [])[39] || (() => null); }, safeGetHeldItem(t) { let e; try { e = this.getHeldItem(t); } catch { e = null; } return e; }, get playerList() { return s.values(l.noa?.bloxd?.getPlayerIds?.() || []).filter(t => t !== 1 && this.safeGetHeldItem(t)).map(t => parseInt(t)); }, get doAttack() { let t = this.safeGetHeldItem(1); return (t?.doAttack || t?.breakingItem?.doAttack || (() => {})).bind(t); }, setVelocity(t = null, e = null, i = null) { let o = this.getPhysicsBody(1), n = s.values(o)[16] || [0, 0, 0]; t !== null && (n[0] = t); e !== null && (n[1] = e); i !== null && (n[2] = i); }, isAlive(t) { return s.values(l.noa?.entities || [])[37]?.(t)?.isAlive || false; }, touchingWall() { let t = this.getPosition(1), e = .35, i = [[0, 0, 0], [e, 0, 0], [-e, 0, 0], [0, 0, e], [0, 0, -e], [e, 0, e], [e, 0, -e], [-e, 0, e], [-e, 0, -e]], o = [0, 1, 2]; for (let [n, c, d] of i) for (let u of o) { let m = Math.floor(t[0] + n), h = Math.floor(t[1] + c + u), E = Math.floor(t[2] + d), M = this.getBlockID(m, h, E); if (this.getBlockSolidity(M)) return !0; } return !1; } }; var r = { noa: C, mouse: S }; // Configuration var config = { coordinates: [null, null, null], methods: {}, CurrentlyInjected: false, freecamPosition: [0, 0, 0], noaInstance: null }; // Hook Initialization with Persistent Retry function initHookWithRetry(maxAttempts = 60, delay = 3000) { let attempts = 0; function tryInit() { // Stop if already injected if (config.CurrentlyInjected) { addOutput("Hook Debug:", "Already injected, stopping retry loop"); return; } // Check if on a valid bloxd.io page if (!window.location.href.includes("bloxd.io")) { addError("Hook Debug:", "Not on a bloxd.io page, stopping retry loop"); return; } try { addOutput("Hook Debug:", `Attempt ${attempts + 1}/${maxAttempts} to initialize hook on ${window.location.href}`); // Wait for webpackChunkbloxd to be defined if (!window.webpackChunkbloxd) { throw new Error("webpackChunkbloxd not available yet"); } l.init(); config.noaInstance = l.noa; if (!config.noaInstance) { throw new Error("noa instance is null"); } if (!config.noaInstance.entities) { throw new Error("noa.entities not available"); } if (!config.noaInstance.bloxd) { throw new Error("noa.bloxd not available"); } if (!config.noaInstance.bloxd.getPlayerIds) { throw new Error("noa.bloxd.getPlayerIds not available"); } config.CurrentlyInjected = true; addOutput("Injection State:", "Successfully hooked noa!"); console.log("Successfully hooked noa!"); window.noa = config.noaInstance; setTimeout(() => { injectionStatus.style.cssText = "position:absolute;bottom:5px;right:5px;width:15px;height:15px;background:green;border-radius:50%;"; }, 100); } catch (e) { if (attempts < maxAttempts) { attempts++; addError("Hook Debug:", `Attempt ${attempts}/${maxAttempts} failed: ${e.message}, retrying in ${delay}ms...`); setTimeout(tryInit, delay); } else { addError("Injection State:", `Failed to hook noa after ${maxAttempts} attempts: ${e.message}. Please reload the page or check for game updates.`); } } } // Start the retry loop immediately tryInit(); // Continue retrying until successful or max attempts reached if (!config.CurrentlyInjected) { setInterval(() => { if (!config.CurrentlyInjected && attempts < maxAttempts) { tryInit(); } }, delay); } } setTimeout(initHookWithRetry, 100); // Packet Handling var hookedSend = null; var Context = null; function interceptSockets() { (function () { var originalDefineProperty = Object.defineProperty; Object.defineProperty = function (obj, prop, descriptor) { try { if (prop === "send" && typeof descriptor.value === "function") { addOutput("Hook Debug:", "Successfully hooked send function"); hookedSend = descriptor.value; descriptor.value = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (hookedSend) { Context = this; return hookedSend.apply(this, args); } else { addError("Hook Error:", "hookedSend is null"); } }; } } catch (error) { addError("Hook Error:", `Failed to hook send: ${error.message}`); } return originalDefineProperty.apply(this, arguments); }; Object.defineProperty(window, "getHookedSend", { value: function () { return hookedSend; }, writable: false, configurable: false }); })(); } var PacketType = { PLACE_BLOCK: 114, }; var packets = { [PacketType.PLACE_BLOCK]: { pos: null, toBlock: null, checker: null } }; function sendPacket(packetType, data) { if (hookedSend && Context) { hookedSend.apply(Context, [packetType, data]); } else { addError("Hook Error:", "Cannot send packet: hookedSend or Context is null"); } } // Utility Functions var D = { normalizeVector(t) { let e = t[0] * t[0] + t[1] * t[1] + t[2] * t[2]; if (e > 0) { let i = 1 / Math.sqrt(e); return [t[0] * i, t[1] * i, t[2] * i]; } return t; }, distanceBetween(t, e) { let i = e[0] - t[0], o = e[1] - t[1], n = e[2] - t[2]; return i * i + o * o + n * n; }, distanceBetweenSqrt(t, e) { return Math.sqrt(this.distanceBetween(t, e)); }, lerp(t, e, i) { return t + (e - t) * i; } }; var Utilities = { simulateLeftClick(element) { if (element) { element.dispatchEvent(new MouseEvent("mousedown", { button: 0, bubbles: true, cancelable: true })); element.dispatchEvent(new MouseEvent("mouseup", { button: 0, bubbles: true, cancelable: true })); } else { addError("Utilities Error:", "Cannot simulate left click: element not found"); } }, calculateDistance(pos1, pos2) { var dx = pos2.x - pos1.x; var dy = pos2.y - pos1.y; var dz = pos2.z - pos1.z; return Math.sqrt(dx * dx + dy * dy + dz * dz); }, simulateRightClick(element) { if (element) { element.dispatchEvent(new MouseEvent("mousedown", { button: 2, bubbles: true, cancelable: true })); element.dispatchEvent(new MouseEvent("mouseup", { button: 2, bubbles: true, cancelable: true })); } else { addError("Utilities Error:", "Cannot simulate right click: element not found"); } }, setDir(facing) { if (config.noaInstance) { var heading = Math.atan2(facing[0], facing[2]); var pitch = Math.asin(-facing[1]); config.noaInstance.camera.heading = heading; config.noaInstance.camera.pitch = pitch; } else { addError("Utilities Error:", "Cannot set direction: noaInstance is null"); } }, removeAllCookies() { document.cookie.split(";").forEach(function (e) { document.cookie = e.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); }); } }; // Module Base Class var Module = class { constructor(name) { this.name = name; this.isEnabled = false; this.keybind = ""; } onEnable() {} onDisable() {} onRender() {} enable() { this.isEnabled = true; this.onEnable(); addOutput(`${this.name} enabled`); } disable() { this.isEnabled = false; this.onDisable(); addOutput(`${this.name} disabled`); } toggle() { this.isEnabled ? this.disable() : this.enable(); } }; // Module Definitions var Killaura = class extends Module { constructor() { super("Killaura"); } onRender() { if (!config.noaInstance || !config.CurrentlyInjected) { addError("Killaura Error:", "Cannot run: noaInstance or injection not ready"); return; } // Aimbot logic: Aim at the nearest player var cPlayer = null; var cDist = Infinity; r.noa.playerList.forEach(function(id) { var lifeformState = r.noa.isAlive(id); if (lifeformState) { var myPos = r.noa.getPosition(1); var enemyPos = r.noa.getPosition(id); var distance = D.distanceBetweenSqrt(myPos, enemyPos); if (distance < cDist && distance <= 20) { cDist = distance; cPlayer = enemyPos; } } }); if (cPlayer) { var myPos = r.noa.getPosition(1); var dirVec = [cPlayer[0] - myPos[0], cPlayer[1] - myPos[1], cPlayer[2] - myPos[2]]; var normVec = D.normalizeVector(dirVec); Utilities.setDir(normVec); } // AutoClicker logic: Simulate left click let element = document.querySelector("#noa-canvas"); Utilities.simulateLeftClick(element); } }; var AutoClicker = class extends Module { constructor() { super("AutoClicker"); } onRender() { if (!config.noaInstance || !config.CurrentlyInjected) { addError("AutoClicker Error:", "Cannot run: noaInstance or injection not ready"); return; } let element = document.querySelector("#noa-canvas"); Utilities.simulateLeftClick(element); } }; var AntiShake = class extends Module { constructor() { super("AntiShake"); } onRender() { if (!config.noaInstance || !config.CurrentlyInjected) { addError("AntiShake Error:", "Cannot run: noaInstance or injection not ready"); return; } try { var cameraState = s.values(config.noaInstance.entities)[12](config.noaInstance.playerEntity); if (cameraState && cameraState.shakePower !== undefined) { cameraState.shakePower = 0; } } catch (e) { addError("AntiShake Error:", e.message); } } }; var Scaffold = class extends Module { constructor() { super("Scaffold"); } onRender() { if (!config.noaInstance || !config.CurrentlyInjected) { addError("Scaffold Error:", "Cannot run: noaInstance or injection not ready"); return; } var player = config.noaInstance.playerEntity; var position = r.noa.getPosition(player); var block = r.noa.getBlockID(Math.floor(position[0]), Math.floor(position[1] - 1), Math.floor(position[2])); var heldItem = r.noa.safeGetHeldItem(player); var ObjID = heldItem && ("CubeBlock" === heldItem.typeObj.type || "TwoDBlock" === heldItem.typeObj.type || "SlabBlock" === heldItem.typeObj.type) ? heldItem.typeObj.id : null; if (block === 0 && ObjID) { var roundedPosition = [ Math.floor(position[0]), Math.floor(position[1] - 1), Math.floor(position[2]) ]; addOutput("Placing block at", roundedPosition.toString()); sendPacket(PacketType.PLACE_BLOCK, { pos: roundedPosition, toBlock: ObjID, checker: '' }); config.noaInstance.setBlock(roundedPosition[0], roundedPosition[1], roundedPosition[2], ObjID); } } }; var Unban = class extends Module { constructor() { super("Account Gen"); } onEnable() { Utilities.removeAllCookies(); location.reload(); } }; var Aimbot = class extends Module { constructor() { super("Aimbot"); } onRender() { if (!config.noaInstance || !config.CurrentlyInjected) { addError("Aimbot Error:", "Cannot run: noaInstance or injection not ready"); return; } var cPlayer = null; var cDist = Infinity; r.noa.playerList.forEach(function(id) { var lifeformState = r.noa.isAlive(id); if (lifeformState) { var myPos = r.noa.getPosition(1); var enemyPos = r.noa.getPosition(id); var distance = D.distanceBetweenSqrt(myPos, enemyPos); if (distance < cDist && distance <= 20) { cDist = distance; cPlayer = enemyPos; } } }); if (cPlayer) { var myPos = r.noa.getPosition(1); var dirVec = [cPlayer[0] - myPos[0], cPlayer[1] - myPos[1], cPlayer[2] - myPos[2]]; var normVec = D.normalizeVector(dirVec); Utilities.setDir(normVec); } } }; var Spider = class extends Module { constructor() { super("Spider"); } onRender() { if (!config.noaInstance || !config.CurrentlyInjected) { addError("Spider Error:", "Cannot run: noaInstance or injection not ready"); return; } if (r.noa.touchingWall() && config.noaInstance.inputs.state.jump) { r.noa.setVelocity(null, 5, null); } } }; var Jesus = class extends Module { constructor() { super("Jesus"); } onEnable() { if (!config.noaInstance || !config.CurrentlyInjected) { addError("Jesus Error:", "Cannot run: noaInstance or injection not ready"); return; } try { let e = s.values(s.values(l.findModule("Gun:class")).find(o => typeof o == "object")); let i = s.keys(r.noa.registry)[12]; r.noa.registry[i][e.find(o => o.name == "Water").id] = !0; r.noa.registry[i][e.find(o => o.name == "Lava").id] = !0; } catch (e) { addError("Jesus Error:", e.message); } } onDisable() { if (!config.noaInstance || !config.CurrentlyInjected) { addError("Jesus Error:", "Cannot disable: noaInstance or injection not ready"); return; } try { let e = s.values(s.values(l.findModule("Gun:class")).find(o => typeof o == "object")); let i = s.keys(r.noa.registry)[12]; r.noa.registry[i][e.find(o => o.name == "Water").id] = !1; r.noa.registry[i][e.find(o => o.name == "Lava").id] = !1; } catch (e) { addError("Jesus Error:", e.message); } } }; // UI Components var UI_link = document.createElement('link'); UI_link.rel = 'stylesheet'; UI_link.href = 'https://fonts.googleapis.com/css2?family=Gabarito:wght@400;500&display=swap'; var UI_frame = document.createElement('div'); UI_frame.style.cssText = 'position:fixed;top:10px;right:10px;width:697.5px;height:448.5px;background-color:transparent;border-radius:10px;overflow:hidden;z-index:2147483646'; var rightImage = document.createElement('img'); rightImage.src = 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/RightMelon.png?raw=true'; rightImage.style.cssText = 'width:697.5px;height:448.5px'; rightImage.style.position = 'relative'; var leftImage = document.createElement('img'); leftImage.src = 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/LeftMelon.png?raw=true'; leftImage.style.cssText = 'position:fixed;top:10px;right:495px;width:217.5px;height:448.5px;z-index:2147483646'; var melonHubText = document.createElement('div'); melonHubText.innerText = 'Melon Hub'; melonHubText.style.cssText = 'position:absolute; top:20px; left:34px; font-family: Inter, sans-serif; font-size: 22px; font-weight: 500; color: white; z-index: 2147483647;'; var versionText = document.createElement('div'); versionText.innerText = '1.0.1.1 Fixed'; versionText.style.cssText = 'position:absolute; top:20px; left:145px; font-family: Inter, sans-serif; font-size: 14px; font-weight: 300; color: white; z-index: 2147483647;'; var buttonContainer = document.createElement('div'); buttonContainer.style.cssText = 'position:absolute;top:60px;left:-25px;width:217.5px;height:448.5px;z-index:2147483651;'; var rightButtonContainer = document.createElement('div'); rightButtonContainer.id = 'rightButtonContainer'; rightButtonContainer.style.cssText = 'position: absolute; top: 50px; right: 10px; width: 470px; height: 380px; z-index: 2147483649; overflow-y: auto; overflow-x: hidden; padding-right: 10px; box-sizing: border-box;'; var miniConsole = document.createElement('div'); miniConsole.id = 'miniConsole'; miniConsole.style.cssText = 'position: absolute; top: 40px; right: 5px; width: 470px; height: 380px; background-color: black; color: green; overflow-y: auto; padding: 10px; box-sizing: border-box; font-family: monospace; font-size: 14px; border: 2px solid gray; border-radius: 10px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); display: none; z-index: 20000000000;'; var injectionStatus = document.createElement("div"); injectionStatus.id = 'injectionStatus'; injectionStatus.style.cssText = "position:absolute;bottom:5px;right:5px;width:15px;height:15px;background:red;border-radius:50%;"; // Create UI document.head.appendChild(UI_link); UI_frame.appendChild(rightImage); UI_frame.appendChild(leftImage); UI_frame.appendChild(melonHubText); UI_frame.appendChild(versionText); UI_frame.appendChild(buttonContainer); UI_frame.appendChild(rightButtonContainer); UI_frame.appendChild(miniConsole); UI_frame.appendChild(injectionStatus); document.body.appendChild(UI_frame); // Intercept Sockets interceptSockets(); // Debug Console var logs = []; function addOutput() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var text = args.join(' '); var output = document.createElement('div'); output.textContent = "> ".concat(text); output.style.color = 'green'; output.style.marginBottom = '5px'; miniConsole.appendChild(output); miniConsole.scrollTop = miniConsole.scrollHeight; logs.push({ text: text, type: 'output' }); } function addError() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var text = args.join(' '); var output = document.createElement('div'); output.textContent = "> ".concat(text); output.style.color = 'red'; output.style.marginBottom = '5px'; miniConsole.appendChild(output); miniConsole.scrollTop = miniConsole.scrollHeight; logs.push({ text: text, type: 'error' }); } function reapplyLogs() { miniConsole.innerHTML = ''; logs.forEach(function (log) { if (log.type === 'output') { addOutput(log.text); } else if (log.type === 'error') { addError(log.text); } }); } // Dragging var isDragging = false; var offsetX = 0; var offsetY = 0; UI_frame.addEventListener('mousedown', function (e) { isDragging = true; offsetX = e.clientX - UI_frame.getBoundingClientRect().left; offsetY = e.clientY - UI_frame.getBoundingClientRect().top; UI_frame.style.cursor = 'grabbing'; }); document.addEventListener('mousemove', function (e) { if (isDragging) { var newLeft = "".concat(e.clientX - offsetX, "px"); var newTop = "".concat(e.clientY - offsetY, "px"); UI_frame.style.left = newLeft; UI_frame.style.top = newTop; leftImage.style.left = "".concat(e.clientX - offsetX, "px"); leftImage.style.top = "".concat(e.clientY - offsetY, "px"); } }); document.addEventListener('mouseup', function () { isDragging = false; UI_frame.style.cursor = 'default'; }); // Module Manager var ModuleManager = { modules: [ new Killaura(), new AutoClicker(), new AntiShake(), new Scaffold(), new Unban(), new Aimbot(), new Spider(), new Jesus() ], getModByName(name) { return this.modules.find(e => e.name === name); }, handleKeyPress(key) { this.modules.forEach(e => { if (e?.keybind?.toLowerCase?.() == key.toLowerCase()) { e.toggle(); } }); } }; // Button Functions var buttonStateTable = {}; function createRightButton(title, secondTitle, additionalInfo, module) { var btn = document.createElement("div"); btn.style.cssText = "\n position:relative;width:450px;height:75px;margin-bottom:10px;border-radius: 10px; right: -5px;\n transition:transform 0.2s;cursor:pointer;\n background:url('https://raw.githubusercontent.com/OfficiallyMelon/files-cdn/refs/heads/main/bloxd-ui/ButtonHolder.png') no-repeat center/cover;\n transform-origin: top;\n"; btn.onmouseenter = function () { return (btn.style.transform = "scaleY(1.05)"); }; btn.onmouseleave = function () { return (btn.style.transform = "scaleY(1)"); }; var titleContainer = document.createElement("div"); titleContainer.style.cssText = "position:absolute;top:5px;left:5px;display:flex;align-items:center;"; btn.appendChild(titleContainer); var titleText = document.createElement("div"); titleText.innerText = title; titleText.style.cssText = "font-family:Gabarito,sans-serif;font-size:16px;font-weight:500;color:white;"; titleContainer.appendChild(titleText); var secondTitleText = document.createElement("div"); secondTitleText.innerText = secondTitle; secondTitleText.style.cssText = "margin-left:5px;font-family:Gabarito,sans-serif;font-size:13px;font-weight:400;color:rgba(255, 255, 255, 0.56);"; titleContainer.appendChild(secondTitleText); var descriptionText = document.createElement("div"); descriptionText.innerText = additionalInfo; descriptionText.style.cssText = "position:absolute;top:50px;left:5px;font-family:Gabarito,sans-serif;font-size:14px;font-weight:400;color:rgba(255, 255, 255, 0.71);"; btn.appendChild(descriptionText); var redCircle = document.createElement("div"); redCircle.style.cssText = "position:absolute;bottom:5px;right:5px;width:15px;height:15px;background:red;border-radius:50%;"; btn.appendChild(redCircle); if (!(title in buttonStateTable)) { buttonStateTable[title] = false; } redCircle.style.backgroundColor = buttonStateTable[title] ? "green" : "red"; module.button = { setActive: (state) => { buttonStateTable[title] = state; redCircle.style.backgroundColor = state ? "green" : "red"; module.toggle(); } }; btn.onclick = function () { buttonStateTable[title] = !buttonStateTable[title]; SaveManager.saveObject('buttonStates', buttonStateTable); SaveManager.saveBoolean(title, buttonStateTable[title], true); redCircle.style.backgroundColor = buttonStateTable[title] ? "green" : "red"; addOutput("Toggled", title, "to", buttonStateTable[title] ? "on" : "off"); module.toggle(); }; Keybinds.forEach(function (keybind) { if (keybind.Module === title) { document.addEventListener('keydown', function (event) { if (event.key !== keybind.Keybind || (keybind.KeybindCode.length > 0 && event.code !== keybind.KeybindCode)) { return; } buttonStateTable[title] = !buttonStateTable[title]; SaveManager.saveObject('buttonStates', buttonStateTable); SaveManager.saveBoolean(title, buttonStateTable[title], true); redCircle.style.backgroundColor = buttonStateTable[title] ? "green" : "red"; addOutput("Toggled", title, "to", buttonStateTable[title] ? "on" : "off"); module.toggle(); }); } }); return btn; } function createRightThemeButton(title, secondTitle, additionalInfo, onClick) { var btn = document.createElement("div"); btn.style.cssText = "\n position:relative;width:450px;height:75px;margin-bottom:10px;border-radius: 10px; right: -5px;\n transition:transform 0.2s;cursor:pointer;\n background:url('https://raw.githubusercontent.com/OfficiallyMelon/files-cdn/refs/heads/main/bloxd-ui/ButtonHolder.png') no-repeat center/cover;\n transform-origin: top;\n"; btn.onmouseenter = function () { return (btn.style.transform = "scaleY(1.05)"); }; btn.onmouseleave = function () { return (btn.style.transform = "scaleY(1)"); }; var titleContainer = document.createElement("div"); titleContainer.style.cssText = "position:absolute;top:5px;left:5px;display:flex;align-items:center;"; btn.appendChild(titleContainer); var titleText = document.createElement("div"); titleText.innerText = title; titleText.style.cssText = "font-family:Gabarito,sans-serif;font-size:16px;font-weight:500;color:white;"; titleContainer.appendChild(titleText); var secondTitleText = document.createElement("div"); secondTitleText.innerText = secondTitle; secondTitleText.style.cssText = "margin-left:5px;font-family:Gabarito,sans-serif;font-size:13px;font-weight:400;color:rgba(255, 255, 255, 0.56);"; titleContainer.appendChild(secondTitleText); var descriptionText = document.createElement("div"); descriptionText.innerText = additionalInfo; descriptionText.style.cssText = "position:absolute;top:50px;left:5px;font-family:Gabarito,sans-serif;font-size:14px;font-weight:400;color:rgba(255, 255, 255, 0.71);"; btn.appendChild(descriptionText); btn.onclick = function () { buttonStateTable[title] = !buttonStateTable[title]; SaveManager.saveObject('buttonStates', buttonStateTable); onClick(); }; return btn; } function createKeybindButton(title, secondTitle, additionalInfo) { var btn = document.createElement("div"); btn.style.cssText = "\n position:relative;width:450px;height:75px;margin-bottom:10px;border-radius: 10px; right: -5px;\n transition:transform 0.2s;cursor:pointer;\n background:url('https://raw.githubusercontent.com/OfficiallyMelon/files-cdn/refs/heads/main/bloxd-ui/ButtonHolder.png') no-repeat center/cover;\n transform-origin: top;\n"; btn.onmouseenter = function () { return (btn.style.transform = "scaleY(1.05)"); }; btn.onmouseleave = function () { return (btn.style.transform = "scaleY(1)"); }; var titleContainer = document.createElement("div"); titleContainer.style.cssText = "position:absolute;top:5px;left:5px;display:flex;align-items:center;"; btn.appendChild(titleContainer); var titleText = document.createElement("div"); titleText.innerText = title; titleText.style.cssText = "font-family:Gabarito,sans-serif;font-size:16px;font-weight:500;color:white;"; titleContainer.appendChild(titleText); var secondTitleText = document.createElement("div"); secondTitleText.innerText = secondTitle; secondTitleText.style.cssText = "margin-left:5px;font-family:Gabarito,sans-serif;font-size:13px;font-weight:400;color:rgba(255, 255, 255, 0.56);"; titleContainer.appendChild(secondTitleText); var descriptionText = document.createElement("div"); descriptionText.innerText = additionalInfo; descriptionText.style.cssText = "position:absolute;top:50px;left:5px;font-family:Gabarito,sans-serif;font-size:14px;font-weight:400;color:rgba(255, 255, 255, 0.71);"; btn.appendChild(descriptionText); var currentKeybind = (Keybinds.find(function (bind) { return bind.Module === title; })?.Keybind) || "None"; var keybindBox = document.createElement("div"); keybindBox.innerText = currentKeybind; keybindBox.style.cssText = "\n position: absolute;\n bottom: 5px;\n right: 5px;\n width: 50px;\n height: 20px;\n background: rgba(0, 0, 0, 0.5);\n color: white;\n font-family: Gabarito, sans-serif;\n font-size: 12px;\n font-weight: 400;\n text-align: center;\n line-height: 20px;\n border-radius: 5px;\n cursor: pointer;\n"; btn.appendChild(keybindBox); btn.onclick = function () { document.addEventListener("keydown", function (event) { ChangeKeybind(title, event.key.toString(), event.code ? event.code.toString() : ""); keybindBox.innerText = event.key.toUpperCase(); }, { once: true }); }; keybindBox.onclick = function (event) { event.stopPropagation(); ChangeKeybind(title, "", ""); keybindBox.innerText = "None"; }; return btn; } // Save Manager var SaveManager = { saveBoolean(key, value, overwrite = true) { if (overwrite || localStorage.getItem(key) === null) { localStorage.setItem(key, JSON.stringify(value)); } }, importBoolean(key) { var value = localStorage.getItem(key); return value ? JSON.parse(value) : false; }, saveString(key, value) { localStorage.setItem(key, value); }, importString(key) { return localStorage.getItem(key); }, saveObject(key, value) { localStorage.setItem(key, JSON.stringify(value)); }, importObject(key) { var value = localStorage.getItem(key); return value ? JSON.parse(value) : null; } }; // Keybinds var Keybinds = loadKeybinds(); function loadKeybinds() { var savedKeybinds = localStorage.getItem('keybinds'); if (savedKeybinds) { return JSON.parse(savedKeybinds); } else { return [ { Module: "Killaura", Keybind: "", KeybindCode: "" }, { Module: "AutoClicker", Keybind: "", KeybindCode: "" }, { Module: "AntiShake", Keybind: "", KeybindCode: "" }, { Module: "Scaffold", Keybind: "", KeybindCode: "" }, { Module: "Account Gen", Keybind: "", KeybindCode: "" }, { Module: "Aimbot", Keybind: "", KeybindCode: "" }, { Module: "Spider", Keybind: "", KeybindCode: "" }, { Module: "Jesus", Keybind: "", KeybindCode: "" } ]; } } function ChangeKeybind(Module, Key, KeyCode) { for (var element of Keybinds) { if (element.Module === Module) { element.Keybind = Key !== null ? Key : element.Keybind; element.KeybindCode = KeyCode !== null ? KeyCode : element.KeybindCode; } } localStorage.setItem('keybinds', JSON.stringify(Keybinds)); } // Button Creation function createButton(button, index, buttonContainer) { var btn = document.createElement('img'); btn.src = button.src; btn.style.cssText = ` position: absolute; width: 104px; height: 23.3px; left: 50%; transform: translateX(-50%); top: ${15 + index * 35}px; z-index: 2147483652; transition: transform 0.2s, scale 0.2s; cursor: pointer; `; btn.addEventListener('mouseenter', function () { btn.style.transform = 'translateX(-50%) scale(1.05)'; }); btn.addEventListener('mouseleave', function () { btn.style.transform = 'translateX(-50%) scale(1)'; }); btn.addEventListener('click', button.onClick); buttonContainer.appendChild(btn); } function ButtonType(BTN_TYPE = "") { var rightButtonContainer = document.getElementById("rightButtonContainer"); if (!rightButtonContainer) return; while (rightButtonContainer.firstChild) { rightButtonContainer.removeChild(rightButtonContainer.firstChild); } if (BTN_TYPE === "Debug") { miniConsole.style.display = 'block'; } else { miniConsole.style.display = 'none'; } if (BTN_TYPE === "Themes") { themes.forEach(function (theme) { rightButtonContainer.appendChild(createRightThemeButton(theme.name, "(Theme)", theme.desc, function () { addOutput("Theme", theme.name, "is now active."); leftImage.src = theme.LeftImage; rightImage.src = theme.RightImage; SaveManager.saveString('activeTheme', theme.name); })); }); } if (BTN_TYPE === "Settings") { ModuleManager.modules.forEach(function (module) { rightButtonContainer.appendChild(createKeybindButton(module.name, "Keybind", "Change keybind")); }); } ModuleManager.modules.forEach(function (module) { if (module.type === BTN_TYPE || BTN_TYPE === "") { rightButtonContainer.appendChild(createRightButton(module.name, `(${module.type || 'Misc'})`, module.desc || '', module)); } }); } var themes = [ { name: "(Default) Melon Hub", LeftImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/LeftMelon.png?raw=true", RightImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/RightMelon.png?raw=true", desc: "The default Melon Hub theme." }, { name: "Netflix", LeftImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/LeftNetflix.png?raw=true", RightImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/RIghtNetflix.png?raw=true", desc: "Netflix theme including Red and Black colors, and Netflix logos." }, { name: "McDonalds", LeftImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/LeftMaccas.png?raw=true", RightImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/RightMaccas.png?raw=true", desc: "McDonalds theme with themed graphics." }, { name: "Minecraft", LeftImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/LeftMinecraft.png?raw=true", RightImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/RightMinecraft.png?raw=true", desc: "Minecraft theme including grass and dirt blocks." }, { name: "Hatsune Miku", LeftImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/LeftMiku.png?raw=true", RightImage: "https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/RightMiku.png?raw=true", desc: "Hatsune Miku themed interface." } ]; var buttonData = [ { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/AllBTN.png?raw=true', style: 'top:15px;', onClick: function () { return ButtonType(""); } }, { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/CombatBTN.png?raw=true', style: 'top:72px;', onClick: function () { return ButtonType("Combat"); } }, { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/MovementBTN.png?raw=true', style: 'top:119px;', onClick: function () { return ButtonType("Movement"); } }, { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/PlayerBTN.png?raw=true', style: 'top:166px;', onClick: function () { return ButtonType("Player"); } }, { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/ExploitBTN.png?raw=true', style: 'top:213px;', onClick: function () { return ButtonType("Exploit"); } }, { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/SettingsBTN.png?raw=true', style: 'top:354px;', onClick: function () { return ButtonType("Settings"); } }, { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/ThemesBTN.png?raw=true', style: 'top:401px;', onClick: function () { return ButtonType("Themes"); } }, { src: 'https://github.com/OfficiallyMelon/Melon-Hub/blob/main/Assets/bloxd.io/DebugBTN.png?raw=true', style: 'top:448px;', onClick: function () { return ButtonType("Debug"); } } ]; // Assign Types to Modules ModuleManager.modules.forEach(module => { if (["Killaura", "AutoClicker", "AntiShake", "Aimbot"].includes(module.name)) { module.type = "Combat"; } else if (["Spider", "Jesus"].includes(module.name)) { module.type = "Movement"; } else if (["Scaffold", "Account Gen"].includes(module.name)) { module.type = "Player"; } module.desc = { "Killaura": "Automatically aims and clicks to attack the nearest player", "AutoClicker": "Automatically clicks for you", "AntiShake": "Disables camera shake on hit (BROKEN)", "Scaffold": "Automatically places blocks under you (BROKEN)", "Account Gen": "Clears cookies to generate a new account", "Aimbot": "Automatically aims at the nearest player", "Spider": "Climb walls", "Jesus": "Walk on water and lava" }[module.name]; }); buttonData.forEach(function (button, index) { createButton(button, index, buttonContainer); }); ButtonType(""); window.ondragstart = function () { return false; }; // Load Saved Theme var savedTheme = SaveManager.importString('activeTheme'); if (savedTheme) { var theme = themes.find(function (t) { return t.name === savedTheme; }); if (theme) { leftImage.src = theme.LeftImage; rightImage.src = theme.RightImage; } } // Render Loop function renderLoop() { if (config.CurrentlyInjected && config.noaInstance) { ModuleManager.modules.forEach(module => { if (module.isEnabled) { module.onRender(); } }); } else { addError("Render Loop:", "Skipping module execution: injection not ready or noaInstance is null"); } requestAnimationFrame(renderLoop); } renderLoop(); document.addEventListener("keydown", t => { ModuleManager.handleKeyPress(t.key); }); /******/ })();