// ==UserScript==
// @name Melon Hub (bloxd.io)
// @namespace https://github.com/OfficiallyMelon/Melon-Hub
// @version v1.0
// @description hack client for bloxd.io, open source on github.
// @author melon
// @match https://bloxd.io*
// @icon https://bloxd.io*
// @grant GM_getValue
// @grant GM_setValue
// @grant unsafeWindow
// @run-at document-start
// ==/UserScript==
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ // The require scope
/******/ var __webpack_require__ = {};
/******/
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ // define getter functions for harmony exports
/******/ __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__ = {};
// EXPORTS
__webpack_require__.d(__webpack_exports__, {
n9: () => (/* binding */ addOutput),
oP: () => (/* binding */ injectionStatus)
});
// UNUSED EXPORTS: addError, reapplyLogs
;// ./Inject/Inject.ts
var config = {
coordinates: [null, null, null],
methods: {},
CurrentlyInjected: false,
freecamPosition: [0, 0, 0]
};
// Functions
function hookObjectAssign(target, prop, handler) {
var originalMethod = target[prop];
target[prop] = new Proxy(originalMethod, {
apply: function (originalFunc, thisArg, argsList) {
handler.apply(void 0, argsList);
return Reflect.apply(originalFunc, thisArg, argsList);
}
});
}
// Hook Noa (thanks blackhole for injection method, yay!)
hookObjectAssign(Object, 'assign', function () {
var params = [];
for (var _i = 0; _i < arguments.length; _i++) {
params[_i] = arguments[_i];
}
var hasSwingTime = false;
try {
if (params[2].swingDuration !== undefined) {
hasSwingTime = true;
}
}
catch (err) {
// Property swingDuration not found
}
var hasIdentifier = false;
try {
if (params[1].__id !== undefined) {
hasIdentifier = true;
}
}
catch (err) {
// Property __id not found
}
if (hasSwingTime && hasIdentifier && params.length === 4 && params[2].swingDuration === 200 && params[1].__id === 1) {
config.hookedObject = params[0];
setTimeout(function () {
config.babylonEngine = window.BABYLON;
config.noaInstance = config.hookedObject.heldItem.noa;
config.CurrentlyInjected = true;
addOutput("Injection State:", config.noaInstance ? "Successfully hooked noa!" : "Unsuccessful, try reloading the page.");
console.log("Successfully hooked noa!", config.noaInstance);
window.noa = config.noaInstance;
config.genericPlayerState = config.noaInstance.ents._storage.genericLifeForm.hash[config.noaInstance.playerEntity];
setTimeout(function () {
injectionStatus.style.cssText =
"position:absolute;bottom:5px;right:5px;width:15px;height:15px;background:green;border-radius:50%;";
}, 100);
}, 1);
}
});
;// ./Modules/Packets.ts
var _a;
// Declare hookedSend globally
var hookedSend = null;
var Context = null;
function interceptSockets() {
(function () {
var originalDefineProperty = Object.defineProperty;
// Hooking into the send property of window
Object.defineProperty = function (obj, prop, descriptor) {
try {
if (prop === "send" && typeof descriptor.value === "function") {
console.log("[HOOK] Defining property: send");
hookedSend = descriptor.value;
descriptor.value = function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
//console.log(`[HOOK] Intercepted send() call with arguments:`, args);
if (hookedSend) {
Context = this;
return hookedSend.apply(this, args);
}
else {
console.error("[HOOK ERROR] hookedSend is null");
}
};
}
}
catch (error) {
console.error("[HOOK ERROR] Failed to hook send:", error);
}
return originalDefineProperty.apply(this, arguments);
};
// Attach a getter to get hookedSend globally if needed
Object.defineProperty(window, "getHookedSend", {
value: function () { return hookedSend; },
writable: false,
configurable: false
});
})();
}
// function PacketConverter(Y) {
// const P = new Array(128).fill(0).map((_, index) => index);
// const X = new s.e("$(Y)$(e.m)");
// return function(Y: any[]) {
// for (let P = 0; P < Y.length; P++) {
// const q = P + Math.floor(X.next() * (Y.length - P));
// [Y[P], Y[q]] = [Y[q], Y[P]];
// }
// return Y;
// };
// }
var PacketType = {
PLACE_BLOCK: 114,
};
var packets = (_a = {},
_a[PacketType.PLACE_BLOCK] = {
pos: null,
toBlock: null,
checker: null
},
_a);
function sendPacket(packetType, data) {
if (hookedSend && Context) {
hookedSend.apply(Context, [packetType, data]);
}
else {
console.error("[HOOK ERROR] hookedSend is null");
}
}
;// ./Modules/Modules.ts
// Modules.ts
var ExecutionFunctions = /** @class */ (function () {
function ExecutionFunctions() {
}
ExecutionFunctions.prototype.simulateLeftClick = function (element) {
var mouseDownEvent = new MouseEvent("mousedown", {
button: 0,
bubbles: true,
cancelable: true
});
element.dispatchEvent(mouseDownEvent);
var mouseUpEvent = new MouseEvent("mouseup", {
button: 0,
bubbles: true,
cancelable: true
});
element.dispatchEvent(mouseUpEvent);
};
ExecutionFunctions.prototype.calculateDistance = function (pos1, pos2) {
var dx = pos2.x - pos1.x;
var dy = pos2.y - pos1.y;
var dz = pos2.z - pos1.z;
return Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2) + Math.pow(dz, 2));
};
ExecutionFunctions.prototype.simulateRightClick = function (element) {
var mouseDownEvent = new MouseEvent("mousedown", {
button: 2,
bubbles: true,
cancelable: true
});
element.dispatchEvent(mouseDownEvent);
var mouseUpEvent = new MouseEvent("mouseup", {
button: 2,
bubbles: true,
cancelable: true
});
element.dispatchEvent(mouseUpEvent);
};
ExecutionFunctions.prototype.distanceBetween = function (point1, point2) {
var dx = point2[0] - point1[0];
var dy = point2[1] - point1[1];
var dz = point2[2] - point1[2];
return dx * dx + dy * dy + dz * dz;
};
ExecutionFunctions.prototype.setDir = function (facing) {
var heading = Math.atan2(facing[0], facing[2]);
var pitch = Math.asin(-facing[1]);
config.noaInstance.camera.heading = heading;
config.noaInstance.camera.pitch = pitch;
//cam(heading, pitch);
};
ExecutionFunctions.prototype.distanceBetweenSqrt = function (point1, point2) {
return Math.sqrt(this.distanceBetween(point1, point2));
};
ExecutionFunctions.prototype.ChangeCrouchSpeed = function (speed) {
config.noaInstance.serverSettings.crouchingSpeed = speed;
};
ExecutionFunctions.prototype.ChangeWalkSpeed = function (speed) {
config.noaInstance.serverSettings.walkingSpeed = speed;
};
ExecutionFunctions.prototype.InstantRespawn = function () {
var _a;
if (config.noaInstance) {
config.noaInstance.serverSettings.secsToRespawn = 0;
(_a = document.querySelector(".NewButton.BlueButton.RespawnButton")) === null || _a === void 0 ? void 0 : _a.click();
}
};
ExecutionFunctions.prototype.normalizeVector = function (vector) {
var magnitude = vector[0] * vector[0] + vector[1] * vector[1] + vector[2] * vector[2];
if (magnitude > 0) {
var invMagnitude = 1 / Math.sqrt(magnitude);
return [vector[0] * invMagnitude, vector[1] * invMagnitude, vector[2] * invMagnitude];
}
return vector;
};
ExecutionFunctions.prototype.killaura = function (range) {
var targets = getAttackablePlayers();
if (targets.length === 0) {
addOutput("No targets found");
return;
}
var nearestTarget = getNearestTarget(targets);
var playerPosition = config.noaInstance.ents.getPosition(config.noaInstance.playerEntity);
var targetPosition = config.noaInstance.ents.getPositionData(nearestTarget).position;
if (Utilities.distanceBetweenSqrt(playerPosition, targetPosition) <= 5) {
var originalDirection = config.noaInstance.camera._dirVector;
config.noaInstance.camera._dirVector = Utilities.normalizeVector([
targetPosition[0] - playerPosition[0],
targetPosition[1] - playerPosition[1],
targetPosition[2] - playerPosition[2]
]);
var canvasElement = document.querySelector("#noa-canvas");
if (canvasElement) {
this.simulateLeftClick(canvasElement);
}
config.noaInstance.camera._dirVector = originalDirection;
}
};
ExecutionFunctions.prototype.removeAllCookies = function () {
var cookies = document.cookie.split(";");
for (var _i = 0, cookies_1 = cookies; _i < cookies_1.length; _i++) {
var cookie = cookies_1[_i];
var eqPos = cookie.indexOf("=");
var name_1 = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name_1 + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/";
}
};
return ExecutionFunctions;
}());
function getAllPlayers() {
var _a = config.noaInstance, playerNames = _a.playerNames, playerEntity = _a.playerEntity, ents = _a.ents;
var playerIds = [];
for (var key in playerNames) {
if (playerNames.hasOwnProperty(key)) {
var id = Number(key);
if (id !== playerEntity && ents.hasComponent(id, "position") && ents.hasComponent(id, 'genericLifeformState') && ents.genericLifeformState(id).isAlive) {
playerIds.push(id);
}
}
}
return playerIds;
}
function getAttackablePlayers() {
return getAllPlayers().filter(function (id) { var _a; return (_a = config.noaInstance.otherPlayerSettings[config.noaInstance.playerEntity][id]) === null || _a === void 0 ? void 0 : _a.canAttack; });
}
function getNearestTarget(targets) {
var playerPosition = config.noaInstance.ents.getPosition(config.noaInstance.playerEntity);
var nearestTarget = undefined;
var nearestDistance = Infinity;
for (var _i = 0, targets_1 = targets; _i < targets_1.length; _i++) {
var target = targets_1[_i];
var distance = Utilities.distanceBetween(playerPosition, config.noaInstance.ents.getPosition(target));
if (nearestTarget === undefined || distance < nearestDistance) {
nearestTarget = target;
nearestDistance = distance;
}
}
return nearestTarget;
}
var AutoTrigger = false;
var Utilities = new ExecutionFunctions();
var Exploits = [
{
type: "Combat",
title: "Kill Aura",
desc: "Detects and attacks nearby entities",
pertick: function (state) {
if (state) {
var cDist_1 = 3.5;
var cPlayer_1 = null;
config.noaInstance.entities._storage.position.list.forEach(function (p) {
if (typeof p.__id !== "number" && p.__id != 1 && p.__id !== config.noaInstance.serverPlayerEntity) {
var lifeformState = config.noaInstance.entities.getGenericLifeformState(p.__id);
if (lifeformState && lifeformState.isAlive) {
var myPos = config.noaInstance.entities.getPosition(1);
var enemyPos = p.position;
var myPosObj = {
x: myPos[0],
y: myPos[1],
z: myPos[2]
};
var enemyPosObj = {
x: enemyPos[0],
y: enemyPos[1],
z: enemyPos[2]
};
if (myPos[0] === enemyPos[0] && myPos[1] === enemyPos[1] && myPos[2] === enemyPos[2]) {
return;
}
var distance = Utilities.calculateDistance(myPosObj, enemyPosObj);
if (distance < cDist_1) {
cPlayer_1 = enemyPos;
}
}
}
});
if (cPlayer_1) {
var myPos = config.noaInstance.entities.getPosition(1);
var dirVec = [cPlayer_1[0] - myPos[0], cPlayer_1[1] - myPos[1], cPlayer_1[2] - myPos[2]];
var normVec = Utilities.normalizeVector(dirVec);
Utilities.setDir(normVec);
var element = document.querySelector("#noa-canvas");
if (element) {
element.dispatchEvent(new MouseEvent("mousedown", { button: 0, bubbles: true, cancelable: true }));
element.dispatchEvent(new MouseEvent("mouseup", { button: 0, bubbles: true, cancelable: true }));
}
}
}
},
},
{
type: "Combat",
title: "Auto Clicker",
desc: "Automatically clicks for you",
pertick: function () {
if (config.CurrentlyInjected && config.noaInstance) {
var element = document.querySelector("#noa-canvas");
if (element) {
element.dispatchEvent(new MouseEvent("mousedown", { button: 0, bubbles: true, cancelable: true }));
element.dispatchEvent(new MouseEvent("mouseup", { button: 0, bubbles: true, cancelable: true }));
}
}
},
},
{
type: "Combat",
title: "Anti Shake",
desc: "Disables camera shake on hit",
pertick: function (status) {
if (status) {
if (config.CurrentlyInjected && config.noaInstance) {
config.noaInstance.entities.getState(config.noaInstance.playerEntity, "cameraShake").shakePower = 0;
}
}
}
},
{
type: "Player",
title: "Scaffold",
desc: "Automatically places blocks under you. (BROKEN)",
pertick: function (status) {
if (status) {
if (config.CurrentlyInjected && config.noaInstance) {
var player = config.noaInstance.playerEntity;
var position = config.noaInstance.ents.getPosition(player);
var block = config.noaInstance.getBlock(position[0], position[1] - 1, position[2]);
var f = config.noaInstance.ents.getInventoryState(config.noaInstance.playerEntity).selectedItem;
var ObjID = f && ("CubeBlock" === f.typeObj.type || "TwoDBlock" === f.typeObj.type || "SlabBlock" === f.typeObj.type) ? f.typeObj.id : null;
if (block === 0) {
var roundedPosition = [
Math.floor(position[0]),
Math.floor(position[1] - 1),
Math.floor(position[2])
];
addOutput("Placing block at", roundedPosition.toString());
addOutput("Block ID", block);
if (ObjID) {
sendPacket(PacketType.PLACE_BLOCK, {
pos: roundedPosition,
toBlock: ObjID,
checker: ''
});
config.noaInstance.setBlock(roundedPosition[0], roundedPosition[1], roundedPosition[2], ObjID);
}
}
}
}
},
},
{
type: "Player",
title: "Instant Respawn",
desc: "Instantly respawns you when you die.",
pertick: function () {
if (config.CurrentlyInjected && config.noaInstance) {
Utilities.InstantRespawn();
}
},
},
{
type: "Combat",
title: "Auto Trigger",
desc: "Auto trigger for Aimbot (BROKEN)",
pertick: function (state) {
AutoTrigger = state;
}
},
{
type: "Player",
title: "Account Gen",
desc: "Generates accounts for you to use. (Requires Refresh)",
pertick: function () {
Utilities.removeAllCookies();
location.reload();
},
},
{
type: "Combat",
title: "Aimbot",
desc: "Automatically aims at the nearest player.",
pertick: function (state) {
function normalizeVector(vector) {
var magnitude = Math.sqrt(Math.pow(vector[0], 2) + Math.pow(vector[1], 2) + Math.pow(vector[2], 2));
if (magnitude === 0) {
return [0, 0, 0];
}
return vector.map(function (component) { return component / magnitude; });
}
function setDir(facing) {
var heading = Math.atan2(facing[0], facing[2]);
var pitch = Math.asin(-facing[1]);
config.noaInstance.camera.heading = heading;
config.noaInstance.camera.pitch = pitch;
//cam(heading, pitch);
}
function calculateDistance(pos1, pos2) {
var dx = pos2.x - pos1.x;
var dy = pos2.y - pos1.y;
var dz = pos2.z - pos1.z;
return Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2) + Math.pow(dz, 2));
}
if (!state) {
return;
}
var cPlayer = null;
var cDist = Infinity;
config.noaInstance.entities._storage.position.list.forEach(function (p) {
if (typeof p.__id !== "number" && p.__id != 1 && p.__id !== config.noaInstance.serverPlayerEntity) {
var lifeformState = config.noaInstance.entities.getGenericLifeformState(p.__id);
if (lifeformState && lifeformState.isAlive) {
var myPos = config.noaInstance.entities.getPosition(1);
var enemyPos = p.position;
var myPosObj = {
x: myPos[0],
y: myPos[1],
z: myPos[2]
};
var enemyPosObj = {
x: enemyPos[0],
y: enemyPos[1],
z: enemyPos[2]
};
if (myPos[0] === enemyPos[0] && myPos[1] === enemyPos[1] && myPos[2] === enemyPos[2]) {
return;
}
var distance = calculateDistance(myPosObj, enemyPosObj);
if (distance < cDist) {
cDist = distance;
cPlayer = enemyPos;
}
}
}
});
if (cPlayer && cDist <= 20) {
var myPos = config.noaInstance.entities.getPosition(1);
var dirVec = [cPlayer[0] - myPos[0], cPlayer[1] - myPos[1], cPlayer[2] - myPos[2]];
var normVec = normalizeVector(dirVec);
setDir(normVec);
if (AutoTrigger) {
config.noaInstance.ents.getHeldItem(config.noaInstance.playerEntity).upFirePrimary();
}
}
}
},
{
type: "Movement",
title: "Auto Sprint",
desc: "Automatically sprints when moving.",
pertick: function () {
if (config.CurrentlyInjected && config.noaInstance) {
Utilities.ChangeWalkSpeed(config.noaInstance.serverSettings.runningSpeed);
}
},
},
{
type: "Movement",
title: "Fast Crouch",
desc: "Increase crouching speed.",
pertick: function (status) {
if (status) {
if (config.CurrentlyInjected && config.noaInstance) {
Utilities.ChangeCrouchSpeed(config.noaInstance.serverSettings.runningSpeed);
}
}
else {
if (config.CurrentlyInjected && config.noaInstance) {
Utilities.ChangeCrouchSpeed(2);
}
}
},
},
{
type: "Movement",
title: "Auto Speed",
desc: "Increase walking speed.",
pertick: function (status) {
if (status) {
if (config.CurrentlyInjected && config.noaInstance) {
Utilities.ChangeWalkSpeed(7.4);
}
}
else {
if (config.CurrentlyInjected && config.noaInstance) {
Utilities.ChangeWalkSpeed(4.5);
}
}
},
},
{
type: "Movement",
title: "Infinite Jump",
desc: "Jump infinitely. (only works going up blocks)",
pertick: function (status) {
if (status) {
if (config.CurrentlyInjected && config.noaInstance) {
config.noaInstance.serverSettings.airJumpCount = Infinity;
}
}
else {
if (config.CurrentlyInjected && config.noaInstance) {
config.noaInstance.serverSettings.airJumpCount = 0;
}
}
},
},
{
type: "Exploit",
title: "Spider (VERY EXPERIMENTAL)",
desc: "Climb walls.",
pertick: function (status) {
if (status) {
if (config.CurrentlyInjected && config.noaInstance) {
var noa = config.noaInstance;
var player = noa.playerEntity;
var position = noa.ents.getPosition(player); // [x, y, z]
var x = position[0];
var y = position[1];
var z = position[2];
var blockInFront = noa.getBlock(x, y, z + 1);
if (blockInFront !== 0) {
noa.ents.getPhysicsBody(player).applyImpulse([0, noa.serverSettings.jumpAmount * 0.03, 0]);
}
}
}
},
}
];
;// ./Saves/Save.ts
var Save_SaveManager = /** @class */ (function () {
function SaveManager() {
}
SaveManager.saveBoolean = function (key, value, overwrite) {
if (overwrite === void 0) { overwrite = true; }
if (overwrite || localStorage.getItem(key) === null) {
localStorage.setItem(key, JSON.stringify(value));
}
};
SaveManager.importBoolean = function (key) {
var value = localStorage.getItem(key);
return value ? JSON.parse(value) : false;
};
SaveManager.saveString = function (key, value) {
localStorage.setItem(key, value);
};
SaveManager.importString = function (key) {
return localStorage.getItem(key);
};
SaveManager.saveObject = function (key, value) {
localStorage.setItem(key, JSON.stringify(value));
};
SaveManager.importObject = function (key) {
var value = localStorage.getItem(key);
return value ? JSON.parse(value) : null;
};
return SaveManager;
}());
;// ./UI/Keybinds.ts
var loadKeybinds = function () {
var savedKeybinds = localStorage.getItem('keybinds');
if (savedKeybinds) {
return JSON.parse(savedKeybinds);
}
else {
return [
{
Module: "Kill Aura",
Keybind: "",
KeybindCode: "",
},
{
Module: "Aimbot",
Keybind: "",
KeybindCode: "",
},
{
Module: "Auto Clicker",
Keybind: "",
KeybindCode: "",
},
{
Module: "Scaffold",
Keybind: "",
KeybindCode: "",
},
{
Module: "Auto Trigger",
Keybind: "",
KeybindCode: "",
},
{
Module: "Auto Sprint",
Keybind: "",
KeybindCode: "",
},
{
Module: "Fast Crouch",
Keybind: "",
KeybindCode: "",
},
{
Module: "Infinite Jump",
Keybind: "",
KeybindCode: "",
},
{
Module: "Auto Speed",
Keybind: "",
KeybindCode: "",
},
];
}
};
var Keybinds = loadKeybinds();
function ChangeKeybind(Module, Key, KeyCode) {
for (var _i = 0, Keybinds_1 = Keybinds; _i < Keybinds_1.length; _i++) {
var element = Keybinds_1[_i];
if (element.Module === Module) {
element.Keybind = Key !== null ? Key : element.Keybind;
element.KeybindCode = KeyCode !== null ? KeyCode : element.KeybindCode;
}
}
localStorage.setItem('keybinds', JSON.stringify(Keybinds));
}
;// ./UI/UI.ts
// Imports
// UI
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';
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); // frame
UI_frame.appendChild(rightImage); // frame
UI_frame.appendChild(leftImage); // frame
UI_frame.appendChild(melonHubText); // title
UI_frame.appendChild(versionText); // version
UI_frame.appendChild(buttonContainer); // buttons
UI_frame.appendChild(rightButtonContainer); // right buttons
UI_frame.appendChild(miniConsole); // debug console
UI_frame.appendChild(injectionStatus); // injection status
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';
});
// Functions
var buttonStateTable = {};
function createRightButton(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);
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";
var intervalId;
Keybinds.forEach(function (keybind) {
if (keybind.Module === title) {
console.log("keybind");
document.addEventListener('keydown', function (event) {
console.log(event.key, keybind.Keybind);
if (event.key !== keybind.Keybind) {
return;
}
if (keybind.KeybindCode.length > 0 && event.code !== keybind.KeybindCode) {
return;
}
console.log(keybind.Keybind);
buttonStateTable[title] = !buttonStateTable[title];
redCircle.style.backgroundColor = buttonStateTable[title] ? "green" : "red";
if (intervalId === undefined) {
intervalId = window.setInterval(function () {
onClick(buttonStateTable[title]);
}, 1);
}
else {
window.clearInterval(intervalId);
intervalId = undefined;
}
addOutput("Toggled", title, "to", buttonStateTable[title] ? "on" : "off");
});
}
});
btn.onclick = function () {
buttonStateTable[title] = !buttonStateTable[title];
Save_SaveManager.saveObject('buttonStates', buttonStateTable);
if (!Save_SaveManager.importBoolean(title)) {
Save_SaveManager.saveBoolean(title, buttonStateTable[title], true);
}
redCircle.style.backgroundColor = buttonStateTable[title] ? "green" : "red";
addOutput("Toggled", title, "to", buttonStateTable[title] ? "on" : "off");
if (title === "Account Gen") {
if (intervalId === undefined) {
onClick(buttonStateTable[title]);
intervalId = window.setTimeout(function () { }, 1);
}
}
else {
if (intervalId === undefined) {
if (config.noaInstance) {
intervalId = window.setInterval(function () {
onClick(buttonStateTable[title]);
}, 1);
}
}
else {
window.clearInterval(intervalId);
intervalId = undefined;
}
}
};
return btn;
}
function createRightSliderButton(title, secondTitle, additionalInfo, onClick, minSliderValue, maxSliderValue) {
var btn = document.createElement("div");
btn.style.cssText = "\n position:relative;width:450px;height:100px;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 slider = document.createElement("input");
slider.type = "range";
slider.min = minSliderValue.toString();
slider.max = maxSliderValue.toString();
slider.value = minSliderValue.toString();
slider.style.cssText = "position:absolute;bottom:5px;right:5px;width:200px;";
btn.appendChild(slider);
slider.oninput = function () {
var newSliderValue = parseInt(slider.value, 10);
onClick(newSliderValue);
};
btn.onclick = function () {
buttonStateTable[title] = !buttonStateTable[title];
SaveManager.saveObject('buttonStates', buttonStateTable);
var newSliderValue = parseInt(slider.value, 10);
onClick(newSliderValue);
};
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);
if (!(title in buttonStateTable)) {
buttonStateTable[title] = false;
}
btn.onclick = function () {
buttonStateTable[title] = !buttonStateTable[title];
Save_SaveManager.saveObject('buttonStates', buttonStateTable);
onClick();
};
return btn;
}
function createKeybindButton(title, secondTitle, additionalInfo) {
var _a;
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 = ((_a = Keybinds.find(function (bind) { return bind.Module === title; })) === null || _a === void 0 ? void 0 : _a.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;
}
function createButton(button, index, buttonContainer) {
var btn = document.createElement('img');
btn.src = button.src;
btn.style.cssText = "\n position: absolute;\n width: 104px;\n height: 23.3px;\n left: 50%;\n transform: translateX(-50%);\n top: ".concat(15 + index * 35, "px;\n z-index: 2147483652;\n transition: transform 0.2s, scale 0.2s;\n cursor: pointer;\n ");
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) {
if (BTN_TYPE === void 0) { BTN_TYPE = ""; }
console.log("active" + 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;
Save_SaveManager.saveString('activeTheme', theme.name);
}));
});
}
if (BTN_TYPE === "Settings") {
Exploits.forEach(function (exploit) {
rightButtonContainer.appendChild(createKeybindButton(exploit.title, "Keybind", "Change keybind"));
});
}
Exploits.forEach(function (exploit) {
if (exploit.type === BTN_TYPE || BTN_TYPE === "") {
rightButtonContainer.appendChild(createRightButton(exploit.title, "(".concat(exploit.type, ")"), exploit.desc, exploit.pertick));
}
});
}
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 Netlix 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: "I ran out of theme ideas lmao"
},
{
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: "I'm thinking Miku, Miku, oo-ee-oo"
}
];
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/OtherBTN.png?raw=true',
style: 'top:260px;',
onClick: function () { return ButtonType("Other"); },
},
{
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:401px;',
onClick: function () { return ButtonType("Debug"); },
},
];
buttonData.forEach(function (button, index) {
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: ".concat(15 + index * 35, "px; z-index: 2147483652; transition: transform 0.2s, scale 0.2s; cursor: pointer;");
btn.addEventListener('mouseenter', function () { return btn.style.transform = 'translateX(-50%) scale(1.05)'; });
btn.addEventListener('mouseleave', function () { return btn.style.transform = 'translateX(-50%) scale(1)'; });
btn.addEventListener('click', button.onClick);
buttonContainer.appendChild(btn);
});
ButtonType("");
window.ondragstart = function () { return false; };
// Save/Import
var savedTheme = Save_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;
}
}
/******/ })()
;