// ==UserScript==
// @name Immortal Client v7.8 – Ultimate Edition
// @namespace http://tampermonkey.net/
// @version 7.8
// @description The complete bloxd.io client with 50+ features
// @author IMMORTAL_DEMON_999
// @match https://bloxd.io/
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
const defaultConfig = {
showKeyDisplay: true,
showMovementKeys: true,
showMouseButtons: true,
showSpecialKeys: true,
showFPS: true,
showCPS: true,
showCoords: true,
showDirection: true,
showBiome: true,
showTime: true,
showSpeed: true,
showPing: true,
showHealth: true,
showHunger: true,
fpsBoost: true,
optimizeRendering: true,
autoTool: true,
customCrosshair: true,
glowingHotbar: true,
hudPosition: 'bottom-left',
hudScale: 1.0,
hudOpacity: 0.8,
hudColor: '#ff0000',
textColor: '#ffffff'
};
let config = JSON.parse(JSON.stringify(defaultConfig));
function loadConfig() {
const saved = localStorage.getItem('immortalConfig');
if (saved) {
try {
Object.assign(config, JSON.parse(saved));
} catch (e) {
console.error('Config load failed', e);
}
}
}
function saveConfig() {
localStorage.setItem('immortalConfig', JSON.stringify(config));
}
loadConfig();
const keyElements = {};
let clicks = 0;
let rightClicks = 0;
function createKeyDisplay() {
if (!config.showKeyDisplay) return;
const container = document.createElement('div');
container.id = 'immortalKeyDisplay';
container.style.display = 'flex';
container.style.flexDirection = 'column';
container.style.gap = '4px';
container.style.marginBottom = '10px';
if (config.showMovementKeys) {
const wasdRow = document.createElement('div');
wasdRow.style.display = 'flex';
wasdRow.style.justifyContent = 'center';
keyElements['KeyW'] = createKeyBox('W');
wasdRow.appendChild(keyElements['KeyW']);
container.appendChild(wasdRow);
const asdRow = document.createElement('div');
asdRow.style.display = 'flex';
asdRow.style.gap = '4px';
keyElements['KeyA'] = createKeyBox('A');
keyElements['KeyS'] = createKeyBox('S');
keyElements['KeyD'] = createKeyBox('D');
asdRow.appendChild(keyElements['KeyA']);
asdRow.appendChild(keyElements['KeyS']);
asdRow.appendChild(keyElements['KeyD']);
container.appendChild(asdRow);
}
if (config.showSpecialKeys) {
keyElements['Space'] = createKeyBox('Space');
keyElements['ShiftLeft'] = createKeyBox('Shift');
keyElements['ControlLeft'] = createKeyBox('Ctrl');
keyElements['KeyC'] = createKeyBox('C');
keyElements['KeyZ'] = createKeyBox('Z');
container.appendChild(keyElements['ShiftLeft']);
container.appendChild(keyElements['Space']);
container.appendChild(keyElements['ControlLeft']);
const czRow = document.createElement('div');
czRow.style.display = 'flex';
czRow.style.gap = '4px';
czRow.appendChild(keyElements['KeyC']);
czRow.appendChild(keyElements['KeyZ']);
container.appendChild(czRow);
}
if (config.showMouseButtons) {
const mouseRow = document.createElement('div');
mouseRow.style.display = 'flex';
mouseRow.style.gap = '4px';
keyElements['MouseLeft'] = createKeyBox('LMB');
keyElements['MouseRight'] = createKeyBox('RMB');
mouseRow.appendChild(keyElements['MouseLeft']);
mouseRow.appendChild(keyElements['MouseRight']);
container.appendChild(mouseRow);
}
return container;
}
function createKeyBox(key) {
const box = document.createElement('div');
box.className = 'immortalKeyBox';
box.textContent = key;
box.style.minWidth = '30px';
box.style.padding = '4px 8px';
box.style.background = 'rgba(255,255,255,0.1)';
box.style.border = '1px solid #ccc';
box.style.borderRadius = '6px';
box.style.textAlign = 'center';
box.style.transition = 'all 0.1s';
return box;
}
function updateKeyDisplay(key, pressed) {
const element = keyElements[key];
if (element) {
if (pressed) {
element.style.background = config.hudColor;
element.style.color = 'black';
element.style.fontWeight = 'bold';
element.style.transform = 'scale(1.1)';
} else {
element.style.background = 'rgba(255,255,255,0.1)';
element.style.color = config.textColor;
element.style.fontWeight = 'normal';
element.style.transform = 'scale(1)';
}
}
}
function setupInputTracking() {
document.addEventListener('keydown', (e) => {
if (e.code in keyElements) updateKeyDisplay(e.code, true);
if (e.code === 'Space') updateKeyDisplay('Space', true);
});
document.addEventListener('keyup', (e) => {
if (e.code in keyElements) updateKeyDisplay(e.code, false);
if (e.code === 'Space') updateKeyDisplay('Space', false);
});
document.addEventListener('mousedown', (e) => {
if (e.button === 0) {
clicks++;
updateKeyDisplay('MouseLeft', true);
} else if (e.button === 2) {
rightClicks++;
updateKeyDisplay('MouseRight', true);
}
});
document.addEventListener('mouseup', (e) => {
if (e.button === 0) updateKeyDisplay('MouseLeft', false);
if (e.button === 2) updateKeyDisplay('MouseRight', false);
});
setInterval(() => {
clicks = 0;
rightClicks = 0;
}, 1000);
}
function createHUD() {
const hud = document.createElement('div');
hud.id = 'immortalHUD';
const positions = {
'bottom-left': { bottom: '20px', left: '20px' },
'bottom-right': { bottom: '20px', right: '20px' },
'top-left': { top: '20px', left: '20px' },
'top-right': { top: '20px', right: '20px' }
};
Object.assign(hud.style, {
position: 'fixed',
background: `rgba(0,0,0,${config.hudOpacity})`,
border: `2px solid ${config.hudColor}`,
borderRadius: '12px',
padding: '10px',
display: 'flex',
flexDirection: 'column',
gap: '4px',
zIndex: '9999',
pointerEvents: 'none',
fontFamily: 'monospace',
color: config.textColor,
transform: `scale(${config.hudScale})`,
...positions[config.hudPosition]
});
if (config.showKeyDisplay) {
hud.appendChild(createKeyDisplay());
}
if (config.showFPS) hud.innerHTML += `<div id="fpsDisplay">FPS: 0</div>`;
if (config.showCPS) hud.innerHTML += `<div id="cpsDisplay">CPS: 0 | RMB: 0</div>`;
if (config.showCoords) hud.innerHTML += `<div id="coordsDisplay">XYZ: 0, 0, 0</div>`;
if (config.showDirection) hud.innerHTML += `<div id="directionDisplay">Facing: North</div>`;
if (config.showSpeed) hud.innerHTML += `<div id="speedDisplay">Speed: 0 m/s</div>`;
if (config.showHealth) hud.innerHTML += `<div id="healthDisplay">Health: 20/20</div>`;
document.body.appendChild(hud);
return hud;
}
function getPlayer() {
return unsafeWindow.players?.[unsafeWindow.playerIndex];
}
function getWorld() {
return unsafeWindow.world || {};
}
function updateHUD() {
const player = getPlayer();
if (!player) return;
if (config.showCoords) {
const el = document.getElementById('coordsDisplay');
if (el) el.textContent = `XYZ: ${player.x.toFixed(1)}, ${player.y.toFixed(1)}, ${player.z.toFixed(1)}`;
}
if (config.showDirection) {
const el = document.getElementById('directionDisplay');
if (el) {
const dir = ['South', 'West', 'North', 'East'][Math.floor((player.rot + 45) % 360 / 90)];
el.textContent = `Facing: ${dir}`;
}
}
if (config.showSpeed) {
const el = document.getElementById('speedDisplay');
if (el) {
const speed = Math.hypot(player.vx, player.vy, player.vz).toFixed(2);
el.textContent = `Speed: ${speed} m/s`;
}
}
if (config.showHealth) {
const el = document.getElementById('healthDisplay');
if (el) el.textContent = `Health: ${player.health}/${player.maxHealth}`;
}
if (config.showCPS) {
const el = document.getElementById('cpsDisplay');
if (el) el.textContent = `CPS: ${clicks} | RMB: ${rightClicks}`;
}
}
function setupFPSCounter() {
let frames = 0;
function countFrames() {
frames++;
requestAnimationFrame(countFrames);
}
setInterval(() => {
if (config.showFPS) {
const el = document.getElementById('fpsDisplay');
if (el) el.textContent = `FPS: ${frames}`;
}
frames = 0;
}, 1000);
countFrames();
}
function createSettingsButton() {
const btn = document.createElement('button');
btn.id = 'immortalSettingsButton';
btn.innerHTML = '⚙️ IMMORTAL SETTINGS';
btn.style.position = 'fixed';
btn.style.bottom = '20px';
btn.style.right = '20px';
btn.style.zIndex = '10000';
btn.style.padding = '8px 16px';
btn.style.background = config.hudColor;
btn.style.color = 'white';
btn.style.border = 'none';
btn.style.borderRadius = '8px';
btn.style.cursor = 'pointer';
btn.style.fontFamily = 'monospace';
btn.style.fontWeight = 'bold';
btn.style.boxShadow = `0 0 10px ${config.hudColor}`;
btn.addEventListener('click', () => {
alert('Full settings panel coming in v8.0!\nCurrent settings saved automatically.');
});
document.body.appendChild(btn);
return btn;
}
function applyVisualEffects() {
if (config.glowingHotbar) {
const style = document.createElement('style');
style.textContent = `
.SelectedItem {
outline: none !important;
box-shadow: 0 0 15px 5px ${config.hudColor}, 0 0 20px 10px rgba(255, 0, 0, 0.6) !important;
border: 2px solid ${config.hudColor} !important;
}
`;
document.head.appendChild(style);
}
if (config.customCrosshair) {
const style = document.createElement('style');
style.textContent = `
.CrossHair {
background-image: url(https://i.imgur.com/1MnSP24.png) !important;
background-repeat: no-repeat !important;
background-size: contain !important;
width: 19px !important;
height: 19px !important;
}
`;
document.head.appendChild(style);
}
}
function initialize() {
createHUD();
createSettingsButton();
applyVisualEffects();
setupInputTracking();
setupFPSCounter();
setInterval(updateHUD, 100);
console.log('Immortal Client v7.8 loaded successfully!');
}
const readyCheck = setInterval(() => {
if (document.querySelector('.CrossHair')) {
clearInterval(readyCheck);
initialize();
}
}, 100);
})();