BloxdCyphrNX

Enhances Bloxd.io: toggle Comic Sans, rainbow chat, FPS boost, and ad-blocking.

// ==UserScript==
// @name         BloxdCyphrNX
// @namespace    http://tampermonkey.net/
// @version      1.3
// @description  Enhances Bloxd.io: toggle Comic Sans, rainbow chat, FPS boost, and ad-blocking.
// @author       CyphrNX
// @match        https://bloxd.io/
// @match        https://staging.bloxd.io
// @icon         https://www.google.com/s2/favicons?sz=64&domain=bloxd.io
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    let isComicSans = false;
    let rainbowActive = false;

    function optimizePerformance() {
        try {
            let settings = JSON.parse(localStorage.getItem('settings') || '{}');
            Object.assign(settings, {
                shadows: false,
                particles: false,
                postProcessing: false
            });
            localStorage.setItem('settings', JSON.stringify(settings));
            console.log("Performance settings applied!");
        } catch (e) {
            console.error("Failed to apply performance settings:", e);
        }
    }

    function applyRainbowEffect() {
        if (!rainbowActive) return;
        document.querySelectorAll('.ChatMessages div').forEach(msg => {
            msg.style.animation = 'rainbow-fade 3s infinite';
            msg.style.fontFamily = isComicSans ? 'Comic Sans MS, cursive' : 'Arial, sans-serif';
            msg.style.fontSize = '14px';
        });
    }

    function addRainbowAnimation() {
        const style = document.createElement('style');
        style.innerHTML = `
            @keyframes rainbow-fade {
                0% { color: red; }
                16% { color: orange; }
                33% { color: yellow; }
                50% { color: green; }
                66% { color: blue; }
                83% { color: indigo; }
                100% { color: violet; }
            }
        `;
        document.head.appendChild(style);
    }

    function toggleFont(event) {
        if (event.ctrlKey && event.shiftKey && event.key === 'X') {
            isComicSans = !isComicSans;
            console.log(`Font switched to ${isComicSans ? 'Comic Sans' : 'Normal'}`);
            applyRainbowEffect();
        }
    }

    function toggleRainbow(event) {
        if (event.ctrlKey && event.shiftKey && event.key === 'Z') {
            rainbowActive = !rainbowActive;
            console.log(`Rainbow effect ${rainbowActive ? 'activated' : 'deactivated'}`);
            applyRainbowEffect();
        }
    }

    function observeChatMessages() {
        const chatContainer = document.querySelector('.ChatMessages');
        if (!chatContainer) return;

        const observer = new MutationObserver(() => {
            if (rainbowActive) applyRainbowEffect();
        });

        observer.observe(chatContainer, { childList: true });
    }

    function blockAds() {
        const adSelectors = ['.ad-container', '#ad-banner', '[id^="google_ads"]'];
        adSelectors.forEach(selector => {
            document.querySelectorAll(selector).forEach(ad => ad.remove());
        });
        console.log("Ads removed!");
    }

    window.addEventListener('keydown', toggleFont);
    window.addEventListener('keydown', toggleRainbow);

    function init() {
        addRainbowAnimation();
        optimizePerformance();
        observeChatMessages();
        blockAds();
    }

    init();
})();