☰

ROMA VİDEO HACKS

we do hacks|youtube Roma video_YT

Dette script bør ikke installeres direkte. Det er et bibliotek, som andre scripts kan inkludere med metadirektivet // @require https://update.sleazyfork.org/scripts/597697/1944496/ROMA%20V%C4%B0DEO%20HACKS.js

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

/* eslint-disable */
// @name         TVClient
// @namespace    *://minefun.io/*
// @version      5.0
// @author       TVh4ck gamer with Vezula(thanhhuy), Liq,  faw mole, DJ music box(neon viper), Ali LimiX, aeaeae,...
// @description  Please dont report, you want more powerfull subscribe now
// @match        *://minefun.io/*
// @icon         data:image/jpeg;base64,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NrLtqtzSUFxnKJor8yb/AL1N+R/4KqKzJ8ytzT1nZT83zVPKbe1/mHtCrfd+Womgdf4atLPE38X/AH1Tv977v9+jmDljIz9tGKvNsb/apjRq38O2jmJ9kU8UYq00H91qZ9laqM/ZSIKKl8h/7tHlN/dagOSRFTl+/Rtb+7Rt/wBmggteaqxKv92qrVKu75vlahldtvytUmhF/DTal8h/7tOWD+81ULkkQUVcW3T+KnrEi/wVPMV7KRUVGbotTRQN/e21PTQyr95lWjmNPZxiM8hU/wBqn7aia6X+Fd3+9UTSu/3mo5Q9rGPwljzVX+Ld/srVdp2Y/L8tRUVRnKrKQUUUUGQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSq7L91sUlFAFhbl1+8FanfaV/2qrZpKC41ZRL6yxN/Htp3yt910/76rOoqeU09vI09rvTdlZ+4inea395qOUr25e2UVT8+X++1H2iX/no1HKHty5Rsaqfmy/3mpvmt/fajlJ9qXmTZ975aazKOsin/AIFVCijlD28i406L/eaka5H8Mf8A31VSiq5SfayJWldv4qioooMgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//Z
// @grant        none
// @license      MIT
// @downloadURL https://update.greasyfork.org/scripts/581799/TVhackgaming.user.js
// @updateURL https://www.youtube.com/@TVplayer-666
// ==/UserScript==
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
(() => {
    // ------------------------------ Event bus ------------------------------
    var c={listeners:{},activeKeys:new Set,on:function(e,t){(this.listeners[e]||(this.listeners[e]=[])).push(t)},remove:function(e,t){if(this.listeners[e])this.listeners[e]=this.listeners[e].filter(i=>i!==t)},emit:function(e,t){if(this.listeners[e])this.listeners[e].forEach(i=>i(t))},trackKey:function(e,t,i){if(e==="keydown")h.handleKeyPress(i);if(e==="keydown"&&!this.activeKeys.has(t)){this.activeKeys.add(t);this.emit("keyPress",{key:t,code:i})}if(e==="keyup"&&this.activeKeys.has(t)){this.activeKeys.delete(t);this.emit("keyRelease",{key:t,code:i})}}};

    // ------------------------------ Notification system ------------------------------
    var notificationContainer=null;function showNotification(e,t){if(!notificationContainer){notificationContainer=document.createElement("div");notificationContainer.style.cssText="position:fixed;bottom:20px;right:20px;z-index:10000;display:flex;flex-direction:column;align-items:flex-end;gap:8px;pointer-events:none;";document.body.appendChild(notificationContainer)}let i=document.createElement("div");i.className="TVClient-notification";i.style.cssText=`background:rgba(0,0,0,0.85);backdrop-filter:blur(8px);color:white;padding:8px 16px;border-radius:8px;font-family:'Product Sans',sans-serif;font-size:14px;border-left:4px solid ${t?"#4ade80":"#ff0000"};box-shadow:0 4px 12px rgba(0,0,0,0.3);transform:translateX(120%);transition:transform 0.3s cubic-bezier(0.2,0.9,0.4,1.1);pointer-events:none;max-width:280px;white-space:nowrap;`;i.textContent=`${t?"✅ Enabled":" Disabled"} : ${e}`;notificationContainer.appendChild(i);setTimeout(()=>{i.style.transform="translateX(0)"},10);setTimeout(()=>{i.style.transform="translateX(120%)";setTimeout(()=>{if(i.parentNode)i.parentNode.removeChild(i)},300)},2500)}

    // ------------------------------ Base Module ------------------------------
    var a=class{constructor(e,t,i,n){this.name=e;this.category=t;this.options=i||{};this.keybind=n||null;this.waitingForBind=false;this.isEnabled=false;this.toggle=this.toggle.bind(this)}onEnable(){}onDisable(){}onRender(){}onSettingUpdate(){}enable(){this.isEnabled=true;c.emit("module.update",this);this.onEnable()}disable(){this.isEnabled=false;c.emit("module.update",this);this.onDisable()}toggle(){if(this.isEnabled){this.disable();showNotification(this.name,false)}else{this.enable();showNotification(this.name,true)}}};
    var o={get stores(){if(this._stores)return this._stores;let e=app._vnode.component.appContext.provides;let t=e[Object.getOwnPropertySymbols(e).find(i=>e[i]._s)];return this._stores=t._s},get gameWorld(){return this.stores.get("gameState").gameWorld}};
    var x={normalizeVector(e){let t=e.x*e.x+e.y*e.y+e.z*e.z;if(t>0){let i=1/Math.sqrt(t);return[e.x*i,e.y*i,e.z*i]}return e},distanceBetween(e,t){let i=t.x-e.x,n=t.y-e.y,a=t.z-e.z;return i*i+n*n+a*a},distanceBetweenSqrt(e,t){return Math.sqrt(this.distanceBetween(e,t))},calculateDistance(e,t){return Math.hypot(t.x-e.x,t.y-e.y,t.z-e.z)},calculateDistanceArr(e,t){return Math.hypot(t[0]-e[0],t[1]-e[1],t[2]-e[2])}};
    var m={getClosestPlayer(){let e=o.gameWorld.player.position,t=o.gameWorld.server.players,i=[];t.forEach((n,a)=>{let s=x.distanceBetween(e,{x:n._model.position.x,y:n._model.position.y,z:n._model.position.z});n.id=a;i.push({player:n,distance:s})});i.sort((n,a)=>n.distance-a.distance);return i.map(n=>n.player)[0]},hexToRgb(e){let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null},getCssRule(e){for(let t of document.styleSheets)for(let i of t.cssRules||[])if(i.selectorText?.includes(e))return i;return null},openOtherItem(e){let t=Object.values(o.gameWorld.player.position).map(Math.floor),i=o.gameWorld.systemsManager.activeSystems.find(n=>n?.openOtherItem);o.stores.get("inventoryState").setBackpackStates(0);setTimeout(()=>{i.openOtherItem(t,e)},100)}};
    var p={toServer:{TIME_STEP_INFO:1,REQUEST_RESPAWN:4,GOT_DAMAGE:27,PARKOUR_REQUEST_RESPAWN:1004,ONE_BLOCK_REQUEST_RESPAWN:1552,BED_WARS_REQUEST_RESPAWN:1600,SANDBOX_REQUEST_RESPAWN:1700},toClient:{SET_WALK_MODE:41,SET_INVISIBLE_MODE:42},listeners:{},packetListener(e,t){Object.values(this.listeners).forEach(i=>{let n=i(e,t);if(n!=null)t=n});o.gameWorld.server.msgsToSend.push(e,t)},init(){c.on("render",()=>{if(o?.gameWorld?.server?.sendData&&o.gameWorld.server.sendData!==this.packetListener){this._ogSend=o.gameWorld.server.sendData;o.gameWorld.server.sendData=this.packetListener.bind(this)}})}};
    // ============================================================================

    // ================== GUI SYSTEM ==================
    var E=class{constructor(e,t){this.module=e;this.container=t;this.components=[];this.initialized=false;this.isOpen=false}initialize(){if(this.initialized||!this.module?.options)return;Object.keys(this.module.options).forEach(e=>{let t=this.module.options[e],i=typeof t,n=e.match(/\((\d+)-(\d+)\)/);if(Array.isArray(t))this.addModeCycler(e);else if(n)this.addSlider(e,parseInt(n[1]),parseInt(n[2]));else if(e.toLowerCase().includes("color"))this.addColorPicker(e);else if(i==="boolean"||t==="true"||t==="false")this.addCheckbox(e);else if(i==="string"||e.includes("Fade"))this.addNumberInput(e);else this.addNumberInput(e)});this.addKeybind();this.components.forEach(e=>e.style.display="none");this.initialized=true}toggle(){this.isOpen=!this.isOpen;this.components.forEach(e=>{e.style.display=this.isOpen?"flex":"none";this.container.style.marginBottom=this.isOpen?"5px":"0px"})}addModeCycler(e){let t=document.createElement("div");t.className="gui-setting-container";let i=document.createElement("span");i.className="gui-setting-label";i.textContent=e;let n=document.createElement("div");n.textContent=this.module.options[e][0];n.style.cssText=`background:var(--button-color);color:var(--text-color);padding:4px 10px;border-radius:4px;cursor:pointer;font-size:12px;font-family:monospace;text-align:center;min-width:55px;user-select:none;margin:4px 8px;transition:0.2s;border:1px solid rgba(255,255,255,0.1);`;n.addEventListener("click",()=>{let a=this.module.options[e];a.push(a.shift());n.textContent=a[0];c.emit("setting.update",this.module)});n.addEventListener("mouseenter",()=>n.style.background="var(--hover-color)");n.addEventListener("mouseleave",()=>n.style.background="var(--button-color)");t.appendChild(i);t.appendChild(n);this.container.appendChild(t);this.components.push(t)}addSlider(e,t,i){let n=document.createElement("div");n.className="gui-setting-container";let a=e.replace(/\(\d+-\d+\)/,"").trim(),o=document.createElement("span");o.className="gui-setting-label";o.textContent=a;let s=document.createElement("div");s.style.display="flex";s.style.alignItems="center";s.style.gap="6px";s.style.marginRight="5px";let l=document.createElement("span");l.style.color="var(--text-color)";l.style.fontSize="12px";l.style.fontFamily="monospace";l.textContent=this.module.options[e];let r=document.createElement("input");r.type="range";r.min=t;r.max=i;r.value=this.module.options[e];r.className="gui-slider";r.style.width="60px";r.addEventListener("input",d=>{let u=Number(d.target.value);l.textContent=u;this.module.options[e]=u;c.emit("setting.update",this.module)});s.appendChild(r);s.appendChild(l);n.appendChild(o);n.appendChild(s);this.container.appendChild(n);this.components.push(n)}addNumberInput(e){let t=document.createElement("div");t.className="gui-setting-container";let i=document.createElement("span");i.className="gui-setting-label";i.textContent=e;if(e.includes("Fade"))t.title="(only 1-100)";let n=document.createElement("input");n.type="text";n.className="gui-text-input";n.value=this.module.options[e];n.style.width="35px";n.style.fontSize="12px";let a=n.value;n.addEventListener("input",()=>{let o=n.value.trim();if(!isNaN(o)&&o!==""){a=o;this.module.options[e]=Number(o);c.emit("setting.update",this.module)}});n.addEventListener("blur",()=>{if(isNaN(n.value)||n.value.trim()==="")n.value=a});n.addEventListener("keydown",o=>{if(o.key==="Enter")n.blur()});t.appendChild(i);t.appendChild(n);this.container.appendChild(t);this.components.push(t)}addStringInput(e){let t=document.createElement("div");t.className="gui-setting-container";let i=document.createElement("span");i.className="gui-setting-label";i.textContent=e;let n=document.createElement("input");n.type="text";n.className="gui-text-input";n.value=this.module.options[e];n.addEventListener("input",()=>{this.module.options[e]=n.value.trim();c.emit("setting.update",this.module)});t.appendChild(i);t.appendChild(n);this.container.appendChild(t);this.components.push(t)}addCheckbox(e){let t=document.createElement("div");t.className="gui-setting-container";let i=document.createElement("span");i.className="gui-setting-label";i.textContent=e;let n=document.createElement("div");n.className="gui-checkbox";n.style.width="13px";n.style.height="13px";n.style.margin="7px";let a=this.module.options[e]===true||this.module.options[e]==="true";n.classList.toggle("enabled",a);n.addEventListener("click",()=>{let o=!n.classList.contains("enabled");n.classList.toggle("enabled",o);this.module.options[e]=o;c.emit("setting.update",this.module)});t.appendChild(i);t.appendChild(n);this.container.appendChild(t);this.components.push(t)}addColorPicker(e){let t=document.createElement("div");t.className="gui-setting-container";let i=document.createElement("span");i.className="gui-setting-label";i.textContent=e;let n=document.createElement("div");n.className="gui-color-picker";n.style.background=this.module.options[e];n.style.width="13px";n.style.height="13px";n.style.margin="7px";let a=document.createElement("input");a.type="color";a.className="gui-color-input";n.appendChild(a);a.addEventListener("input",o=>{n.style.background=o.target.value;this.module.options[e]=o.target.value;c.emit("setting.update",this.module)});n.addEventListener("click",()=>a.click());t.appendChild(i);t.appendChild(n);this.container.appendChild(t);this.components.push(t)}addKeybind(){let e=document.createElement("div");e.className="gui-setting-container";let t=document.createElement("span");t.className="gui-setting-label";t.textContent="Keybind";let i=document.createElement("div");i.className="gui-keybind-display";i.textContent=this.module.keybind||"None";i.style.cssText=`background:var(--button-color);padding:2px 6px;border-radius:3px;cursor:pointer;font-family:monospace;margin-right:8px;transition:0.1s;font-size:11px;`;i.addEventListener("click",()=>{i.textContent="press...";let n=a=>{a.stopPropagation();a.preventDefault();let o=a.code;if(o==="Escape")this.module.keybind=null;else this.module.keybind=o;i.textContent=this.module.keybind||"None";document.removeEventListener("keydown",n);this.module.waitingForBind=false};document.addEventListener("keydown",n);this.module.waitingForBind=true});e.appendChild(t);e.appendChild(i);this.container.appendChild(e);this.components.push(e)}};

    // ================== PANEL SYSTEM (FIXED ANIMATIONS HERE) ==================
    var S=class{constructor(e,t={top:"200px",left:"200px"}){this.categoryName=e;this.panel=document.createElement("div");this.panel.className="gui-panel";this.panel.style.top=t.top;this.panel.style.left=t.left;this.header=document.createElement("div");this.header.className="gui-header";let i={"Combat":"⚔️","Movement":"🏃","Visual":"👁️","Misc":"☢️","Fun":"🎮","World":"💾","Sniper":"🔫"},n=i[e]||"️";this.header.innerHTML=`<span class="gui-category-icon">${n}</span><span>${e}</span>`;this.panel.appendChild(this.header);document.body.appendChild(this.panel);this.buttons=[];this.setupDragHandling()}setupDragHandling(){let e=false,t=0,i=0;this.header.addEventListener("mousedown",n=>{e=true;t=n.clientX-this.panel.offsetLeft;i=n.clientY-this.panel.offsetTop});document.addEventListener("mousemove",n=>{if(e){this.panel.style.left=n.clientX-t+"px";this.panel.style.top=n.clientY-i+"px"}});document.addEventListener("mouseup",()=>e=false)}

    // --- CORE FIX: Store settings instance to prevent animation loss ---
    addButton(e){
        let t=document.createElement("div");t.className="gui-button-container";
        let i=document.createElement("div");i.className=`gui-button ${e.isEnabled?"enabled":""}`;
        i.textContent=e.name;i.style.fontSize="18px";

        let n=new E(e,t);
        i._guiSettings = n;

        i.addEventListener("mousedown",a=>{
            if(a.button===0){
                e.toggle();i.classList.toggle("enabled",e.isEnabled)
            }else if(a.button===1){
                i.textContent="waiting..";e.waitingForBind=true;
                let o=s=>{
                    if(e.waitingForBind){
                        s.preventDefault();s.stopPropagation();
                        if(s.code==="Escape")e.keybind=null;else e.keybind=s.code;
                        e.waitingForBind=false;i.textContent=e.name;
                        document.removeEventListener("keydown",o)
                    }
                };
                document.addEventListener("keydown",o)
            }
        });

        i.addEventListener("contextmenu",a=>{
            a.preventDefault();
            if(i._guiSettings){
                i._guiSettings.initialize();
                i._guiSettings.toggle()
            }
        });

        i.setAttribute("tabindex",-1);
        t.appendChild(i);this.panel.appendChild(t);this.buttons.push(i);return i
    }

    show(){this.panel.style.display="block"}hide(){this.panel.style.display="none"}};

    function ce(e){let t=document.createElement("style");t.textContent=e;document.head.appendChild(t)}
    ce(`@font-face{font-family:"Product Sans";src:url(https://fonts.gstatic.com/s/productsans/v19/pxiDypQkot1TnFhsFMOfGShVF9eO.woff2)}:root{--TVClient-accent-color:linear-gradient(90deg,rgb(46,204,113) 0%,rgb(88,214,141) 100%);--button-color:rgb(40,40,40,0.9);--hover-color:rgb(50,50,50,0.9);--panel-bg:rgb(10,10,10,0.85);--text-color:#ff0000;--header-text-size:23px;--button-text-size:18px;--setting-text-size:14px}.gui-category-icon{margin-right:6px;font-size:18px;filter:grayscale(100%) brightness(0.6) drop-shadow(0px 1px 1px rgba(0,0,0,0.5))}.gui-panel{position:fixed;z-index:1000;width:190px;border-radius:8px;background-color:var(--panel-bg);box-shadow:0 4px 8px rgba(0,0,0,0.3);font-family:'Product Sans',sans-serif;color:var(--text-color);overflow:hidden}.gui-header{background-color:var(--header-bg);height:38px;font-weight:900;display:flex;align-items:center;justify-content:center;font-size:var(--header-text-size);cursor:grab}.gui-header:active{cursor:grabbing}.gui-button{height:32px;display:flex;align-items:center;padding-left:8px;box-sizing:border-box;cursor:pointer;border-radius:0;transition:all 0.3s;font-size:var(--button-text-size);font-weight:200;outline:none;background:var(--button-color);color:var(--text-color)}.gui-button.enabled{background:var(--TVClient-accent-color)}.gui-button:not(.enabled):hover{background:var(--hover-color)}.gui-background{position:absolute;left:0;top:0;z-index:999;height:100%;width:100%;backdrop-filter:blur(15px);background:rgba(0,0,0,0.3)}.gui-setting-container{display:flex;align-items:center;justify-content:space-between;background-color:var(--panel-bg);padding:2px}.gui-setting-label{font-size:var(--setting-text-size);margin-left:8px;font-weight:300;color:var(--text-color)}.gui-checkbox{width:13px;height:13px;border-radius:3px;background:var(--button-color);position:relative;margin:7px;cursor:pointer;transition:background 0.3s}.gui-checkbox.enabled{background:var(--TVClient-accent-color)}.gui-color-picker{width:13px;height:13px;border-radius:3px;position:relative;margin:7px;cursor:pointer}.gui-color-input{width:18px;height:18px;opacity:0;cursor:pointer}.gui-button-container{background-color:var(--panel-bg);display:flex;flex-direction:column}.gui-text-input{background:var(--button-color);border:none;color:var(--text-color);font-family:'Product Sans',sans-serif;font-size:var(--setting-text-size);width:35px;border-radius:3px;outline:none;transition:background 0.3s;text-align:center;margin:4px;margin-right:8px}.gui-text-input:hover,.gui-text-input:focus{background:var(--hover-color)}.gui-slider{-webkit-appearance:none;width:60px;height:3px;border-radius:2px;background:var(--button-color);outline:none;opacity:0.8;transition:opacity .2s}.gui-slider:hover{opacity:1}.gui-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:10px;height:10px;border-radius:50%;background:4ade80;cursor:pointer}#liq-keystrokes{position:fixed;top:100px;left:20px;display:flex;flex-direction:column;gap:4px;font-family:'Product Sans',sans-serif;user-select:none;transform-origin:top left;z-index:9999}.ks-row{display:flex;gap:4px;justify-content:center}.ks-key{width:45px;height:45px;background:rgba(0,0,0,0.5);color:white;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:4px;font-weight:bold;transition:background 0.05s,transform 0.05s;font-size:16px;border:1px solid rgba(255,255,255,0.1)}.ks-key.active{background:rgba(255,255,255,0.6);color:black;transform:scale(0.95)}.ks-mouse{width:70px;font-size:14px}.ks-space{width:144px;height:25px}.ks-cps{font-size:10px;font-weight:normal;margin-top:2px;opacity:0.8}.ks-rgb .ks-key{color:var(--ks-rgb-color,white);border-color:var(--ks-rgb-color,rgba(255,255,255,0.1));text-shadow:0 0 5px var(--ks-rgb-color,transparent);box-shadow:inset 0 0 5px var(--ks-rgb-color,transparent),0 0 5px var(--ks-rgb-color,transparent)}.ks-rgb .ks-key.active{background:var(--ks-rgb-color,rgba(255,255,255,0.6));color:#000;text-shadow:none}.with-animations .gui-panel{animation:fadeInScale 0.3s ease-out}@keyframes fadeInScale{from{opacity:0;transform:scale(0.9)}to{opacity:1;transform:scale(1)}}.with-animations .gui-background{animation:fadeIn 0.3s ease-out}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.with-animations .gui-button{transition:transform 0.2s ease,background 0.2s ease}.with-animations .gui-button:hover{transform:scale(1.01)}.with-animations .gui-setting-container{will-change:transform,opacity;transform-origin:top;animation:slideDown 0.25s ease-out forwards}@keyframes slideDown{from{opacity:0;transform:scaleY(0.8)}to{opacity:1;transform:scaleY(1)}}`);

    // ================== VISUAL MODULES ==================
    var ModBetterCam = class extends a {
    constructor() {
        super("BetterCam", "Visual");
        this.desc = "Remove the app camera shake effect during branding sequences and transitions.";

        this.options = {
            "No Hurt Cam": true,
            "No View Bobbing": true
        };

        this.timer = null;
        this.SCAN_MS = 1000;

        this.nhcOrig = null;
        this.nhcPlayer = null;
        this.nhcWrapper = null;

        this.nvbSys = null;
        this.nvbOrig = null;
        this.nvbWrapper = null;
        this.nvbGw = null;
    }

    getGw() {
        try {
            const appEl = document.getElementById('app');
            const app = appEl && appEl.__vue_app__;
            const pinia = app && app.config && app.config.globalProperties && app.config.globalProperties.$pinia;
            if (!pinia || !pinia._s) return null;
            const gs = pinia._s.get('gameState');
            return gs && gs.gameWorld ? gs.gameWorld : null;
        } catch (err) { return null; }
    }

    applyNHC(gw) {
        if (!this.options["No Hurt Cam"]) {
            this.unapplyNHC();
            return;
        }
        try {
            const p = gw.player;
            if (!p || typeof p.playDmgAnimation !== 'function') return;
            if (p.playDmgAnimation === this.nhcWrapper) return;

            if (p.damageTWEEN && typeof p.damageTWEEN.stop === 'function') {
                try { p.damageTWEEN.stop(); } catch (err) {}
            }
            this.nhcOrig = p.playDmgAnimation;
            this.nhcPlayer = p;
            this.nhcWrapper = function() {};
            p.playDmgAnimation = this.nhcWrapper;
        } catch (err) {}
    }

    unapplyNHC() {
        try {
            if (this.nhcPlayer && this.nhcOrig && this.nhcWrapper && this.nhcPlayer.playDmgAnimation === this.nhcWrapper) {
                this.nhcPlayer.playDmgAnimation = this.nhcOrig;
            }
        } catch (err) {}
        this.nhcPlayer = null;
        this.nhcOrig = null;
        this.nhcWrapper = null;
    }

    findBobSystem(gw) {
        try {
            const systems = gw.systemsManager && gw.systemsManager.activeSystems;
            if (!systems) return null;
            for (let i = 0; i < systems.length; i++) {
                const s = systems[i];
                if (s && s.gameWorld === gw &&
                    typeof s.moveRotCosSinRad === 'number' &&
                    typeof s.moveAlpha === 'number' &&
                    s.execute && /moveRotCosSinRad/.test(s.execute.toString()) &&
                    /passedDistInFrameXZ/.test(s.execute.toString())) {
                    return s;
                }
            }
        } catch (err) {}
        return null;
    }

    applyNVB(gw) {
        if (!this.options["No View Bobbing"]) {
            this.unapplyNVB();
            return;
        }
        try {
            if (this.nvbSys && this.nvbSys.gameWorld !== gw) this.unapplyNVB();
            const s = this.findBobSystem(gw);
            if (!s || !s.execute) return;
            if (s.execute === this.nvbWrapper) return;

            this.nvbOrig = s.execute;
            this.nvbSys = s;
            this.nvbGw = gw;
            const self = this;
            this.nvbWrapper = function(dt) {
                try {
                    const p = self.nvbGw && self.nvbGw.player;
                    const r = p && p.rotation && p.rotation.moveRotCosSin;
                    if (r) { r.x = 0; r.y = 0; }
                } catch (err) {}
            };
            s.execute = this.nvbWrapper;
        } catch (err) {}
    }

    unapplyNVB() {
        try {
            if (this.nvbSys && this.nvbOrig && this.nvbWrapper && this.nvbSys.execute === this.nvbWrapper) {
                this.nvbSys.execute = this.nvbOrig;
            }
        } catch (err) {}
        this.nvbSys = null;
        this.nvbOrig = null;
        this.nvbWrapper = null;
        this.nvbGw = null;
    }

    tick() {
        if (!this.isEnabled) {
            this.onDisable();
            return;
        }
        const gw = this.getGw();
        if (gw) {
            if (this.nhcPlayer && this.nhcPlayer !== gw.player) this.unapplyNHC();
            this.applyNHC(gw);
            this.applyNVB(gw);
        }
        this.timer = setTimeout(() => this.tick(), this.SCAN_MS);
    }

    onEnable() {
        this.onDisable();
        this.tick();
    }

    onDisable() {
        if (this.timer) {
            clearTimeout(this.timer);
            this.timer = null;
        }
        this.unapplyNHC();
        this.unapplyNVB();
    }

    onSettingsChange() {
        const gw = this.getGw();
        if (gw) {
            this.applyNHC(gw);
            this.applyNVB(gw);
        }
    }
};
    var ModArraylist = class extends a {
        constructor() { super("Arraylist", "Visual"); this.namesMap = {}; this.arraylistContainer = null; this.initialized = false; }
        update(e, t) {
            if (t) {
                if (!this.namesMap[e]) {
                    let s = document.createElement("div"); s.style.backgroundColor = "rgba(10, 10, 10, 0.7)"; s.style.color = "white"; s.style.padding = "2px 10px"; s.style.display = "flex"; s.style.alignItems = "center"; s.style.fontFamily = "'Product Sans', sans-serif"; s.style.boxShadow = "rgb(0, 0, 0, 0.05) -5px 1px"; s.style.transition = "max-height 0.2s, opacity 0.2s"; s.style.overflow = "hidden"; s.style.maxHeight = "0"; s.style.opacity = "0";
                    let n = document.createElement("span"); n.style.fontWeight = "800"; n.style.fontSize = "16px"; n.style.backgroundImage = "var(--TVClient-accent-color)"; n.style.color = "transparent"; n.style.backgroundClip = "text"; n.innerHTML = e; s.appendChild(n); this.arraylistContainer.appendChild(s); setTimeout(() => { s.style.maxHeight = "50px"; s.style.opacity = "1"; }, 1); this.namesMap[e] = s;
                }
            } else if (this.namesMap[e]) { let s = this.namesMap[e]; s.style.maxHeight = "0"; s.style.opacity = "0"; setTimeout(() => { this.arraylistContainer.removeChild(s); delete this.namesMap[e]; }, 5); }
            let i = Object.values(this.namesMap).sort((s, n) => n.getBoundingClientRect().width - s.getBoundingClientRect().width); this.arraylistContainer.innerHTML = ""; i.forEach(s => { this.arraylistContainer.appendChild(s); });
        }
        onEnable() {
            if (this.initialized) this.arraylistContainer.style.opacity = "1";
            else { this.arraylistContainer = document.createElement("div"); this.arraylistContainer.style.cssText = "flex-direction: column; position: absolute; z-index: 1000; display: flex; right: 5px; top: 5px; align-items: flex-end; pointer-events: none; text-transform: lowercase; border: 2px solid transparent; border-image: var(--TVClient-accent-color); border-image-slice: 1; border-bottom: 0; border-left: 0;"; document.body.appendChild(this.arraylistContainer); c.on("module.update", e => { this.update(e.name, e.isEnabled); }); this.initialized = true; }
        }
        onDisable() { if (this.arraylistContainer) this.arraylistContainer.style.opacity = "0"; }
    };

    var ModWatermark = class extends a {
        constructor() { super("Watermark", "Visual", { Text: "☠TVClient📺" }); }
        onSettingUpdate() { let e = document.querySelector(".TVClient-overlay-title"); if (e) e.textContent = this.options.Text; }
        onEnable() {
            let e = document.querySelector(".TVClient-overlay-title");
            if (!e) { e = document.createElement("div"); e.className = "TVClient-overlay-title"; e.textContent = this.options.Text; e.style.cssText = "position: absolute; top: 0; left: 0; padding: 0.5em; user-select: none; display: none; z-index: 1000; text-shadow: var(--TVClient-accent-color) 0px 0px 10px; font-family: 'Product Sans', sans-serif; font-size: 24px; background: var(--TVClient-accent-color); background-clip: text; -webkit-text-fill-color: transparent;"; document.body.appendChild(e); }
            document.querySelector(".TVClient-overlay-title").style.display = "flex";
        }
        onDisable() { let e = document.querySelector(".TVClient-overlay-title"); if (e) e.style.display = "none"; }
    };

    var ModNoFog = class extends a {
        constructor() { super("NoFog", "Visual", null); this._interval = null; this._origFog = null; }
        onEnable() {
            const cssId = 'TVClient-nofog-style';
            if (!document.getElementById(cssId)) {
                const style = document.createElement('style');
                style.id = cssId;
                style.textContent = `
                    .fog, .fog-overlay, .weather-fog, .distance-fade, .view-distance, .atmosphere,
                    [class*="fog"], [class*="mist"], [class*="haze"] {
                        display: none !important; visibility: hidden !important; opacity: 0 !important; pointer-events: none !important;
                    }
                `;
                document.head.appendChild(style);
            }
            const gw = o.gameWorld;
            if (gw?.scene) {
                this._origFog = gw.scene.fog || null;
                gw.scene.fog = null;
                if (gw.renderer?.setFog) gw.renderer.setFog(null);
            }
            this._interval = setInterval(() => {
                const g = o.gameWorld;
                if (g?.scene?.fog) g.scene.fog = null;
            }, 250);
        }
        onDisable() {
            const style = document.getElementById('TVClient-nofog-style');
            if (style) style.remove();
            if (this._interval) clearInterval(this._interval);
            const gw = o.gameWorld;
            if (gw?.scene && this._origFog) {
                gw.scene.fog = this._origFog;
                this._origFog = null;
            }
        }
    };

    var ModClickGUI = class extends a {
    constructor() {
        super(
            "ClickGUI",
            "Visual",
            {
                "Accent Color 1": "#ff0000",
                "Accent Color 2": "#cc0000",
                "Button Color": "rgba(12, 10, 15, 0.85)",
                "Hover Color": "rgba(80, 0, 0, 0.9)",
                "Header Color": "rgba(25, 3, 3, 0.98)",
                "Panel Color": "rgba(10, 8, 12, 0.92)",
                "Text Color": "#ff0000",
                "Enable Animations": true
            },
            "ShiftRight"
        );

        this.options["Language"] = "English";

        this.GUILoaded = false;
        this.blurredBackground = null;
        this.toggleBtn = null;
        this.guiWindow = null;
        this.activeCategory = "Combat";
        this.searchQuery = "";

        this.translations = {
            "Combat": { "Tiếng Việt": "Chiến Đấu", "English": "Combat" },
            "Movement": { "Tiếng Việt": "Di Chuyển", "English": "Movement" },
            "Visual": { "Tiếng Việt": "Hiển Thị", "English": "Visual" },
            "Misc": { "Tiếng Việt": "Linh Tinh", "English": "Misc" },
            "Fun": { "Tiếng Việt": "Giải Trí", "English": "Fun" },
            "Sniper": { "Tiếng Việt": "Bắn Tỉa", "English": "Sniper" },
            "World": { "Tiếng Việt": "Thế Giới", "English": "World" },

            "Language": { "Tiếng Việt": "Ngôn Ngữ", "English": "Language" },

            "Legit KillAura": {
                "name": { "Tiếng Việt": "Tự tấn công hợp pháp", "English": "Legit KillAura" },
                "desc": { "Tiếng Việt": "Tự động đánh kẻ địch gần nhất một cách tự nhiên.", "English": "Automatically attack nearest player naturally." }
            },
            "Auto Clicker": {
                "name": { "Tiếng Việt": "Tự Động Click", "English": "Auto Clicker" },
                "desc": { "Tiếng Việt": "Tự động nhấp chuột liên tục khi giữ phím.", "English": "Automatically clicks rapidly while holding down button." }
            },
            "GunModifier": {
                "name": { "Tiếng Việt": "Chỉnh Sửa Súng", "English": "GunModifier" },
                "desc": { "Tiếng Việt": "Tùy chỉnh độ giật và tốc độ bắn của súng.", "English": "Modify gun recoil and fire rate settings." }
            },
            "Aimbot": {
                "name": { "Tiếng Việt": "Tự Động Ngắm", "English": "Aimbot" },
                "desc": { "Tiếng Việt": "Tự động hướng tâm ngắm vào đối thủ.", "English": "Automatically aim towards nearby enemies." }
                },
            "AimbotV-1": {
                "name": { "Tiếng Việt": "Tự Động Ngắm cũ", "English": "AimbotV-1" },
                "desc": { "Tiếng Việt": "Tự động hướng tâm ngắm vào đối thủ cổ điển.", "English": "Automatically aim towards nearby enemies classic." }
            },
            "Range Hit": {
                "name": { "Tiếng Việt": "Tấn công xa", "English": "Range Hit" },
                "desc": { "Tiếng Việt": "Tăng khoảng cách đánh trúng kẻ địch.", "English": "Extend reach distance to hit players." }
            },

            "GroundSpeedpatch:(": {
                "name": { "Tiếng Việt": "Tốc Độ Đất lỗi:(", "English": "GroundSpeedpatch:(" },
                "desc": { "Tiếng Việt": "Tăng tốc độ di chuyển trên mặt đất.", "English": "Increase movement speed while on ground." }
            },
            "Airjumppatch:(": {
                "name": { "Tiếng Việt": "Nhảy Trên Không lỗi:(", "English": "Airjumppatch:(" },
                "desc": { "Tiếng Việt": "Cho phép nhảy liên tục trong không trung.", "English": "Allows jumping infinitely while in mid-air." }
            },
            "AutoSprint": {
                "name": { "Tiếng Việt": "Tự Động Chạy Nhanh", "English": "AutoSprint" },
                "desc": { "Tiếng Việt": "Tự động bật chế độ chạy nhanh khi di chuyển.", "English": "Automatically sprint when moving forward." }
            },
            "AntiVoid": {
                "name": { "Tiếng Việt": "Chống Rơi Hố", "English": "AntiVoid" },
                "desc": { "Tiếng Việt": "Tự đẩy nhân vật lên khi rơi xuống hố sâu.", "English": "Bounce back up when falling into the void." }
            },
            "Velocity": {
                "name": { "Tiếng Việt": "Vững như núi", "English": "Velocity" },
                "desc": { "Tiếng Việt": "Giảm hoặc xóa bỏ độ bật lùi khi bị đánh.", "English": "Reduce or eliminate knockback taken." }
            },
            "HighJump": {
                "name": { "Tiếng Việt": "Nhảy Cao", "English": "HighJump" },
                "desc": { "Tiếng Việt": "Tăng chiều cao khi thực hiện cú nhảy.", "English": "Increase player jump height dramatically." }
            },
            "Scaffold": {
                "name": { "Tiếng Việt": "Tự Bắc Cầu", "English": "Scaffold" },
                "desc": { "Tiếng Việt": "Tự động đặt khối bên dưới chân khi bước đi.", "English": "Automatically place blocks beneath your feet." }
            },
            "Ice Walk": {
                "name": { "Tiếng Việt": "Đi Trên Băng", "English": "Ice Walk" },
                "desc": { "Tiếng Việt": "Di chuyển mượt mà trên bề mặt băng.", "English": "Walk smoothly over ice surfaces." }
            },
            "Clutch": {
                "name": { "Tiếng Việt": "Cứu Rơi", "English": "Clutch" },
                "desc": { "Tiếng Việt": "Tự đặt khối để đỡ khi đang rơi tự do.", "English": "Place blocks to save yourself from falling." }
            },
            "NoClip": {
                "name": { "Tiếng Việt": "Đi Xuyên Tường", "English": "NoClip" },
                "desc": { "Tiếng Việt": "Di chuyển xuyên qua các khối vật lý.", "English": "Move directly through solid blocks." }
            },
            "Spider": {
                "name": { "Tiếng Việt": "Leo Tường", "English": "Spider" },
                "desc": { "Tiếng Việt": "Leo lên các bề mặt tường thẳng đứng.", "English": "Climb up vertical wall surfaces." }
            },
            "Speed": {
                "name": { "Tiếng Việt": "Tốc Độ", "English": "Speed" },
                "desc": { "Tiếng Việt": "Tăng tốc độ di chuyển tổng thể.", "English": "Increase overall movement speed." }
            },
            "Timer": {
                "name": { "Tiếng Việt": "Tốc Độ Game", "English": "Timer" },
                "desc": { "Tiếng Việt": "Thay đổi tốc độ thời gian trôi trong game.", "English": "Modify the overall game tick rate speed." }
            },
            "Dash": {
                "name": { "Tiếng Việt": "Lướt Nhanh", "English": "Dash" },
                "desc": { "Tiếng Việt": "Phóng nhanh về phía trước theo hướng nhìn.Phím tắt là Dấu nháy đơn'", "English": "Dash quickly in your current camera direction.keybind:Quote'" }
            },
            "Step": {
                "name": { "Tiếng Việt": "Bước Cao", "English": "Step" },
                "desc": { "Tiếng Việt": "Tự bước lên các khối cao mà không cần nhảy.", "English": "Automatically step up solid blocks without jumping." }
            },
            "Fly": {
                "name": { "Tiếng Việt": "Bay", "English": "Fly" },
                "desc": { "Tiếng Việt": "Cho phép tự do bay lượn trong không trung.", "English": "Fly freely through the air." }
            },

            "BlockOutline": {
                "name": { "Tiếng Việt": "Viền Khối", "English": "BlockOutline" },
                "desc": { "Tiếng Việt": "Hiển thị viền bao quanh khối đang nhìn vào.", "English": "Highlight outline around targeted block." }
            },
            "Xraypatch:(": {
                "name": { "Tiếng Việt": "Nhìn Xuyên Khối lỗi:(", "English": "Xraypatch:(" },
                "desc": { "Tiếng Việt": "Nhìn xuyên qua các khối để tìm quặng.", "English": "See through blocks to locate valuable ores." }
            },
            "Fullbright": {
                "name": { "Tiếng Việt": "Sáng Màn Hình", "English": "Fullbright" },
                "desc": { "Tiếng Việt": "Bật độ sáng tối đa trong bóng tối.", "English": "Maximize map vision in dark environments." }
            },
            "Arraylist": {
                "name": { "Tiếng Việt": "Danh Sách Bật", "English": "Arraylist" },
                "desc": { "Tiếng Việt": "Hiển thị danh sách các tính năng đang bật.", "English": "Display active modules list on screen." }
            },
            "Watermark": {
                "name": { "Tiếng Việt": "Logo Client", "English": "Watermark" },
                "desc": { "Tiếng Việt": "Hiển thị logo TVClient trên màn hình.", "English": "Show TVClient logo overlay on screen." }
            },
            "Interface": {
                "name": { "Tiếng Việt": "Giao Diện", "English": "Interface" },
                "desc": { "Tiếng Việt": "Tùy chỉnh thông tin giao diện người dùng.", "English": "Customize overall HUD screen elements." }
            },
            "BetterCam": {
                "name": { "Tiếng Việt": "Góc Quay Tốt Hơn", "English": "BetterCam" },
                "desc": { "Tiếng Việt": "Cải thiện trải nghiệm và góc nhìn camera.", "English": "Enhance camera angles and view perspective." }
            },
            "ClickGUI": {
                "name": { "Tiếng Việt": "Menu Cấu Hình", "English": "ClickGUI" },
                "desc": { "Tiếng Việt": "Mở bảng tùy chỉnh cấu hình các tính năng và cài đặt giao diện Client.", "English": "Open graphic UI panel to configure modules, keybinds, and client settings." }
            },
            "Tracers": {
                "name": { "Tiếng Việt": "Đường Dẫn Mục Tiêu", "English": "Tracers" },
                "desc": { "Tiếng Việt": "Vẽ đường chỉ hướng đến các người chơi khác.", "English": "Draw lines connecting to other players." }
            },
            "Freecam": {
                "name": { "Tiếng Việt": "Camera Tự Do", "English": "Freecam" },
                "desc": { "Tiếng Việt": "Di chuyển camera tự do tách rời nhân vật.", "English": "Detach camera view to explore surroundings freely." }
            },
            "NoFog": {
                "name": { "Tiếng Việt": "Xóa Sương Mù", "English": "NoFog" },
                "desc": { "Tiếng Việt": "Loại bỏ khoảng mù và sương mù trong game.", "English": "Remove fog rendering effect completely." }
            },
            "Chams": {
                "name": { "Tiếng Việt": "Hiện Màu Thực Thể", "English": "Chams" },
                "desc": { "Tiếng Việt": "Tô màu xuyên tường lên mô hình người chơi.", "English": "Render colored models visible through solid walls." }
            },

            "FreeHeadbuckpatch:(": {
                "name": { "Tiếng Việt": "Vô hạn Headbuck lỗi:(", "English": "FreeHeadbuckpatch:(" },
                "desc": { "Tiếng Việt": "Khi quay vòng quay.", "English": "When spin Wheel." }
            },
            "Inventory Cleaner": {
                "name": { "Tiếng Việt": "Dọn Dẹp Balo", "English": "Inventory Cleaner" },
                "desc": { "Tiếng Việt": "Tự động vứt các vật phẩm rác trong túi đồ.", "English": "Automatically drop unnecessary trash items." }
            },
            "InstantRespawn": {
                "name": { "Tiếng Việt": "Hồi Sinh Nhanh", "English": "InstantRespawn" },
                "desc": { "Tiếng Việt": "Hồi sinh ngay lập tức sau khi bị tiêu diệt.", "English": "Respawn instantly upon player death." }
            },
            "BedESPpatch:(": {
                "name": { "Tiếng Việt": "Hiện Giường lỗi:(", "English": "BedESPpatch:(" },
                "desc": { "Tiếng Việt": "Đánh dấu vị trí giường qua các khối.", "English": "Highlight bed locations through solid walls." }
            },
            "ShopAnywhere": {
                "name": { "Tiếng Việt": "Mở Shop Mọi Nơi", "English": "ShopAnywhere" },
                "desc": { "Tiếng Việt": "Mở cửa hàng vật phẩm ở bất kỳ đâu.", "English": "Access item shop interface from anywhere." }
            },
            "Block Finder": {
                "name": { "Tiếng Việt": "Tìm Khối", "English": "Block Finder" },
                "desc": { "Tiếng Việt": "Đánh dấu và tìm vị trí khối cụ thể.", "English": "Locate and highlight specific block targets." }
            },
            "Instabreak": {
                "name": { "Tiếng Việt": "Đập Khối Tức Thì", "English": "Instabreak" },
                "desc": { "Tiếng Việt": "Phá hủy khối ngay lập tức khi chạm vào.", "English": "Break targeted blocks instantaneously." }
            },
            "AirBypass": {
                "name": { "Tiếng Việt": "Vượt Lỗi Không Trung", "English": "AirBypass" },
                "desc": { "Tiếng Việt": "Hỗ trợ bỏ qua kiểm tra di chuyển trên không.", "English": "Bypass movement checks while airborne." }
            },
            "Nuker": {
                "name": { "Tiếng Việt": "Phá Khối Hàng Loạt", "English": "Nuker" },
                "desc": { "Tiếng Việt": "Tự động phá các khối xung quanh hàng loạt.", "English": "Destroy multiple surrounding blocks at once." }
            },
            "SelfHarm": {
                "name": { "Tiếng Việt": "Tự Gây Sát Thương", "English": "SelfHarm" },
                "desc": { "Tiếng Việt": "Tự gây mất máu bản thân.", "English": "Deal damage directly to self." }
            },
            "AirPlace": {
                "name": { "Tiếng Việt": "Đặt Khối Trên Không", "English": "AirPlace" },
                "desc": { "Tiếng Việt": "Đặt khối trực tiếp vào khoảng trống không trung.", "English": "Place blocks mid-air without adjacent support." }
            },

            "Keyboard Display": {
                "name": { "Tiếng Việt": "Hiện Bàn Phím", "English": "Keyboard Display" },
                "desc": { "Tiếng Việt": "Hiển thị bàn phím ảo lên màn hình.", "English": "Show virtual keyboard layout on screen." }
            },
            "WeatherScreen": {
                "name": { "Tiếng Việt": "Hiệu Ứng Thời Tiết", "English": "WeatherScreen" },
                "desc": { "Tiếng Việt": "Tùy chỉnh hiệu ứng thời tiết màn hình.", "English": "Customize weather visual effects." }
            },
            "HitParticles": {
                "name": { "Tiếng Việt": "Hiệu Ứng Đánh", "English": "HitParticles" },
                "desc": { "Tiếng Việt": "Tạo hiệu ứng hạt đẹp mắt khi tấn công.", "English": "Spawn custom particle effects on hit." }
            },
            "ClearScreen": {
                "name": { "Tiếng Việt": "Làm Sạch Màn Hình", "English": "ClearScreen" },
                "desc": { "Tiếng Việt": "Ẩn các yếu tố thừa trên màn hình.", "English": "Hide unnecessary overlay UI elements." }
            },
            "FPS Counter": {
                "name": { "Tiếng Việt": "Đếm FPS", "English": "FPS Counter" },
                "desc": { "Tiếng Việt": "Hiển thị chỉ số khung hình/giây.", "English": "Display current FPS performance counter." }
            },
            "Keystrokes": {
                "name": { "Tiếng Việt": "Bảng Nút Bấm", "English": "Keystrokes" },
                "desc": { "Tiếng Việt": "Hiển thị các phím di chuyển và chuột bấm.", "English": "Display movement keys and mouse clicks." }
            },
            "FPS Boost": {
                "name": { "Tiếng Việt": "Tăng FPS", "English": "FPS Boost" },
                "desc": { "Tiếng Việt": "Tối ưu hóa cài đặt đồ họa để tăng mượt.", "English": "Optimize graphic rendering settings for high FPS." }
            },

            "Zoom": {
                "name": { "Tiếng Việt": "Phóng To", "English": "Zoom" },
                "desc": { "Tiếng Việt": "Phóng to góc nhìn ống kính camera.", "English": "Zoom in camera view field of perspective." }
            },

            "AntiBanpatch:(": {
                "name": { "Tiếng Việt": "Chống Ban lỗi:(", "English": "AntiBanpatch:(" },
                "desc": { "Tiếng Việt": "Bảo vệ tài khoản khỏi phát hiện kiểm tra.", "English": "Protect account against system detection checks." }
            },
            "Fast Break": {
                "name": { "Tiếng Việt": "Đập Nhanh", "English": "Fast Break" },
                "desc": { "Tiếng Việt": "Tăng tốc độ khai thác và đập khối.", "English": "Increase block mining and breaking speed." }
            }
        };

        this.injectTVClientStyles();
        this.updateColors();
        this.createToggleButton();
        this.setupEventListeners();
    }

    getTranslatedName(text) {
        let lang = this.options["Language"] || "English";
        if (this.translations[text]) {
            if (typeof this.translations[text] === "object") {
                if (this.translations[text].name && this.translations[text].name[lang]) {
                    return this.translations[text].name[lang];
                }
                if (this.translations[text][lang]) {
                    return this.translations[text][lang];
                }
            }
        }
        if (lang === "Tiếng Việt" && text.includes("patch:(")) {
            return text.replace(/patch:\(/g, "lỗi:(");
        }
        return text;
    }

    getTranslatedDesc(text) {
        let lang = this.options["Language"] || "English";
        if (this.translations[text] && this.translations[text].desc && this.translations[text].desc[lang]) {
            return this.translations[text].desc[lang];
        }
        return lang === "Tiếng Việt" ? "Không có mô tả cho tính năng này." : "No description available for this feature.";
    }

    injectTVClientStyles() {
        if (document.getElementById("tvclient-clickgui-style")) return;
        const style = document.createElement("style");
        style.id = "tvclient-clickgui-style";
        style.textContent = `
            @import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@600;800&family=Rajdhani:wght@600;700&display=swap');

            :root {
                --TVClient-accent-color: linear-gradient(135deg, #ff0000 0%, #cc0000 100%);
                --button-color: rgba(12, 10, 15, 0.85);
                --hover-color: rgba(80, 0, 0, 0.9);
                --header-bg: rgba(25, 3, 3, 0.98);
                --panel-bg: rgba(10, 8, 12, 0.92);
                --text-color: #ff0000;
            }

            .v-gui-window {
                position: fixed !important;
                background: var(--panel-bg) !important;
                border: 1px solid rgba(255, 0, 0, 0.7) !important;
                border-radius: 8px !important;
                box-shadow: 0 10px 40px rgba(0, 0, 0, 0.9), 0 0 20px rgba(255, 0, 0, 0.3) !important;
                backdrop-filter: blur(14px) saturate(180%) !important;
                font-family: 'Rajdhani', sans-serif !important;
                z-index: 999999 !important;
                display: flex !important;
                flex-direction: column !important;
                overflow: hidden !important;
                user-select: none !important;
                touch-action: none !important;
                min-width: 320px !important;
                min-height: 250px !important;
                resize: both !important;
            }

            .v-gui-window::-webkit-resizer {
                background: rgba(255, 0, 0, 0.6);
                border-top-left-radius: 4px;
            }

            .v-gui-header {
                height: 45px !important;
                padding: 0 14px !important;
                display: flex !important;
                align-items: center !important;
                justify-content: space-between !important;
                background: var(--header-bg) !important;
                border-bottom: 1px solid rgba(255, 0, 0, 0.8) !important;
                cursor: move !important;
                flex-shrink: 0 !important;
            }

            .v-gui-header:active { cursor: grabbing !important; }

            .v-brand {
                display: flex !important;
                align-items: center !important;
                gap: 8px !important;
                font-family: 'Orbitron', sans-serif !important;
                font-weight: 800 !important;
                font-size: 13px !important;
                color: var(--text-color) !important;
                letter-spacing: 1.5px !important;
                text-shadow: 0 0 8px rgba(255, 0, 0, 0.9) !important;
            }

            .v-brand-badge {
                background: var(--TVClient-accent-color) !important;
                color: #fff !important;
                width: 22px !important;
                height: 22px !important;
                border-radius: 4px !important;
                display: flex !important;
                align-items: center !important;
                justify-content: center !important;
                font-size: 11px !important;
                font-weight: 800 !important;
                box-shadow: 0 0 10px rgba(255, 0, 0, 0.6) !important;
            }

            .v-search-box {
                flex: 1 !important;
                max-width: 220px !important;
                margin: 0 10px !important;
            }

            .v-search-input {
                width: 100% !important;
                background: rgba(0, 0, 0, 0.5) !important;
                border: 1px solid rgba(255, 0, 0, 0.4) !important;
                border-radius: 4px !important;
                padding: 4px 8px !important;
                color: #fff !important;
                font-family: 'Rajdhani', sans-serif !important;
                font-size: 12px !important;
                outline: none !important;
                transition: border-color 0.2s !important;
            }

            .v-search-input:focus {
                border-color: #ff0000 !important;
                box-shadow: 0 0 6px rgba(255, 0, 0, 0.5) !important;
            }

            .v-version {
                font-size: 11px !important;
                color: var(--text-color) !important;
                background: rgba(255, 0, 0, 0.1) !important;
                padding: 2px 6px !important;
                border-radius: 4px !important;
                border: 1px solid rgba(255, 0, 0, 0.3) !important;
                font-weight: bold !important;
            }

            .v-gui-body {
                flex: 1 !important;
                display: flex !important;
                overflow: hidden !important;
            }

            .v-sidebar {
                width: 120px !important;
                background: rgba(15, 4, 4, 0.95) !important;
                border-right: 1px solid rgba(255, 0, 0, 0.4) !important;
                padding: 6px 4px !important;
                display: flex !important;
                flex-direction: column !important;
                gap: 4px !important;
                overflow-y: auto !important;
                flex-shrink: 0 !important;
            }

            .v-nav-item {
                padding: 6px 8px !important;
                border-radius: 4px !important;
                color: #cccccc !important;
                font-size: 12px !important;
                font-weight: 600 !important;
                cursor: pointer !important;
                transition: all 0.15s ease-in-out !important;
                display: flex !important;
                align-items: center !important;
                justify-content: space-between !important;
                border-left: 2px solid transparent !important;
            }

            .v-nav-item:hover {
                background: var(--hover-color) !important;
                color: #ff0000 !important;
                border-left-color: #ff0000 !important;
            }

            .v-nav-item.active {
                background: linear-gradient(90deg, rgba(255, 0, 0, 0.4) 0%, rgba(25, 3, 3, 0.8) 100%) !important;
                color: #ff0000 !important;
                border-left: 3px solid #ff0000 !important;
                font-weight: 700 !important;
                text-shadow: 0 0 6px rgba(255, 0, 0, 0.8) !important;
            }

            .v-content {
                flex: 1 !important;
                padding: 8px !important;
                overflow-y: auto !important;
                display: flex !important;
                flex-direction: column !important;
                gap: 6px !important;
                scrollbar-width: thin !important;
                scrollbar-color: #ff0000 rgba(0,0,0,0.3) !important;
            }

            .v-content::-webkit-scrollbar { width: 4px !important; }
            .v-content::-webkit-scrollbar-thumb { background: #ff0000 !important; border-radius: 4px !important; }

            .v-module-card {
                background: var(--button-color) !important;
                border: 1px solid rgba(255, 255, 255, 0.05) !important;
                border-left: 3px solid transparent !important;
                border-radius: 4px !important;
                padding: 8px 10px !important;
                display: flex !important;
                align-items: center !important;
                justify-content: space-between !important;
                cursor: pointer !important;
                transition: all 0.15s ease-in-out !important;
            }

            .v-module-card:hover {
                background: var(--hover-color) !important;
                border-left-color: #ff0000 !important;
            }

            .v-module-card.enabled {
                background: linear-gradient(90deg, rgba(255, 0, 0, 0.45) 0%, rgba(25, 3, 3, 0.85) 100%) !important;
                border-left: 3px solid #ff0000 !important;
                box-shadow: inset 0 0 8px rgba(255, 0, 0, 0.5) !important;
            }

            .v-module-info {
                display: flex !important;
                flex-direction: column !important;
                gap: 2px !important;
                max-width: 80% !important;
            }

            .v-module-title {
                font-size: 13px !important;
                font-weight: 700 !important;
                color: #ffffff !important;
                letter-spacing: 0.5px !important;
            }

            .v-module-desc {
                font-size: 10px !important;
                color: #aaaaaa !important;
                line-height: 1.2 !important;
            }

            .v-module-card.enabled .v-module-title {
                color: #ff0000 !important;
                text-shadow: 0 0 6px rgba(255, 0, 0, 0.95) !important;
            }

            .v-switch {
                position: relative !important;
                width: 34px !important;
                height: 18px !important;
                background: rgba(255, 255, 255, 0.15) !important;
                border-radius: 10px !important;
                cursor: pointer !important;
                transition: background 0.2s !important;
                flex-shrink: 0 !important;
            }

            .v-switch::after {
                content: '' !important;
                position: absolute !important;
                top: 2px !important;
                left: 2px !important;
                width: 14px !important;
                height: 14px !important;
                background: #fff !important;
                border-radius: 50% !important;
                transition: transform 0.2s !important;
            }

            .v-switch.enabled {
                background: #ff0000 !important;
                box-shadow: 0 0 8px rgba(255, 0, 0, 0.8) !important;
            }

            .v-switch.enabled::after {
                transform: translateX(16px) !important;
            }

            .v-lang-btn {
                margin-top: auto !important;
                background: rgba(255, 0, 0, 0.15) !important;
                border: 1px solid #ff0000 !important;
                color: #ff0000 !important;
                font-weight: bold !important;
                text-align: center !important;
                justify-content: space-between !important;
            }

            .gui-background {
                position: fixed !important;
                top: 0 !important;
                left: 0 !important;
                width: 100vw !important;
                height: 100vh !important;
                z-index: 999990 !important;
                background: radial-gradient(circle, rgba(40, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0.85) 100%) !important;
                backdrop-filter: blur(8px) !important;
                -webkit-backdrop-filter: blur(8px) !important;
            }

            #tvclient-toggle-btn {
                position: fixed;
                top: 15px;
                left: 15px;
                z-index: 9999999;
                width: 44px;
                height: 44px;
                border: 2px solid #ff0000;
                border-radius: 50%;
                cursor: move;
                box-shadow: 0 0 12px rgba(255, 0, 0, 0.6);
                transition: transform 0.15s ease, box-shadow 0.2s ease;
                user-select: none;
                touch-action: none;

                background-image: url('data:image/jpeg;base64,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');
                background-size: cover;
                background-position: center;
                background-repeat: no-repeat;
            }

            #tvclient-toggle-btn:hover {
                transform: scale(1.08);
                box-shadow: 0 0 20px rgba(255, 0, 0, 0.95);
            }

            #tvclient-toggle-btn:active {
                transform: scale(0.95);
            }

            .v-option-popup {
                position: fixed !important;
                background: rgba(15, 5, 5, 0.98) !important;
                border: 1px solid #ff0000 !important;
                box-shadow: 0 0 15px rgba(255, 0, 0, 0.5) !important;
                border-radius: 6px !important;
                padding: 10px !important;
                z-index: 1000000 !important;
                display: flex !important;
                flex-direction: column !important;
                gap: 8px !important;
                min-width: 220px !important;
                max-width: 300px !important;
                font-family: 'Rajdhani', sans-serif !important;
                max-height: 350px !important;
                overflow-y: auto !important;
            }
            .v-option-title {
                color: #ff0000 !important;
                font-weight: 800 !important;
                font-size: 13px !important;
                border-bottom: 1px solid rgba(255,0,0,0.3) !important;
                padding-bottom: 4px !important;
            }
            .v-option-item {
                display: flex !important;
                justify-content: space-between !important;
                align-items: center !important;
                color: #fff !important;
                font-size: 12px !important;
                gap: 8px !important;
            }
            .v-option-input {
                background: #000 !important;
                border: 1px solid #ff0000 !important;
                color: #ff0000 !important;
                padding: 2px 6px !important;
                text-align: center !important;
                border-radius: 3px !important;
                font-size: 11px !important;
                outline: none !important;
            }
            .v-option-input[type="number"] {
                width: 60px !important;
            }
            .v-option-checkbox {
                accent-color: #ff0000 !important;
                cursor: pointer !important;
            }
        `;
        document.head.appendChild(style);
    }

    createToggleButton() {
        if (document.getElementById("tvclient-toggle-btn")) return;
        this.toggleBtn = document.createElement("div");
        this.toggleBtn.id = "tvclient-toggle-btn";
        document.body.appendChild(this.toggleBtn);

        let isDragging = false;
        let hasDragged = false;
        let startX, startY, initialLeft, initialTop;

        const onStart = (e) => {
            isDragging = true;
            hasDragged = false;
            const clientX = e.touches ? e.touches[0].clientX : e.clientX;
            const clientY = e.touches ? e.touches[0].clientY : e.clientY;
            startX = clientX;
            startY = clientY;
            initialLeft = this.toggleBtn.offsetLeft;
            initialTop = this.toggleBtn.offsetTop;
        };

        const onMove = (e) => {
            if (!isDragging) return;
            const clientX = e.touches ? e.touches[0].clientX : e.clientX;
            const clientY = e.touches ? e.touches[0].clientY : e.clientY;
            const dx = clientX - startX;
            const dy = clientY - startY;

            if (Math.abs(dx) > 5 || Math.abs(dy) > 5) {
                hasDragged = true;
                if (e.cancelable) e.preventDefault();
            }

            this.toggleBtn.style.left = `${initialLeft + dx}px`;
            this.toggleBtn.style.top = `${initialTop + dy}px`;
        };

        const onEnd = () => {
            if (!isDragging) return;
            isDragging = false;
            if (!hasDragged) {
                this.toggle();
            }
        };

        this.toggleBtn.addEventListener("mousedown", onStart, { capture: true });
        this.toggleBtn.addEventListener("touchstart", onStart, { passive: false, capture: true });
        window.addEventListener("mousemove", onMove, { capture: true });
        window.addEventListener("touchmove", onMove, { passive: false, capture: true });
        window.addEventListener("mouseup", onEnd, { capture: true });
        window.addEventListener("touchend", onEnd, { capture: true });
    }

    updateAnimations() {
        if (this.options["Enable Animations"]) document.body.classList.add("with-animations");
        else document.body.classList.remove("with-animations");
    }

    updateColors() {
        document.body.style.setProperty("--TVClient-accent-color", `linear-gradient(135deg, ${this.options["Accent Color 1"]} 0%, ${this.options["Accent Color 2"]} 100%)`);
        document.body.style.setProperty("--button-color", this.options["Button Color"]);
        document.body.style.setProperty("--hover-color", this.options["Hover Color"]);
        document.body.style.setProperty("--header-bg", this.options["Header Color"]);
        document.body.style.setProperty("--panel-bg", this.options["Panel Color"]);
        document.body.style.setProperty("--text-color", this.options["Text Color"]);
    }

    makeDraggable(panelEl, headerEl) {
        let isDragging = false, startX, startY, initialLeft, initialTop;

        const onStart = (e) => {
            if (e.target.tagName === 'INPUT' || e.target.tagName === 'SELECT') return;
            isDragging = true;
            const clientX = e.touches ? e.touches[0].clientX : e.clientX;
            const clientY = e.touches ? e.touches[0].clientY : e.clientY;
            startX = clientX;
            startY = clientY;
            initialLeft = panelEl.offsetLeft;
            initialTop = panelEl.offsetTop;

            e.stopPropagation();
        };

        const onMove = (e) => {
            if (!isDragging) return;
            const clientX = e.touches ? e.touches[0].clientX : e.clientX;
            const clientY = e.touches ? e.touches[0].clientY : e.clientY;
            panelEl.style.left = `${initialLeft + (clientX - startX)}px`;
            panelEl.style.top = `${initialTop + (clientY - startY)}px`;

            if (e.cancelable) e.preventDefault();
            e.stopPropagation();
        };

        const onEnd = (e) => {
            if (isDragging) {
                isDragging = false;
                e.stopPropagation();
            }
        };

        headerEl.addEventListener("mousedown", onStart, { capture: true });
        headerEl.addEventListener("touchstart", onStart, { passive: false, capture: true });
        window.addEventListener("mousemove", onMove, { capture: true });
        window.addEventListener("touchmove", onMove, { passive: false, capture: true });
        window.addEventListener("mouseup", onEnd, { capture: true });
        window.addEventListener("touchend", onEnd, { capture: true });
    }

    setupBackground() {
        if (!this.blurredBackground) {
            this.blurredBackground = document.createElement("div");
            this.blurredBackground.className = "gui-background";
            this.blurredBackground.onclick = () => this.toggle();
            document.body.appendChild(this.blurredBackground);
        }
    }

    formatKeyName(keyStr) {
        if (!keyStr) return "None";
        let str = keyStr.toString();

        const displayMap = {
            "Semicolon": ";",
            "Quote": "'",
            "Comma": ",",
            "Period": ".",
            "Slash": "/",
            "Backslash": "\\",
            "BracketLeft": "[",
            "BracketRight": "]",
            "Minus": "-",
            "Equal": "=",
            "Backquote": "`",
            "Space": "SPACE"
        };

        if (displayMap[str]) return displayMap[str];
        if (str.startsWith("Key") && str.length === 4) return str.replace("Key", "").toUpperCase();
        if (str.startsWith("Digit") && str.length === 6) return str.replace("Digit", "");
        if (str.length === 1) return str.toUpperCase();
        return str;
    }

    showModuleOptions(mod, x, y) {
        const oldPopup = document.querySelector(".v-option-popup");
        if (oldPopup) oldPopup.remove();

        const popup = document.createElement("div");
        popup.className = "v-option-popup";
        popup.style.left = `${Math.min(x, window.innerWidth - 240)}px`;
        popup.style.top = `${Math.min(y, window.innerHeight - 300)}px`;

        let currentKeyDisplay = this.formatKeyName(mod.keybind);

        let html = `<div class="v-option-title">${this.getTranslatedName(mod.name)} Options</div>`;

        html += `
            <div class="v-option-item">
                <span>Keybind:</span>
                <input type="text" class="v-option-input keybind-input" value="${currentKeyDisplay}" readonly style="width: 75px; cursor: pointer; text-transform: uppercase; font-weight: bold;" />
            </div>
        `;

        if (mod.options && typeof mod.options === "object") {
            Object.keys(mod.options).forEach(optKey => {
                let optVal = mod.options[optKey];
                let optType = typeof optVal;

                if (optType === "boolean") {
                    html += `
                        <div class="v-option-item">
                            <span>${optKey}:</span>
                            <input type="checkbox" class="v-option-checkbox mod-opt" data-key="${optKey}" ${optVal ? "checked" : ""} />
                        </div>
                    `;
                } else if (optType === "number") {
                    html += `
                        <div class="v-option-item">
                            <span>${optKey}:</span>
                            <input type="number" class="v-option-input mod-opt" data-key="${optKey}" value="${optVal}" step="any" />
                        </div>
                    `;
                } else if (optType === "string") {
                    html += `
                        <div class="v-option-item">
                            <span>${optKey}:</span>
                            <input type="text" class="v-option-input mod-opt" data-key="${optKey}" value="${optVal}" style="width: 80px;" />
                        </div>
                    `;
                }
            });
        }

        html += `<div style="font-size: 10px; color: #888; text-align: center; margin-top: 4px;">${this.options["Language"] === "Tiếng Việt" ? "Nhấp Keybind để đổi phím" : "Click Keybind to set key"}</div>`;

        popup.innerHTML = html;

        const keyInput = popup.querySelector(".keybind-input");
        keyInput.onclick = () => {
            keyInput.value = "...";
            const onKeyDown = (e) => {
                e.preventDefault();
                e.stopPropagation();

                let savedKey = e.code ? e.code : e.key;
                if (e.key === "Escape") savedKey = "";

                mod.keybind = savedKey;
                keyInput.value = this.formatKeyName(savedKey);

                window.removeEventListener("keydown", onKeyDown, true);
            };
            window.addEventListener("keydown", onKeyDown, true);
        };

        popup.querySelectorAll(".mod-opt").forEach(input => {
            input.onchange = (e) => {
                const key = e.target.getAttribute("data-key");
                if (e.target.type === "checkbox") {
                    mod.options[key] = e.target.checked;
                } else if (e.target.type === "number") {
                    mod.options[key] = parseFloat(e.target.value) || 0;
                } else {
                    mod.options[key] = e.target.value;
                }
                if (typeof mod.onSettingUpdate === "function") {
                    mod.onSettingUpdate();
                }
            };
        });

        document.body.appendChild(popup);

        const closePopup = (e) => {
            if (!popup.contains(e.target)) {
                popup.remove();
                window.removeEventListener("mousedown", closePopup);
            }
        };
        setTimeout(() => window.addEventListener("mousedown", closePopup), 50);
    }

    buildWindow() {
        if (this.guiWindow) this.guiWindow.remove();

        const categories = ["Combat", "Movement", "Visual", "Misc", "Fun", "Sniper", "World"];

        this.guiWindow = document.createElement("div");
        this.guiWindow.className = "v-gui-window";

        const isMobile = window.innerWidth <= 768;
        const defaultWidth = isMobile ? Math.min(window.innerWidth - 30, 480) : 580;
        const defaultHeight = isMobile ? Math.min(window.innerHeight - 60, 360) : 380;

        this.guiWindow.style.width = `${defaultWidth}px`;
        this.guiWindow.style.height = `${defaultHeight}px`;
        this.guiWindow.style.left = isMobile ? "10px" : "25px";
        this.guiWindow.style.top = isMobile ? "50px" : "25px";

        const header = document.createElement("div");
        header.className = "v-gui-header";
        header.innerHTML = `
            <div class="v-brand">
                <div class="v-brand-badge">TV</div>
                <span>TVCLIENT</span>
            </div>
            <div class="v-search-box">
                <input type="text" class="v-search-input" placeholder="${this.getTranslatedName("Search modules...")}">
            </div>
            <div class="v-version">v5.0</div>
        `;

        const body = document.createElement("div");
        body.className = "v-gui-body";

        const sidebar = document.createElement("div");
        sidebar.className = "v-sidebar";

        categories.forEach(cat => {
            const nav = document.createElement("div");
            nav.className = `v-nav-item ${cat === this.activeCategory ? "active" : ""}`;
            nav.innerText = this.getTranslatedName(cat);
            nav.onclick = () => {
                this.activeCategory = cat;
                this.renderModules();
                sidebar.querySelectorAll(".v-nav-item").forEach(el => el.classList.remove("active"));
                nav.classList.add("active");
            };
            sidebar.appendChild(nav);
        });

        const langNav = document.createElement("div");
        langNav.className = "v-nav-item v-lang-btn";
        langNav.innerHTML = `<span>${this.getTranslatedName("Language")}</span><span style="font-size: 11px; text-transform: uppercase;">${this.options["Language"]}</span>`;
        langNav.onclick = () => {
            this.options["Language"] = (this.options["Language"] === "English") ? "Tiếng Việt" : "English";
            this.buildWindow();
            this.showGUI();
        };
        sidebar.appendChild(langNav);

        const content = document.createElement("div");
        content.className = "v-content";
        content.id = "tvclient-module-container";

        body.appendChild(sidebar);
        body.appendChild(content);

        this.guiWindow.appendChild(header);
        this.guiWindow.appendChild(body);
        document.body.appendChild(this.guiWindow);

        this.makeDraggable(this.guiWindow, header);

        const searchInput = header.querySelector(".v-search-input");
        searchInput.addEventListener("input", (e) => {
            this.searchQuery = e.target.value.toLowerCase();
            this.renderModules();
        });

        this.renderModules();
    }

    renderModules() {
        const container = document.getElementById("tvclient-module-container");
        if (!container) return;
        container.innerHTML = "";

        let modules = [];
        if (typeof h !== "undefined" && h.modules) {
            modules = Object.values(h.modules);
        }

        const filtered = modules.filter(m => {
            const matchCat = this.searchQuery ? true : m.category === this.activeCategory;
            const matchSearch = m.name.toLowerCase().includes(this.searchQuery) ||
                               (this.getTranslatedName(m.name) && this.getTranslatedName(m.name).toLowerCase().includes(this.searchQuery));
            return matchCat && matchSearch;
        });

        filtered.sort((a, b) => b.name.length - a.name.length);

        filtered.forEach(mod => {
            const card = document.createElement("div");
            card.className = `v-module-card ${mod.isEnabled ? "enabled" : ""}`;

            const translatedName = this.getTranslatedName(mod.name);
            const translatedDesc = this.getTranslatedDesc(mod.name);

            card.innerHTML = `
                <div class="v-module-info">
                    <div class="v-module-title">${translatedName}</div>
                    <div class="v-module-desc">${translatedDesc}</div>
                </div>
                <div class="v-switch ${mod.isEnabled ? "enabled" : ""}"></div>
            `;

            const sw = card.querySelector(".v-switch");

            card.onclick = () => {
                if (typeof mod.toggle === "function") mod.toggle();
                else mod.isEnabled = !mod.isEnabled;

                card.classList.toggle("enabled", mod.isEnabled);
                sw.classList.toggle("enabled", mod.isEnabled);
            };

            card.oncontextmenu = (e) => {
                e.preventDefault();
                this.showModuleOptions(mod, e.clientX, e.clientY);
            };

            container.appendChild(card);
        });
    }

    setupEventListeners() {
        if (typeof c !== "undefined" && c.on) {
            c.on("module.update", (module) => {
                this.renderModules();
            });
        }
    }

    onEnable() {
        if (document.pointerLockElement) document.exitPointerLock();
        this.setupBackground();
        this.buildWindow();
        this.updateAnimations();
        this.showGUI();

        let e = typeof m !== "undefined" && m.getCssRule ? m.getCssRule(".pause-cont") : null;
        if (e) e.style.display = "none";
        this.fixCanvas();
    }

    fixCanvas() {
        let gameEl = document.querySelector("#game");
        if (gameEl) gameEl.dispatchEvent(new Event("resize", { bubbles: true }));
    }

    showGUI() {
        if (this.guiWindow) this.guiWindow.style.setProperty("display", "flex", "important");
        if (this.blurredBackground) this.blurredBackground.style.setProperty("display", "block", "important");
    }

    onDisable(keepClick = true) {
        if (this.guiWindow) this.guiWindow.style.setProperty("display", "none", "important");
        if (this.blurredBackground) this.blurredBackground.style.setProperty("display", "none", "important");

        let e = typeof m !== "undefined" && m.getCssRule ? m.getCssRule(".pause-cont") : null;
        if (e) e.style.display = "";
        let i = document.getElementsByClassName("pause-cont")[0];
        if (i) i.style.display = "none";
        this.fixCanvas();
        let s = document.querySelector("#game");
        if (keepClick && s) s.click();
    }

    onSettingUpdate() {
        this.updateColors();
        this.updateAnimations();
        this.buildWindow();
    }
};
    var ModChams = class extends a {
        constructor() {
            super("Chams", "Visual", null);
        }
        onRender() {
            if (!o?.gameWorld?.player || !o.gameWorld.server?.players) return;
            o.gameWorld.server.players.forEach(player => {
                if (player && player.playerMaterial) {
                    player.playerMaterial.wireframe = false;
                    player.playerMaterial.depthTest = false;
                    if (player.playerMaterial.color) {
                        player.playerMaterial.color.r = 1; player.playerMaterial.color.g = 0; player.playerMaterial.color.b = 1;
                    }
                    if (player.playerMaterial.opacity !== undefined) player.playerMaterial.opacity = 0.7;
                    if (player.playerMaterial.transparent !== undefined) player.playerMaterial.transparent = true;
                }
            });
        }
        onDisable() {
            if (o.gameWorld?.server?.players) {
                o.gameWorld.server.players.forEach(player => {
                    if (player && player.playerMaterial) {
                        player.playerMaterial.depthTest = true;
                        player.playerMaterial.wireframe = false;
                        player.playerMaterial.opacity = 1;
                        player.playerMaterial.transparent = false;
                    }
                });
            }
        }
    };

    var ModBlockOutline = class extends a {
        constructor() { super("BlockOutline", "Visual", { "Outline Color": "#81e1ff" }); }
        get selectedBlock() { return o.gameWorld?.systemsManager.activeSystems.find(e => e?.currBlockPos !== undefined) || undefined; }
        onRender() { if (this?.selectedBlock?.mesh) { let e = m.hexToRgb(this.options["Outline Color"]); if (e && (this.selectedBlock.mesh.material.color.r !== e.r)) this.onEnable(); } }
        onEnable() { let e = m.hexToRgb(this.options["Outline Color"]); if (!e || !this.selectedBlock?.mesh) return; let t = this.selectedBlock.mesh; Object.keys(e).forEach(i => { t.material.color[i] = e[i]; }); }
        onDisable() { if (this.selectedBlock?.mesh) { this.selectedBlock.mesh.material.color.r = 0; this.selectedBlock.mesh.material.color.g = 0; this.selectedBlock.mesh.material.color.b = 0; } }
    };

    var ModInterface = class extends a {
        constructor() { super("Interface", "Visual", { "Hide Right Elements": true, "Bottom Chat": true }); }
        applyTweaks() { let i = this.isEnabled; let s = m.getCssRule("chat-wrapper"); let n = m.getCssRule("key-prompt-wrapper"); if (i && this.options["Hide Right Elements"] && n) n.style.display = "none"; else if (n) n.style.display = "flex"; if (i && this.options["Bottom Chat"] && s) { s.style.bottom = "10%"; s.style.top = ""; s.style.position = "fixed"; } else if (s) { s.style.bottom = ""; s.style.top = "0"; s.style.position = "absolute"; } }
        onEnable() { this.applyTweaks(); } onDisable() { this.applyTweaks(); }
    };

    var ModFreecam = class extends a {
        constructor() { super("Freecam", "Visual", { "3rd person": "true" }); this._copy = null; this.realPos = null; }
        get playerModel() { return o.gameWorld.systemsManager.activeSystems.find(e => e?.model).model; }
        onEnable() { let e = o.gameWorld; let t = 0; if (e.player.cameraMode == 1 && this.options["3rd person"] == "true") { o.gameWorld.switchCameraView(); t = 100; } o.gameWorld.server.msgsListeners[p.toClient.SET_INVISIBLE_MODE](); setTimeout(() => { this._copy = this._copy || this.playerModel.position.copy; this.playerModel.position.copy = () => { }; this.realPos = this.playerModel.position; }, t); }
        onDisable() { o.gameWorld.server.msgsListeners[p.toClient.SET_WALK_MODE](); if (this.playerModel && this._copy) { this.playerModel.position.copy = this._copy.bind(this.playerModel.position); this.playerModel.position = this.realPos; } }
    };

    var ModXray = class extends a {
        constructor() { super("Xraypatch:(", "Visual", null); }
        getItemByName(e) { return Object.values(o.gameWorld.items).find(t => t.name == e); }
        blocksToXray = ["Dirt", "Cobblestone", "Stone"];
        onEnable() { $assetsUrls["game/textures/blocksTextures/Transparent.png"] = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg=="; this.blocksToXray.forEach(e => { let t = this.getItemByName(e); if (t) { t.transparent = true; t.textures = { other: "Transparent" }; t.lightRadius = 15; t.lightRGB = [1, 1, 1]; } }); this.reloadLighting(); alert("Rejoin game to apply"); }
        onDisable() { this.blocksToXray.forEach(e => { let t = this.getItemByName(e); if (t) { t.transparent = false; t.textures = { other: e }; t.lightRadius = 0; t.lightRGB = [0, 0, 0]; } }); this.reloadLighting(); }
        reloadLighting() { if (o.gameWorld.chunkManager) { o.gameWorld.chunkManager.lightConfig.byBlockId = []; o.gameWorld.chunkManager.lightConfig.reloadBlocks(); } }
    };
var ModFullbright = class extends a {
    constructor() {
        super("Fullbright", "Visual");
        this.desc = "Makes the world fully bright using Gamma.";

        this.FB_GAMMA = 10;
        this.fbLight = null;
        this.fbMin = null;
        this.fbOrigMin = 0.2;
        this.fbRaw = null;
        this.fbWritten = null;
        this.fbAmount = 0;
        this.fbTarget = 0;
        this.fbRaf = 0;
        this.fbLastT = 0;
        this.fbScanFrames = 0;
    }

    lift(x) {
        x = Math.min(1, Math.max(0, x));
        return 1 - Math.pow(1 - x, this.FB_GAMMA);
    }

    getGameWorld() {
        try {
            const appEl = document.getElementById('app');
            const app = appEl && appEl.__vue_app__;
            const pinia = app && app.config && app.config.globalProperties && app.config.globalProperties.$pinia;
            if (!pinia || !pinia._s) return null;
            const store = pinia._s.get('gameState');
            const gw = store && store.gameWorld;
            return gw && gw.threeScene && gw.threeScene.scene ? gw : null;
        } catch (err) {
            return null;
        }
    }

    findUniforms() {
        try {
            const gw = this.getGameWorld();
            const scene = gw && gw.threeScene && gw.threeScene.scene;
            if (!scene || typeof scene.traverse !== 'function') return null;
            let light = null;
            let min = null;
            let budget = 4000;

            const stack = [scene];
            while (stack.length && !(light && min) && budget > 0) {
                const obj = stack.pop();
                if (!obj) continue;
                budget--;
                if (obj.isMesh && !obj.isCamera && !obj.isLight) {
                    const mats = Array.isArray(obj.material) ? obj.material : [obj.material];
                    for (let i = 0; i < mats.length; i++) {
                        const u = mats[i] && mats[i].uniforms;
                        if (!u) continue;
                        if (u.u_lightLevel && u.u_lightLevel.value && typeof u.u_lightLevel.value.set === 'function') {
                            if (!light) light = u.u_lightLevel;
                            if (u.u_lightLevelMin && !min) min = u.u_lightLevelMin;
                        }
                    }
                }
                if (obj.children && obj.children.length) {
                    for (let i = 0; i < obj.children.length; i++) stack.push(obj.children[i]);
                }
            }
            return light || min ? { light: light, min: min } : null;
        } catch (err) {
            return null;
        }
    }

    tick(now) {
        const dt = Math.min(0.05, ((now - this.fbLastT) / 1000) || 0);
        this.fbLastT = now;
        if (!this.fbLight) {
            if (this.isEnabled) {
                if (this.fbScanFrames++ % 60 === 0) {
                    const found = this.findUniforms();
                    if (found) {
                        this.fbLight = found.light;
                        this.fbMin = found.min;
                        this.fbOrigMin = this.fbMin && typeof this.fbMin.value === 'number' ? this.fbMin.value : 0.2;
                        this.fbRaw = { x: this.fbLight.value.x, y: this.fbLight.value.y, z: this.fbLight.value.z };
                        this.fbWritten = { x: this.fbRaw.x, y: this.fbRaw.y, z: this.fbRaw.z };
                        console.log('[Full Bright] light uniforms hooked');
                    }
                }
                this.fbRaf = requestAnimationFrame((t) => this.tick(t));
            } else {
                this.fbRaf = 0;
            }
            return;
        }
        this.fbAmount += (this.fbTarget - this.fbAmount) * Math.min(1, dt * 14);
        if (Math.abs(this.fbAmount - this.fbTarget) < 0.0015) this.fbAmount = this.fbTarget;
        try {
            const v = this.fbLight.value;
            if (this.fbRaw) {
                const isRaw =
                    Math.abs(v.x - this.fbWritten.x) > 1e-5 ||
                    Math.abs(v.y - this.fbWritten.y) > 1e-5 ||
                    Math.abs(v.z - this.fbWritten.z) > 1e-5;
                if (isRaw) {
                    this.fbRaw.x = v.x;
                    this.fbRaw.y = v.y;
                    this.fbRaw.z = v.z;
                }
                const rx = this.lift(this.fbRaw.x);
                const ry = this.lift(this.fbRaw.y);
                const rz = this.lift(this.fbRaw.z);
                v.set(
                    this.fbRaw.x + (rx - this.fbRaw.x) * this.fbAmount,
                    this.fbRaw.y + (ry - this.fbRaw.y) * this.fbAmount,
                    this.fbRaw.z + (rz - this.fbRaw.z) * this.fbAmount
                );
                this.fbWritten.x = v.x;
                this.fbWritten.y = v.y;
                this.fbWritten.z = v.z;
            }
            if (this.fbMin) {
                this.fbMin.value = this.fbOrigMin + (this.lift(this.fbOrigMin) - this.fbOrigMin) * this.fbAmount;
            }
        } catch (err) {}
        if (this.fbAmount === 0 && !this.isEnabled) {
            this.fbRaf = 0;
            this.cleanup();
            return;
        }
        this.fbRaf = requestAnimationFrame((t) => this.tick(t));
    }

    cleanup() {
        if (this.fbMin) this.fbMin.value = this.fbOrigMin;
        if (this.fbLight && this.fbRaw) {
            try {
                this.fbLight.value.set(this.fbRaw.x, this.fbRaw.y, this.fbRaw.z);
            } catch (err) {}
        }
        this.fbLight = null;
        this.fbMin = null;
        this.fbRaw = null;
        this.fbWritten = null;
        this.fbOrigMin = 0.2;
        this.fbAmount = 0;
        this.fbTarget = 0;
        this.fbRaf = 0;
        this.fbScanFrames = 0;
    }

    onEnable() {
        this.onDisable();
        this.fbTarget = 1;
        this.fbAmount = 0;
        this.fbLastT = 0;
        this.fbScanFrames = 0;
        console.log('[Full Bright] enabled');
        this.fbRaf = requestAnimationFrame((t) => this.tick(t));
    }

    onDisable() {
        this.fbTarget = 0;
        if (this.fbRaf) return;
        if (this.fbLight) this.fbRaf = requestAnimationFrame((t) => this.tick(t));
    }
};
var ModTracers = class extends a {
    constructor() {
        super("Tracers", "Visual");
        this.desc = "ESP & Tracers chính xác cho người chơi và mobs";

        this.set = {};
        this.settings = [];

        this.options = {
            "Thickness (1-10)": 2,
            "Tracer Color": "#ff0000",
            "Target Players": true,
            "Target Bots/Mobs": false,
            "Show Name": true,
            "Show Distance": true,
            "Show Box": true,
            "Team Color ESP": true
        };

        this.cvs = null;
        this.ctx = null;
        this.camera = null;
        this.animFrameId = null;
        this.resizeHandler = null;
    }

    getO() {
        try {
            var app = window.app;
            var r = app._vnode.component.appContext.provides;
            var sym = Object.getOwnPropertySymbols(r).find(function(s){ return r[s] && r[s]._s; });
            if (!sym) return null;
            var o = r[sym]._s.get('gameState');
            if (!o || !o.gameWorld || !o.gameWorld.player) return null;
            return o;
        } catch(e) { return null; }
    }

    findCamera(o) {
        if (this.camera) {
            try { if (this.camera.matrixWorldInverse && this.camera.projectionMatrix) return this.camera; } catch(e){}
            this.camera = null;
        }
        try {
            var sys = o.gameWorld.systemsManager.activeSystems;
            for (var i = 0; i < sys.length; i++) {
                var s = sys[i]; if (!s) continue;
                var ks = Object.getOwnPropertyNames(s);
                for (var j = 0; j < ks.length; j++) {
                    try {
                        var v = s[ks[j]]; if (!v || typeof v !== 'object') continue;
                        if (v.isPerspectiveCamera || v.isCamera) { this.camera = v; return v; }
                        var ks2 = Object.getOwnPropertyNames(v);
                        for (var n = 0; n < ks2.length; n++) {
                            try {
                                var v2 = v[ks2[n]];
                                if (v2 && (v2.isPerspectiveCamera || v2.isCamera)) { this.camera = v2; return v2; }
                            } catch(e){}
                        }
                    } catch(e){}
                }
            }
        } catch(e){}
        return null;
    }

    worldToScreen(bx, by, bz) {
        if (!this.camera || !this.camera.projectionMatrix || !this.camera.matrixWorldInverse) return null;
        try {
            var mv = this.camera.matrixWorldInverse.elements, p = this.camera.projectionMatrix.elements;
            var vx = mv[0]*bx + mv[4]*by + mv[8]*bz + mv[12];
            var vy = mv[1]*bx + mv[5]*by + mv[9]*bz + mv[13];
            var vz = mv[2]*bx + mv[6]*by + mv[10]*bz + mv[14];
            var vw = mv[3]*bx + mv[7]*by + mv[11]*bz + mv[15];

            var cx = p[0]*vx + p[4]*vy + p[8]*vz + p[12]*vw;
            var cy = p[1]*vx + p[5]*vy + p[9]*vz + p[13]*vw;
            var cz = p[2]*vx + p[6]*vy + p[10]*vz + p[14]*vw;
            var cw = p[3]*vx + p[7]*vy + p[11]*vz + p[15]*vw;

            if (cw <= 0 || cz / cw > 1) return null;

            return {
                x: ((cx / cw) * 0.5 + 0.5) * this.cvs.width,
                y: (-(cy / cw) * 0.5 + 0.5) * this.cvs.height
            };
        } catch(e) {
            this.camera = null;
            return null;
        }
    }

    getDynamicColor(p, defaultColor) {
        if (!this.options["Team Color ESP"] || !p) return defaultColor;

        if (p.teamColor) return p.teamColor;
        if (p.color) return p.color;
        if (p.nameColor) return p.nameColor;

        let teamStr = String(p.team || p.teamName || p.teamId || '').toLowerCase();

        if (teamStr) {
            if (teamStr.includes('red') || teamStr === 'r') return '#ff3333';
            if (teamStr.includes('blue') || teamStr === 'b') return '#3388ff';
            if (teamStr.includes('green') || teamStr === 'g' || teamStr.includes('zombie')) return '#00ff00';
            if (teamStr.includes('yellow') || teamStr === 'y') return '#ffff33';
            if (teamStr.includes('cyan') || teamStr.includes('aqua')) return '#00ffff';
            if (teamStr.includes('pink') || teamStr.includes('magenta')) return '#ff66cc';
            if (teamStr.includes('purple')) return '#aa33ff';
            if (teamStr.includes('orange')) return '#ff9900';
            if (teamStr.includes('white') || teamStr.includes('human')) return '#ffffff';
        }

        let name = (p.name || '').toLowerCase();
        if (p.isInfected || p.isZombie || name.includes('zombie')) return '#00ff00';
        if (p.isHuman || name.includes('human')) return '#ffffff';

        return "#00ffffff";
    }

    createCanvas() {
        if (this.cvs) return;
        this.cvs = document.createElement('canvas');
        this.cvs.style.cssText = 'position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:2147483646';
        document.body.appendChild(this.cvs);
        this.ctx = this.cvs.getContext('2d');

        this.resizeHandler = () => {
            if (this.cvs) {
                this.cvs.width = window.innerWidth;
                this.cvs.height = window.innerHeight;
            }
        };
        this.resizeHandler();
        window.addEventListener('resize', this.resizeHandler);
    }

    destroyCanvas() {
        if (this.cvs) {
            this.cvs.remove();
            this.cvs = null;
            this.ctx = null;
        }
        if (this.resizeHandler) {
            window.removeEventListener('resize', this.resizeHandler);
            this.resizeHandler = null;
        }
    }

    renderLoop() {
        if (!this.isEnabled) return;

        this.ctx.clearRect(0, 0, this.cvs.width, this.cvs.height);
        var o = this.getO();

        if (o) {
            if (!this.camera) this.findCamera(o);
            if (this.camera) {
                try { this.camera.updateMatrixWorld(true); } catch(e) { this.camera = null; }
            }

            let me = o.gameWorld.player;
            let players = o.gameWorld.server?.players || o.gameWorld.entities?.players;

            if (me && players && this.camera) {
                let defaultTracerColor = this.options["Tracer Color"] || "#ff0000";
                let cx = this.cvs.width / 2;
                let cy = this.cvs.height / 2;

                players.forEach(p => {
                    if (!p || p === me || (p.id !== undefined && me.id !== undefined && p.id === me.id) || !p.isAlive || !p.model) return;

                    let isBot = p.name === "Zombie" || p.name === "Skeleton" || !p.name;
                    if (isBot && !this.options["Target Bots/Mobs"]) return;
                    if (!isBot && !this.options["Target Players"]) return;

                    let tracerColor = this.getDynamicColor(p, defaultTracerColor);

                    let myPos = me.position;
                    let ePos = p.model.position || p.position;
                    let dist = Math.hypot(ePos.x - myPos[0] || ePos.x - myPos.x, ePos.y - myPos[1] || ePos.y - myPos.y, ePos.z - myPos[2] || ePos.z - myPos.z);

                    let feet2D = this.worldToScreen(ePos.x, ePos.y, ePos.z);
                    let head2D = this.worldToScreen(ePos.x, ePos.y + 1.8, ePos.z);

                    if (feet2D && head2D) {
                        this.ctx.beginPath();
                        this.ctx.lineWidth = this.options["Thickness (1-10)"] || 2;
                        this.ctx.strokeStyle = tracerColor;
                        this.ctx.moveTo(cx, cy);
                        this.ctx.lineTo(feet2D.x, feet2D.y);
                        this.ctx.stroke();

                        let boxHeight = Math.abs(feet2D.y - head2D.y);
                        let boxWidth = boxHeight * 0.55;
                        let boxX = feet2D.x - boxWidth / 2;
                        let boxY = head2D.y;

                        if (this.options["Show Box"]) {
                            this.ctx.save();
                            this.ctx.strokeStyle = "rgba(0, 0, 0, 0.8)";
                            this.ctx.lineWidth = 3;
                            this.ctx.strokeRect(boxX, boxY, boxWidth, boxHeight);

                            this.ctx.strokeStyle = tracerColor;
                            this.ctx.lineWidth = 1.5;
                            this.ctx.strokeRect(boxX, boxY, boxWidth, boxHeight);
                            this.ctx.restore();
                        }

                        let showName = this.options["Show Name"];
                        let showDist = this.options["Show Distance"];

                        if (showName || showDist) {
                            let pName = p.name || (isBot ? "Mob" : "Player");
                            let text = "";
                            if (showName && showDist) text = `${pName} [${Math.round(dist)}m]`;
                            else if (showName) text = pName;
                            else if (showDist) text = `[${Math.round(dist)}m]`;

                            this.ctx.save();
                            this.ctx.font = "bold 11px system-ui, sans-serif";
                            let textWidth = this.ctx.measureText(text).width;
                            let padding = 4;
                            let tagWidth = textWidth + padding * 2;
                            let tagHeight = 16;
                            let tagX = feet2D.x - tagWidth / 2;
                            let tagY = boxY - 20;

                            this.ctx.fillStyle = "rgba(10, 8, 12, 0.85)";
                            this.ctx.fillRect(tagX, tagY, tagWidth, tagHeight);

                            this.ctx.strokeStyle = tracerColor;
                            this.ctx.lineWidth = 1;
                            this.ctx.strokeRect(tagX, tagY, tagWidth, tagHeight);

                            this.ctx.fillStyle = tracerColor;
                            this.ctx.textAlign = "center";
                            this.ctx.textBaseline = "middle";
                            this.ctx.fillText(text, feet2D.x, tagY + tagHeight / 2);
                            this.ctx.restore();
                        }
                    }
                });
            }
        }

        this.animFrameId = requestAnimationFrame(() => this.renderLoop());
    }

    onEnable() {
        this.createCanvas();
        var o = this.getO();
        if (o) this.findCamera(o);
        this.renderLoop();
    }

    onDisable() {
        if (this.animFrameId) {
            cancelAnimationFrame(this.animFrameId);
            this.animFrameId = null;
        }
        this.destroyCanvas();
        this.camera = null;
    }

    onSettingsChange() {}
};
    // ================== FUN MODULES ==================
    var ModFPScounter = class extends a {
    constructor() {
        super("FPS Counter", "Fun", {}, "None");

        this.fpsCounterEl = null;
        this.animationFrameId = null;
        this.lastTime = performance.now();
        this.frames = 0;
        this.fps = 60;
        this.fpsHistory = [];
        this.historySize = 60;

        this.injectStyles();
    }

    injectStyles() {
        if (document.getElementById("minefun-fps-counter-style")) return;

        const style = document.createElement("style");
        style.id = "minefun-fps-counter-style";
        style.textContent = `
            @import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap');

            #minefun-fps-counter {
                position: fixed;
                bottom: 20px;
                left: 20px;
                display: flex;
                flex-direction: column;
                gap: 4px;
                z-index: 99999;
                font-family: 'Press Start 2P', 'Courier New', monospace;
                user-select: none;
                filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.6));
                transform: scale(0.85);
                transform-origin: bottom left;
            }

            #minefun-fps-counter .fps-minecraft-display {
                background: linear-gradient(135deg, rgba(40, 40, 40, 0.95), rgba(30, 30, 30, 0.95));
                border: 3px solid #8B8B8B;
                border-bottom-color: #373737;
                border-right-color: #373737;
                padding: 6px 12px;
                position: relative;
                box-shadow:
                    inset 2px 2px 0 rgba(255, 255, 255, 0.1),
                    inset -2px -2px 0 rgba(0, 0, 0, 0.3),
                    0 6px 20px rgba(0, 0, 0, 0.5);
                display: flex;
                align-items: center;
                gap: 8px;
            }

            #minefun-fps-counter .fps-label-row {
                display: flex;
                align-items: center;
                gap: 3px;
            }

            #minefun-fps-counter .fps-icon {
                font-size: 10px;
                animation: pulse 1.5s ease-in-out infinite;
            }

            #minefun-fps-counter .fps-label {
                font-size: 6px;
                color: #AAAAAA;
                text-shadow: 2px 2px 0 rgba(0, 0, 0, 0.8);
                letter-spacing: 1px;
            }

            #minefun-fps-counter .fps-value-row {
                display: flex;
                align-items: center;
                gap: 6px;
            }

            #minefun-fps-counter .fps-number {
                font-size: 18px;
                color: #55FF55;
                text-shadow:
                    2px 2px 0 rgba(0, 0, 0, 0.8),
                    0 0 10px rgba(85, 255, 85, 0.5);
                line-height: 1;
                display: inline-block;
                transition: color 0.3s ease;
            }

            #minefun-fps-counter .fps-number.fps-good {
                color: #55FF55;
                text-shadow:
                    2px 2px 0 rgba(0, 0, 0, 0.8),
                    0 0 10px rgba(85, 255, 85, 0.5);
            }

            #minefun-fps-counter .fps-number.fps-medium {
                color: #FFFF55;
                text-shadow:
                    2px 2px 0 rgba(0, 0, 0, 0.8),
                    0 0 10px rgba(255, 255, 85, 0.5);
            }

            #minefun-fps-counter .fps-number.fps-low {
                color: #FF5555;
                text-shadow:
                    2px 2px 0 rgba(0, 0, 0, 0.8),
                    0 0 10px rgba(255, 85, 85, 0.5);
                animation: shake 0.5s ease-in-out infinite;
            }

            #minefun-fps-counter .fps-bar-container {
                width: 80px;
                height: 8px;
                background: rgba(0, 0, 0, 0.6);
                border: 2px solid #373737;
                border-top-color: #1a1a1a;
                border-left-color: #1a1a1a;
                position: relative;
                overflow: hidden;
                box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.5);
            }

            #minefun-fps-counter .fps-bar {
                height: 100%;
                width: 100%;
                background: linear-gradient(90deg, #55FF55 0%, #55FF55 100%);
                transition: width 0.3s ease, background 0.3s ease;
                position: relative;
                box-shadow: 0 0 8px rgba(85, 255, 85, 0.6);
            }

            #minefun-fps-counter .fps-bar::after {
                content: '';
                position: absolute;
                top: 0;
                left: -100%;
                width: 100%;
                height: 100%;
                background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
                animation: shimmer 2s infinite;
            }

            #minefun-fps-counter .fps-bar.fps-good {
                background: linear-gradient(90deg, #55FF55 0%, #44DD44 100%);
                box-shadow: 0 0 8px rgba(85, 255, 85, 0.6);
            }

            #minefun-fps-counter .fps-bar.fps-medium {
                background: linear-gradient(90deg, #FFFF55 0%, #DDDD44 100%);
                box-shadow: 0 0 8px rgba(255, 255, 85, 0.6);
            }

            #minefun-fps-counter .fps-bar.fps-low {
                background: linear-gradient(90deg, #FF5555 0%, #DD4444 100%);
                box-shadow: 0 0 8px rgba(255, 85, 85, 0.6);
            }

            #minefun-fps-counter .fps-status {
                font-size: 5px;
                color: #55FF55;
                text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.8);
                text-align: center;
                letter-spacing: 0.5px;
                transition: color 0.3s ease;
                white-space: nowrap;
            }

            #minefun-fps-counter .fps-status.fps-good {
                color: #55FF55;
            }

            #minefun-fps-counter .fps-status.fps-medium {
                color: #FFFF55;
            }

            #minefun-fps-counter .fps-status.fps-low {
                color: #FF5555;
            }

            #minefun-fps-counter .fps-close-btn {
                width: 20px;
                height: 20px;
                background: linear-gradient(135deg, rgba(60, 60, 60, 0.95), rgba(40, 40, 40, 0.95));
                border: 2px solid #8B8B8B;
                border-bottom-color: #373737;
                border-right-color: #373737;
                color: #AAAAAA;
                font-size: 14px;
                font-weight: bold;
                cursor: pointer;
                transition: all 0.2s ease;
                display: flex;
                align-items: center;
                justify-content: center;
                align-self: flex-end;
                box-shadow:
                    inset 1px 1px 0 rgba(255, 255, 255, 0.1),
                    0 2px 6px rgba(0, 0, 0, 0.5);
                font-family: Arial, sans-serif;
            }

            #minefun-fps-counter .fps-close-btn:hover {
                background: linear-gradient(135deg, rgba(80, 40, 40, 0.95), rgba(60, 30, 30, 0.95));
                color: #FF5555;
                border-color: #AA5555;
                transform: translateY(-1px);
            }

            #minefun-fps-counter .fps-close-btn:active {
                transform: translateY(1px);
                box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.5);
            }

            @keyframes pulse {
                0%, 100% { opacity: 1; transform: scale(1); }
                50% { opacity: 0.7; transform: scale(1.1); }
            }

            @keyframes shake {
                0%, 100% { transform: translateX(0); }
                25% { transform: translateX(-2px); }
                75% { transform: translateX(2px); }
            }

            @keyframes shimmer {
                0% { left: -100%; }
                100% { left: 200%; }
            }

            @media (max-width: 768px) {
                #minefun-fps-counter {
                    bottom: 15px;
                    left: 15px;
                    transform: scale(0.75);
                }
            }
        `;
        document.head.appendChild(style);
    }

    createUI() {
        if (document.getElementById("minefun-fps-counter")) {
            this.fpsCounterEl = document.getElementById("minefun-fps-counter");
            this.fpsCounterEl.style.display = "flex";
            return;
        }

        this.fpsCounterEl = document.createElement("div");
        this.fpsCounterEl.id = "minefun-fps-counter";
        this.fpsCounterEl.innerHTML = `
            <div class="fps-minecraft-display">
                <div class="fps-label-row">
                    <span class="fps-icon">⚡</span>
                    <span class="fps-label">FPS</span>
                </div>
                <div class="fps-value-row">
                    <span class="fps-number">60</span>
                </div>
                <div class="fps-bar-container">
                    <div class="fps-bar"></div>
                </div>
                <div class="fps-status">EXCELLENT</div>
            </div>
            <button class="fps-close-btn" title="Click to close">×</button>
        `;

        document.body.appendChild(this.fpsCounterEl);

        const closeBtn = this.fpsCounterEl.querySelector(".fps-close-btn");
        closeBtn.addEventListener("click", (e) => {
            e.stopPropagation();
            this.toggle();
        });
    }

    updateLoop() {
        if (!this.isEnabled) return;

        const currentTime = performance.now();
        this.frames++;

        if (currentTime >= this.lastTime + 1000) {
            this.fps = Math.round((this.frames * 1000) / (currentTime - this.lastTime));
            this.frames = 0;
            this.lastTime = currentTime;

            this.fpsHistory.push(this.fps);
            if (this.fpsHistory.length > this.historySize) {
                this.fpsHistory.shift();
            }

            const avgFps = Math.round(this.fpsHistory.reduce((a, b) => a + b, 0) / this.fpsHistory.length);

            if (this.fpsCounterEl) {
                const fpsNumberEl = this.fpsCounterEl.querySelector(".fps-number");
                const fpsBarEl = this.fpsCounterEl.querySelector(".fps-bar");
                const fpsStatusEl = this.fpsCounterEl.querySelector(".fps-status");

                if (fpsNumberEl && fpsBarEl && fpsStatusEl) {
                    fpsNumberEl.textContent = avgFps;

                    const percentage = Math.min((avgFps / 144) * 100, 100);
                    fpsBarEl.style.width = percentage + "%";

                    fpsNumberEl.classList.remove("fps-good", "fps-medium", "fps-low");
                    fpsBarEl.classList.remove("fps-good", "fps-medium", "fps-low");
                    fpsStatusEl.classList.remove("fps-good", "fps-medium", "fps-low");

                    if (avgFps >= 90) {
                        fpsNumberEl.classList.add("fps-good");
                        fpsBarEl.classList.add("fps-good");
                        fpsStatusEl.classList.add("fps-good");
                        fpsStatusEl.textContent = "EXCELLENT";
                    } else if (avgFps >= 50) {
                        fpsNumberEl.classList.add("fps-medium");
                        fpsBarEl.classList.add("fps-medium");
                        fpsStatusEl.classList.add("fps-medium");
                        fpsStatusEl.textContent = "GOOD";
                    } else {
                        fpsNumberEl.classList.add("fps-low");
                        fpsBarEl.classList.add("fps-low");
                        fpsStatusEl.classList.add("fps-low");
                        fpsStatusEl.textContent = "LOW";
                    }
                }
            }
        }

        this.animationFrameId = requestAnimationFrame(() => this.updateLoop());
    }

    onEnable() {
        this.createUI();
        this.lastTime = performance.now();
        this.frames = 0;
        this.fpsHistory = [];
        this.updateLoop();
    }

    onDisable() {
        if (this.animationFrameId) {
            cancelAnimationFrame(this.animationFrameId);
            this.animationFrameId = null;
        }
        if (this.fpsCounterEl) {
            this.fpsCounterEl.style.display = "none";
        }
    }
};
    class ModKeyboardDisplay extends a {
    constructor() {
        super("Keyboard Display", "Fun");

        this.clackUrl = 'https://actions.google.com/sounds/v1/foley/mechanical_keyboard_keystroke.ogg';
        this.langDict = {
            VN: {
                title: "TV HUB",
                btnLang: "VN ⇆ EN", btnSet: "⚙️ Cài đặt",
                xhTitle: "🎯 Tâm Nhắm (Thường & VIP)", colorTitle: "🎨 Màu Sắc",
                xhEffTitle: "✨ Hiệu Ứng Tâm", kbEffTitle: "⌨️ Nhấp Nháy Only Phím",
                eff1: "Tĩnh ⏹️", eff2: "Xoay 🔄", eff3: "Nhịp tim 💓", eff4: "Cầu vồng 🌈", eff5: "Đứng Yên 🛑", eff6: "Sáng 🌟", eff7: "Nháy ⚡", eff8: "Lật 🔂", eff9: "Thu Phóng 🔍", eff10: "Nhiễu Sóng 📺", eff11: "Đổi Màu 💎", eff12: "Ảo Ảnh 👻", eff13: "Quỹ Đạo 🪐", eff14: "Tốc Biến ⚡", eff15: "Góc 3D 🧊", eff16: "Nhập Nhô 🌊", eff17: "Ma Trận 🤖", eff18: "Bùng Nổ 💥",
                kb1: "Sáng Viền 🔲", kb2: "Chớp Tinh Vân 💨", kb3: "Viền Đỏ 🔴", kb4: "Nổi Lên 👆", kb5: "V.Cầu vồng 🌈", kb6: "T.Phản 🌗", kb7: "Sóng Vũ Trụ 🌌", kb8: "Neon Chạy 🚨", kb9: "Cực Quang 🎇", kb10: "Quét Cyber 🧬", kb11: "Sao Đêm ✨", kb12: "Hào Quang Lửa 🔥", kb13: "Ánh Vàng 👑", kb14: "Siêu Tân Tinh 🌠", kb15: "Hố Đen 🌪️", kb16: "Đa Vũ Trụ 🌀"
            },
            EN: {
                title: "TV HUB",
                btnLang: "EN ⇆ VN", btnSet: "⚙️ SETTINGS",
                xhTitle: "🎯 Crosshairs", colorTitle: "🎨 Colors",
                xhEffTitle: "✨ XH Effects", kbEffTitle: "⌨️ Blink Only Keyboard",
                eff1: "Static ⏹️", eff2: "Spin 🔄", eff3: "Pulse 💓", eff4: "Rainbow 🌈", eff5: "Static 🛑", eff6: "Glow 🌟", eff7: "Blink ⚡", eff8: "Flip 🔂", eff9: "Zoom 🔍", eff10: "Glitch 📺", eff11: "Cycle 💎", eff12: "Ghost 👻", eff13: "Orbit 🪐", eff14: "Flash ⚡", eff15: "3D View 🧊", eff16: "Wave 🌊", eff17: "Matrix 🤖", eff18: "Burst 💥",
                kb1: "Glow Box 🔲", kb2: "Nebula Flash 💨", kb3: "Red Box 🔴", kb4: "Pop-up 👆", kb5: "RGB Box 🌈", kb6: "Contrast 🌗", kb7: "Cosmic Wave 🌌", kb8: "Neon Trail 🚨", kb9: "Aurora 🎇", kb10: "Cyber Scan 🧬", kb11: "Starry ✨", kb12: "Fire Glow 🔥", kb13: "Gold Shine 👑", kb14: "Supernova 🌠", kb15: "Blackhole 🌪️", kb16: "Multiverse 🌀"
            }
        };

        this.cfg = JSON.parse(localStorage.getItem('minefun_hub_cfg')) || {
            lang: 'VN', x: 20, y: 20, xh: '꧁༺❂༻꧂', xhColor: '#ff0000', xhEff: 10, kbEff: 12, setOpen: false
        };

        this.styleEl = null;
        this.hubEl = null;
        this.xhEl = null;
        this.isDragging = false;
        this.offX = 0;
        this.offY = 0;

        this.lmbClicks = [];
        this.rmbClicks = [];
        this.cpsInterval = null;

        this.keyDownHandler = null;
        this.keyUpHandler = null;
        this.mouseDownHandler = null;
        this.mouseMoveHandler = null;
        this.mouseUpHandler = null;
        this.docMouseDownHandler = null;
        this.docMouseUpHandler = null;
    }

    playClack() {
        let snd = new Audio(this.clackUrl);
        snd.volume = 1.0;
        snd.play().catch(() => {});
    }

    saveCfg() {
        localStorage.setItem('minefun_hub_cfg', JSON.stringify(this.cfg));
    }

    injectStyles() {
        this.styleEl = document.createElement('style');
        this.styleEl.innerHTML = `
            @import url('https://fonts.googleapis.com/css2?family=Roboto:wght@500;700&display=swap');
            .allow-click { pointer-events: auto; }
            #hub-container {
                position: fixed;
                background: rgba(10, 0, 0, 0.95);
                border: 2px solid #ff0000; border-radius: 8px; padding: 8px; width: 245px; z-index: 10000;
                user-select: none; font-family: 'Roboto', sans-serif; cursor: grab;
                box-shadow: 0 0 12px rgba(255, 0, 0, 0.5);
            }
            #hub-container:active { cursor: grabbing; }

            #hub-header { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid #ff0000; padding-bottom: 4px; margin-bottom: 8px; }
            .hub-title { color: #ff0000; font-size: 11px; font-weight: bold; text-shadow: 0 0 5px #ff0000; }
            .head-btn { background: #1a0000; border: 1px solid #ff0000; color: #ff3333; font-size: 8px; padding: 2px 4px; border-radius: 3px; cursor: pointer; margin-left: 2px;}
            .head-btn:hover { background: #ff0000; color: #000; font-weight: bold; }
            .close-btn { background: #ff0000 !important; color: #000 !important; border: 1px solid #ffffff !important; font-weight: bold; padding: 2px 4px; }

            #chaos-keyboard-wrapper {
                position: relative;
                padding: 8px 4px;
                border-radius: 6px;
                box-shadow: 0 0 15px rgba(255, 0, 0, 0.4), inset 0 0 10px rgba(255, 0, 0, 0.2);
                border: 1.5px solid #ff0000;
                background: rgba(20, 0, 0, 0.6);
            }

            .vk-row { display: flex; justify-content: center; gap: 2px; margin-bottom: 2px; position: relative; z-index: 5;}
            .vk-key {
                background: #0a0000; color: #ff0000; font-size: 8px; font-weight: bold;
                width: 18px; height: 18px; display: flex; flex-direction: column; justify-content: center; align-items: center;
                border-radius: 3px; border: 1px solid #660000; transition: 0.05s;
                box-shadow: 0 1px 3px rgba(255,0,0,0.3);
                text-shadow: 0 0 2px #ff0000;
                line-height: 1;
            }
            .vk-key.wide { width: 32px; }
            .vk-key.space { width: 100px; }
            .vk-key.mouse-btn { width: 48px; height: 24px; font-size: 8px; }
            .vk-key.active {
                background: #ff0000 !important; color: #000 !important;
                transform: scale(0.9) translateY(1px);
                box-shadow: 0 0 10px #ff0000, inset 0 0 5px #ffffff !important;
                border-color: #ffffff !important;
            }
            .cps-num { font-size: 7px; opacity: 0.8; margin-top: 2px; }

            .arrow-cluster { display: flex; flex-direction: column; align-items: center; gap: 2px; margin-top: 4px; }
            .arrow-row { display: flex; gap: 2px; }

            #settings-area {
                display: ${this.cfg.setOpen ? 'block' : 'none'};
                margin-top: 8px; border-top: 1.5px dashed #ff0000; padding: 6px 2px 2px 2px;
                max-height: 160px; overflow-y: auto; border-radius: 4px;
                background: rgba(5, 0, 0, 0.9);
            }
            #settings-area::-webkit-scrollbar { width: 3px; } #settings-area::-webkit-scrollbar-thumb { background: #ff0000; border-radius: 2px; }

            .set-group { margin-bottom: 6px; }
            .set-title { font-size: 8px; color: #ff3333; margin-bottom: 3px; font-weight: bold; text-transform: uppercase;}

            .flex-xh { display: flex; flex-wrap: wrap; gap: 2px; }
            .grid-color { display: grid; grid-template-columns: repeat(10, 1fr); gap: 2px; }
            .grid-eff { display: grid; grid-template-columns: repeat(2, 1fr); gap: 3px; }

            .grid-btn { background: rgba(20, 0, 0, 0.8); border: 1px solid #660000; color: #ffaaaa; font-size: 8px; padding: 3px; border-radius: 2px; cursor: pointer; text-align: center; flex: 1 1 auto; }
            .grid-btn:hover { background: #ff0000; color: #000; box-shadow: 0 0 5px #ff0000;}
            .grid-btn.active-btn { background: #ff0000; color: #000; border-color: #fff; font-weight: bold; box-shadow: 0 0 5px #ff0000;}

            #custom-crosshair { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 24px; pointer-events: none; z-index: 9999; text-shadow: 0 0 4px #000; white-space: nowrap; }

            .xh-eff-1 { } .xh-eff-2 { animation: xhSpin 2s linear infinite; } .xh-eff-3 { animation: xhPulse 1s infinite; } .xh-eff-4 { animation: xhRainbow 3s linear infinite; } .xh-eff-5 { } .xh-eff-6 { text-shadow: 0 0 10px currentColor; } .xh-eff-7 { animation: xhBlink 0.5s step-end infinite; } .xh-eff-8 { animation: xhFlip 2s infinite; } .xh-eff-9 { animation: xhZoomBounce 1.2s ease-in-out infinite; } .xh-eff-10 { animation: xhGlitch 0.4s linear infinite; } .xh-eff-11 { animation: xhColorCycle 4s linear infinite; } .xh-eff-12 { animation: xhGhost 1.5s infinite; } .xh-eff-13 { animation: xhOrbit 2.5s linear infinite; } .xh-eff-14 { animation: xhFlash 0.8s ease-in-out infinite; } .xh-eff-15 { animation: xhRotate3D 3s linear infinite; } .xh-eff-16 { animation: xhWaveY 1s ease-in-out infinite; } .xh-eff-17 { animation: xhMatrixFlicker 0.7s infinite; } .xh-eff-18 { animation: xhExplode 1.8s infinite; }
            @keyframes xhZoomBounce { 0%, 100% { transform: translate(-50%, -50%) scale(0.9); } 50% { transform: translate(-50%, -50%) scale(1.2); } } @keyframes xhGlitch { 0% { text-shadow: 1px 0 #ff0000, -1px 0 #000; } 50% { text-shadow: -1px 0 #ff0000, 1px 0 #000; } 100% { text-shadow: 1px 1px #ff0000; } } @keyframes xhColorCycle { 0% { color: #ff0000; } 33% { color: #ff5555; } 66% { color: #880000; } 100% { color: #ff0000; } } @keyframes xhGhost { 0%, 100% { text-shadow: 0 0 0px transparent; } 50% { text-shadow: 3px 3px 6px currentColor, -3px -3px 6px currentColor; } } @keyframes xhOrbit { 0% { transform: translate(-50%, -50%) rotate(0deg) translateX(2px) rotate(0deg); } 100% { transform: translate(-50%, -50%) rotate(360deg) translateX(2px) rotate(-360deg); } } @keyframes xhFlash { 0%, 100% { opacity: 0.4; transform: translate(-50%, -50%) scale(0.95); } 50% { opacity: 1; transform: translate(-50%, -50%) scale(1.05); } } @keyframes xhRotate3D { 100% { transform: translate(-50%, -50%) rotateX(360deg) rotateY(360deg); } } @keyframes xhWaveY { 0%, 100% { margin-top: -2px; } 50% { margin-top: 2px; } } @keyframes xhMatrixFlicker { 0%, 90%, 100% { opacity: 1; color: #ff0000; } 95% { opacity: 0.3; } } @keyframes xhExplode { 0% { transform: translate(-50%, -50%) scale(1); opacity: 1; } 50% { transform: translate(-50%, -50%) scale(1.5); opacity: 0; } 100% { transform: translate(-50%, -50%) scale(1); opacity: 1; } } @keyframes xhSpin { 100% { transform: translate(-50%, -50%) rotate(360deg); } } @keyframes xhPulse { 0%, 100% { transform: translate(-50%, -50%) scale(1); } 50% { transform: translate(-50%, -50%) scale(1.2); } } @keyframes xhRainbow { 100% { filter: hue-rotate(360deg); } } @keyframes xhBlink { 50% { opacity: 0; } } @keyframes xhFlip { 50% { transform: translate(-50%, -50%) rotateY(180deg); } }

            .kb-eff-1 { box-shadow: 0 0 8px #ff0000; } .kb-eff-2 { animation: kbBreathe 1.5s infinite; } .kb-eff-3 { border-color: #ff0000; box-shadow: 0 0 5px #ff0000; } .kb-eff-4 .vk-key { box-shadow: 0 1px 0 #ff0000; } .kb-eff-4 .vk-key.active { transform: translateY(1px); box-shadow: none; } .kb-eff-5 { animation: kbRainbowBorder 3s linear infinite; } .kb-eff-6 { filter: contrast(1.3); } .kb-eff-7 { animation: kbCosmicWave 4s linear infinite; } .kb-eff-8 { animation: kbNeonTrail 2s linear infinite; } .kb-eff-9 { animation: kbAurora 4s ease infinite; } .kb-eff-10 { border-image: linear-gradient(to bottom, #ff0000, transparent) 1; } .kb-eff-11 { animation: kbStarry 1s infinite; } .kb-eff-12 { box-shadow: 0 0 10px #ff0000; border-color: #ff0000; } .kb-eff-13 { background: radial-gradient(circle, #2c0000 0%, #000 100%) !important; border-color: #ff0000; box-shadow: 0 0 6px #ff0000; } .kb-eff-14 { animation: kbSupernova 1.5s ease-in-out infinite; } .kb-eff-15 { animation: kbVortex 3s linear infinite; } .kb-eff-16 { filter: hue-rotate(90deg) saturate(1.3); }
            @keyframes kbBreathe { 0%, 100% { box-shadow: 0 0 2px rgba(255,0,0,0.2); } 50% { box-shadow: 0 0 10px #ff0000; } } @keyframes kbRainbowBorder { 100% { filter: hue-rotate(360deg); } } @keyframes kbCosmicWave { 0% { opacity: 0.9; } 50% { opacity: 1; box-shadow: 0 0 8px #ff0000; } 100% { opacity: 0.9; } } @keyframes kbNeonTrail { 0% { border-color: #ff0000; box-shadow: 0 0 6px #ff0000; } 50% { border-color: #880000; box-shadow: 0 0 6px #880000; } 100% { border-color: #ff0000; box-shadow: 0 0 6px #ff0000; } } @keyframes kbAurora { 0%, 100% { filter: brightness(1); } 50% { filter: brightness(1.2); } } @keyframes kbStarry { 0%, 100% { opacity: 1; box-shadow: 0 0 3px #ff0000; } 50% { opacity: 0.8; border-color: #ff5555; } } @keyframes kbSupernova { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.01); box-shadow: 0 0 12px rgba(255, 0, 0, 0.8); } } @keyframes kbVortex { 0% { filter: hue-rotate(0deg); } 100% { filter: hue-rotate(360deg); } }
        `;
        document.head.appendChild(this.styleEl);
    }

    renderRow(arr) {
        return `<div class="vk-row">` + arr.map(k => {
            let finalKey = k;
            let classList = "vk-key allow-click";
            if (k === 'Shf') { finalKey = 'SHIFT'; classList += ' wide'; }
            if (k === 'Ent') { finalKey = 'ENTER'; classList += ' wide'; }
            if (k === 'Bsp') { finalKey = 'BACKSPACE'; classList += ' wide'; }
            if (k === 'SPACE') { finalKey = 'SPACE'; classList += ' space'; }
            return `<div class="${classList}" data-key="${finalKey.toUpperCase()}">${k === 'SPACE' ? 'SPACE' : k}</div>`;
        }).join('') + `</div>`;
    }

    renderLang() {
        const t = this.langDict[this.cfg.lang];
        document.getElementById('t-title').innerText = t.title;
        document.getElementById('btn-lang').innerText = t.btnLang;
        document.getElementById('btn-toggle-set').innerText = t.btnSet;
        document.getElementById('t-xh').innerText = t.xhTitle;
        document.getElementById('t-color').innerText = t.colorTitle;
        document.getElementById('t-xh-eff').innerText = t.xhEffTitle;
        document.getElementById('t-kb-eff').innerText = t.kbEffTitle;

        document.getElementById('xh-eff-list').innerHTML = Array.from({length: 18}, (_, i) => i + 1).map(i => `<div class="grid-btn allow-click xhe-btn ${this.cfg.xhEff===i?'active-btn':''}" data-val="${i}">${t['eff'+i]}</div>`).join('');
        document.getElementById('kb-eff-list').innerHTML = Array.from({length: 16}, (_, i) => i + 1).map(i => `<div class="grid-btn allow-click kbe-btn ${this.cfg.kbEff===i?'active-btn':''}" data-val="${i}">${t['kb'+i]}</div>`).join('');
        this.bindEffectEvents();
    }

    applyAllCfg() {
        if (!this.xhEl || !this.hubEl) return;
        this.xhEl.innerText = this.cfg.xh;
        this.xhEl.style.color = this.cfg.xhColor;
        this.xhEl.className = `xh-eff-${this.cfg.xhEff}`;
        this.hubEl.className = `allow-click kb-eff-${this.cfg.kbEff}`;
    }

    bindEffectEvents() {
        document.querySelectorAll('.xhe-btn').forEach(btn => {
            btn.addEventListener('click', (e) => {
                this.cfg.xhEff = parseInt(e.target.getAttribute('data-val'));
                this.saveCfg(); this.applyAllCfg(); this.renderLang();
            });
        });
        document.querySelectorAll('.kbe-btn').forEach(btn => {
            btn.addEventListener('click', (e) => {
                this.cfg.kbEff = parseInt(e.target.getAttribute('data-val'));
                this.saveCfg(); this.applyAllCfg(); this.renderLang();
            });
        });
    }

    updateCPS() {
        const now = Date.now();
        this.lmbClicks = this.lmbClicks.filter(t => now - t <= 1000);
        this.rmbClicks = this.rmbClicks.filter(t => now - t <= 1000);

        const lmbCpsEl = document.getElementById('lmb-cps');
        const rmbCpsEl = document.getElementById('rmb-cps');

        if (lmbCpsEl) lmbCpsEl.innerText = `${this.lmbClicks.length} CPS`;
        if (rmbCpsEl) rmbCpsEl.innerText = `${this.rmbClicks.length} CPS`;
    }

    onEnable() {
        this.injectStyles();

        const keysRow1 = ['1','2','3','4','5','6','7','8','9'];
        const keysRow2 = ['W','Q','R','T','P','A','S','D','X','C','M','Shf'];
        const keysRow3 = ['Ent','Bsp','!','@','#','$','%','^','&','*'];
        const keysRow4 = ['SPACE'];

        const crosshairs = [
            '+','x','o','O','•','✛','✜','✚','✙','⌖','❖','⊕','🖕',
            '✧༺❂༻✧', '╭─❖─╮', '꧁༺❂༻꧂', '❂⌖❂', '༺❂༻', '☠✪☠', '𓆩☬𓆪','𒅒', '𒄆','𒀱', '𒈔'
        ];
        const colors = ['#FF0000','#000000','#800000','#FF3333','#FF6666','#330000','#990000','#CC0000','#FF4D4D','#FF1A1A','#660000','#400000','#FFFFFF','#888888','#444444','#111111'];

        document.body.insertAdjacentHTML('beforeend', `
            <div id="hub-container" class="allow-click" style="left:${this.cfg.x}px; top:${this.cfg.y}px;">
                <div id="hub-header">
                    <div class="hub-title" id="t-title">TV HUB</div>
                    <div>
                        <button class="head-btn" id="btn-lang">VN ⇆ EN</button>
                        <button class="head-btn" id="btn-toggle-set">⚙️ CÀI ĐẶT</button>
                    </div>
                </div>

                <div id="chaos-keyboard-wrapper">
                    <div id="keyboard-area">
                        ${this.renderRow(keysRow1)}
                        ${this.renderRow(keysRow2)}
                        ${this.renderRow(keysRow3)}
                        ${this.renderRow(keysRow4)}

                        <div class="vk-row" style="margin-top: 4px;">
                            <div class="vk-key allow-click mouse-btn" data-key="LMB">
                                <div>LMB</div>
                                <div class="cps-num" id="lmb-cps">0 CPS</div>
                            </div>
                            <div class="vk-key allow-click mouse-btn" data-key="RMB">
                                <div>RMB</div>
                                <div class="cps-num" id="rmb-cps">0 CPS</div>
                            </div>
                        </div>

                        <div class="arrow-cluster">
                            <div class="vk-row">
                                <div class="vk-key allow-click" data-key="ARROWUP">↑</div>
                            </div>
                            <div class="arrow-row">
                                <div class="vk-key allow-click" data-key="ARROWLEFT">←</div>
                                <div class="vk-key allow-click" data-key="ARROWDOWN">↓</div>
                                <div class="vk-key allow-click" data-key="ARROWRIGHT">→</div>
                            </div>
                        </div>
                    </div>
                </div>

                <div id="settings-area">
                    <div style="display:flex; justify-content:flex-end; margin-bottom:6px; border-bottom:1px solid #ff0000; padding-bottom:4px;">
                        <button class="head-btn close-btn" id="btn-close-set">❌ ĐÓNG</button>
                    </div>

                    <div class="set-group">
                        <div class="set-title" id="t-xh">🎯 Tâm Nhắm</div>
                        <div class="flex-xh">
                            ${crosshairs.map(c => `<div class="grid-btn allow-click xh-btn" data-val="${c}">${c}</div>`).join('')}
                        </div>
                    </div>
                    <div class="set-group">
                        <div class="set-title" id="t-color">🎨 Màu Sắc</div>
                        <div class="grid-color">
                            ${colors.map(c => `<div class="grid-btn allow-click color-btn" style="background:${c}; height:10px; padding:0;" data-val="${c}"></div>`).join('')}
                        </div>
                    </div>
                    <div class="set-group">
                        <div class="set-title" id="t-xh-eff">✨ Hiệu Ứng Tâm</div>
                        <div class="grid-eff" id="xh-eff-list"></div>
                    </div>
                    <div class="set-group">
                        <div class="set-title" id="t-kb-eff">⌨️ Nhấp Nháy Phím</div>
                        <div class="grid-eff" id="kb-eff-list"></div>
                    </div>
                </div>
            </div>
            <div id="custom-crosshair">${this.cfg.xh}</div>
        `);

        this.hubEl = document.getElementById('hub-container');
        this.xhEl = document.getElementById('custom-crosshair');
        const setArea = document.getElementById('settings-area');

        this.mouseDownHandler = (e) => {
            if (e.target.closest('.vk-key') || e.target.closest('.head-btn') || e.target.closest('.grid-btn') || e.target.closest('#settings-area')) return;
            this.isDragging = true;
            this.offX = e.clientX - this.hubEl.offsetLeft;
            this.offY = e.clientY - this.hubEl.offsetTop;
        };

        this.mouseMoveHandler = (e) => {
            if (this.isDragging) {
                this.hubEl.style.left = (e.clientX - this.offX) + 'px';
                this.hubEl.style.top = (e.clientY - this.offY) + 'px';
            }
        };

        this.mouseUpHandler = () => {
            if (this.isDragging) {
                this.isDragging = false;
                this.cfg.x = parseInt(this.hubEl.style.left);
                this.cfg.y = parseInt(this.hubEl.style.top);
                this.saveCfg();
            }
        };

        this.hubEl.addEventListener('mousedown', this.mouseDownHandler);
        document.addEventListener('mousemove', this.mouseMoveHandler);
        document.addEventListener('mouseup', this.mouseUpHandler);

        document.getElementById('btn-lang').addEventListener('click', () => {
            this.cfg.lang = this.cfg.lang === 'VN' ? 'EN' : 'VN';
            this.saveCfg(); this.renderLang();
        });
        document.getElementById('btn-toggle-set').addEventListener('click', () => {
            this.cfg.setOpen = !this.cfg.setOpen;
            setArea.style.display = this.cfg.setOpen ? 'block' : 'none';
            this.saveCfg();
        });
        document.getElementById('btn-close-set').addEventListener('click', () => {
            this.cfg.setOpen = false;
            setArea.style.display = 'none';
            this.saveCfg();
        });

        document.querySelectorAll('.xh-btn').forEach(btn => {
            btn.addEventListener('click', (e) => {
                this.cfg.xh = e.target.getAttribute('data-val');
                this.saveCfg(); this.applyAllCfg();
            });
        });
        document.querySelectorAll('.color-btn').forEach(btn => {
            btn.addEventListener('click', (e) => {
                this.cfg.xhColor = e.target.getAttribute('data-val');
                this.saveCfg(); this.applyAllCfg();
            });
        });

        this.renderLang();
        this.applyAllCfg();

        const allVkKeys = document.querySelectorAll('.vk-key');

        this.keyDownHandler = (e) => {
            if (e.repeat) return;
            let keyName = e.key.toUpperCase();
            if (e.code === 'Space') keyName = 'SPACE';
            if (e.code.startsWith('Arrow')) keyName = e.code.toUpperCase();

            allVkKeys.forEach(vk => {
                if (vk.getAttribute('data-key') === keyName) {
                    vk.classList.add('active');
                    this.playClack();
                }
            });
        };

        this.keyUpHandler = (e) => {
            let keyName = e.key.toUpperCase();
            if (e.code === 'Space') keyName = 'SPACE';
            if (e.code.startsWith('Arrow')) keyName = e.code.toUpperCase();
            allVkKeys.forEach(vk => {
                if (vk.getAttribute('data-key') === keyName) {
                    vk.classList.remove('active');
                }
            });
        };

        this.docMouseDownHandler = (e) => {
            const now = Date.now();
            if (e.button === 0) {
                this.lmbClicks.push(now);
                document.querySelector('.vk-key[data-key="LMB"]')?.classList.add('active');
                this.playClack();
            } else if (e.button === 2) {
                this.rmbClicks.push(now);
                document.querySelector('.vk-key[data-key="RMB"]')?.classList.add('active');
                this.playClack();
            }
            this.updateCPS();
        };

        this.docMouseUpHandler = (e) => {
            if (e.button === 0) {
                document.querySelector('.vk-key[data-key="LMB"]')?.classList.remove('active');
            } else if (e.button === 2) {
                document.querySelector('.vk-key[data-key="RMB"]')?.classList.remove('active');
            }
        };

        document.addEventListener('keydown', this.keyDownHandler);
        document.addEventListener('keyup', this.keyUpHandler);
        document.addEventListener('mousedown', this.docMouseDownHandler);
        document.addEventListener('mouseup', this.docMouseUpHandler);

        this.cpsInterval = setInterval(() => {
            this.updateCPS();
        }, 100);

        allVkKeys.forEach(vk => {
            vk.addEventListener('mousedown', () => { this.playClack(); vk.classList.add('active'); });
            vk.addEventListener('mouseup', () => { vk.classList.remove('active'); });
            vk.addEventListener('mouseleave', () => { vk.classList.remove('active'); });
        });
    }

    onDisable() {
        if (this.cpsInterval) clearInterval(this.cpsInterval);
        if (this.styleEl) this.styleEl.remove();
        if (this.hubEl) this.hubEl.remove();
        if (this.xhEl) this.xhEl.remove();

        document.removeEventListener('keydown', this.keyDownHandler);
        document.removeEventListener('keyup', this.keyUpHandler);
        document.removeEventListener('mousemove', this.mouseMoveHandler);
        document.removeEventListener('mouseup', this.mouseUpHandler);
        document.removeEventListener('mousedown', this.docMouseDownHandler);
        document.removeEventListener('mouseup', this.docMouseUpHandler);
    }
};

if (typeof Fun !== 'undefined') {
    Fun.register(ModKeyboardDisplay);
} else if (typeof registerMod !== 'undefined') {
    registerMod("Fun", ModKeyboardDisplay);
}
    var ModClearscreen = class extends a {
    constructor() {
        super("ClearScreen", "Fun",);

        this.isCleanMode = false;
        this.hiddenElements = [];
        this.cachedCanvas = null;
        this.lastCheckTime = 0;
        this.CHECK_INTERVAL = 1000;
        this.hideObserver = null;
        this.crosshairHideStyle = null;

        this.injectStyles();
    }

    injectStyles() {
        if (document.getElementById("minefun-clearscreen-style")) return;
        const style = document.createElement("style");
        style.id = "minefun-clearscreen-style";
        style.textContent = `
            @keyframes fadeOut {
                from { opacity: 1; }
                to { opacity: 0; }
            }

            @keyframes fadeIn {
                from { opacity: 0; }
                to { opacity: 1; }
            }

            .minefun-hidden-by-clean {
                animation: fadeOut 0.3s ease forwards;
            }

            .minefun-shown-by-clean {
                animation: fadeIn 0.3s ease forwards;
            }

            .minefun-force-hidden {
                display: none !important;
                visibility: hidden !important;
                opacity: 0 !important;
            }
        `;
        document.head.appendChild(style);
    }

    isInGame() {
        const now = Date.now();
        if (now - this.lastCheckTime < this.CHECK_INTERVAL && this.cachedCanvas !== null) {
            return this.cachedCanvas;
        }

        this.lastCheckTime = now;
        this.cachedCanvas = document.querySelector("canvas") !== null;
        return this.cachedCanvas;
    }

    getElementsToHide() {
        const elements = [];
        const protectedIds = new Set(["minefun-fps-counter"]);

        const walker = document.createTreeWalker(
            document.body,
            NodeFilter.SHOW_ELEMENT,
            {
                acceptNode: function(node) {
                    if (protectedIds.has(node.id) || node.closest("#minefun-fps-counter")) {
                        return NodeFilter.FILTER_REJECT;
                    }

                    if (node.tagName === "CANVAS" ||
                        node.tagName === "SCRIPT" ||
                        node.tagName === "STYLE" ||
                        node.tagName === "LINK" ||
                        node.tagName === "META") {
                        return NodeFilter.FILTER_REJECT;
                    }

                    const style = window.getComputedStyle(node);
                    const position = style.position;

                    if (position === "fixed" || position === "absolute" ||
                        (position === "relative" && parseInt(style.zIndex) > 0)) {

                        if (style.display !== "none" &&
                            style.visibility !== "hidden" &&
                            parseFloat(style.opacity) > 0) {
                            return NodeFilter.FILTER_ACCEPT;
                        }
                    }

                    return NodeFilter.FILTER_SKIP;
                }
            }
        );

        let node;
        while (node = walker.nextNode()) {
            if (node.querySelector("canvas")) continue;

            const isSettings = node.classList.contains("settings") ||
                              node.classList.contains("config") ||
                              node.classList.contains("gui-panel") ||
                              node.id.includes("settings") ||
                              node.id.includes("config");

            if (!isSettings) {
                elements.push(node);
            }
        }

        return elements;
    }

    hideCrosshair() {
        if (!this.crosshairHideStyle) {
            this.crosshairHideStyle = document.createElement("style");
            this.crosshairHideStyle.id = "minefun-crosshair-hide";
            this.crosshairHideStyle.textContent = `
                img[src*="crosshair"],
                img[alt*="crosshair"],
                div[class*="crosshair"],
                div[id*="crosshair"],
                .crosshair {
                    display: none !important;
                    visibility: hidden !important;
                    opacity: 0 !important;
                }
            `;
            document.head.appendChild(this.crosshairHideStyle);
        }
    }

    showCrosshair() {
        if (this.crosshairHideStyle && this.crosshairHideStyle.parentNode) {
            this.crosshairHideStyle.parentNode.removeChild(this.crosshairHideStyle);
            this.crosshairHideStyle = null;
        }
    }

    startObservingElements() {
        if (this.hideObserver) return;

        this.hideObserver = new MutationObserver((mutations) => {
            if (!this.isEnabled) return;

            mutations.forEach((mutation) => {
                mutation.addedNodes.forEach((node) => {
                    if (node.nodeType === 1) {
                        const style = window.getComputedStyle(node);
                        const position = style.position;

                        const isChatOrUI = node.classList.contains("chat") ||
                                          node.id.includes("chat") ||
                                          node.classList.contains("message") ||
                                          (position === "fixed" || position === "absolute");

                        if (isChatOrUI && !node.closest("#minefun-fps-counter") && !node.classList.contains("gui-panel")) {
                            node.classList.add("minefun-force-hidden");
                            this.hiddenElements.push(node);
                        }
                    }
                });
            });
        });

        this.hideObserver.observe(document.body, {
            childList: true,
            subtree: true
        });
    }

    stopObservingElements() {
        if (this.hideObserver) {
            this.hideObserver.disconnect();
            this.hideObserver = null;
        }
    }

    onEnable() {
        if (!this.isInGame()) return;

        this.hiddenElements = this.getElementsToHide();

        this.hiddenElements.forEach(el => {
            el.dataset.originalDisplay = el.style.display || "";
            el.classList.add("minefun-hidden-by-clean");
            el.classList.add("minefun-force-hidden");
        });

        requestAnimationFrame(() => {
            this.hiddenElements.forEach(el => {
                el.style.display = "none";
            });
        });

        this.hideCrosshair();
        this.startObservingElements();
    }

    onDisable() {
        this.stopObservingElements();
        this.showCrosshair();

        this.hiddenElements.forEach(el => {
            el.classList.remove("minefun-hidden-by-clean");
            el.classList.remove("minefun-force-hidden");
            el.classList.add("minefun-shown-by-clean");
            el.style.display = el.dataset.originalDisplay || "";
            delete el.dataset.originalDisplay;
        });

        setTimeout(() => {
            this.hiddenElements.forEach(el => {
                if (el.classList) {
                    el.classList.remove("minefun-shown-by-clean");
                }
            });
            this.hiddenElements = [];
        }, 300);
    }
};
    var ModWeatherScreen = class extends a {
        constructor() { super("WeatherScreen", "Fun", { "Rain Mode": false, "Snow Mode": false, "Lightning Mode": false, "Dark Mode": false, "Fade (1-100)": 20, "Radius (1-10)": 5 }); this.canvas = null; this.ctx = null; this.rainParts = []; this.snowParts = []; this.animationId = null; this.resizeHandler = this.resize.bind(this); }
        initCanvas() { if (this.canvas) return; this.canvas = document.createElement("canvas"); this.canvas.style.cssText = "position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 9998; pointer-events: none;"; document.body.appendChild(this.canvas); this.ctx = this.canvas.getContext("2d"); this.resize(); window.addEventListener("resize", this.resizeHandler); }
        resize() { if (!this.canvas) return; this.canvas.width = window.innerWidth; this.canvas.height = window.innerHeight; this.initParticles(); }
        initParticles() { this.rainParts = []; this.snowParts = []; let radius = this.options["Radius (1-10)"]; if (isNaN(radius) || radius < 1) radius = 5; let amount = radius * 50; for (let i = 0; i < amount; i++) { this.rainParts.push(this.createParticle(false)); this.snowParts.push(this.createParticle(true)); } }
        createParticle(isSnow) { return { x: Math.random() * window.innerWidth, y: Math.random() * window.innerHeight, speed: isSnow ? (Math.random() * 1 + 0.5) : (Math.random() * 15 + 15), size: isSnow ? (Math.random() * 2 + 1) : (Math.random() * 1.5 + 0.5), angle: isSnow ? Math.random() * Math.PI * 2 : 0, swing: isSnow ? Math.random() * 0.05 : 0 }; }
        onSettingUpdate() { if (this.isEnabled) { this.initParticles(); } }
        onEnable() {
            this.initCanvas(); this.initParticles();
            let draw = () => {
                if (!this.isEnabled || !this.ctx) return;
                this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
                let isRain = this.options["Rain Mode"] === true || this.options["Rain Mode"] === "true"; let isSnow = this.options["Snow Mode"] === true || this.options["Snow Mode"] === "true"; let isLightning = this.options["Lightning Mode"] === true || this.options["Lightning Mode"] === "true"; let isDarkMode = this.options["Dark Mode"] === true || this.options["Dark Mode"] === "true";
                if (isDarkMode) { let fade = this.options["Fade (1-100)"] / 100; if(fade > 1) fade = 1; if(fade < 0) fade = 0; this.ctx.fillStyle = `rgba(0, 0, 0, ${fade})`; this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height); }
                if (isLightning && Math.random() < 0.005) {
                    this.ctx.fillStyle = "rgba(200, 220, 255, 0.4)"; this.ctx.fillRect(0, 0, this.canvas.width, this.canvas.height);
                    let boltCount = Math.floor(Math.random() * 3) + 1;
                    for (let b = 0; b < boltCount; b++) {
                        let startX = Math.random() * this.canvas.width; let startY = 0; let currX = startX, currY = startY; this.ctx.beginPath(); this.ctx.moveTo(currX, currY); let maxDepth = this.canvas.height * (0.5 + Math.random() * 0.5);
                        while (currY < maxDepth) { currX += (Math.random() - 0.5) * 80; currY += Math.random() * 40 + 20; this.ctx.lineTo(currX, currY); }
                        this.ctx.shaowBlur = 20; this.ctx.shadwColor = "rgb(150, 200, 255)"; this.ctx.lineWidth = Math.random() * 3 + 2; this.ctx.strokeStyle = "rgba(255, 255, 255, 0.9)"; this.ctx.stroke(); this.ctx.shadowBlur = 0;
                    }
                }
                if (isSnow) {
                    this.ctx.fillStyle = "rgba(255, 255, 255, 0.8)"; this.ctx.beginPath();
                    for (let i = 0; i < this.snowParts.length; i++) { let p = this.snowParts[i]; p.y += p.speed; p.angle += p.swing; p.x += Math.sin(p.angle) * 0.8; this.ctx.moveTo(p.x, p.y); this.ctx.arc(p.x, p.y, p.size, 0, Math.PI * 2); if (p.y > this.canvas.height || p.x > this.canvas.width || p.x < 0) { this.snowParts[i] = this.createParticle(true); this.snowParts[i].y = -20; } }
                    this.ctx.fill();
                }
                if (isRain) {
                    this.ctx.strokeStyle = "rgba(180, 210, 255, 0.6)"; this.ctx.lineWidth = 1.5; this.ctx.beginPath();
                    for (let i = 0; i < this.rainParts.length; i++) { let p = this.rainParts[i]; p.y += p.speed; p.x += 2; this.ctx.moveTo(p.x, p.y); this.ctx.lineTo(p.x + 2, p.y + p.speed * 0.5); if (p.y > this.canvas.height || p.x > this.canvas.width || p.x < 0) { this.rainParts[i] = this.createParticle(false); this.rainParts[i].y = -20; } }
                    this.ctx.stroke();
                }
                this.animationId = requestAnimationFrame(draw);
            };
            draw();
        }
        onDisable() { if (this.animationId) cancelAnimationFrame(this.animationId); if (this.canvas) { window.removeEventListener("resize", this.resizeHandler); this.canvas.remove(); this.canvas = null; this.ctx = null; } this.rainParts = []; this.snowParts = []; }
    };

    var ModKeystrokes = class extends a {
        constructor() { super("Keystrokes", "Fun", { "Show Space": true, "Show LMB": true, "Show RMB": true, "Show CPS": true, "RGB": false, "Edit position": false, "Scale (1-23)": 10 }); this.ui = null; this.clicksL = []; this.clicksR = []; this.isDragging = false; this.offsetX = 0; this.offsetY = 0; this._dragMove = (e) => { if (this.isDragging && this.ui) { this.ui.style.left = e.clientX - this.offsetX + "px"; this.ui.style.top = e.clientY - this.offsetY + "px"; } }; this._dragUp = () => { this.isDragging = false; }; this.keysMap = { "KeyW": "w", "KeyA": "a", "KeyS": "s", "KeyD": "d", "Space": "space" }; this._onKeyDown = (e) => { if(this.keysMap[e.code]) this.toggleKey(this.keysMap[e.code], true); }; this._onKeyUp = (e) => { if(this.keysMap[e.code]) this.toggleKey(this.keysMap[e.code], false); }; this._onMouseDown = (e) => { let now = Date.now(); if (e.button === 0) { this.toggleKey("lmb", true); this.clicksL.push(now); } if (e.button === 2) { this.toggleKey("rmb", true); this.clicksR.push(now); } }; this._onMouseUp = (e) => { if (e.button === 0) this.toggleKey("lmb", false); if (e.button === 2) this.toggleKey("rmb", false); }; }
        toggleKey(id, state) { if (!this.ui) return; let el = this.ui.querySelector(`#key-${id}`); if (el) state ? el.classList.add("active") : el.classList.remove("active"); }
        createUI() {
            if (this.ui) return; this.ui = document.createElement("div"); this.ui.id = "liq-keystrokes";
            this.ui.innerHTML = `<div class="ks-row"><div id="key-w" class="ks-key">W</div></div><div class="ks-row"><div id="key-a" class="ks-key">A</div><div id="key-s" class="ks-key">S</div><div id="key-d" class="ks-key">D</div></div><div class="ks-row" id="ks-mouse-row"><div id="key-lmb" class="ks-key ks-mouse">LMB<div class="ks-cps" id="cps-l">0 CPS</div></div><div id="key-rmb" class="ks-key ks-mouse">RMB<div class="ks-cps" id="cps-r">0 CPS</div></div></div><div class="ks-row" id="ks-space-row"><div id="key-space" class="ks-key ks-space">━━━</div></div>`;
            document.body.appendChild(this.ui); this.ui.addEventListener("mousedown", (e) => { if (this.options["Edit position"]) { this.isDragging = true; this.offsetX = e.clientX - this.ui.offsetLeft; this.offsetY = e.clientY - this.ui.offsetTop; } }); this.updateLayout();
        }
        updateLayout() {
            if (!this.ui) return;
            this.ui.querySelector("#ks-space-row").style.display = this.options["Show Space"] ? "flex" : "none"; this.ui.querySelector("#ks-mouse-row").style.display = (this.options["Show LMB"] || this.options["Show RMB"]) ? "flex" : "none"; this.ui.querySelector("#key-lmb").style.display = this.options["Show LMB"] ? "flex" : "none"; this.ui.querySelector("#key-rmb").style.display = this.options["Show RMB"] ? "flex" : "none"; this.ui.querySelector("#cps-l").style.display = this.options["Show CPS"] ? "block" : "none"; this.ui.querySelector("#cps-r").style.display = this.options["Show CPS"] ? "block" : "none";
            if (this.options["RGB"]) this.ui.classList.add("ks-rgb"); else this.ui.classList.remove("ks-rgb");
            let scaleVal = (this.options["Scale (1-23)"] || 10) / 10; this.ui.style.transform = `scale(${scaleVal})`;
            if (this.options["Edit position"]) { this.ui.style.pointerEvents = "auto"; this.ui.style.cursor = "move"; this.ui.style.border = "1px dashed rgba(255,255,255,0.5)"; } else { this.ui.style.pointerEvents = "none"; this.ui.style.border = "none"; }
        }
        onSettingUpdate() { this.updateLayout(); }
        onEnable() { window.addEventListener("keydown", this._onKeyDown, {capture:true}); window.addEventListener("keyup", this._onKeyUp, {capture:true}); window.addEventListener("mousedown", this._onMouseDown, {capture:true}); window.addEventListener("mouseup", this._onMouseUp, {capture:true}); window.addEventListener("mousemove", this._dragMove, {capture:true}); window.addEventListener("mouseup", this._dragUp, {capture:true}); this.createUI(); }
        onRender() {
            if (this.isEnabled && this.ui) {
                if (this.options["RGB"]) { let hue = (Date.now() / 10 * 1.2) % 360; this.ui.style.setProperty('--ks-rgb-color', `hsl(${hue}, 100%, 65%)`); } else { this.ui.style.removeProperty('--ks-rgb-color'); }
                if (this.options["Show CPS"]) { let now = Date.now(); this.clicksL = this.clicksL.filter(t => now - t < 1000); this.clicksR = this.clicksR.filter(t => now - t < 1000); this.ui.querySelector("#cps-l").textContent = this.clicksL.length + " CPS"; this.ui.querySelector("#cps-r").textContent = this.clicksR.length + " CPS"; }
            }
        }
        onDisable() { if (this.ui) { this.ui.remove(); this.ui = null; } window.removeEventListener("keydown", this._onKeyDown, {capture:true}); window.removeEventListener("keyup", this._onKeyUp, {capture:true}); window.removeEventListener("mousedown", this._onMouseDown, {capture:true}); window.removeEventListener("mouseup", this._onMouseUp, {capture:true}); window.removeEventListener("mousemove", this._dragMove, {capture:true}); window.removeEventListener("mouseup", this._dragUp, {capture:true}); this.clicksL = []; this.clicksR = []; }
    };

    var ModHitParticles = class extends a {
        constructor() { super("HitParticles", "Fun", { "Type": ["Star", "Heart", "Flame", "Smoke", "Spark", "Critical", "Bubble"], "Amount (1-100)": 15, "Size (1-50)": 15, "Life (100-5000)": 800, "Speed (1-50)": 20, "Gravity": false, "Random Motion": true, "Fade Out": true, "Rainbow Mode": true, "Particle Color": "#ff3333" }); this.canvas = null; this.ctx = null; this.particles = []; this.animationId = null; this.resizeHandler = this.resize.bind(this); }
        initCanvas() { if (this.canvas) return; this.canvas = document.createElement("canvas"); this.canvas.style.cssText = "position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; z-index: 9996; pointer-events: none;"; document.body.appendChild(this.canvas); this.ctx = this.canvas.getContext("2d"); this.resize(); window.addEventListener("resize", this.resizeHandler); }
        resize() { if (!this.canvas) return; this.canvas.width = window.innerWidth; this.canvas.height = window.innerHeight; }
        spawnParticles(hitX, hitY, hitZ) {
            let amount = this.options["Amount (1-100)"]; let baseSize = this.options["Size (1-50)"] / 10; let speed = this.options["Speed (1-50)"] / 10; let life = this.options["Life (100-5000)"];
            for (let i = 0; i < amount; i++) { this.particles.push({ x: hitX + (Math.random() - 0.5) * 0.8, y: hitY + (Math.random() - 0.5) * 0.8, z: hitZ + (Math.random() - 0.5) * 0.8, vx: (Math.random() - 0.5) * speed, vy: (Math.random() - 0.5) * speed + (this.options["Gravity"] ? Math.random() * speed : 0), vz: (Math.random() - 0.5) * speed, life: life, maxLife: life, size: baseSize * (0.5 + Math.random()), hue: Math.random() * 360 }); }
        }
        drawShape(x, y, size, color, type) {
            this.ctx.fillStyle = color; this.ctx.strokeStyle = color; this.ctx.beginPath();
            if (type === "star") { for (let i = 0; i < 5; i++) { this.ctx.lineTo(x + Math.cos((18 + i * 72) / 180 * Math.PI) * size, y - Math.sin((18 + i * 72) / 180 * Math.PI) * size); this.ctx.lineTo(x + Math.cos((54 + i * 72) / 180 * Math.PI) * (size/2), y - Math.sin((54 + i * 72) / 180 * Math.PI) * (size/2)); } this.ctx.closePath(); this.ctx.fill(); }
            else if (type === "heart") { this.ctx.moveTo(x, y + size/4); this.ctx.bezierCurveTo(x, y, x - size/2, y, x - size/2, y - size/4); this.ctx.bezierCurveTo(x - size/2, y - size/2, x, y - size/2, x, y - size/4); this.ctx.bezierCurveTo(x, y - size/2, x + size/2, y - size/2, x + size/2, y - size/4); this.ctx.bezierCurveTo(x + size/2, y, x, y, x, y + size/4); this.ctx.fill(); }
            else if (type === "spark" || type === "critical") { this.ctx.lineWidth = Math.max(1, size/4); this.ctx.moveTo(x - size, y); this.ctx.lineTo(x + size, y); this.ctx.moveTo(x, y - size); this.ctx.lineTo(x, y + size); this.ctx.stroke(); }
            else { this.ctx.arc(x, y, size, 0, Math.PI * 2); type === "bubble" ? this.ctx.stroke() : this.ctx.fill(); }
        }
        onEnable() {
            this.initCanvas();
            p.listeners.HitParticles = (r, e) => { if (r === 13 && this.isEnabled) { let hitX = e[1] + e[4] * e[7]; let hitY = e[2] + e[5] * e[7] + 0.8; let hitZ = e[3] + e[6] * e[7]; this.spawnParticles(hitX, hitY, hitZ); } };
            let draw = () => {
                if (!this.isEnabled || !this.ctx) return;
                this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
                let me = o?.gameWorld?.player;
                if (me && this.particles.length > 0) {
                    let dt = 16.6; let myPos = me.position; let yRad = me.rotation.y; let cosY = Math.cos(yRad); let sinY = Math.sin(yRad); let xRad = me.rotation.x; let cosX = Math.cos(xRad); let sinX = Math.sin(xRad); let cx = this.canvas.width / 2; let cy = this.canvas.height / 2; let fovScale = this.canvas.height;
                    let type = this.options["Type"][0].toLowerCase();
                    for (let i = this.particles.length - 1; i >= 0; i--) {
                        let p = this.particles[i]; p.life -= dt;
                        if (p.life <= 0) { this.particles.splice(i, 1); continue; }
                        if (this.options["Random Motion"]) { p.vx += (Math.random()-0.5)*0.2; p.vy += (Math.random()-0.5)*0.2; p.vz += (Math.random()-0.5)*0.2; }
                        if (this.options["Gravity"]) p.vy -= 0.05;
                        p.x += p.vx * (dt/50); p.y += p.vy * (dt/50); p.z += p.vz * (dt/50);
                        let dx = p.x - myPos.x; let dy = p.y - (myPos.y + 1.6); let dz = p.z - myPos.z;
                        let x1 = dx * cosY - dz * sinY; let z1 = dx * sinY + dz * cosY; let y2 = dy * cosX - z1 * sinX; let z2 = dy * sinX + z1 * cosX; let x2 = x1;
                        if (z2 < 0) {
                            let depth = -z2; let screenX = cx + (x2 / depth) * fovScale; let screenY = cy - (y2 / depth) * fovScale;
                            let renderSize = p.size * (fovScale / depth) * 0.02;
                            if (renderSize > 100 || renderSize < 0.5) continue;
                            let alpha = this.options["Fade Out"] ? (p.life / p.maxLife) : 1;
                            let r=255, g=51, b=51; if(!this.options["Rainbow Mode"]) { let hex = this.options["Particle Color"].replace('#',''); r = parseInt(hex.substring(0,2), 16); g = parseInt(hex.substring(2,4), 16); b = parseInt(hex.substring(4,6), 16); }
                            let color = this.options["Rainbow Mode"] ? `hsla(${p.hue + (p.maxLife-p.life)*0.1}, 100%, 50%, ${alpha})` : `rgba(${r},${g},${b},${alpha})`;
                            this.drawShape(screenX, screenY, renderSize, color, type);
                        }
                    }
                }
                this.animationId = requestAnimationFrame(draw);
            };
            draw();
        }
        onDisable() { if (this.animationId) cancelAnimationFrame(this.animationId); if (this.canvas) { window.removeEventListener("resize", this.resizeHandler); this.canvas.remove(); this.canvas = null; this.ctx = null; } this.particles = []; delete p.listeners.HitParticles; }
    };
    var ModFPSBoost = class extends a {
        constructor() {
            super("FPS Boost", "Fun", { Keybind: null });
            this._originals = {};
        }
        onEnable() {
            const gw = o.gameWorld;
            if (!gw) return;
            try {
                // 2. Reduce Render Distance / Chunks
                if (gw.chunkManager) {
                    this._originals.renderDist = gw.chunkManager.renderDistance || gw.chunkManager.viewDistance;
                    if (gw.chunkManager.renderDistance !== undefined) gw.chunkManager.renderDistance = 4;
                    if (gw.chunkManager.viewDistance !== undefined) gw.chunkManager.viewDistance = 4;
                }
                // 3. Limit Particles
                const ps = gw.particleSystem || gw.particles;
                if (ps) {
                    this._originals.maxParticles = ps.maxParticles || ps.limit;
                    if (ps.maxParticles !== undefined) ps.maxParticles = 30;
                    if (ps.limit !== undefined) ps.limit = 30;
                }
                // 4. Disable Heavy CSS/Overlay Effects
                this._originals.bodyFilter = document.body.style.filter;
                document.body.style.filter = 'none';
                const gameEl = document.querySelector('#game, canvas');
                if (gameEl) {
                    this._originals.gameWillChange = gameEl.style.willChange;
                    gameEl.style.willChange = 'transform';
                }
                // 5. Optimize RAF Loop
                if (gw.loop || gw.animate) {
                    this._originals.fpsCap = gw.fpsCap || gw.maxFPS;
                    if (gw.fpsCap !== undefined) gw.fpsCap = 120; // Uncap or set high for smoothness
                }
                console.log('[FPS Boost] Applied optimizations');
            } catch (err) {
                console.warn('[FPS Boost] Partial optimization failed:', err);
            }
        }
        onDisable() {
            const gw = o.gameWorld;
            if (!gw) return;
            try {
                // Restore Chunks
                if (gw.chunkManager) {
                    if (this._originals.renderDist !== undefined) gw.chunkManager.renderDistance = this._originals.renderDist;
                    if (this._originals.viewDist !== undefined) gw.chunkManager.viewDistance = this._originals.viewDist;
                }
                // Restore Particles
                const ps = gw.particleSystem || gw.particles;
                if (ps) {
                    if (this._originals.maxParticles !== undefined) ps.maxParticles = this._originals.maxParticles;
                    if (this._originals.limit !== undefined) ps.limit = this._originals.limit;
                }
                // Restore CSS
                document.body.style.filter = this._originals.bodyFilter || '';
                const gameEl = document.querySelector('#game, canvas');
                if (gameEl && this._originals.gameWillChange !== undefined) gameEl.style.willChange = this._originals.gameWillChange;
                // Restore FPS Cap
                if (gw.fpsCap !== undefined && this._originals.fpsCap !== undefined) gw.fpsCap = this._originals.fpsCap;
                console.log('[FPS Boost] Restored original settings');
            } catch (err) {
                console.warn('[FPS Boost] Restore failed:', err);
            }
            this._originals = {};
        }
    };

    // ================== MOVEMENT MODULES ==================
    var ModDash = class extends a {
    constructor() {
        super("Dash", "Movement", {
            "Dash Multiplier": 5,
            "Cooldown (ms)": 300
        });
        this.interval = null;
        this.lastDashTime = 0;
        this.onKeyDown = this.handleKeyDown.bind(this);
        this.mobileBtn = null;
    }

    handleKeyDown(e) {
        let activeKey = this.keybind || "Quote";
        let isPressed = e.code === activeKey || e.key === activeKey;

        if (isPressed && !e.repeat && this.isEnabled) {
            this.triggerDash();
        }
    }

    triggerDash() {
        let now = Date.now();
        let cd = Number(this.options["Cooldown (ms)"]) || 300;
        if (now - this.lastDashTime >= cd) {
            this.startDashTimer();
            this.lastDashTime = now;
        }
    }

    startDashTimer() {
        if (this.interval) clearInterval(this.interval);

        let speedMult = Number(this.options["Dash Multiplier"]) || 5;

        this.interval = setInterval(() => {
            let localPlayer = o?.gameWorld?.localPlayer || o?.gameWorld?.player || window.localPlayer;
            if (!localPlayer) return;

            let rot = localPlayer.rotation || localPlayer.yaw || 0;
            let dirX = -Math.sin(rot);
            let dirZ = -Math.cos(rot);

            if (localPlayer.velocity) {
                localPlayer.velocity.x = dirX * speedMult;
                localPlayer.velocity.z = dirZ * speedMult;
            } else if (localPlayer.position) {
                localPlayer.position.x += dirX * (speedMult * 0.1);
                localPlayer.position.z += dirZ * (speedMult * 0.1);
            }

            if (o?.gameWorld?.time) {
                o.gameWorld.time.elapsedTimeMs += 20 * speedMult;
            }
        }, 20);

        setTimeout(() => {
            if (this.interval) {
                clearInterval(this.interval);
                this.interval = null;
            }
        }, 160);
    }

    createMobileButton() {
        if (document.getElementById("tvclient-dash-mobile-btn")) return;

        this.mobileBtn = document.createElement("div");
        this.mobileBtn.id = "tvclient-dash-mobile-btn";
        this.mobileBtn.innerText = "DASH";

        Object.assign(this.mobileBtn.style, {
            position: "fixed",
            top: "15px",
            left: "70px",
            width: "42px",
            height: "42px",
            borderRadius: "50%",
            background: "radial-gradient(circle, rgba(255, 0, 0, 0.85) 0%, rgba(120, 0, 0, 0.95) 100%)",
            border: "1.5px solid #ff0000",
            boxShadow: "0 0 8px rgba(255, 0, 0, 0.7)",
            color: "#ffffff",
            fontFamily: "'Rajdhani', sans-serif",
            fontSize: "10px",
            fontWeight: "800",
            display: "flex",
            alignItems: "center",
            justifyContent: "center",
            zIndex: "999995",
            userSelect: "none",
            webkitUserSelect: "none",
            touchAction: "none",
            cursor: "pointer",
            letterSpacing: "0.5px"
        });

        document.body.appendChild(this.mobileBtn);

        let isDragging = false;
        let hasDragged = false;
        let startX, startY, initialLeft, initialTop;

        const onStart = (e) => {
            isDragging = true;
            hasDragged = false;
            const clientX = e.touches ? e.touches[0].clientX : e.clientX;
            const clientY = e.touches ? e.touches[0].clientY : e.clientY;
            startX = clientX;
            startY = clientY;

            let rect = this.mobileBtn.getBoundingClientRect();
            initialLeft = rect.left;
            initialTop = rect.top;
        };

        const onMove = (e) => {
            if (!isDragging) return;
            const clientX = e.touches ? e.touches[0].clientX : e.clientX;
            const clientY = e.touches ? e.touches[0].clientY : e.clientY;
            const dx = clientX - startX;
            const dy = clientY - startY;

            if (Math.abs(dx) > 5 || Math.abs(dy) > 5) {
                hasDragged = true;
                if (e.cancelable) e.preventDefault();
            }

            this.mobileBtn.style.left = `${initialLeft + dx}px`;
            this.mobileBtn.style.top = `${initialTop + dy}px`;
        };

        const onEnd = () => {
            if (!isDragging) return;
            isDragging = false;
            if (!hasDragged && this.isEnabled) {
                this.triggerDash();
            }
        };

        this.mobileBtn.addEventListener("mousedown", onStart, { capture: true });
        this.mobileBtn.addEventListener("touchstart", onStart, { passive: false, capture: true });
        window.addEventListener("mousemove", onMove, { capture: true });
        window.addEventListener("touchmove", onMove, { passive: false, capture: true });
        window.addEventListener("mouseup", onEnd, { capture: true });
        window.addEventListener("touchend", onEnd, { capture: true });
    }

    removeMobileButton() {
        let btn = document.getElementById("tvclient-dash-mobile-btn");
        if (btn) btn.remove();
        this.mobileBtn = null;
    }

    onEnable() {
        window.addEventListener("keydown", this.onKeyDown);
        this.createMobileButton();
    }

    onDisable() {
        window.removeEventListener("keydown", this.onKeyDown);
        if (this.interval) {
            clearInterval(this.interval);
            this.interval = null;
        }
        this.removeMobileButton();
    }
};
    var Modicewalk = class extends a {
    constructor() {
        super("Ice Walk", "Movement");
        this.desc = "Removes slippery movement on ice.";
        this.set = {};
        this.settings = null;

        this.IW_SCAN_MS = 1000;
        this.iwSys = null;
        this.iwOrigExec = null;
        this.iwTimer = 0;
        this.iwLogged = false;
    }

    log(msg) {
        console.log('[Ice Walk] ' + msg);
    }

    getCtx() {
        try {
            const appEl = document.getElementById('app');
            const app = appEl && appEl.__vue_app__;
            const pinia = app && app.config && app.config.globalProperties && app.config.globalProperties.$pinia;
            if (!pinia || !pinia._s) return null;
            const gs = pinia._s.get('gameState');
            const gw = gs && gs.gameWorld;
            if (!gs || !gw || !gw.player || !gw.player.velocity) return null;
            return { gw: gw };
        } catch (err) {
            return null;
        }
    }

    findMoveSystem(gw) {
        try {
            const systems = gw.systemsManager && gw.systemsManager.activeSystems;
            if (!systems) return null;
            const FP = /this\.vel\.lerp\(a,l\)/;
            for (let i = 0; i < systems.length; i++) {
                const s = systems[i];
                if (!s || s.gameWorld !== gw || !s.playerMoveSystem) continue;
                const m = s.playerMoveSystem;
                if (m && m.execute && typeof m.execute.toString === 'function' && FP.test(m.execute.toString())) return m;
            }
            for (let i = 0; i < systems.length; i++) {
                const s = systems[i];
                if (!s || !s.execute || typeof s.execute !== 'function' || !s.execute.toString) continue;
                if (s.gameWorld === gw && FP.test(s.execute.toString())) return s;
            }
        } catch (err) {}
        return null;
    }

    onIce(gw) {
        try {
            const p = gw.player;
            const bid = p.collision && p.collision.blockPlayerStoodOn;
            if (!bid) return false;
            const blk = gw.structuredItems && gw.structuredItems.blocks && gw.structuredItems.blocks[bid];
            return !!(blk && typeof blk.slipperiness === 'number' && blk.slipperiness < 1);
        } catch (err) {
            return false;
        }
    }

    wrap(gw) {
        try {
            if (this.iwSys && this.iwSys.gameWorld === gw && this.iwSys.execute && this.iwSys.execute.name === 'iwWrappedExecute') return true;
            const sys = this.findMoveSystem(gw);
            if (!sys) return false;
            const orig = sys.execute;
            this.iwSys = sys;
            this.iwOrigExec = orig;
            const self = this;
            sys.execute = function iwWrappedExecute() {
                try {
                    const g = this.gameWorld;
                    if (g && g.player && g.player.velocity && self.onIce(g)) {
                        g.player.velocity.slipperiness = 1;
                    }
                } catch (err) {}
                return orig.apply(this, arguments);
            };
            if (!this.iwLogged) {
                this.iwLogged = true;
                this.log('movement system hooked - ice slipperiness removed');
            }
            return true;
        } catch (err) {
            return false;
        }
    }

    unwrap() {
        if (this.iwSys && this.iwOrigExec && this.iwSys.execute && this.iwSys.execute.name === 'iwWrappedExecute') {
            this.iwSys.execute = this.iwOrigExec;
        }
        this.iwSys = null;
        this.iwOrigExec = null;
        this.iwLogged = false;
    }

    tick() {
        if (!this.isEnabled) {
            this.onDisable();
            return;
        }
        const ctx = this.getCtx();
        if (ctx) {
            this.wrap(ctx.gw);
        }
        this.iwTimer = setTimeout(() => this.tick(), this.IW_SCAN_MS);
    }

    onEnable() {
        this.onDisable();
        this.log('enabled');
        this.tick();
    }

    onDisable() {
        if (this.iwTimer) {
            clearTimeout(this.iwTimer);
            this.iwTimer = 0;
        }
        this.unwrap();
        this.iwLogged = false;
        this.log('disabled');
    }

    onSettingsChange() {}
};
    var ModClutch = class extends a {
    constructor() {
        super("Clutch", "Movement");
        this.desc = "Auto-places a block below you when falling toward the void.";

        this.set = {
            fallDistance: 5,
            snapRotation: true,
            autoSwitch: true
        };

        this.settings = [
            { type: 'slider', id: 'fallDistance', label: 'Fall Distance', min: 3, max: 8, step: 1 },
            { type: 'bool', id: 'snapRotation', label: 'Snap Rotation' },
            { type: 'bool', id: 'autoSwitch', label: 'Auto Switch Block' }
        ];

        this.CL_SCAN_MS = 0;
        this.CL_MIN_SAVE_MS = 500;
        this.CL_COOLDOWN_MS = 2000;
        this.CL_PVP_RANGE = 8;
        this.CL_FALLBACK_MS = 900;
        this.CL_CATEGORY_BLOCKS = 934;
        this.CL_POCKET = 1;
        this.CL_SET_SLOT = 504;

        this.clTimer = 0;
        this.clSafe = null;
        this.clLastSaveAt = 0;
        this.clLastTriggerAt = 0;
        this.clLastReinforceAt = 0;
        this.clFallSince = 0;
        this.clCd = null;
        this.clCdGw = null;
    }

    log(msg) {
        console.log('[Clutch] ' + msg);
    }

    getCtx() {
        try {
            const appEl = document.getElementById('app');
            const app = appEl && appEl.__vue_app__;
            const pinia = app && app.config && app.config.globalProperties && app.config.globalProperties.$pinia;
            if (!pinia || !pinia._s) return null;
            const gs = pinia._s.get('gameState');
            const gw = gs && gs.gameWorld;
            if (!gs || !gw || !gw.player || !gw.player.velocity || !gw.player.physicsPosComp) return null;

            const store = pinia._s.get('inventoryState');
            return { gs: gs, gw: gw, store: store && Array.isArray(store[this.CL_POCKET]) ? store : null };
        } catch (err) {
            return null;
        }
    }

    fallDistance() {
        const fd = this.set && this.set.fallDistance;
        return (typeof fd === 'number' && fd >= 3 && fd <= 8) ? fd : 5;
    }

    solidAt(gw, x, y, z) {
        try {
            const cm = gw.chunkManager;
            if (!cm || typeof cm.getBlock !== 'function') return false;
            const defs = (gw.structuredItems && gw.structuredItems.blocks) || cm.blocks;
            const bid = cm.getBlock(x, y, z);
            const def = bid && defs && defs[bid];
            return !!(def && !def.physTransp);
        } catch (err) {
            return false;
        }
    }

    blockBelow(gw, x, y, z) {
        return this.solidAt(gw, Math.floor(x), Math.floor(y - 0.01), Math.floor(z));
    }

    validBlock(def) {
        if (!def) return false;
        if (def.category !== undefined && def.category !== this.CL_CATEGORY_BLOCKS) return false;
        if (def.style !== undefined && def.style !== 4) return false;
        if (def.physTransp) return false;
        const n = typeof def.name === 'string' ? def.name : '';
        if (/rope|string|thread|cobweb|^web$/i.test(n)) return false;
        return true;
    }

    blockTier(def) {
        const n = def && typeof def.name === 'string' ? def.name.toLowerCase() : '';
        if (/planks/.test(n)) return 5;
        if (/(stone|brick|granite|cobble|obsidian|sandstone|quartz|basalt|clay)/.test(n)) return 4;
        if (/wool/.test(n)) return 3;
        if (n === 'dirt') return 2;
        if (/grass/.test(n)) return 1;
        return 0;
    }

    bestBlockSlot(store, blocks) {
        try {
            if (!store || !Array.isArray(store[this.CL_POCKET])) return null;
            const slots = store[this.CL_POCKET];
            let best = null;
            for (let i = 0; i < slots.length; i++) {
                const s = slots[i];
                const id = s && typeof s.id === 'number' ? s.id : 0;
                if (!(id > 0)) continue;
                const q = typeof s.q === 'number' ? s.q : 0;
                if (!(q > 0)) continue;
                const def = (blocks && blocks[id]) || (store.items && store.items[id]);
                if (!this.validBlock(def)) continue;
                const tier = this.blockTier(def);
                if (!best || tier > best.tier || (tier === best.tier && i < best.slot)) {
                    best = { slot: i, id: id, def: def, tier: tier };
                }
            }
            return best;
        } catch (err) {
            return null;
        }
    }

    eye(gw, p) {
        try {
            const comp = p && p.physicsPosComp;
            const lp = comp && comp.lerpPosTo;
            if (lp && typeof lp.x === 'number' && typeof lp.y === 'number' && typeof lp.z === 'number') {
                return { x: lp.x, y: lp.y + ((p && p.collision && p.collision.height) || 1.8), z: lp.z };
            }
        } catch (err) {}
        try {
            const cam = gw.threeScene && (gw.threeScene.camera || gw.threeScene.activeCamera);
            const r = cam && cam.userData && cam.userData.raycastStartV3;
            if (r && typeof r.x === 'number' && typeof r.y === 'number' && typeof r.z === 'number') {
                return { x: r.x, y: r.y, z: r.z };
            }
        } catch (err) {}
        try {
            const pos = p && p.position;
            if (pos && typeof pos.x === 'number' && typeof pos.y === 'number' && typeof pos.z === 'number') {
                return { x: pos.x, y: pos.y + ((p && p.collision && p.collision.height) || 1.8), z: pos.z };
            }
        } catch (err) {}
        return null;
    }

    normYaw(y) {
        const r = y % (2 * Math.PI);
        return r < 0 ? r + 2 * Math.PI : r;
    }

    snapRotate(gw, bx, by, bz) {
        try {
            const p = gw.player;
            const eye = this.eye(gw, p);
            if (!eye) return;
            const dx = bx + 0.5 - eye.x;
            const dy = by + 0.5 - eye.y;
            const dz = bz + 0.5 - eye.z;
            const len = Math.sqrt(dx * dx + dy * dy + dz * dz);
            if (!(len > 0)) return;
            const yaw = this.normYaw(Math.atan2(-dx, -dz));
            const pitch = Math.asin(dy / len);
            if (gw.server && typeof gw.server.sendData === 'function') {
                gw.server.sendData(1, { r: [Number(pitch.toFixed(3)), Number(yaw.toFixed(3))] });
            }
        } catch (err) {}
    }

    nearPlayers(gw, range) {
        try {
            const players = gw.server && gw.server.players;
            if (!players) return false;
            const p = gw.player;
            for (const [, other] of players) {
                if (!other || !other.position || other.sessionId === p.sessionId || !other.isAlive) continue;
                if (Math.abs(other.position.x - p.position.x) <= range &&
                    Math.abs(other.position.y - p.position.y) <= range &&
                    Math.abs(other.position.z - p.position.z) <= range) return true;
            }
            return false;
        } catch (err) {
            return false;
        }
    }

    getBlockSystem(gw) {
        if (this.clCd && this.clCdGw === gw) {
            try {
                const sm = gw.systemsManager;
                if (sm && sm.activeSystems) {
                    for (let i = 0; i < sm.activeSystems.length; i++) {
                        if (sm.activeSystems[i] === this.clCd) return this.clCd;
                    }
                }
            } catch (err) {}
            this.clCd = null;
            this.clCdGw = null;
        }
        try {
            const sm = gw.systemsManager;
            if (!sm || !sm.activeSystems) return null;
            const arr = sm.activeSystems;
            for (let i = 0; i < arr.length; i++) {
                const s = arr[i];
                if (s && s.gameWorld === gw &&
                    s.blockDestruction && typeof s.blockDestruction.key === 'string' &&
                    typeof s.blockDestruction.state === 'number' &&
                    typeof s._handleProgressiveBlockBreaking === 'function' &&
                    typeof s.placeBlockOnIntersect === 'function' &&
                    typeof s.blockBreakingIntervalMs === 'number') {
                    this.clCd = s;
                    this.clCdGw = gw;
                    return s;
                }
            }
        } catch (err) {}
        return null;
    }

    placeAt(gw, bx, by, bz, store) {
        try {
            const p = gw.player;
            const cm = gw.chunkManager;
            if (!cm || typeof cm.getBlock !== 'function' || !cm.blocks) return false;
            const heldId = p.currentInventoryItemId;
            const heldDef = (typeof heldId === 'number' && heldId > 0)
                ? (cm.blocks[heldId] || (gw.items && gw.items[heldId])) : null;
            let id = 0, def = null, slot = -1, origSlot = -1;
            if (heldDef && this.validBlock(heldDef)) {
                id = heldId;
                def = heldDef;
            } else if (this.set && this.set.autoSwitch && store) {
                const best = this.bestBlockSlot(store, cm.blocks);
                if (!best) return false;
                id = best.id;
                def = best.def;
                slot = best.slot;
                origSlot = typeof store.selectedItem === 'number' ? store.selectedItem : 0;
            } else {
                return false;
            }
            if (!(typeof id === 'number' && id > 0) || !def) return false;
            const sys = this.getBlockSystem(gw);
            if (!sys || typeof sys._placeBlock !== 'function') return false;

            if (sys.sendPlaceBlockMessage === false) return false;
            const existing = cm.getBlock(bx, by, bz);
            if (existing) {
                const edef = cm.blocks[existing];
                if (!edef || !edef.replaceable) return false;
            }
            if (typeof sys.canPlaceBlockHere === 'function') {
                try {
                    if (!sys.canPlaceBlockHere(bx, by, bz, id)) return false;
                } catch (err) {
                    return false;
                }
            }

            if (this.set && this.set.snapRotation) this.snapRotate(gw, bx, by, bz);

            if (slot >= 0 && store && gw.server && typeof gw.server.sendData === 'function') {
                store.selectedItem = slot;
                gw.server.sendData(this.CL_SET_SLOT, slot);
            }
            sys._placeBlock(bx, by, bz, id, def);

            if (slot >= 0 && store && gw.server && typeof gw.server.sendData === 'function') {
                store.selectedItem = origSlot;
                gw.server.sendData(this.CL_SET_SLOT, origSlot);
            }
            return true;
        } catch (err) {
            return false;
        }
    }

    tick() {
        if (!this.isEnabled) {
            this.onDisable();
            return;
        }
        const ctx = this.getCtx();
        if (!ctx) {
            this.clTimer = setTimeout(() => this.tick(), this.CL_SCAN_MS);
            return;
        }
        const gw = ctx.gw;
        const p = gw.player;
        const now = Date.now();

        if (ctx.gs.layoutState !== 0 || (typeof GuiState !== 'undefined' && typeof state !== 'undefined' && state !== GuiState.CLOSED) || !p.isAlive) {
            this.clTimer = setTimeout(() => this.tick(), this.CL_SCAN_MS);
            return;
        }

        if (typeof avLift !== 'undefined' && avLift) {
            this.clTimer = setTimeout(() => this.tick(), this.CL_SCAN_MS);
            return;
        }

        const fd = this.fallDistance();
        const coll = p.collision || {};
        const standingBlock = this.blockBelow(gw, p.position.x, p.position.y, p.position.z);

        if (coll.isGrounded && standingBlock &&
            now - this.clLastSaveAt >= this.CL_MIN_SAVE_MS &&
            !this.nearPlayers(gw, this.CL_PVP_RANGE)) {
            this.clSafe = { x: p.position.x, y: p.position.y, z: p.position.z };
            this.clLastSaveAt = now;
        }

        if (coll.isGrounded && standingBlock) {
            const bx = Math.floor(p.position.x);
            const by = Math.floor(p.position.y - 0.01);
            const bz = Math.floor(p.position.z);
            if (by - 2 >= 0 &&
                !this.solidAt(gw, bx, by - 1, bz) &&
                !this.solidAt(gw, bx, by - 2, bz) &&
                now - this.clLastReinforceAt >= this.CL_COOLDOWN_MS) {
                const placed = this.placeAt(gw, bx, by - 1, bz, ctx.store);
                this.clLastReinforceAt = now;
                this.log(placed ? 'clutch: base reinforcement placed below the platform'
                             : 'clutch: base reinforcement blocked (no block / placement rejected)');
            }
        }

        if (this.clSafe) {
            const velY = p.velocity.velVec3 ? p.velocity.velVec3.y : 0;
            const velFalling = velY < 0;
            if (!standingBlock && velFalling) {
                if (this.clFallSince === 0) this.clFallSince = now;
                const lerp = p.physicsPosComp && p.physicsPosComp.lerpPosTo;
                const drop = this.clSafe.y - (lerp ? lerp.y : p.position.y);
                if ((drop >= fd ||
                     now - this.clFallSince >= this.CL_FALLBACK_MS) &&
                    now - this.clLastTriggerAt >= this.CL_COOLDOWN_MS) {
                    const placed = this.placeAt(gw,
                        Math.floor(p.position.x),
                        Math.floor(p.position.y) - 1,
                        Math.floor(p.position.z),
                        ctx.store);
                    this.clSafe = null;
                    this.clFallSince = 0;
                    this.clLastTriggerAt = now;
                    this.log(placed ? 'clutch: block placed below the feet' : 'clutch: no held block / placement blocked');
                }
            } else {
                this.clFallSince = 0;
            }
        } else {
            this.clFallSince = 0;
        }

        this.clTimer = setTimeout(() => this.tick(), this.CL_SCAN_MS);
    }

    onEnable() {
        this.onDisable();
        this.log('enabled');
        this.tick();
    }

    onDisable() {
        if (this.clTimer) {
            clearTimeout(this.clTimer);
            this.clTimer = 0;
        }
        this.clSafe = null;
        this.clLastSaveAt = 0;
        this.clLastTriggerAt = 0;
        this.clLastReinforceAt = 0;
        this.clFallSince = 0;
        this.clCd = null;
        this.clCdGw = null;
        this.log('disabled');
    }

    onSettingsChange() {}
};
    var ModAirjumppatch = class extends a { constructor() { super("Airjumppatch:(", "Movement", null); } onRender() { const p = o?.gameWorld?.player; if (p && p.inputs?.jump && !p.onGround && p.canAirJump !== false) { p.velocity.y = 8.285714285714286; p.canAirJump = false; } if (p?.onGround) p.canAirJump = true; } };

    var Modantivoid = class extends a {
    constructor() {
        super("AntiVoid", "Movement");
        this.desc = "Help you dont'n fall in the void, but you need place block.";

        this.set = { fallDistance: 5 };
        this.settings = [
            { type: 'slider', id: 'fallDistance', label: 'Fall Distance', min: 3, max: 8, step: 1 }
        ];

        this.AV_SCAN_MS = 50;
        this.AV_COOLDOWN_MS = 1200;
        this.AV_FREEZE_HOLD_MS = 10000;

        this.avTimer = 0;
        this.avLastTriggerAt = 0;
        this.avFallStartY = null;
        this.avFreeze = null;
    }

    getCtx() {
        try {
            const appEl = document.getElementById('app');
            const app = appEl && appEl.__vue_app__;
            const pinia = app && app.config && app.config.globalProperties && app.config.globalProperties.$pinia;
            if (!pinia || !pinia._s) return null;
            const gs = pinia._s.get('gameState');
            const gw = gs && gs.gameWorld;
            if (!gs || !gw || !gw.player || !gw.player.velocity || !gw.player.physicsPosComp) return null;
            return { gs: gs, gw: gw };
        } catch (err) {
            return null;
        }
    }

    fallDistance() {
        const fd = this.set && this.set.fallDistance;
        return (typeof fd === 'number' && fd >= 3 && fd <= 8) ? fd : 5;
    }

    blockBelow(gw, x, y, z) {
        try {
            const cm = gw.chunkManager;
            if (!cm || typeof cm.getBlock !== 'function') return false;
            const defs = (gw.structuredItems && gw.structuredItems.blocks) || cm.blocks;
            const bid = cm.getBlock(Math.floor(x), Math.floor(y - 0.01), Math.floor(z));
            const def = bid && defs && defs[bid];
            return !!(def && !def.physTransp);
        } catch (err) {
            return false;
        }
    }

    clearFallingPackets(gw) {
        try {
            const sys = gw.systemsManager && gw.systemsManager.activeSystems;
            if (!sys) return;
            const dataSys = Array.prototype.find.call(sys, function (s) {
                return s && Array.isArray(s.physDataToSend) && typeof s.accumulator === 'number' &&
                    typeof s.prevLeftMB === 'boolean' && s.server && typeof s.server.sendData === 'function';
            });
            if (!dataSys) return;
            dataSys.physDataToSend.length = 0;
            if (gw.forcePhysSnapshot !== undefined) gw.forcePhysSnapshot = true;
        } catch (err) {}
    }

    freezeStep(gw, p) {
        const comp = p.physicsPosComp;
        if (!comp || !comp.setPos) { this.avFreeze = null; return; }
        const vel = p.velocity && p.velocity.velVec3;
        const F = this.avFreeze;
        const now = Date.now();

        if (now - F.startedAt <= this.AV_FREEZE_HOLD_MS) {
            comp.setPos(F.x, F.y, F.z);
            if (vel) vel.set(0, 0, 0);
            this.clearFallingPackets(gw);
        } else {
            this.avLastTriggerAt = now;
            this.avFreeze = null;
        }
    }

    tick() {
        if (!this.isEnabled) {
            this.onDisable();
            return;
        }

        const ctx = this.getCtx();
        if (!ctx) {
            this.avTimer = setTimeout(() => this.tick(), this.AV_SCAN_MS);
            return;
        }

        const gw = ctx.gw;
        const p = gw.player;
        const now = Date.now();

        if (this.avFreeze) {
            if (!p.isAlive) {
                this.avFreeze = null;
            } else {
                this.freezeStep(gw, p);
            }
            this.avTimer = setTimeout(() => this.tick(), this.AV_SCAN_MS);
            return;
        }

        if (!p.isAlive) {
            this.avTimer = setTimeout(() => this.tick(), this.AV_SCAN_MS);
            return;
        }

        const coll = p.collision || {};
        const standingBlock = this.blockBelow(gw, p.position.x, p.position.y, p.position.z);

        if (coll.isGrounded || standingBlock) {
            this.avFallStartY = p.position.y;
        } else {
            if (this.avFallStartY === null) this.avFallStartY = p.position.y;
            const drop = this.avFallStartY - p.position.y;
            const velY = p.velocity.velVec3 ? p.velocity.velVec3.y : 0;

            if (velY < 0 && drop >= this.fallDistance() && now - this.avLastTriggerAt >= this.AV_COOLDOWN_MS) {
                this.avFreeze = {
                    x: p.position.x,
                    y: p.position.y,
                    z: p.position.z,
                    startedAt: now
                };
                this.avFallStartY = null;
            }
        }

        this.avTimer = setTimeout(() => this.tick(), this.AV_SCAN_MS);
    }

    onEnable() {
        this.onDisable();
        this.tick();
    }

    onDisable() {
        if (this.avTimer) {
            clearTimeout(this.avTimer);
            this.avTimer = 0;
        }
        this.avFallStartY = null;
        this.avFreeze = null;
        this.avLastTriggerAt = 0;
    }

    onSettingsChange() {}
};
    var ModVelocity = class extends a {
    constructor() {
        super("Velocity", "Movement");
        this.desc = "Anti KB module, help you have no KnockBack";

        this.set = {};
        this.settings = [];

        this.VEL_H_APPLY_IMPULSE = 38;
        this.VEL_V_IMPULSE_APPLIED = 32;
        this.VEL_SCAN_MS = 1000;

        this.velNative = null;
        this.velWrapper = null;
        this.velWrappedOn = null;
        this.velTimer = null;
        this.velLogged = false;
    }

    log(msg) {
        console.log('[Velocity] ' + msg);
    }

    getCtx() {
        try {
            const appEl = document.getElementById('app');
            const app = appEl && appEl.__vue_app__;
            const pinia = app && app.config && app.config.globalProperties && app.config.globalProperties.$pinia;
            if (!pinia || !pinia._s) return null;
            const gs = pinia._s.get('gameState');
            const gw = gs && gs.gameWorld;
            if (!gs || !gw || !gw.server || !gw.server.msgsListeners) return null;
            return { gw: gw };
        } catch (err) {
            return null;
        }
    }

    apply(gw) {
        try {
            const listeners = gw.server.msgsListeners;
            const current = listeners[this.VEL_H_APPLY_IMPULSE];
            if (current === this.velWrapper) return true;
            if (typeof current !== 'function') return false;

            this.velNative = current;
            const self = this;

            this.velWrapper = function (e) {
                try {
                    if (gw.server && typeof gw.server.sendData === 'function') {
                        gw.server.sendData(self.VEL_V_IMPULSE_APPLIED, [e && e[0], gw.physicsDataSequenceNumber + 1]);
                    }
                } catch (err) {}
            };

            listeners[this.VEL_H_APPLY_IMPULSE] = this.velWrapper;
            this.velWrappedOn = listeners;

            if (!this.velLogged) {
                this.velLogged = true;
                this.log('impulse listener wrapped - knockback disabled');
            }
            return true;
        } catch (err) {
            return false;
        }
    }

    unwrap() {
        if (this.velWrappedOn && this.velNative) {
            this.velWrappedOn[this.VEL_H_APPLY_IMPULSE] = this.velNative;
        }
        this.velWrappedOn = null;
        this.velNative = null;
        this.velWrapper = null;
        this.velLogged = false;
    }

    tick() {
        if (!this.isEnabled) {
            this.onDisable();
            return;
        }
        const ctx = this.getCtx();
        if (ctx) {
            this.apply(ctx.gw);
        }
        this.velTimer = setTimeout(() => this.tick(), this.VEL_SCAN_MS);
    }

    onEnable() {
        this.onDisable();
        this.log('enabled');
        this.tick();
    }

    onDisable() {
        if (this.velTimer) {
            clearTimeout(this.velTimer);
            this.velTimer = null;
        }
        this.unwrap();
        this.velLogged = false;
        this.log('disabled');
    }

    onSettingsChange() {}
};

    var ModFly = class extends a { constructor() { super("Fly", "Movement", { "Vertical Speed": 5 }); } onRender() { if (o?.gameWorld?.player) { o.gameWorld.player.velocity.gravity = 0; if (o.gameWorld.player.inputs.jump) o.gameWorld.player.velocity.velVec3.y = this.options["Vertical Speed"]; else if (o.gameWorld.player.inputs.crouch) o.gameWorld.player.velocity.velVec3.y = -this.options["Vertical Speed"]; else o.gameWorld.player.velocity.velVec3.y = 0; } } onDisable() { if (o.gameWorld.player) o.gameWorld.player.velocity.gravity = 23; } };
    var ModSpeed = class extends a { constructor() { super("Speed", "Movement", { Speed: 7.1 }); } onRender() { if (o?.gameWorld?.player) { o.gameWorld.player.velocity.moveSpeed = this.options.Speed; o.gameWorld.player.velocity.fastMoveSpeed = this.options.Speed; } } onDisable() { if (o.gameWorld.player) o.gameWorld.player.velocity.moveSpeed = 4.5; o.gameWorld.player.velocity.fastMoveSpeed = 6.4; } };
    var ModNoClip = class extends a { constructor() { super("NoClip", "Movement"); } get playerPhysicsSystem() { return o.gameWorld.systemsManager.activeSystems.find(e => e?.playerPhysicsSystem).playerPhysicsSystem; } onRender() { if (o?.gameWorld?.player) { this._og = this._og || this.playerPhysicsSystem.resolveBlockCollision; if (this.playerPhysicsSystem.resolveBlockCollision == this._og) this.playerPhysicsSystem.resolveBlockCollision = () => { }; } } onDisable() { if (this.playerPhysicsSystem) this.playerPhysicsSystem.resolveBlockCollision = this._og; } };
    var ModTimer = class extends a { constructor() { super("Timer", "Movement", { Multiplier: 5 }); this.interval = null; } onEnable() { if (this.interval) clearInterval(this.interval); this.interval = setInterval(() => { let e = o.gameWorld.time; e.elapsedTimeMs += 20 * this.options.Multiplier; }, 20); } onDisable() { if (this.interval) clearInterval(this.interval); } };
    var ModHighJump = class extends a { constructor() { super("HighJump", "Movement", { "Jump Height": 9.1 }); } onRender() { if (o?.gameWorld?.player?.velocity) o.gameWorld.player.velocity.jumpSpeed = parseFloat(this.options["Jump Height"]); } onDisable() { if (o?.gameWorld?.player?.velocity) o.gameWorld.player.velocity.jumpSpeed = 8.285714285714286; } };
    var ModGroundSpeed = class extends a { constructor() { super("GroundSpeedpatch:(", "Movement", { Speed: 9.1 }); } get playerPhysicsSystem() { return o.gameWorld.systemsManager.activeSystems.find(e => e?.playerPhysicsSystem).playerPhysicsSystem; } resetMovementSpeed() { if (o.gameWorld.player) { o.gameWorld.player.velocity.moveSpeed = 4.5; o.gameWorld.player.velocity.fastMoveSpeed = 6.4; } } onRender() { if (o?.gameWorld?.player) { if (o.gameWorld.player.collision.isGrounded) { o.gameWorld.player.velocity.moveSpeed = this.options.Speed; o.gameWorld.player.velocity.fastMoveSpeed = this.options.Speed; } else this.resetMovementSpeed(); } } onEnable() { let e = 0, t = 0; this.playerPhysicsSystem.BB.min.__defineGetter__("y", () => e - 0.1); this.playerPhysicsSystem.BB.max.__defineGetter__("y", () => t - 0.1); this.playerPhysicsSystem.BB.min.__defineSetter__("y", i => e = i); this.playerPhysicsSystem.BB.max.__defineSetter__("y", i => t = i); } onDisable() { this.resetMovementSpeed(); delete this.playerPhysicsSystem.BB.min.y; delete this.playerPhysicsSystem.BB.max.y; } };
    var ModClimb = class extends a {
    constructor() {
        super("Climb", "Movement", {
            "Speed": 5,
            "Double Press Interval (ms)": 1000,
            "Require Wall": true
        });
        this.lastJumpTime = 0;
        this.isClimbing = false;
        this.wasJumpPressed = false;
    }

    get playerPhysicsSystem() {
        return o?.gameWorld?.systemsManager?.activeSystems?.find(e => e?.playerPhysicsSystem)?.playerPhysicsSystem;
    }

    get upAgainstWall() {
        let phys = this.playerPhysicsSystem;
        if (!phys || !phys.playerVelVec3) return false;
        return phys.playerVelVec3.x === 0 || phys.playerVelVec3.z === 0;
    }

    onRender() {
        let player = o?.gameWorld?.player;
        if (!player) return;

        let isJumpPressed = !!player.inputs?.jump;
        let currentTime = Date.now();
        let maxInterval = parseFloat(this.options["Double Press Interval (ms)"]) || 2000;
        let requireWall = String(this.options["Require Wall"]) === "true" || this.options["Require Wall"] === true;

        if (isJumpPressed && !this.wasJumpPressed) {
            if (currentTime - this.lastJumpTime <= maxInterval) {
                this.isClimbing = true;
            } else {
                this.lastJumpTime = currentTime;
                this.isClimbing = false;
            }
        }

        if (!isJumpPressed) {
            this.isClimbing = false;
        }

        let canClimb = requireWall ? this.upAgainstWall : true;

        if (this.isClimbing && canClimb) {
            player.velocity.velVec3.y = parseFloat(this.options.Speed) || 5;
        }

        this.wasJumpPressed = isJumpPressed;
    }

    onDisable() {
        this.isClimbing = false;
        this.lastJumpTime = 0;
        this.wasJumpPressed = false;
    }
};
    var ModScaffold = class extends a {
    constructor() {
        super("Scaffold", "Movement");
        this.desc = "Auto place blocks for you , helpful for bridging!";

        this.SC_SCAN_MS = 50;
        this.SC_AHEAD = 0.7;
        this.SC_SAME_TARGET_MS = 50;
        this.SC_IDLE_RESTORE_MS = 400;

        this.scData = null;
        this.scFloorY = null;
        this.scLastTarget = null;
        this.scLastPlace = 0;
        this.scIdleTimer = null;
        this.scKsOrigLookAt = null;
        this.scScanTimer = null;
    }

    log(msg) {
        try { console.log('[Scaffold] ' + msg); } catch (err) {}
    }

    getCtx() {
        try {
            const appEl = document.getElementById('app');
            const app = appEl && appEl.__vue_app__;
            const pinia = app && app.config && app.config.globalProperties && app.config.globalProperties.$pinia;
            if (!pinia || !pinia._s) return null;
            const gs = pinia._s.get('gameState');
            const gw = gs && gs.gameWorld;
            if (!gs || !gw || !gw.player || !gw.chunkManager || !gw.systemsManager) return null;
            return { gs: gs, gw: gw };
        } catch (err) {
            return null;
        }
    }

    findKSystem(gw) {
        try {
            const sm = gw.systemsManager;
            if (!sm) return null;
            const pools = [sm.activeSystems, sm.notActiveSystems];
            for (let i = 0; i < pools.length; i++) {
                const arr = pools[i];
                if (!arr || !Array.isArray(arr)) continue;
                for (let j = 0; j < arr.length; j++) {
                    const s = arr[j];
                    if (s && s.model && s.animationsManager && s.playerModelRotationTo !== void 0 && s.config) return s;
                }
            }
        } catch (err) {}
        return null;
    }

    setModelBackward(ks, yaw) {
        if (!ks) return;
        try {
            if (this.scKsOrigLookAt === null) this.scKsOrigLookAt = !!ks.config.modelAlwaysLookAtCurrRotation;
            ks.config.modelAlwaysLookAtCurrRotation = false;
            const bw = (typeof yaw === 'number' ? yaw : 0) + Math.PI;
            if (ks.model) ks.model.rotation.y = bw;
            if (typeof ks.playerModelRotationTo === 'number') ks.playerModelRotationTo = bw;
        } catch (err) {}
    }

    restoreModel(ks) {
        if (!ks) return;
        try {
            if (this.scKsOrigLookAt !== null) ks.config.modelAlwaysLookAtCurrRotation = this.scKsOrigLookAt;
            this.scKsOrigLookAt = null;
        } catch (err) {}
    }

    place(gw, ks, bx, by, bz, bid, yaw) {
        try {
            const cm = gw.chunkManager;
            if (!cm || !cm.blocks || !cm.blocks[bid]) return;
            if (cm.getBlock(bx, by, bz)) return;
            cm.setBlock(bx, by, bz, bid, true, true);
            this.setModelBackward(ks, yaw);
            if (ks && ks.animationsManager) {
                try { ks.animationsManager.updateInput('Put', 1); } catch (err) {}
            }
            const ee = gw.eventEmitter;
            if (ee) {
                try { ee.emit(50); } catch (err) {}
                try { ee.emit(4, 'placed'); } catch (err) {}
            }
            if (this.scIdleTimer) clearTimeout(this.scIdleTimer);
            this.scIdleTimer = setTimeout(() => {
                this.scIdleTimer = null;
                this.restoreModel(ks);
            }, this.SC_IDLE_RESTORE_MS);
        } catch (err) {}
    }

    getMoveDir(p) {
        try {
            const v = p.velocity && p.velocity.velVec3;
            if (v) {
                const vx = typeof v.x === 'number' ? v.x : 0;
                const vz = typeof v.z === 'number' ? v.z : 0;
                const len = Math.sqrt(vx * vx + vz * vz);
                if (len > 0.05) return { dx: vx / len, dz: vz / len };
            }
        } catch (err) {}
        if (p.rotation) {
            const y = typeof p.rotation.y === 'number' ? p.rotation.y : 0;
            return { dx: -Math.sin(y), dz: -Math.cos(y) };
        }
        return { dx: 0, dz: 0 };
    }

    isValidBlock(def) {
        if (!def) return false;
        if (def.physTransp) return false;
        const n = typeof def.name === 'string' ? def.name : '';
        if (/rope|string|thread|cobweb|^web$/i.test(n)) return false;
        return true;
    }

    tick() {
        if (!this.isEnabled) {
            this.onDisable();
            return;
        }
        const ctx = this.getCtx();
        if (!ctx) {
            this.scScanTimer = setTimeout(() => this.tick(), this.SC_SCAN_MS);
            return;
        }
        const gw = ctx.gw;
        const p = gw.player;
        const now = Date.now();

        if (ctx.gs.layoutState !== 0 || (typeof GuiState !== 'undefined' && typeof state !== 'undefined' && state !== GuiState.CLOSED) || !p.isAlive) {
            this.scScanTimer = setTimeout(() => this.tick(), this.SC_SCAN_MS);
            return;
        }
        if (!this.scData || this.scData.gw !== gw) {
            this.restoreModel(this.scData && this.scData.ks);
            this.scData = { gw: gw, ks: this.findKSystem(gw) };
            this.scFloorY = null;
            this.scLastTarget = null;
        }
        const bid = p.currentInventoryItemId;
        const cm = gw.chunkManager;
        if (!cm || typeof cm.getBlock !== 'function' || !cm.blocks) {
            this.scScanTimer = setTimeout(() => this.tick(), this.SC_SCAN_MS);
            return;
        }
        const def = (typeof bid === 'number' && bid > 0) ? (cm.blocks[bid] || (gw.items && gw.items[bid])) : null;
        if (!this.isValidBlock(def)) {
            this.scScanTimer = setTimeout(() => this.tick(), this.SC_SCAN_MS);
            return;
        }
        const pos = p.position;
        if (!pos || typeof pos.x !== 'number' || typeof pos.y !== 'number' || typeof pos.z !== 'number') {
            this.scScanTimer = setTimeout(() => this.tick(), this.SC_SCAN_MS);
            return;
        }
        const bx = Math.floor(pos.x);
        const by = Math.floor(pos.y) - 1;
        const bz = Math.floor(pos.z);
        if (this.scFloorY === null) this.scFloorY = by;
        if (cm.getBlock(bx, by, bz)) this.scFloorY = by;
        const dir = this.getMoveDir(p);
        const moving = Math.abs(dir.dx) > 0.05 || Math.abs(dir.dz) > 0.05;
        let tx = bx, tz = bz;
        if (moving) {
            tx = Math.floor(pos.x + dir.dx * this.SC_AHEAD);
            tz = Math.floor(pos.z + dir.dz * this.SC_AHEAD);
        }
        const ty = this.scFloorY;
        const targetKey = tx + '|' + ty + '|' + tz;
        if (targetKey === this.scLastTarget && now - this.scLastPlace < this.SC_SAME_TARGET_MS) {
            this.scScanTimer = setTimeout(() => this.tick(), this.SC_SCAN_MS);
            return;
        }
        if (!cm.getBlock(tx, ty, tz)) {
            this.place(gw, this.scData.ks, tx, ty, tz, bid, (p.rotation && typeof p.rotation.y === 'number') ? p.rotation.y : 0);
            this.scLastTarget = targetKey;
            this.scLastPlace = now;
        }
        this.scScanTimer = setTimeout(() => this.tick(), this.SC_SCAN_MS);
    }

    onEnable() {
        this.onDisable();
        this.log('enabled');
        this.scData = null;
        this.scFloorY = null;
        this.scLastTarget = null;
        this.scLastPlace = 0;
        this.tick();
    }

    onDisable() {
        if (this.scScanTimer) {
            clearTimeout(this.scScanTimer);
            this.scScanTimer = null;
        }
        if (this.scIdleTimer) {
            clearTimeout(this.scIdleTimer);
            this.scIdleTimer = null;
        }
        this.restoreModel(this.scData && this.scData.ks);
        this.scData = null;
        this.scFloorY = null;
        this.scLastTarget = null;
        this.scLastPlace = 0;
        this.scKsOrigLookAt = null;
        this.log('disabled');
    }

    onSettingsChange() {}
};
    var ModAutoSprint = class extends a {
        constructor() {
            super("AutoSprint", "Movement", {
                "KeepSprint": true,
                "OmniSprint": true
            });
        }
        onRender() {
            if (!o?.gameWorld?.player) return;
            const player = o.gameWorld.player;
            if (!player.inputs) return;
            player.inputs.sprint = true;
            player.inputs.shift = true;
            if (this.options["KeepSprint"]) {
                if (player.hurtTime !== undefined) player.hurtTime = 0;
                if (player.sprintTimeout !== undefined) player.sprintTimeout = 0;
                if (player.noSprintTime !== undefined) player.noSprintTime = 0;
                player.isSprinting = true;
            }
            if (this.options["OmniSprint"]) {
                if (player.inputs.backward && !player.inputs.forward) player.inputs.forward = true;
                if (player.velocity) player.velocity.isSprinting = true;
            }
        }
        onDisable() {
            if (o?.gameWorld?.player) o.gameWorld.player.isSprinting = false;
        }
    };

    var ModStep = class extends a {
        constructor() {
            super("Step", "Movement", null);
            this._backup = {};
            this._lastPos = null;
            this._climbCooldown = 0;
        }
        onEnable() {
            const p = o.gameWorld?.player;
            if (!p) return;
            this._backup.stepHeight = p.stepHeight;
            this._backup.collisionStep = p.collision?.stepHeight;
            this._backup.bbMaxY = p.BB?.max?.y;
            this._backup.velY = p.velocity?.velVec3?.y;
            if (p.stepHeight !== undefined) p.stepHeight = 1.5;
            if (p.collision?.stepHeight !== undefined) p.collision.stepHeight = 1.5;
            if (p.BB?.max?.y !== undefined) p.BB.max.y = 1.9;
            this._lastPos = {x: p.position.x, y: p.position.y, z: p.position.z};
            this._climbCooldown = 0;
        }
        onRender() {
            const p = o.gameWorld?.player;
            if (!p) return;
            if (p.stepHeight !== undefined) p.stepHeight = 1.5;
            if (p.collision?.stepHeight !== undefined) p.collision.stepHeight = 1.5;
            if (p.BB?.max?.y !== undefined) p.BB.max.y = 1.9;
            if (this._climbCooldown > 0) this._climbCooldown--;
            const dx = p.position.x - this._lastPos.x, dy = p.position.y - this._lastPos.y, dz = p.position.z - this._lastPos.z;
            const horizDist = Math.sqrt(dx*dx + dz*dz);
            const isMoving = horizDist > 0.04;
            const isClimbing = dy > 0.012 && dy < 0.35 && isMoving && p.inputs?.forward;
            const isOnGround = p.collision?.isGrounded || p.velocity?.velVec3?.y <= 0.01;
            if (isClimbing && isOnGround && this._climbCooldown === 0) {
                if (o.gameWorld?.time?.elapsedTimeMs !== undefined) o.gameWorld.time.elapsedTimeMs += 12;
                if (p.velocity?.velVec3?.y !== undefined) p.velocity.velVec3.y = Math.max(p.velocity.velVec3.y, 0.38);
                this._climbCooldown = 3;
            }
            this._lastPos = {x: p.position.x, y: p.position.y, z: p.position.z};
        }
        onDisable() {
            const p = o.gameWorld?.player;
            if (!p) return;
            if (this._backup.stepHeight !== undefined) p.stepHeight = this._backup.stepHeight;
            if (this._backup.collisionStep !== undefined && p.collision) p.collision.stepHeight = this._backup.collisionStep;
            if (this._backup.bbMaxY !== undefined && p.BB?.max) p.BB.max.y = this._backup.bbMaxY;
            if (this._backup.velY !== undefined && p.velocity?.velVec3) p.velocity.velVec3.y = this._backup.velY;
            this._backup = {}; this._lastPos = null; this._climbCooldown = 0;
        }
    };

    // ================== COMBAT MODULES ==================
    var ModAimbotold = class extends a {
        constructor() {
            super("AimbotV-1", "Combat", {
                "On Aim": "true",
                "On Shoot": "true",
                "Y Offset": -0.7
            });
            this.lastExecutionTime = null;
        }
        getClosestEnemy(e, t) {
            let i = null, s = Infinity;
            t.forEach(n => {
                if (n?.model?.position && n.isAlive) {
                    let l = x.calculateDistance(e.position, n.model.position);
                    if (l < s) { s = l; i = n; }
                }
            });
            return i;
        }
        aimAtEnemy() {
            let e = o.gameWorld.player;
            let t = o.gameWorld.server.players;
            if (!e || !t) return;
            let i = this.getClosestEnemy(e, t);
            if (i) {
                let s = i.model.position;
                let n = e.position;
                let l = { x: s.x - n.x, z: s.z - n.z };
                let d = Math.atan2(l.x, l.z);
                let u = parseFloat(this.options["Y Offset"]);
                let y = s.y + u - n.y;
                let f = Math.hypot(l.x, l.z);
                let g = Math.atan2(y, f);
                g = Math.max(Math.min(g, Math.PI / 2), -Math.PI / 2);
                let b = (d + Math.PI) % (2 * Math.PI);
                e.rotation.y = b;
                e.rotation.x = g;
            }
        }
        onRender() {
            if (o?.gameWorld?.server) {
                if (this.options["On Aim"] == "true" && o.gameWorld.player.inputs.rightMB) this.aimAtEnemy();
                else if (this.options["On Shoot"] == "true" && o.gameWorld.player.inputs.leftMB) this.aimAtEnemy();
                else if (this.options["On Shoot"] !== "true" && this.options["On Aim"] !== "true") this.aimAtEnemy();
            }
        }
    };
    var ModAimbot = class extends a {
    constructor() {
        super("Aimbot", "Combat", {
            "Closest Crosshair": "true",
            "Closest Distance": "false",
            "On Aim": "true",
            "On Shoot": "true",
            "Team Check": "true",
            "Max Distance Check": "false",
            "Max Distance": 5,
            "Y Offset": -0.1,
            "Show FOV": "true",
            "FOV Radius": 150
        });
        this.lastExecutionTime = null;
        this.fovCanvas = null;
        this.fovCtx = null;
        this.isTargetInFOV = false;

        this.initFOVCanvas();
    }

    initFOVCanvas() {
        if (document.getElementById("minefun-aimbot-fov")) {
            this.fovCanvas = document.getElementById("minefun-aimbot-fov");
            this.fovCtx = this.fovCanvas.getContext("2d");
            return;
        }

        this.fovCanvas = document.createElement("canvas");
        this.fovCanvas.id = "minefun-aimbot-fov";
        this.fovCanvas.style.cssText = `
            position: fixed;
            top: 0;
            left: 0;
            width: 100vw;
            height: 100vh;
            pointer-events: none;
            z-index: 99998;
            display: block;
        `;
        document.body.appendChild(this.fovCanvas);
        this.fovCtx = this.fovCanvas.getContext("2d");

        window.addEventListener("resize", () => this.resizeCanvas());
        this.resizeCanvas();
    }

    resizeCanvas() {
        if (this.fovCanvas) {
            this.fovCanvas.width = window.innerWidth;
            this.fovCanvas.height = window.innerHeight;
        }
    }

    getO() {
        try {
            var app = window.app;
            var r = app._vnode.component.appContext.provides;
            var sym = Object.getOwnPropertySymbols(r).find(function(s){ return r[s] && r[s]._s; });
            if (!sym) return null;
            var gameState = r[sym]._s.get('gameState');
            if (!gameState || !gameState.gameWorld || !gameState.gameWorld.player) return null;
            return gameState;
        } catch(e) { return null; }
    }

    getPlayerTeamColor(p) {
        if (!p) return null;
        return p.team || p.teamColor || p.color || p.nametagColor || p.nameColor || p.displayNameColor || p.options?.color || null;
    }

    isTeammate(player, target) {
        if (String(this.options["Team Check"]) !== "true") return false;

        const pColor = this.getPlayerTeamColor(player);
        const tColor = this.getPlayerTeamColor(target);

        if (pColor && tColor && pColor === tColor) {
            return true;
        }
        return false;
    }

    isDistanceAllowed(player, target) {
        if (String(this.options["Max Distance Check"]) !== "true") return true;

        let targetPos = target.model?.position || target.position;
        if (!targetPos || !player.position) return false;

        let maxDist = parseFloat(this.options["Max Distance"]) || 5;
        let dist = typeof x !== 'undefined' && x.calculateDistance
            ? x.calculateDistance(player.position, targetPos)
            : Math.hypot(targetPos.x - player.position.x, targetPos.y - player.position.y, targetPos.z - player.position.z);

        return dist <= maxDist;
    }

    worldToScreen(targetPos, player) {
        if (!targetPos || !player) return null;

        const screenWidth = window.innerWidth;
        const screenHeight = window.innerHeight;
        const centerX = screenWidth / 2;
        const centerY = screenHeight / 2;

        const diff = { x: targetPos.x - player.position.x, y: targetPos.y - player.position.y, z: targetPos.z - player.position.z };

        let targetYaw = Math.atan2(diff.x, diff.z);
        let expectedYaw = (targetYaw + Math.PI) % (2 * Math.PI);
        let angleDiff = expectedYaw - player.rotation.y;

        while (angleDiff < -Math.PI) angleDiff += 2 * Math.PI;
        while (angleDiff > Math.PI) angleDiff -= 2 * Math.PI;

        const dist2D = Math.hypot(diff.x, diff.z);
        const targetPitch = Math.atan2(diff.y, dist2D);
        let pitchDiff = targetPitch - player.rotation.x;

        if (Math.abs(angleDiff) > Math.PI / 2) return null;

        const fovScale = (screenHeight / 2) / Math.tan((60 * Math.PI / 180) / 2);
        const screenX = centerX - Math.tan(angleDiff) * fovScale;
        const screenY = centerY - Math.tan(pitchDiff) * fovScale;

        return { x: screenX, y: screenY, dist2D: dist2D };
    }

    isEnemyInFOV(target, player, maxFovRadius) {
        let pos = target.model?.position || target.position;
        if (!pos) return false;

        let checkPoints = [
            { x: pos.x, y: pos.y, z: pos.z },
            { x: pos.x, y: pos.y + 0.9, z: pos.z },
            { x: pos.x, y: pos.y + 1.8, z: pos.z }
        ];

        const centerX = window.innerWidth / 2;
        const centerY = window.innerHeight / 2;

        for (let pt of checkPoints) {
            let screenPos = this.worldToScreen(pt, player);
            if (!screenPos) continue;

            let distFromCenter = Math.hypot(screenPos.x - centerX, screenPos.y - centerY);
            let enemyScreenRadius = Math.max(10, (200 / (screenPos.dist2D || 1)));

            if (distFromCenter <= (maxFovRadius + enemyScreenRadius)) {
                return true;
            }
        }

        return false;
    }

    getClosestEnemyByDistance(player, playersList) {
        let closest = null, minDistance = Infinity;
        const maxFovRadius = parseFloat(this.options["FOV Radius"]) || 150;

        playersList.forEach(n => {
            if (!n || n === player || (n.id !== undefined && player.id !== undefined && n.id === player.id) || !n.isAlive) return;
            if (this.isTeammate(player, n)) return;
            if (!this.isDistanceAllowed(player, n)) return;

            if (!this.isEnemyInFOV(n, player, maxFovRadius)) return;

            let pos = n.model?.position || n.position;
            let dist = typeof x !== 'undefined' && x.calculateDistance ? x.calculateDistance(player.position, pos) : Math.hypot(pos.x - player.position.x, pos.z - player.position.z);

            if (dist < minDistance) {
                minDistance = dist;
                closest = n;
            }
        });
        return closest;
    }

    getClosestEnemyByCrosshair(player, playersList) {
        let closest = null, minAngleDiff = Infinity;
        let playerPos = player.position;
        let playerRot = player.rotation;
        if (!playerPos || !playerRot) return null;

        const maxFovRadius = parseFloat(this.options["FOV Radius"]) || 150;

        playersList.forEach(n => {
            if (!n || n === player || (n.id !== undefined && player.id !== undefined && n.id === player.id) || !n.isAlive) return;
            if (this.isTeammate(player, n)) return;
            if (!this.isDistanceAllowed(player, n)) return;

            if (!this.isEnemyInFOV(n, player, maxFovRadius)) return;

            let targetPos = n.model?.position || n.position;
            let diff = { x: targetPos.x - playerPos.x, z: targetPos.z - playerPos.z };
            let targetYaw = Math.atan2(diff.x, diff.z);
            let expectedYaw = (targetYaw + Math.PI) % (2 * Math.PI);

            let currentYaw = playerRot.y;
            let angleDiff = Math.abs(expectedYaw - currentYaw);
            if (angleDiff > Math.PI) angleDiff = 2 * Math.PI - angleDiff;

            if (angleDiff < minAngleDiff) {
                minAngleDiff = angleDiff;
                closest = n;
            }
        });
        return closest;
    }

    aimAtEnemy() {
        let gameState = this.getO();
        let e = gameState?.gameWorld?.player || typeof o !== 'undefined' && o?.gameWorld?.player;
        let t = gameState?.gameWorld?.server?.players || gameState?.gameWorld?.entities?.players || typeof o !== 'undefined' && o?.gameWorld?.server?.players;
        if (!e || !t) return;

        let useCrosshair = String(this.options["Closest Crosshair"]) === "true";
        let useDistance = String(this.options["Closest Distance"]) === "true";
        let i = null;

        if (useCrosshair) {
            i = this.getClosestEnemyByCrosshair(e, t);
        } else if (useDistance) {
            i = this.getClosestEnemyByDistance(e, t);
        } else {
            i = this.getClosestEnemyByCrosshair(e, t);
        }

        this.isTargetInFOV = !!i;

        if (i) {
            let s = i.model?.position || i.position;
            let n = e.position;
            let l = { x: s.x - n.x, z: s.z - n.z };
            let d = Math.atan2(l.x, l.z);
            let u = parseFloat(this.options["Y Offset"]) || 0;
            let y = s.y + u - n.y;
            let f = Math.hypot(l.x, l.z);
            let g = Math.atan2(y, f);
            g = Math.max(Math.min(g, Math.PI / 2), -Math.PI / 2);
            let b = (d + Math.PI) % (2 * Math.PI);
            e.rotation.y = b;
            e.rotation.x = g;
        }
    }

    drawFOV() {
        if (!this.fovCtx) return;

        this.fovCtx.clearRect(0, 0, this.fovCanvas.width, this.fovCanvas.height);

        if (String(this.options["Show FOV"]) !== "true" || !this.isEnabled) return;

        const centerX = window.innerWidth / 2;
        const centerY = window.innerHeight / 2;
        const radius = parseFloat(this.options["FOV Radius"]) || 150;

        this.fovCtx.beginPath();
        this.fovCtx.arc(centerX, centerY, radius, 0, Math.PI * 2, false);
        this.fovCtx.lineWidth = 2;

        if (this.isTargetInFOV) {
            this.fovCtx.strokeStyle = "rgba(0, 255, 170, 0.9)";
            this.fovCtx.shadowColor = "#00ffaa";
            this.fovCtx.shadowBlur = 12;
        } else {
            this.fovCtx.strokeStyle = "rgba(255, 0, 0, 0.5)";
            this.fovCtx.shadowColor = "rgba(0, 0, 0, 0)";
            this.fovCtx.shadowBlur = 0;
        }

        this.fovCtx.stroke();
    }

    onRender() {
        let gameState = this.getO();
        let player = gameState?.gameWorld?.player || typeof o !== 'undefined' && o?.gameWorld?.player;

        if (player) {
            let inputs = player.inputs;
            let onAim = String(this.options["On Aim"]) === "true";
            let onShoot = String(this.options["On Shoot"]) === "true";

            if (onAim && inputs?.rightMB) this.aimAtEnemy();
            else if (onShoot && inputs?.leftMB) this.aimAtEnemy();
            else if (!onAim && !onShoot) this.aimAtEnemy();
            else this.isTargetInFOV = false;
        } else {
            this.isTargetInFOV = false;
        }

        this.drawFOV();
    }

    onDisable() {
        if (this.fovCtx) {
            this.fovCtx.clearRect(0, 0, this.fovCanvas.width, this.fovCanvas.height);
        }
    }
};
    var ModLegitKillAura = class extends a {
    constructor() {
        super("Legit KillAura", "Combat");
        this.desc = "Auto attack Player and Mobs/Zombie";

        this.set = {};
        this.settings = [];

        this.options = {
            "Range Player": 4,
            "Range Mob/Bot": 10,
            "Rotation": "Fast",
            "Target Players": true,
            "Target Bots/Mobs": true,
            "Ignore Teammates": true
        };

        this.LKA_TICK_BASE_MS = 40;
        this.LKA_TICK_JITTER_MS = 4;
        this.LKA_FAR_EPS = 0.1;
        this.LKA_OVERLAP_EPS = 0.01;
        this.LKA_OVERLAP_FAR = 0.5;
        this.LKA_FACE_EPS = 0.03;
        this.LKA_VIS_TURN = 0.5;
        this.LKA_VIS_HEAD_MIN = -0.95;
        this.LKA_VIS_HEAD_MAX = 1.2;
        this.LKA_THIRD_SCAN_TICKS = 5;
        this.LKA_OCC_LEAD = 0.05;
        this.LKA_PLAYER_HALF = { x: 0.3, y: 0.9, z: 0.3 };
        this.LKA_AIM_UP = 0.6;
        this.LKA_AIM_DOWN = 0.5;
        this.LKA_AIM_TOP = 0.9;
        this.LKA_AIM_STEEP_UP = 0.4;
        this.LKA_RANGE_EPS = 0.001;
        this.LKA_OCC_GUARD = 128;

        this.LKA_STYLE_SLAB = 2; this.LKA_STYLE_CUBE = 4; this.LKA_STYLE_CROSS = 5; this.LKA_STYLE_GARDEN = 6;
        this.LKA_STYLE_CARPET = 7; this.LKA_STYLE_LADDER = 8; this.LKA_STYLE_STAIRS = 9; this.LKA_STYLE_ARBITARY = 10;
        this.LKA_STYLE_GLASS = 11; this.LKA_STYLE_FLUID = 12; this.LKA_STYLE_FOLIAGE = 13; this.LKA_STYLE_INVIS_CUBE = 14;
        this.LKA_STYLE_TRAP_DOOR = 15; this.LKA_STYLE_DOOR = 16; this.LKA_STYLE_TUBULAR = 17; this.LKA_STYLE_VARIABLE = 18;

        this.LKA_STYLE_CROSS_AABBS = [[0.15, 0, 0.15, 0.85, 0.75, 0.85]];
        this.LKA_STYLE_GARDEN_AABBS = [[0.15, 0, 0.15, 0.85, 0.8, 0.85]];
        this.LKA_STYLE_CARPET_AABBS = [[0, 0, 0, 1, 2 / 32, 1]];
        this.LKA_STYLE_FULL_AABBS = [[0, 0, 0, 1, 1, 1]];

        this.LKA_STAIRS_AABBS = [[[0,0,0,1,0.5,1],[0,0.5,0,1,1,0.5]],[[0,0,0,1,0.5,1],[0,0.5,0,0.5,1,1]],[[0,0,0,1,0.5,1],[0,0.5,0.5,1,1,1]],[[0,0,0,1,0.5,1],[0.5,0.5,0,1,1,1]],[[0,0.5,0,1,1,1],[0,0,0,1,0.5,0.5]],[[0,0.5,0,1,1,1],[0,0,0,0.5,0.5,1]],[[0,0.5,0,1,1,1],[0,0,0.5,1,0.5,1]],[[0,0.5,0,1,1,1],[0.5,0,0,1,0.5,1]],[[0,0,0,1,0.5,1],[0,0.5,0,0.5,1,0.5]],[[0,0,0,1,0.5,1],[0,0.5,0.5,0.5,1,1]],[[0,0,0,1,0.5,1],[0.5,0.5,0.5,1,1,1]],[[0,0,0,1,0.5,1],[0.5,0.5,0,1,1,0.5]],[[0,0.5,0,1,1,1],[0,0,0,0.5,0.5,0.5]],[[0,0.5,0,1,1,1],[0,0,0.5,0.5,0.5,1]],[[0,0.5,0,1,1,1],[0.5,0,0.5,1,0.5,1]],[[0,0.5,0,1,1,1],[0.5,0,0,1,0.5,0.5]],[[0,0,0,1,0.5,1],[0.5,0.5,0,1,1,0.5]],[[0,0,0,1,0.5,1],[0,0.5,0,0.5,1,0.5]],[[0,0,0,1,0.5,1],[0,0.5,0.5,0.5,1,1]],[[0,0,0,1,0.5,1],[0.5,0.5,0.5,1,1,1]],[[0,0.5,0,1,1,1],[0.5,0,0,1,0.5,0.5]],[[0,0.5,0,1,1,1],[0,0,0,0.5,0.5,0.5]],[[0,0.5,0,1,1,1],[0,0,0.5,0.5,0.5,1]],[[0,0.5,0,1,1,1],[0.5,0,0.5,1,0.5,1]],[[0,0,0,1,0.5,1],[0,0.5,0,1,1,0.5],[0,0.5,0.5,0.5,1,1]],[[0,0,0,1,0.5,1],[0,0.5,0,0.5,1,1],[0.5,0.5,0.5,1,1,1]],[[0,0,0,1,0.5,1],[0,0.5,0.5,1,1,1],[0.5,0.5,0,1,1,0.5]],[[0,0,0,1,0.5,1],[0.5,0.5,0,1,1,1],[0,0.5,0,0.5,1,0.5]],[[0,0.5,0,1,1,1],[0,0,0,1,0.5,0.5],[0,0,0.5,0.5,0.5,1]],[[0,0.5,0,1,1,1],[0,0,0,0.5,0.5,1],[0.5,0,0.5,1,0.5,1]],[[0,0.5,0,1,1,1],[0,0,0.5,1,0.5,1],[0.5,0,0,1,0.5,0.5]],[[0,0.5,0,1,1,1],[0.5,0,0,1,0.5,1],[0,0,0.5,0.5,0.5,1]],[[0,0,0,1,0.5,1],[0,0.5,0,1,1,0.5],[0.5,0.5,0.5,1,1,1]],[[0,0,0,1,0.5,1],[0,0.5,0,0.5,1,1],[0.5,0.5,0,1,1,0.5]],[[0,0,0,1,0.5,1],[0,0.5,0.5,1,1,1],[0,0.5,0,0.5,1,0.5]],[[0,0,0,1,0.5,1],[0.5,0.5,0,1,1,1],[0,0.5,0.5,0.5,1,1]],[[0,0.5,0,1,1,1],[0,0,0,1,0.5,0.5],[0.5,0,0.5,1,0.5,1]],[[0,0.5,0,1,1,1],[0,0,0,0.5,0.5,1],[0.5,0,0,1,0.5,0.5]],[[0,0.5,0,1,1,1],[0,0,0.5,1,0.5,1],[0,0,0,0.5,0.5,0.5]],[[0,0.5,0,1,1,1],[0.5,0,0,1,0.5,1],[0,0,0.5,0.5,0.5,1]]];
        this.LKA_LADDER_AABBS = [[[0,0,0,1,1,0.0625]],[[0,0,0,0.0625,1,1]],[[0,0,0.9375,1,1,1]],[[0.9375,0,0,1,1,1]]];
        this.LKA_SLAB_AABBS = [[[0,0,0,1,0.5,1]],[[0,0.5,0,1,1,1]],[[0,0,0,0.5,1,1]],[[0.5,0,0,1,1,1]],[[0,0,0,1,1,0.5]],[[0,0,0.5,1,1,1]]];
        this.lkaOccBox = { min: { x: 0, y: 0, z: 0 }, max: { x: 0, y: 0, z: 0 } };

        this.lkaTimer = null;
        this.lkaTarget = null;
        this.lkaFaceYaw = null;
        this.lkaFacePitch = null;
        this.lkaFaceRealYaw = null;
        this.lkaFaceRealPitch = null;
        this.lkaSender = null;
        this.lkaSenderGw = null;
        this.lkaVisYaw = null;
        this.lkaVisPitch = null;
        this.lkaThirdSys = null;
        this.lkaThirdOrigExec = null;
        this.lkaThirdTick = 0;
    }

    log(msg) { console.log('[Legit KillAura] ' + msg); }

    getCtx() {
        try {
            var app = window.app;
            if (!app) {
                const appEl = document.getElementById('app');
                app = appEl && appEl.__vue_app__;
            }
            const r = app._vnode.component.appContext.provides;
            const sym = Object.getOwnPropertySymbols(r).find(function(s){ return r[s] && r[s]._s; });
            if (!sym) return null;
            const gs = r[sym]._s.get('gameState');
            const gw = gs && gs.gameWorld;
            if (!gs || !gw || !gw.player || !gw.server || typeof gw.server.sendData !== 'function') return null;
            return { gs: gs, gw: gw };
        } catch (err) { return null; }
    }

    getPlayerRange() {
        const r = parseFloat(this.options["Range Player"]);
        return (!isNaN(r) && r >= 1) ? r + 0.1 : 4.1;
    }

    getMobRange() {
        const r = parseFloat(this.options["Range Mob/Bot"]);
        return (!isNaN(r) && r >= 1) ? r + 0.1 : 4.1;
    }

    isRotationFast() { return this.options["Rotation"] === 'Fast'; }

    getPos3(obj) {
        if (!obj) return null;
        if (typeof obj.x === 'number' && typeof obj.y === 'number' && typeof obj.z === 'number') return obj;
        return obj.position ? this.getPos3(obj.position) : null;
    }

    getPlayerPos(p) {
        return this.getPos3(p && p.position) || this.getPos3(p && p.model) || this.getPos3(p && p.model && p.model.body);
    }

    getMobPos(m) {
        return this.getPos3(m && m.model) || this.getPos3(m && m.body) || this.getPos3(m && m.self) || this.getPos3(m);
    }

    isGreenName(entity) {
        if (!this.options["Ignore Teammates"] || !entity) return false;
        try {
            if (entity.isTeammate || entity.team === 'green' || entity.team === 'zombie' || entity.isZombie) return true;
            if (entity.teamColor && (entity.teamColor === 'green' || entity.teamColor === '#00ff00' || entity.teamColor === '#008000')) return true;

            if (entity.nametagColor && (entity.nametagColor === 'green' || entity.nametagColor === '#00ff00' || entity.nametagColor === '#008000')) return true;

            const el = entity.nametagElement || entity.nameElement || (entity.model && entity.model.nametagElement);
            if (el) {
                const style = window.getComputedStyle(el);
                const color = style.color;
                if (color === 'rgb(0, 255, 0)' || color === 'rgb(0, 128, 0)' || el.classList.contains('green-name') || el.classList.contains('text-green-500')) {
                    return true;
                }
            }

            if (entity.mobRawData) {
                if (entity.mobRawData.isTeammate || entity.mobRawData.team === 'green' || entity.mobRawData.isZombie) return true;
            }
        } catch (err) {}
        return false;
    }

    getMobHitbox(m) {
        try {
            const hd = m && m.mobRawData && m.mobRawData.hitboxData;
            if (!hd) return null;
            const w = typeof hd.width === 'number' ? hd.width : 0.6;
            const h = typeof hd.height === 'number' ? hd.height : 1.8;
            const d = typeof hd.depth === 'number' ? hd.depth : 0.6;
            let minY = 0, maxY = h;
            try {
                const mesh = typeof hd.getHitbox === 'function' ? hd.getHitbox() : null;
                if (mesh && typeof mesh.hitboxMinYOffset === 'number') minY = mesh.hitboxMinYOffset;
                if (mesh && typeof mesh.hitboxMaxYOffset === 'number') maxY = mesh.hitboxMaxYOffset;
            } catch (err) {}
            return {
                half: { x: w / 2, y: (maxY - minY) / 2, z: d / 2 },
                aimOffset: (minY + maxY) / 2
            };
        } catch (err) { return null; }
    }

    getHalfExtents(m) {
        const hb = this.getMobHitbox(m);
        if (hb) return hb.half;
        const w = typeof m.hitboxWidth === 'number' ? m.hitboxWidth : 0.6;
        const h = typeof m.hitboxHeight === 'number' ? m.hitboxHeight : 1.8;
        const d = typeof m.hitboxDepth === 'number' ? m.hitboxDepth : 0.6;
        return { x: w / 2, y: h / 2, z: d / 2 };
    }

    getMobAimYOffset(m) {
        const hb = this.getMobHitbox(m);
        if (hb) return hb.aimOffset;
        const min = m.hitboxMinYOffset;
        const max = m.hitboxMaxYOffset || m.hitboxHeight;
        if (typeof min === 'number' && typeof max === 'number') return (min + max) / 2;
        const h = typeof m.hitboxHeight === 'number' ? m.hitboxHeight : 1.8;
        return h / 2;
    }

    getEye(gw, p) {
        try {
            const comp = p && p.physicsPosComp;
            const lp = comp && comp.lerpPosTo;
            if (lp && typeof lp.x === 'number' && typeof lp.y === 'number' && typeof lp.z === 'number') {
                return { x: lp.x, y: lp.y + ((p && p.collision && p.collision.height) || 1.8), z: lp.z };
            }
        } catch (err) {}
        try {
            const cam = gw.threeScene && (gw.threeScene.camera || gw.threeScene.activeCamera);
            const r = cam && cam.userData && cam.userData.raycastStartV3;
            if (r && typeof r.x === 'number' && typeof r.y === 'number' && typeof r.z === 'number') {
                return { x: r.x, y: r.y, z: r.z };
            }
        } catch (err) {}
        try {
            const pos = this.getPos3(p && p.position);
            if (pos) return { x: pos.x, y: pos.y + ((p && p.collision && p.collision.height) || 1.8), z: pos.z };
        } catch (err) {}
        return null;
    }

    getEntry(eye, c, half, dir) {
        let t0 = 0, t1 = Infinity;
        for (let i = 0; i < 3; i++) {
            const a = i === 0 ? 'x' : i === 1 ? 'y' : 'z';
            const o = dir[a];
            if (Math.abs(o) < 1e-9) {
                if (eye[a] < c[a] - half[a] || eye[a] > c[a] + half[a]) return -1;
            } else {
                let n = (c[a] - half[a] - eye[a]) / o;
                let f = (c[a] + half[a] - eye[a]) / o;
                if (n > f) { const tmp = n; n = f; f = tmp; }
                if (n > t0) t0 = n;
                if (f < t1) t1 = f;
                if (t0 > t1) return -1;
            }
        }
        return t0 >= 0 ? t0 : 0;
    }

    getShapesFor(def, bid) {
        switch (def.style) {
            case this.LKA_STYLE_ARBITARY: case this.LKA_STYLE_DOOR: case this.LKA_STYLE_TRAP_DOOR:
                return (def.geom && def.geom.AABBs) || null;
            case this.LKA_STYLE_STAIRS: return this.LKA_STAIRS_AABBS[(bid >> 11) & 63] || null;
            case this.LKA_STYLE_LADDER: return this.LKA_LADDER_AABBS[(6144 & bid) >> 11] || null;
            case this.LKA_STYLE_SLAB: return this.LKA_SLAB_AABBS[(14336 & bid) >> 11] || null;
            case this.LKA_STYLE_CROSS: return this.LKA_STYLE_CROSS_AABBS;
            case this.LKA_STYLE_GARDEN: return this.LKA_STYLE_GARDEN_AABBS;
            case this.LKA_STYLE_CARPET: return this.LKA_STYLE_CARPET_AABBS;
            case this.LKA_STYLE_FOLIAGE: return null;
            default: return this.LKA_STYLE_FULL_AABBS;
        }
    }

    checkRl(e, t, n, r, i, a, o, s, c, box) {
        let u = e, d = t, f = n, p = 0;
        if (!(e >= box.min[r] && e <= box.max[r])) {
            const q = Math.abs(e - box.min[r]), w = Math.abs(e - box.max[r]);
            p = Math.abs(Math.min(q, w) / o);
            u += o * p; d += s * p; f += c * p;
        }
        return (u >= box.min[r] && u <= box.max[r]) && (d >= box.min[i] && d <= box.max[i]) && (f >= box.min[a] && f <= box.max[a]) ? { position: [u, d, f], ratio: p } : false;
    }

    checkLl(box, px, py, pz, dx, dy, dz, sx, sy, sz) {
        if (this.checkRl(py, px, pz, 'y', 'x', 'z', dy, dx, dz, box)) return true;
        if (this.checkRl(px, py, pz, 'x', 'y', 'z', dx, dy, dz, box)) return true;
        return !!this.checkRl(pz, px, py, 'z', 'x', 'y', dz, dx, dy, box);
    }

    isOccluded(gw, eye, dir, far, allBlocks) {
        try {
            const cm = gw.chunkManager;
            if (!cm || typeof cm.getBlock !== 'function') return false;
            const defs = (gw.structuredItems && gw.structuredItems.blocks) || cm.blocks;
            if (!defs) return false;
            const len = Math.sqrt(dir.x * dir.x + dir.y * dir.y + dir.z * dir.z);
            if (len < 1e-9) return false;
            const ox = dir.x / len, oy = dir.y / len, oz = dir.z / len;
            let d = Math.floor(eye.x), f = Math.floor(eye.y), p = Math.floor(eye.z);
            const mx = ox > 0 ? 1 : -1, my = oy > 0 ? 1 : -1, mz = oz > 0 ? 1 : -1;
            const ax = Math.abs(1 / ox), ay = Math.abs(1 / oy), az = Math.abs(1 / oz);
            let tMaxX = ax < 1 / 0 ? ax * (mx > 0 ? d + 1 - eye.x : eye.x - d) : 1 / 0;
            let tMaxY = ay < 1 / 0 ? ay * (my > 0 ? f + 1 - eye.y : eye.y - f) : 1 / 0;
            let tMaxZ = az < 1 / 0 ? az * (mz > 0 ? p + 1 - eye.z : eye.z - p) : 1 / 0;
            let t = 0, guard = 0;
            while (t <= far && guard < this.LKA_OCC_GUARD) {
                if (t > 0.0001) {
                    const bid = cm.getBlock(d, f, p);
                    if (bid && defs[bid]) {
                        const def = defs[bid];
                        if (def.style !== this.LKA_STYLE_INVIS_CUBE && def.style !== this.LKA_STYLE_FLUID && (allBlocks === true || !def.physTransp)) {
                            if (def.style === this.LKA_STYLE_CUBE) return true;
                            const shapes = this.getShapesFor(def, bid);
                            if (shapes) {
                                const px = eye.x + t * ox, py = eye.y + t * oy, pz = eye.z + t * oz;
                                for (let si = 0; si < shapes.length; si++) {
                                    const s = shapes[si];
                                    if (!s) continue;
                                    const box = this.lkaOccBox;
                                    box.min.x = d + s[0]; box.min.y = f + s[1]; box.min.z = p + s[2];
                                    box.max.x = d + s[3]; box.max.y = f + s[4]; box.max.z = p + s[5];
                                    if (this.checkLl(box, px, py, pz, ox, oy, oz, mx, my, mz)) return true;
                                }
                            }
                        }
                    }
                }
                if (tMaxX < tMaxY) {
                    if (tMaxX < tMaxZ) { d += mx; t = tMaxX; tMaxX += ax; } else { p += mz; t = tMaxZ; tMaxZ += az; }
                } else {
                    if (tMaxY < tMaxZ) { f += my; t = tMaxY; tMaxY += ay; } else { p += mz; t = tMaxZ; tMaxZ += az; }
                }
                guard++;
            }
        } catch (err) {}
        return false;
    }

    checkBoxPre(eye, center, half, reach) {
        return Math.abs(center.x - eye.x) <= reach + half.x + this.LKA_RANGE_EPS &&
            Math.abs(center.y - eye.y) <= reach + half.y + this.LKA_RANGE_EPS &&
            Math.abs(center.z - eye.z) <= reach + half.z + this.LKA_RANGE_EPS;
    }

    rankTarget(gw, eye, cand, reach) {
        const c = cand.center;
        const ccx = c.x - eye.x, ccy = c.y - eye.y, ccz = c.z - eye.z;
        const cLen = Math.sqrt(ccx * ccx + ccy * ccy + ccz * ccz);
        if (cLen < this.LKA_OVERLAP_EPS) return { far: 0, aim: c };
        const hLen = Math.sqrt(ccx * ccx + ccz * ccz);
        const hMH = Math.max(cand.half.x, cand.half.z);
        if (hLen - hMH > reach + this.LKA_RANGE_EPS) return null;
        if (Math.abs(ccy) > reach + cand.half.y) return null;
        const offsets = [this.LKA_AIM_UP, this.LKA_AIM_TOP, 0, -this.LKA_AIM_DOWN];
        for (let oi = 0; oi < offsets.length; oi++) {
            const aim = { x: c.x, y: c.y + cand.half.y * offsets[oi], z: c.z };
            const ax = aim.x - eye.x, ay = aim.y - eye.y, az = aim.z - eye.z;
            const len = Math.sqrt(ax * ax + ay * ay + az * az);
            if (len < 1e-9) continue;
            const dir = { x: ax / len, y: ay / len, z: az / len };
            const entry = this.getEntry(eye, c, cand.half, dir);
            if (entry < 0) continue;
            const far = Math.max(entry, this.LKA_FAR_EPS);
            if (this.isOccluded(gw, eye, dir, far - this.LKA_OCC_LEAD, cand.kind === 'mob')) continue;
            return { far: far, aim: aim };
        }
        return null;
    }

    pickTarget(ctx, eye) {
        const gw = ctx.gw;
        let best = null, bestFar = Infinity;

        if (this.options["Target Players"]) {
            const playerReach = this.getPlayerRange();
            try {
                if (gw.server.players && gw.server.players.forEach) {
                    const selfId = gw.player.sessionId;
                    gw.server.players.forEach((p, sid) => {
                        if (sid === selfId || !p || p.isAlive === false) return;
                        if (this.isGreenName(p)) return;
                        const pos = this.getPlayerPos(p);
                        if (!pos) return;
                        const half = this.LKA_PLAYER_HALF;
                        const center = { x: pos.x, y: pos.y + half.y, z: pos.z };
                        const aim = { x: pos.x, y: center.y + half.y * this.LKA_AIM_UP, z: pos.z };
                        if (!this.checkBoxPre(eye, center, half, playerReach)) return;
                        const r = this.rankTarget(gw, eye, { center: center, half: half, aim: aim, kind: 'player' }, playerReach);
                        if (r && r.far < bestFar) { bestFar = r.far; best = { kind: 'player', id: sid, ref: p, center: center, half: half, aim: r.aim, reach: playerReach }; }
                    });
                }
            } catch (err) {}
        }

        if (this.options["Target Bots/Mobs"]) {
            const mobReach = this.getMobRange();
            try {
                if (gw.chunkManager && gw.chunkManager.mobsManagerSystem &&
                    gw.chunkManager.mobsManagerSystem.allMobs && gw.chunkManager.mobsManagerSystem.allMobs.forEach) {
                    gw.chunkManager.mobsManagerSystem.allMobs.forEach((m, id) => {
                        if (!m || m.isDying) return;
                        if (this.isGreenName(m)) return;
                        const pos = this.getMobPos(m);
                        if (!pos) return;
                        const half = this.getHalfExtents(m);
                        const center = { x: pos.x, y: pos.y + this.getMobAimYOffset(m), z: pos.z };
                        const aim = { x: pos.x, y: center.y + half.y * this.LKA_AIM_UP, z: pos.z };
                        if (!this.checkBoxPre(eye, center, half, mobReach)) return;
                        const r = this.rankTarget(gw, eye, { center: center, half: half, aim: aim, kind: 'mob' }, mobReach);
                        if (r && r.far < bestFar) { bestFar = r.far; best = { kind: 'mob', id: id, ref: m, center: center, half: half, aim: r.aim, reach: mobReach }; }
                    });
                }
            } catch (err) {}
        }

        return best;
    }

    getTargetGeo(ctx, t) {
        try {
            if (t.kind === 'player') {
                if (!this.options["Target Players"]) return null;
                const p = ctx.gw.server.players && ctx.gw.server.players.get(t.id);
                if (!p || p.isAlive === false || this.isGreenName(p)) return null;
                const pos = this.getPlayerPos(p);
                if (!pos) return null;
                const half = this.LKA_PLAYER_HALF;
                const center = { x: pos.x, y: pos.y + half.y, z: pos.z };
                const aim = { x: pos.x, y: center.y + half.y * this.LKA_AIM_UP, z: pos.z };
                return { center: center, aim: aim, half: half, ref: p, reach: this.getPlayerRange() };
            } else if (t.kind === 'mob') {
                if (!this.options["Target Bots/Mobs"]) return null;
                const mobs = ctx.gw.chunkManager && ctx.gw.chunkManager.mobsManagerSystem &&
                    ctx.gw.chunkManager.mobsManagerSystem.allMobs;
                const m = mobs && mobs.get(t.id);
                if (!m || m.isDying || this.isGreenName(m)) return null;
                const pos = this.getMobPos(m);
                if (!pos) return null;
                const half = this.getHalfExtents(m);
                const center = { x: pos.x, y: pos.y + this.getMobAimYOffset(m), z: pos.z };
                const aim = { x: pos.x, y: center.y + half.y * this.LKA_AIM_UP, z: pos.z };
                return { center: center, aim: aim, half: half, ref: m, reach: this.getMobRange() };
            }
        } catch (err) { return null; }
        return null;
    }

    normYaw(y) { const r = y % (2 * Math.PI); return r < 0 ? r + 2 * Math.PI : r; }
    shortArc(a) { return (((a + Math.PI) % (2 * Math.PI)) + 2 * Math.PI) % (2 * Math.PI) - Math.PI; }

    faceTarget(gw, p, yaw, pitch) {
        try {
            const targetYaw = this.normYaw(yaw);
            const realYaw = p && p.rotation ? this.normYaw(p.rotation.y) : targetYaw;
            const realPitch = p && p.rotation ? p.rotation.x : pitch;

            const realYawMoved = this.lkaFaceRealYaw !== null && Math.abs(this.shortArc(realYaw - this.lkaFaceRealYaw)) > this.LKA_FACE_EPS;
            const realPitchMoved = this.lkaFaceRealPitch !== null && Math.abs(realPitch - this.lkaFaceRealPitch) > this.LKA_FACE_EPS;
            const realMoved = realYawMoved || realPitchMoved;
            const facingLost = realMoved && this.lkaFaceYaw !== null && Math.abs(this.shortArc(realYaw - this.lkaFaceYaw)) > this.LKA_FACE_EPS;
            const pitchLost = realMoved && this.lkaFacePitch !== null && Math.abs(realPitch - this.lkaFacePitch) > this.LKA_FACE_EPS;
            const need = this.lkaFaceYaw === null || facingLost || pitchLost ||
                Math.abs(this.shortArc(targetYaw - this.lkaFaceYaw)) > this.LKA_FACE_EPS ||
                Math.abs(pitch - this.lkaFacePitch) > this.LKA_FACE_EPS;

            if (!need) return;
            gw.server.sendData(1, { r: [Number(pitch.toFixed(3)), Number(targetYaw.toFixed(3))] });
            this.lkaFaceYaw = targetYaw; this.lkaFacePitch = pitch;
            this.lkaFaceRealYaw = realYaw; this.lkaFaceRealPitch = realPitch;
        } catch (err) {}
    }

    thirdPersonFrame(sys) {
        if (this.lkaVisYaw === null || !sys || !sys.model) return;
        const m = sys.model;
        const d = (((this.lkaVisYaw - m.rotation.y) + Math.PI) % (2 * Math.PI) + (2 * Math.PI)) % (2 * Math.PI) - Math.PI;
        m.rotation.y = m.rotation.y + d * this.LKA_VIS_TURN;
        const head = sys.headObj3D;
        if (head && this.lkaVisPitch !== null) {
            head.rotation.x = Math.max(this.LKA_VIS_HEAD_MIN, Math.min(this.LKA_VIS_HEAD_MAX, this.lkaVisPitch));
        }
    }

    wrapThirdPerson(gw) {
        try {
            const systems = gw.systemsManager && gw.systemsManager.activeSystems;
            if (!systems || !Array.isArray(systems)) return null;
            for (let i = 0; i < systems.length; i++) {
                const s = systems[i];
                if (s && s.gameWorld === gw && s.execute && typeof s.execute === 'function' && /PLAYER_ROTATION_SPEED_MULTIPLIER/.test(s.execute.toString())) {
                    if (s.execute.name === 'lkaThirdWrappedExecute') { this.lkaThirdSys = s; return s; }
                    const orig = s.execute;
                    const self = this;
                    s.execute = function lkaThirdWrappedExecute() {
                        const r = orig.apply(this, arguments);
                        try { self.thirdPersonFrame(this); } catch (err) {}
                        return r;
                    };
                    this.lkaThirdSys = s; this.lkaThirdOrigExec = orig;
                    return s;
                }
            }
            return null;
        } catch (err) { return null; }
    }

    unwrapThirdPerson() {
        try {
            if (this.lkaThirdSys && this.lkaThirdOrigExec && this.lkaThirdSys.execute && this.lkaThirdSys.execute.name === 'lkaThirdWrappedExecute') {
                this.lkaThirdSys.execute = this.lkaThirdOrigExec;
            }
        } catch (err) {}
        this.lkaThirdSys = null; this.lkaThirdOrigExec = null;
    }

    ensureThirdPerson(gw) {
        if (!this.isEnabled || !gw) { this.unwrapThirdPerson(); return; }
        if (!this.wrapThirdPerson(gw)) this.unwrapThirdPerson();
    }

    findSender(gw) {
        try {
            if (this.lkaSender && this.lkaSenderGw === gw && this.lkaSender.physDataToSend) return this.lkaSender;
            const systems = gw.systemsManager && gw.systemsManager.activeSystems;
            if (!systems || !Array.isArray(systems)) return null;
            for (let i = 0; i < systems.length; i++) {
                const s = systems[i];
                if (s && s.server && s.server.sendData && Array.isArray(s.physDataToSend) && typeof s.accumulator === 'number' && typeof s.prevLeftMB === 'boolean') {
                    this.lkaSender = s; this.lkaSenderGw = gw;
                    return s;
                }
            }
            return null;
        } catch (err) { return null; }
    }

    swing(gw) {
        try {
            if (gw.eventEmitter && typeof gw.eventEmitter.emit === 'function') gw.eventEmitter.emit(409);
            const sender = this.findSender(gw);
            if (!sender) return false;
            gw.server.sendData(1, { l: 1 });
            sender.prevLeftMB = true;
            return true;
        } catch (err) { return false; }
    }

    sendHit(ctx, target, eye, dir, far) {
        try {
            const gw = ctx.gw;
            const t = Number(gw.time && gw.time.localServerTimeMs) || 0;
            const s = t - 130;
            if (target.kind === 'mob') {
                const m = target.ref;
                const rotY = m && m.model && typeof m.model.rotation.y === 'number' ? m.model.rotation.y : 0;
                gw.server.sendData(522, [eye.x, eye.y, eye.z, dir.x, dir.y, dir.z, s, Number(target.id), rotY]);
            } else {
                gw.server.sendData(13, [s, eye.x, eye.y, eye.z, dir.x, dir.y, dir.z, far, target.id]);
            }
        } catch (err) {}
    }

    step(ctx) {
        const gw = ctx.gw;
        const p = gw.player;
        const eye = this.getEye(gw, p);
        if (!eye) { this.lkaVisYaw = null; this.lkaVisPitch = null; return; }

        this.lkaVisYaw = null;
        this.lkaVisPitch = null;
        let target = null;

        if (this.lkaTarget) {
            const geo = this.getTargetGeo(ctx, this.lkaTarget);
            const r = geo && this.rankTarget(gw, eye, { center: geo.center, half: geo.half, aim: geo.aim, kind: this.lkaTarget.kind }, geo.reach);
            if (r) {
                target = { kind: this.lkaTarget.kind, id: this.lkaTarget.id, ref: geo.ref, center: geo.center, half: geo.half, aim: r.aim, reach: geo.reach };
            } else {
                this.lkaTarget = null;
            }
        }

        if (!target) {
            const picked = this.pickTarget(ctx, eye);
            if (!picked) { this.lkaTarget = null; return; }
            this.lkaTarget = { kind: picked.kind, id: picked.id };
            target = picked;
        }

        const c = target.center;
        const a = target.aim || c;
        const ccx = c.x - eye.x, ccy = c.y - eye.y, ccz = c.z - eye.z;
        const cLen = Math.sqrt(ccx * ccx + ccy * ccy + ccz * ccz);
        const dx = a.x - eye.x, dy = a.y - eye.y, dz = a.z - eye.z;
        const len = Math.sqrt(dx * dx + dy * dy + dz * dz);
        let dir, far;

        if (cLen < this.LKA_OVERLAP_EPS) {
            const ry = p.rotation ? p.rotation.y : 0;
            dir = { x: -Math.sin(ry), y: 0, z: -Math.cos(ry) };
            far = this.LKA_OVERLAP_FAR;
        } else {
            dir = { x: dx / len, y: dy / len, z: dz / len };
            const entry = this.getEntry(eye, c, target.half, dir);
            if (entry < 0) return;
            far = Math.max(entry, this.LKA_FAR_EPS);
            if (dy / len > this.LKA_AIM_STEEP_UP) { far = Math.min(len, target.reach); }
        }

        const yaw = Math.atan2(-dir.x, -dir.z);
        const pitch = Math.asin(dir.y);

        if (this.isRotationFast()) {
            this.faceTarget(gw, p, yaw, pitch);
            this.lkaVisYaw = yaw;
            this.lkaVisPitch = pitch;
        }

        this.swing(gw);
        this.sendHit(ctx, target, eye, dir, far);
    }

    tick() {
        if (!this.isEnabled) return;
        const ctx = this.getCtx();
        if (ctx) {
            this.lkaThirdTick++;
            if (this.lkaThirdTick >= this.LKA_THIRD_SCAN_TICKS) {
                this.lkaThirdTick = 0;
                this.ensureThirdPerson(ctx.gw);
            }
            this.step(ctx);
        }
        const delay = this.LKA_TICK_BASE_MS + Math.floor(Math.random() * this.LKA_TICK_JITTER_MS);
        this.lkaTimer = setTimeout(() => this.tick(), delay);
    }

    onEnable() {
        this.onDisable();
        this.log('enabled');
        const ctx = this.getCtx();
        if (ctx) this.ensureThirdPerson(ctx.gw);
        this.tick();
    }

    onDisable() {
        if (this.lkaTimer) { clearTimeout(this.lkaTimer); this.lkaTimer = null; }
        this.lkaTarget = null;
        this.lkaFaceYaw = null; this.lkaFacePitch = null;
        this.lkaFaceRealYaw = null; this.lkaFaceRealPitch = null;
        this.lkaVisYaw = null; this.lkaVisPitch = null;
        this.unwrapThirdPerson();
        this.log('disabled');
    }

    onSettingsChange() {}
};
    var ModGunModifier = class extends a {
    constructor() {
        super("GunModifier", "Combat", {
            "Custom Spread": true,
            "Spread": 0,
            "Custom Bullets": false,
            "Bullets per shot": 1,
            "Custom Firerate": false,
            "Firerate (ms)": 100,
            "Custom Distance": false,
            "Bullet distance": 1000,
            "Custom Reload": true,
            "Reload Time": 0,
            "No Recoil": true
        });
        this.originalSpecs = null;
    }

    get gunSystem() {
        return (typeof o !== "undefined" && o?.gameWorld?.systemsManager?.activeSystems)
            ? o.gameWorld.systemsManager.activeSystems.find(e => e?.bulletsSystem)
            : null;
    }

    applyGunMods() {
        let system = this.gunSystem;
        let weaponSpec = system?.playerShooter?.currPlayerWeaponSpec;
        if (!weaponSpec) return;

        if (!this.originalSpecs) {
            this.originalSpecs = {
                startSpread: weaponSpec.startSpread,
                bulletsPerShot: weaponSpec.bulletsPerShot,
                firerateMs: weaponSpec.firerateMs,
                distance: weaponSpec.distance,
                reloadTimeMs: weaponSpec.reloadTimeMs,
                recoilAttackY: weaponSpec.recoilAttackY,
                recoilAttackX: weaponSpec.recoilAttackX
            };
        }

        if (this.options["Custom Spread"] == "true" || this.options["Custom Spread"] === true) {
            weaponSpec.startSpread = parseFloat(this.options["Spread"]) || 0;
        } else if (this.originalSpecs) {
            weaponSpec.startSpread = this.originalSpecs.startSpread;
        }

        if (this.options["Custom Bullets"] == "true" || this.options["Custom Bullets"] === true) {
            weaponSpec.bulletsPerShot = parseInt(this.options["Bullets per shot"]) || 1;
        } else if (this.originalSpecs) {
            weaponSpec.bulletsPerShot = this.originalSpecs.bulletsPerShot;
        }

        if (this.options["Custom Firerate"] == "true" || this.options["Custom Firerate"] === true) {
            weaponSpec.firerateMs = parseFloat(this.options["Firerate (ms)"]) || 1;
        } else if (this.originalSpecs) {
            weaponSpec.firerateMs = this.originalSpecs.firerateMs;
        }

        if (this.options["Custom Distance"] == "true" || this.options["Custom Distance"] === true) {
            weaponSpec.distance = parseFloat(this.options["Bullet distance"]) || 1000;
        } else if (this.originalSpecs) {
            weaponSpec.distance = this.originalSpecs.distance;
        }

        if (this.options["Custom Reload"] == "true" || this.options["Custom Reload"] === true) {
            weaponSpec.reloadTimeMs = parseFloat(this.options["Reload Time"]) || 0;
        } else if (this.originalSpecs) {
            weaponSpec.reloadTimeMs = this.originalSpecs.reloadTimeMs;
        }

        if (this.options["No Recoil"] == "true" || this.options["No Recoil"] === true) {
            weaponSpec.recoilAttackY = 0;
            weaponSpec.recoilAttackX = 0;
        } else if (this.originalSpecs) {
            weaponSpec.recoilAttackY = this.originalSpecs.recoilAttackY;
            weaponSpec.recoilAttackX = this.originalSpecs.recoilAttackX;
        }
    }

    onRender() {
        if (this.isEnabled) {
            this.applyGunMods();
        }
    }

    onEnable() {
        this.applyGunMods();
    }

    onDisable() {
        let system = this.gunSystem;
        let weaponSpec = system?.playerShooter?.currPlayerWeaponSpec;

        if (weaponSpec && this.originalSpecs) {
            weaponSpec.startSpread = this.originalSpecs.startSpread;
            weaponSpec.bulletsPerShot = this.originalSpecs.bulletsPerShot;
            weaponSpec.firerateMs = this.originalSpecs.firerateMs;
            weaponSpec.distance = this.originalSpecs.distance;
            weaponSpec.reloadTimeMs = this.originalSpecs.reloadTimeMs;
            weaponSpec.recoilAttackY = this.originalSpecs.recoilAttackY;
            weaponSpec.recoilAttackX = this.originalSpecs.recoilAttackX;
        }
        this.originalSpecs = null;
    }
};
     var Modautoclicker = class extends a {
    constructor() {
        super("Auto Clicker", "Combat");
        this.desc = "Automatically clicks while holding the left mouse button.";

        this.set = {
            cps: 12,
            randomizeCps: false,
            breakBlocks: true,
            onlyWeapon: false
        };

        this.settings = [
            { type: 'slider', id: 'cps', label: 'CPS', min: 1, max: 24, step: 1 },
            { type: 'bool', id: 'randomizeCps', label: 'Randomize CPS' },
            { type: 'bool', id: 'breakBlocks', label: 'Break Blocks' },
            { type: 'bool', id: 'onlyWeapon', label: 'Only Hold Weapon' }
        ];

        this.acHolding = false;
        this.acTimer = null;
        this.acBlockCache = false;
        this.acBlockCacheTime = 0;
        this.acHighlightMesh = null;
        this.acHighlightFound = false;
        this.acRealListenersAttached = false;

        this._onMouseDown = this.onMouseDown.bind(this);
        this._onMouseUp = this.onMouseUp.bind(this);
    }

    log(msg) {
        console.log('[Auto Clicker] ' + msg);
    }

    getCtx() {
        try {
            const appEl = document.getElementById('app');
            const app = appEl && appEl.__vue_app__;
            const pinia = app && app.config && app.config.globalProperties && app.config.globalProperties.$pinia;
            if (!pinia || !pinia._s) return null;
            const gs = pinia._s.get('gameState');
            const inv = pinia._s.get('inventoryState');
            const gw = gs && gs.gameWorld;
            if (!gs || !gw) return null;
            return { gs: gs, gw: gw, inv: inv };
        } catch (err) {
            return null;
        }
    }

    getCanvas() {
        return document.pointerLockElement || document.querySelector('canvas');
    }

    findHighlightMesh(gw) {
        if (this.acHighlightFound) return this.acHighlightMesh;
        try {
            const sm = gw.systemsManager;
            if (!sm || !sm.activeSystems) return null;
            const sys = sm.activeSystems;
            for (let i = sys.length - 1; i >= 0; i--) {
                const s = sys[i];
                if (s && s.mesh && s.mesh.name === 'Blocks Highlighting') {
                    this.acHighlightMesh = s.mesh;
                    this.acHighlightFound = true;
                    return s.mesh;
                }
            }
        } catch (err) {}
        return null;
    }

    isLookingAtBlock() {
        const now = performance.now();
        if (now - this.acBlockCacheTime < 100) return this.acBlockCache;
        this.acBlockCacheTime = now;
        try {
            const ctx = this.getCtx();
            if (!ctx || !ctx.gw) { this.acBlockCache = false; return false; }
            const mesh = this.findHighlightMesh(ctx.gw);
            if (!mesh) { this.acBlockCache = false; return false; }
            this.acBlockCache = mesh.visible === true;
            return this.acBlockCache;
        } catch (err) {
            this.acBlockCache = false;
            return false;
        }
    }

    isHoldingWeapon() {
        try {
            const ctx = this.getCtx();
            if (!ctx || !ctx.inv) return false;
            const store = ctx.inv;
            const items = store.items;
            const selected = store.selectedItem;
            const slot = store[1] && store[1][selected];
            if (!slot || !slot.id) return false;
            const def = items[slot.id];
            if (!def) return false;
            return def.category === 852;
        } catch (err) {
            return false;
        }
    }

    dispatchClick(canvas) {
        if (!canvas) return;
        try {
            const opts = { button: 0, bubbles: false, cancelable: false, composed: false };
            canvas.dispatchEvent(new PointerEvent('pointerdown', opts));
            canvas.dispatchEvent(new MouseEvent('mousedown', opts));
            setTimeout(function () {
                try {
                    canvas.dispatchEvent(new PointerEvent('pointerup', opts));
                    canvas.dispatchEvent(new MouseEvent('mouseup', opts));
                } catch (err) {}
            }, 8);
        } catch (err) {}
    }

    clickTick() {
        if (!this.isEnabled || !this.acHolding) {
            this.stop();
            return;
        }

        const set = this.set;
        const isFastBreakEnabled = typeof fastBreakModule !== 'undefined' && fastBreakModule.enabled;

        if (isFastBreakEnabled) {
            try {
                const ctx = this.getCtx();
                if (ctx && ctx.gw && ctx.gw.player && ctx.gw.player.inputs &&
                    ctx.gw.player.inputs.leftMB === true) {
                    this.acTimer = setTimeout(() => this.clickTick(), 50);
                    return;
                }
            } catch (err) {}
        }

        if ((!set.breakBlocks || isFastBreakEnabled) && this.isLookingAtBlock()) {
            this.acTimer = setTimeout(() => this.clickTick(), 50);
            return;
        }

        if (set.onlyWeapon && !this.isHoldingWeapon()) {
            this.acTimer = setTimeout(() => this.clickTick(), 50);
            return;
        }

        const canvas = this.getCanvas();
        if (!canvas) { this.stop(); return; }

        this.dispatchClick(canvas);

        let cps = set.cps;
        if (set.randomizeCps) {
            const delta = Math.floor(Math.random() * 7) - 3;
            cps = Math.max(1, Math.min(24, cps + delta));
        }
        const interval = 1000 / cps;
        this.acTimer = setTimeout(() => this.clickTick(), interval);
    }

    start() {
        if (this.acTimer) return;
        this.clickTick();
    }

    stop() {
        if (this.acTimer) {
            clearTimeout(this.acTimer);
            this.acTimer = null;
        }
    }

    onMouseDown(e) {
        if (!this.isEnabled) return;
        if (e.button !== 0) return;
        if (!e.isTrusted) return;
        this.acHolding = true;
        this.start();
    }

    onMouseUp(e) {
        if (e.button !== 0) return;
        if (!e.isTrusted) return;
        this.acHolding = false;
        this.stop();
    }

    onEnable() {
        this.onDisable();
        this.log('enabled');
        this.acRealListenersAttached = true;
        document.addEventListener('mousedown', this._onMouseDown, true);
        document.addEventListener('mouseup', this._onMouseUp, true);
    }

    onDisable() {
        this.stop();
        this.acHolding = false;
        if (this.acRealListenersAttached) {
            document.removeEventListener('mousedown', this._onMouseDown, true);
            document.removeEventListener('mouseup', this._onMouseUp, true);
            this.acRealListenersAttached = false;
        }
        this.log('disabled');
    }

    onSettingsChange() {}
};
    var ModRangeHit = class extends a {
    constructor() {
        super("Range Hit", "Combat");

        this.set = {};
        this.settings = [];

        this.options = {
            "Range Player": 4,
            "Range Mob/Bot": 10,
            "Rotation": "Fast",
            "Target Players": true,
            "Target Bots/Mobs": true,
            "Ignore Teammates": true
        };

        this.LKA_TICK_BASE_MS = 40;
        this.LKA_TICK_JITTER_MS = 4;
        this.LKA_FAR_EPS = 0.1;
        this.LKA_OVERLAP_EPS = 0.01;
        this.LKA_OVERLAP_FAR = 0.5;
        this.LKA_FACE_EPS = 0.03;
        this.LKA_VIS_TURN = 0.5;
        this.LKA_VIS_HEAD_MIN = -0.95;
        this.LKA_VIS_HEAD_MAX = 1.2;
        this.LKA_THIRD_SCAN_TICKS = 5;
        this.LKA_OCC_LEAD = 0.05;
        this.LKA_PLAYER_HALF = { x: 0.3, y: 0.9, z: 0.3 };
        this.LKA_AIM_UP = 0.6;
        this.LKA_AIM_DOWN = 0.5;
        this.LKA_AIM_TOP = 0.9;
        this.LKA_AIM_STEEP_UP = 0.4;
        this.LKA_RANGE_EPS = 0.001;
        this.LKA_OCC_GUARD = 128;

        this.LKA_STYLE_SLAB = 2; this.LKA_STYLE_CUBE = 4; this.LKA_STYLE_CROSS = 5; this.LKA_STYLE_GARDEN = 6;
        this.LKA_STYLE_CARPET = 7; this.LKA_STYLE_LADDER = 8; this.LKA_STYLE_STAIRS = 9; this.LKA_STYLE_ARBITARY = 10;
        this.LKA_STYLE_GLASS = 11; this.LKA_STYLE_FLUID = 12; this.LKA_STYLE_FOLIAGE = 13; this.LKA_STYLE_INVIS_CUBE = 14;
        this.LKA_STYLE_TRAP_DOOR = 15; this.LKA_STYLE_DOOR = 16; this.LKA_STYLE_TUBULAR = 17; this.LKA_STYLE_VARIABLE = 18;

        this.LKA_STYLE_CROSS_AABBS = [[0.15, 0, 0.15, 0.85, 0.75, 0.85]];
        this.LKA_STYLE_GARDEN_AABBS = [[0.15, 0, 0.15, 0.85, 0.8, 0.85]];
        this.LKA_STYLE_CARPET_AABBS = [[0, 0, 0, 1, 2 / 32, 1]];
        this.LKA_STYLE_FULL_AABBS = [[0, 0, 0, 1, 1, 1]];

        this.LKA_STAIRS_AABBS = [[[0,0,0,1,0.5,1],[0,0.5,0,1,1,0.5]],[[0,0,0,1,0.5,1],[0,0.5,0,0.5,1,1]],[[0,0,0,1,0.5,1],[0,0.5,0.5,1,1,1]],[[0,0,0,1,0.5,1],[0.5,0.5,0,1,1,1]],[[0,0.5,0,1,1,1],[0,0,0,1,0.5,0.5]],[[0,0.5,0,1,1,1],[0,0,0,0.5,0.5,1]],[[0,0.5,0,1,1,1],[0,0,0.5,1,0.5,1]],[[0,0.5,0,1,1,1],[0.5,0,0,1,0.5,1]],[[0,0,0,1,0.5,1],[0,0.5,0,0.5,1,0.5]],[[0,0,0,1,0.5,1],[0,0.5,0.5,0.5,1,1]],[[0,0,0,1,0.5,1],[0.5,0.5,0.5,1,1,1]],[[0,0,0,1,0.5,1],[0.5,0.5,0,1,1,0.5]],[[0,0.5,0,1,1,1],[0,0,0,0.5,0.5,0.5]],[[0,0.5,0,1,1,1],[0,0,0.5,0.5,0.5,1]],[[0,0.5,0,1,1,1],[0.5,0,0.5,1,0.5,1]],[[0,0.5,0,1,1,1],[0.5,0,0,1,0.5,0.5]],[[0,0,0,1,0.5,1],[0.5,0.5,0,1,1,0.5]],[[0,0,0,1,0.5,1],[0,0.5,0,0.5,1,0.5]],[[0,0,0,1,0.5,1],[0,0.5,0.5,0.5,1,1]],[[0,0,0,1,0.5,1],[0.5,0.5,0.5,1,1,1]],[[0,0.5,0,1,1,1],[0.5,0,0,1,0.5,0.5]],[[0,0.5,0,1,1,1],[0,0,0,0.5,0.5,0.5]],[[0,0.5,0,1,1,1],[0,0,0.5,0.5,0.5,1]],[[0,0.5,0,1,1,1],[0.5,0,0.5,1,0.5,1]],[[0,0,0,1,0.5,1],[0,0.5,0,1,1,0.5],[0,0.5,0.5,0.5,1,1]],[[0,0,0,1,0.5,1],[0,0.5,0,0.5,1,1],[0.5,0.5,0.5,1,1,1]],[[0,0,0,1,0.5,1],[0,0.5,0.5,1,1,1],[0.5,0.5,0,1,1,0.5]],[[0,0,0,1,0.5,1],[0.5,0.5,0,1,1,1],[0,0.5,0,0.5,1,0.5]],[[0,0.5,0,1,1,1],[0,0,0,1,0.5,0.5],[0,0,0.5,0.5,0.5,1]],[[0,0.5,0,1,1,1],[0,0,0,0.5,0.5,1],[0.5,0,0.5,1,0.5,1]],[[0,0.5,0,1,1,1],[0,0,0.5,1,0.5,1],[0.5,0,0,1,0.5,0.5]],[[0,0.5,0,1,1,1],[0.5,0,0,1,0.5,1],[0,0,0.5,0.5,0.5,1]],[[0,0,0,1,0.5,1],[0,0.5,0,1,1,0.5],[0.5,0.5,0.5,1,1,1]],[[0,0,0,1,0.5,1],[0,0.5,0,0.5,1,1],[0.5,0.5,0,1,1,0.5]],[[0,0,0,1,0.5,1],[0,0.5,0.5,1,1,1],[0,0.5,0,0.5,1,0.5]],[[0,0,0,1,0.5,1],[0.5,0.5,0,1,1,1],[0,0.5,0.5,0.5,1,1]],[[0,0.5,0,1,1,1],[0,0,0,1,0.5,0.5],[0.5,0,0.5,1,0.5,1]],[[0,0.5,0,1,1,1],[0,0,0,0.5,0.5,1],[0.5,0,0,1,0.5,0.5]],[[0,0.5,0,1,1,1],[0,0,0.5,1,0.5,1],[0,0,0,0.5,0.5,0.5]],[[0,0.5,0,1,1,1],[0.5,0,0,1,0.5,1],[0,0,0.5,0.5,0.5,1]]];
        this.LKA_LADDER_AABBS = [[[0,0,0,1,1,0.0625]],[[0,0,0,0.0625,1,1]],[[0,0,0.9375,1,1,1]],[[0.9375,0,0,1,1,1]]];
        this.LKA_SLAB_AABBS = [[[0,0,0,1,0.5,1]],[[0,0.5,0,1,1,1]],[[0,0,0,0.5,1,1]],[[0.5,0,0,1,1,1]],[[0,0,0,1,1,0.5]],[[0,0,0.5,1,1,1]]];
        this.lkaOccBox = { min: { x: 0, y: 0, z: 0 }, max: { x: 0, y: 0, z: 0 } };

        this.lkaTimer = null;
        this.lkaTarget = null;
        this.lkaFaceYaw = null;
        this.lkaFacePitch = null;
        this.lkaFaceRealYaw = null;
        this.lkaFaceRealPitch = null;
        this.lkaSender = null;
        this.lkaSenderGw = null;
        this.lkaVisYaw = null;
        this.lkaVisPitch = null;
        this.lkaThirdSys = null;
        this.lkaThirdOrigExec = null;
        this.lkaThirdTick = 0;

        this.isMouseDown = false;
        this.onMouseDown = this.onMouseDown.bind(this);
        this.onMouseUp = this.onMouseUp.bind(this);
    }

    log(msg) { console.log('[Range Hit] ' + msg); }

    onMouseDown(e) {
        if (e.button === 0) this.isMouseDown = true;
    }

    onMouseUp(e) {
        if (e.button === 0) this.isMouseDown = false;
    }

    getCtx() {
        try {
            var app = window.app;
            if (!app) {
                const appEl = document.getElementById('app');
                app = appEl && appEl.__vue_app__;
            }
            const r = app._vnode.component.appContext.provides;
            const sym = Object.getOwnPropertySymbols(r).find(function(s){ return r[s] && r[s]._s; });
            if (!sym) return null;
            const gs = r[sym]._s.get('gameState');
            const gw = gs && gs.gameWorld;
            if (!gs || !gw || !gw.player || !gw.server || typeof gw.server.sendData !== 'function') return null;
            return { gs: gs, gw: gw };
        } catch (err) { return null; }
    }

    getPlayerRange() {
        const r = parseFloat(this.options["Range Player"]);
        return (!isNaN(r) && r >= 1) ? r + 0.1 : 4.1;
    }

    getMobRange() {
        const r = parseFloat(this.options["Range Mob/Bot"]);
        return (!isNaN(r) && r >= 1) ? r + 0.1 : 4.1;
    }

    isRotationFast() { return this.options["Rotation"] === 'Fast'; }

    getPos3(obj) {
        if (!obj) return null;
        if (typeof obj.x === 'number' && typeof obj.y === 'number' && typeof obj.z === 'number') return obj;
        return obj.position ? this.getPos3(obj.position) : null;
    }

    getPlayerPos(p) {
        return this.getPos3(p && p.position) || this.getPos3(p && p.model) || this.getPos3(p && p.model && p.model.body);
    }

    getMobPos(m) {
        return this.getPos3(m && m.model) || this.getPos3(m && m.body) || this.getPos3(m && m.self) || this.getPos3(m);
    }

    isGreenName(entity) {
        if (!this.options["Ignore Teammates"] || !entity) return false;
        try {
            if (entity.isTeammate || entity.team === 'green' || entity.team === 'zombie' || entity.isZombie) return true;
            if (entity.teamColor && (entity.teamColor === 'green' || entity.teamColor === '#00ff00' || entity.teamColor === '#008000')) return true;

            if (entity.nametagColor && (entity.nametagColor === 'green' || entity.nametagColor === '#00ff00' || entity.nametagColor === '#008000')) return true;

            const el = entity.nametagElement || entity.nameElement || (entity.model && entity.model.nametagElement);
            if (el) {
                const style = window.getComputedStyle(el);
                const color = style.color;
                if (color === 'rgb(0, 255, 0)' || color === 'rgb(0, 128, 0)' || el.classList.contains('green-name') || el.classList.contains('text-green-500')) {
                    return true;
                }
            }

            if (entity.mobRawData) {
                if (entity.mobRawData.isTeammate || entity.mobRawData.team === 'green' || entity.mobRawData.isZombie) return true;
            }
        } catch (err) {}
        return false;
    }

    getMobHitbox(m) {
        try {
            const hd = m && m.mobRawData && m.mobRawData.hitboxData;
            if (!hd) return null;
            const w = typeof hd.width === 'number' ? hd.width : 0.6;
            const h = typeof hd.height === 'number' ? hd.height : 1.8;
            const d = typeof hd.depth === 'number' ? hd.depth : 0.6;
            let minY = 0, maxY = h;
            try {
                const mesh = typeof hd.getHitbox === 'function' ? hd.getHitbox() : null;
                if (mesh && typeof mesh.hitboxMinYOffset === 'number') minY = mesh.hitboxMinYOffset;
                if (mesh && typeof mesh.hitboxMaxYOffset === 'number') maxY = mesh.hitboxMaxYOffset;
            } catch (err) {}
            return {
                half: { x: w / 2, y: (maxY - minY) / 2, z: d / 2 },
                aimOffset: (minY + maxY) / 2
            };
        } catch (err) { return null; }
    }

    getHalfExtents(m) {
        const hb = this.getMobHitbox(m);
        if (hb) return hb.half;
        const w = typeof m.hitboxWidth === 'number' ? m.hitboxWidth : 0.6;
        const h = typeof m.hitboxHeight === 'number' ? m.hitboxHeight : 1.8;
        const d = typeof m.hitboxDepth === 'number' ? m.hitboxDepth : 0.6;
        return { x: w / 2, y: h / 2, z: d / 2 };
    }

    getMobAimYOffset(m) {
        const hb = this.getMobHitbox(m);
        if (hb) return hb.aimOffset;
        const min = m.hitboxMinYOffset;
        const max = m.hitboxMaxYOffset || m.hitboxHeight;
        if (typeof min === 'number' && typeof max === 'number') return (min + max) / 2;
        const h = typeof m.hitboxHeight === 'number' ? m.hitboxHeight : 1.8;
        return h / 2;
    }

    getEye(gw, p) {
        try {
            const comp = p && p.physicsPosComp;
            const lp = comp && comp.lerpPosTo;
            if (lp && typeof lp.x === 'number' && typeof lp.y === 'number' && typeof lp.z === 'number') {
                return { x: lp.x, y: lp.y + ((p && p.collision && p.collision.height) || 1.8), z: lp.z };
            }
        } catch (err) {}
        try {
            const cam = gw.threeScene && (gw.threeScene.camera || gw.threeScene.activeCamera);
            const r = cam && cam.userData && cam.userData.raycastStartV3;
            if (r && typeof r.x === 'number' && typeof r.y === 'number' && typeof r.z === 'number') {
                return { x: r.x, y: r.y, z: r.z };
            }
        } catch (err) {}
        try {
            const pos = this.getPos3(p && p.position);
            if (pos) return { x: pos.x, y: pos.y + ((p && p.collision && p.collision.height) || 1.8), z: pos.z };
        } catch (err) {}
        return null;
    }

    getEntry(eye, c, half, dir) {
        let t0 = 0, t1 = Infinity;
        for (let i = 0; i < 3; i++) {
            const a = i === 0 ? 'x' : i === 1 ? 'y' : 'z';
            const o = dir[a];
            if (Math.abs(o) < 1e-9) {
                if (eye[a] < c[a] - half[a] || eye[a] > c[a] + half[a]) return -1;
            } else {
                let n = (c[a] - half[a] - eye[a]) / o;
                let f = (c[a] + half[a] - eye[a]) / o;
                if (n > f) { const tmp = n; n = f; f = tmp; }
                if (n > t0) t0 = n;
                if (f < t1) t1 = f;
                if (t0 > t1) return -1;
            }
        }
        return t0 >= 0 ? t0 : 0;
    }

    getShapesFor(def, bid) {
        switch (def.style) {
            case this.LKA_STYLE_ARBITARY: case this.LKA_STYLE_DOOR: case this.LKA_STYLE_TRAP_DOOR:
                return (def.geom && def.geom.AABBs) || null;
            case this.LKA_STYLE_STAIRS: return this.LKA_STAIRS_AABBS[(bid >> 11) & 63] || null;
            case this.LKA_STYLE_LADDER: return this.LKA_LADDER_AABBS[(6144 & bid) >> 11] || null;
            case this.LKA_STYLE_SLAB: return this.LKA_SLAB_AABBS[(14336 & bid) >> 11] || null;
            case this.LKA_STYLE_CROSS: return this.LKA_STYLE_CROSS_AABBS;
            case this.LKA_STYLE_GARDEN: return this.LKA_STYLE_GARDEN_AABBS;
            case this.LKA_STYLE_CARPET: return this.LKA_STYLE_CARPET_AABBS;
            case this.LKA_STYLE_FOLIAGE: return null;
            default: return this.LKA_STYLE_FULL_AABBS;
        }
    }

    checkRl(e, t, n, r, i, a, o, s, c, box) {
        let u = e, d = t, f = n, p = 0;
        if (!(e >= box.min[r] && e <= box.max[r])) {
            const q = Math.abs(e - box.min[r]), w = Math.abs(e - box.max[r]);
            p = Math.abs(Math.min(q, w) / o);
            u += o * p; d += s * p; f += c * p;
        }
        return (u >= box.min[r] && u <= box.max[r]) && (d >= box.min[i] && d <= box.max[i]) && (f >= box.min[a] && f <= box.max[a]) ? { position: [u, d, f], ratio: p } : false;
    }

    checkLl(box, px, py, pz, dx, dy, dz, sx, sy, sz) {
        if (this.checkRl(py, px, pz, 'y', 'x', 'z', dy, dx, dz, box)) return true;
        if (this.checkRl(px, py, pz, 'x', 'y', 'z', dx, dy, dz, box)) return true;
        return !!this.checkRl(pz, px, py, 'z', 'x', 'y', dz, dx, dy, box);
    }

    isOccluded(gw, eye, dir, far, allBlocks) {
        try {
            const cm = gw.chunkManager;
            if (!cm || typeof cm.getBlock !== 'function') return false;
            const defs = (gw.structuredItems && gw.structuredItems.blocks) || cm.blocks;
            if (!defs) return false;
            const len = Math.sqrt(dir.x * dir.x + dir.y * dir.y + dir.z * dir.z);
            if (len < 1e-9) return false;
            const ox = dir.x / len, oy = dir.y / len, oz = dir.z / len;
            let d = Math.floor(eye.x), f = Math.floor(eye.y), p = Math.floor(eye.z);
            const mx = ox > 0 ? 1 : -1, my = oy > 0 ? 1 : -1, mz = oz > 0 ? 1 : -1;
            const ax = Math.abs(1 / ox), ay = Math.abs(1 / oy), az = Math.abs(1 / oz);
            let tMaxX = ax < 1 / 0 ? ax * (mx > 0 ? d + 1 - eye.x : eye.x - d) : 1 / 0;
            let tMaxY = ay < 1 / 0 ? ay * (my > 0 ? f + 1 - eye.y : eye.y - f) : 1 / 0;
            let tMaxZ = az < 1 / 0 ? az * (mz > 0 ? p + 1 - eye.z : eye.z - p) : 1 / 0;
            let t = 0, guard = 0;
            while (t <= far && guard < this.LKA_OCC_GUARD) {
                if (t > 0.0001) {
                    const bid = cm.getBlock(d, f, p);
                    if (bid && defs[bid]) {
                        const def = defs[bid];
                        if (def.style !== this.LKA_STYLE_INVIS_CUBE && def.style !== this.LKA_STYLE_FLUID && (allBlocks === true || !def.physTransp)) {
                            if (def.style === this.LKA_STYLE_CUBE) return true;
                            const shapes = this.getShapesFor(def, bid);
                            if (shapes) {
                                const px = eye.x + t * ox, py = eye.y + t * oy, pz = eye.z + t * oz;
                                for (let si = 0; si < shapes.length; si++) {
                                    const s = shapes[si];
                                    if (!s) continue;
                                    const box = this.lkaOccBox;
                                    box.min.x = d + s[0]; box.min.y = f + s[1]; box.min.z = p + s[2];
                                    box.max.x = d + s[3]; box.max.y = f + s[4]; box.max.z = p + s[5];
                                    if (this.checkLl(box, px, py, pz, ox, oy, oz, mx, my, mz)) return true;
                                }
                            }
                        }
                    }
                }
                if (tMaxX < tMaxY) {
                    if (tMaxX < tMaxZ) { d += mx; t = tMaxX; tMaxX += ax; } else { p += mz; t = tMaxZ; tMaxZ += az; }
                } else {
                    if (tMaxY < tMaxZ) { f += my; t = tMaxY; tMaxY += ay; } else { p += mz; t = tMaxZ; tMaxZ += az; }
                }
                guard++;
            }
        } catch (err) {}
        return false;
    }

    checkBoxPre(eye, center, half, reach) {
        return Math.abs(center.x - eye.x) <= reach + half.x + this.LKA_RANGE_EPS &&
            Math.abs(center.y - eye.y) <= reach + half.y + this.LKA_RANGE_EPS &&
            Math.abs(center.z - eye.z) <= reach + half.z + this.LKA_RANGE_EPS;
    }

    rankTarget(gw, eye, cand, reach) {
        const c = cand.center;
        const ccx = c.x - eye.x, ccy = c.y - eye.y, ccz = c.z - eye.z;
        const cLen = Math.sqrt(ccx * ccx + ccy * ccy + ccz * ccz);
        if (cLen < this.LKA_OVERLAP_EPS) return { far: 0, aim: c };
        const hLen = Math.sqrt(ccx * ccx + ccz * ccz);
        const hMH = Math.max(cand.half.x, cand.half.z);
        if (hLen - hMH > reach + this.LKA_RANGE_EPS) return null;
        if (Math.abs(ccy) > reach + cand.half.y) return null;
        const offsets = [this.LKA_AIM_UP, this.LKA_AIM_TOP, 0, -this.LKA_AIM_DOWN];
        for (let oi = 0; oi < offsets.length; oi++) {
            const aim = { x: c.x, y: c.y + cand.half.y * offsets[oi], z: c.z };
            const ax = aim.x - eye.x, ay = aim.y - eye.y, az = aim.z - eye.z;
            const len = Math.sqrt(ax * ax + ay * ay + az * az);
            if (len < 1e-9) continue;
            const dir = { x: ax / len, y: ay / len, z: az / len };
            const entry = this.getEntry(eye, c, cand.half, dir);
            if (entry < 0) continue;
            const far = Math.max(entry, this.LKA_FAR_EPS);
            if (this.isOccluded(gw, eye, dir, far - this.LKA_OCC_LEAD, cand.kind === 'mob')) continue;
            return { far: far, aim: aim };
        }
        return null;
    }

    pickTarget(ctx, eye) {
        const gw = ctx.gw;
        let best = null, bestFar = Infinity;

        if (this.options["Target Players"]) {
            const playerReach = this.getPlayerRange();
            try {
                if (gw.server.players && gw.server.players.forEach) {
                    const selfId = gw.player.sessionId;
                    gw.server.players.forEach((p, sid) => {
                        if (sid === selfId || !p || p.isAlive === false) return;
                        if (this.isGreenName(p)) return;
                        const pos = this.getPlayerPos(p);
                        if (!pos) return;
                        const half = this.LKA_PLAYER_HALF;
                        const center = { x: pos.x, y: pos.y + half.y, z: pos.z };
                        const aim = { x: pos.x, y: center.y + half.y * this.LKA_AIM_UP, z: pos.z };
                        if (!this.checkBoxPre(eye, center, half, playerReach)) return;
                        const r = this.rankTarget(gw, eye, { center: center, half: half, aim: aim, kind: 'player' }, playerReach);
                        if (r && r.far < bestFar) { bestFar = r.far; best = { kind: 'player', id: sid, ref: p, center: center, half: half, aim: r.aim, reach: playerReach }; }
                    });
                }
            } catch (err) {}
        }

        if (this.options["Target Bots/Mobs"]) {
            const mobReach = this.getMobRange();
            try {
                if (gw.chunkManager && gw.chunkManager.mobsManagerSystem &&
                    gw.chunkManager.mobsManagerSystem.allMobs && gw.chunkManager.mobsManagerSystem.allMobs.forEach) {
                    gw.chunkManager.mobsManagerSystem.allMobs.forEach((m, id) => {
                        if (!m || m.isDying) return;
                        if (this.isGreenName(m)) return;
                        const pos = this.getMobPos(m);
                        if (!pos) return;
                        const half = this.getHalfExtents(m);
                        const center = { x: pos.x, y: pos.y + this.getMobAimYOffset(m), z: pos.z };
                        const aim = { x: pos.x, y: center.y + half.y * this.LKA_AIM_UP, z: pos.z };
                        if (!this.checkBoxPre(eye, center, half, mobReach)) return;
                        const r = this.rankTarget(gw, eye, { center: center, half: half, aim: aim, kind: 'mob' }, mobReach);
                        if (r && r.far < bestFar) { bestFar = r.far; best = { kind: 'mob', id: id, ref: m, center: center, half: half, aim: r.aim, reach: mobReach }; }
                    });
                }
            } catch (err) {}
        }

        return best;
    }

    getTargetGeo(ctx, t) {
        try {
            if (t.kind === 'player') {
                if (!this.options["Target Players"]) return null;
                const p = ctx.gw.server.players && ctx.gw.server.players.get(t.id);
                if (!p || p.isAlive === false || this.isGreenName(p)) return null;
                const pos = this.getPlayerPos(p);
                if (!pos) return null;
                const half = this.LKA_PLAYER_HALF;
                const center = { x: pos.x, y: pos.y + half.y, z: pos.z };
                const aim = { x: pos.x, y: center.y + half.y * this.LKA_AIM_UP, z: pos.z };
                return { center: center, aim: aim, half: half, ref: p, reach: this.getPlayerRange() };
            } else if (t.kind === 'mob') {
                if (!this.options["Target Bots/Mobs"]) return null;
                const mobs = ctx.gw.chunkManager && ctx.gw.chunkManager.mobsManagerSystem &&
                    ctx.gw.chunkManager.mobsManagerSystem.allMobs;
                const m = mobs && mobs.get(t.id);
                if (!m || m.isDying || this.isGreenName(m)) return null;
                const pos = this.getMobPos(m);
                if (!pos) return null;
                const half = this.getHalfExtents(m);
                const center = { x: pos.x, y: pos.y + this.getMobAimYOffset(m), z: pos.z };
                const aim = { x: pos.x, y: center.y + half.y * this.LKA_AIM_UP, z: pos.z };
                return { center: center, aim: aim, half: half, ref: m, reach: this.getMobRange() };
            }
        } catch (err) { return null; }
        return null;
    }

    normYaw(y) { const r = y % (2 * Math.PI); return r < 0 ? r + 2 * Math.PI : r; }
    shortArc(a) { return (((a + Math.PI) % (2 * Math.PI)) + 2 * Math.PI) % (2 * Math.PI) - Math.PI; }

    faceTarget(gw, p, yaw, pitch) {
        try {
            const targetYaw = this.normYaw(yaw);
            const realYaw = p && p.rotation ? this.normYaw(p.rotation.y) : targetYaw;
            const realPitch = p && p.rotation ? p.rotation.x : pitch;

            const realYawMoved = this.lkaFaceRealYaw !== null && Math.abs(this.shortArc(realYaw - this.lkaFaceRealYaw)) > this.LKA_FACE_EPS;
            const realPitchMoved = this.lkaFaceRealPitch !== null && Math.abs(realPitch - this.lkaFaceRealPitch) > this.LKA_FACE_EPS;
            const realMoved = realYawMoved || realPitchMoved;
            const facingLost = realMoved && this.lkaFaceYaw !== null && Math.abs(this.shortArc(realYaw - this.lkaFaceYaw)) > this.LKA_FACE_EPS;
            const pitchLost = realMoved && this.lkaFacePitch !== null && Math.abs(realPitch - this.lkaFacePitch) > this.LKA_FACE_EPS;
            const need = this.lkaFaceYaw === null || facingLost || pitchLost ||
                Math.abs(this.shortArc(targetYaw - this.lkaFaceYaw)) > this.LKA_FACE_EPS ||
                Math.abs(pitch - this.lkaFacePitch) > this.LKA_FACE_EPS;

            if (!need) return;
            gw.server.sendData(1, { r: [Number(pitch.toFixed(3)), Number(targetYaw.toFixed(3))] });
            this.lkaFaceYaw = targetYaw; this.lkaFacePitch = pitch;
            this.lkaFaceRealYaw = realYaw; this.lkaFaceRealPitch = realPitch;
        } catch (err) {}
    }

    thirdPersonFrame(sys) {
        if (this.lkaVisYaw === null || !sys || !sys.model) return;
        const m = sys.model;
        const d = (((this.lkaVisYaw - m.rotation.y) + Math.PI) % (2 * Math.PI) + (2 * Math.PI)) % (2 * Math.PI) - Math.PI;
        m.rotation.y = m.rotation.y + d * this.LKA_VIS_TURN;
        const head = sys.headObj3D;
        if (head && this.lkaVisPitch !== null) {
            head.rotation.x = Math.max(this.LKA_VIS_HEAD_MIN, Math.min(this.LKA_VIS_HEAD_MAX, this.lkaVisPitch));
        }
    }

    wrapThirdPerson(gw) {
        try {
            const systems = gw.systemsManager && gw.systemsManager.activeSystems;
            if (!systems || !Array.isArray(systems)) return null;
            for (let i = 0; i < systems.length; i++) {
                const s = systems[i];
                if (s && s.gameWorld === gw && s.execute && typeof s.execute === 'function' && /PLAYER_ROTATION_SPEED_MULTIPLIER/.test(s.execute.toString())) {
                    if (s.execute.name === 'lkaThirdWrappedExecute') { this.lkaThirdSys = s; return s; }
                    const orig = s.execute;
                    const self = this;
                    s.execute = function lkaThirdWrappedExecute() {
                        const r = orig.apply(this, arguments);
                        try { self.thirdPersonFrame(this); } catch (err) {}
                        return r;
                    };
                    this.lkaThirdSys = s; this.lkaThirdOrigExec = orig;
                    return s;
                }
            }
            return null;
        } catch (err) { return null; }
    }

    unwrapThirdPerson() {
        try {
            if (this.lkaThirdSys && this.lkaThirdOrigExec && this.lkaThirdSys.execute && this.lkaThirdSys.execute.name === 'lkaThirdWrappedExecute') {
                this.lkaThirdSys.execute = this.lkaThirdOrigExec;
            }
        } catch (err) {}
        this.lkaThirdSys = null; this.lkaThirdOrigExec = null;
    }

    ensureThirdPerson(gw) {
        if (!this.isEnabled || !gw) { this.unwrapThirdPerson(); return; }
        if (!this.wrapThirdPerson(gw)) this.unwrapThirdPerson();
    }

    findSender(gw) {
        try {
            if (this.lkaSender && this.lkaSenderGw === gw && this.lkaSender.physDataToSend) return this.lkaSender;
            const systems = gw.systemsManager && gw.systemsManager.activeSystems;
            if (!systems || !Array.isArray(systems)) return null;
            for (let i = 0; i < systems.length; i++) {
                const s = systems[i];
                if (s && s.server && s.server.sendData && Array.isArray(s.physDataToSend) && typeof s.accumulator === 'number' && typeof s.prevLeftMB === 'boolean') {
                    this.lkaSender = s; this.lkaSenderGw = gw;
                    return s;
                }
            }
            return null;
        } catch (err) { return null; }
    }

    swing(gw) {
        try {
            if (gw.eventEmitter && typeof gw.eventEmitter.emit === 'function') gw.eventEmitter.emit(409);
            const sender = this.findSender(gw);
            if (!sender) return false;
            gw.server.sendData(1, { l: 1 });
            sender.prevLeftMB = true;
            return true;
        } catch (err) { return false; }
    }

    sendHit(ctx, target, eye, dir, far) {
        try {
            const gw = ctx.gw;
            const t = Number(gw.time && gw.time.localServerTimeMs) || 0;
            const s = t - 130;
            if (target.kind === 'mob') {
                const m = target.ref;
                const rotY = m && m.model && typeof m.model.rotation.y === 'number' ? m.model.rotation.y : 0;
                gw.server.sendData(522, [eye.x, eye.y, eye.z, dir.x, dir.y, dir.z, s, Number(target.id), rotY]);
            } else {
                gw.server.sendData(13, [s, eye.x, eye.y, eye.z, dir.x, dir.y, dir.z, far, target.id]);
            }
        } catch (err) {}
    }

    step(ctx) {
        if (!this.isMouseDown) {
            this.lkaTarget = null;
            this.lkaVisYaw = null;
            this.lkaVisPitch = null;
            return;
        }

        const gw = ctx.gw;
        const p = gw.player;
        const eye = this.getEye(gw, p);
        if (!eye) { this.lkaVisYaw = null; this.lkaVisPitch = null; return; }

        this.lkaVisYaw = null;
        this.lkaVisPitch = null;
        let target = null;

        if (this.lkaTarget) {
            const geo = this.getTargetGeo(ctx, this.lkaTarget);
            const r = geo && this.rankTarget(gw, eye, { center: geo.center, half: geo.half, aim: geo.aim, kind: this.lkaTarget.kind }, geo.reach);
            if (r) {
                target = { kind: this.lkaTarget.kind, id: this.lkaTarget.id, ref: geo.ref, center: geo.center, half: geo.half, aim: r.aim, reach: geo.reach };
            } else {
                this.lkaTarget = null;
            }
        }

        if (!target) {
            const picked = this.pickTarget(ctx, eye);
            if (!picked) { this.lkaTarget = null; return; }
            this.lkaTarget = { kind: picked.kind, id: picked.id };
            target = picked;
        }

        const c = target.center;
        const a = target.aim || c;
        const ccx = c.x - eye.x, ccy = c.y - eye.y, ccz = c.z - eye.z;
        const cLen = Math.sqrt(ccx * ccx + ccy * ccy + ccz * ccz);
        const dx = a.x - eye.x, dy = a.y - eye.y, dz = a.z - eye.z;
        const len = Math.sqrt(dx * dx + dy * dy + dz * dz);
        let dir, far;

        if (cLen < this.LKA_OVERLAP_EPS) {
            const ry = p.rotation ? p.rotation.y : 0;
            dir = { x: -Math.sin(ry), y: 0, z: -Math.cos(ry) };
            far = this.LKA_OVERLAP_FAR;
        } else {
            dir = { x: dx / len, y: dy / len, z: dz / len };
            const entry = this.getEntry(eye, c, target.half, dir);
            if (entry < 0) return;
            far = Math.max(entry, this.LKA_FAR_EPS);
            if (dy / len > this.LKA_AIM_STEEP_UP) { far = Math.min(len, target.reach); }
        }

        const yaw = Math.atan2(-dir.x, -dir.z);
        const pitch = Math.asin(dir.y);

        if (this.isRotationFast()) {
            this.faceTarget(gw, p, yaw, pitch);
            this.lkaVisYaw = yaw;
            this.lkaVisPitch = pitch;
        }

        this.swing(gw);
        this.sendHit(ctx, target, eye, dir, far);
    }

    tick() {
        if (!this.isEnabled) return;
        const ctx = this.getCtx();
        if (ctx) {
            this.lkaThirdTick++;
            if (this.lkaThirdTick >= this.LKA_THIRD_SCAN_TICKS) {
                this.lkaThirdTick = 0;
                this.ensureThirdPerson(ctx.gw);
            }
            this.step(ctx);
        }
        const delay = this.LKA_TICK_BASE_MS + Math.floor(Math.random() * this.LKA_TICK_JITTER_MS);
        this.lkaTimer = setTimeout(() => this.tick(), delay);
    }

    onEnable() {
        this.onDisable();
        this.log('enabled');

        window.addEventListener('mousedown', this.onMouseDown);
        window.addEventListener('mouseup', this.onMouseUp);

        const ctx = this.getCtx();
        if (ctx) this.ensureThirdPerson(ctx.gw);
        this.tick();
    }

    onDisable() {
        window.removeEventListener('mousedown', this.onMouseDown);
        window.removeEventListener('mouseup', this.onMouseUp);
        this.isMouseDown = false;

        if (this.lkaTimer) { clearTimeout(this.lkaTimer); this.lkaTimer = null; }
        this.lkaTarget = null;
        this.lkaFaceYaw = null; this.lkaFacePitch = null;
        this.lkaFaceRealYaw = null; this.lkaFaceRealPitch = null;
        this.lkaVisYaw = null; this.lkaVisPitch = null;
        this.unwrapThirdPerson();
        this.log('disabled');
    }

    onSettingsChange() {}
};
    // ================== MISC MODULES ==================
    var ModInventoryCleaner = class extends a {
    constructor() {
        super("Inventory Cleaner", "Misc");
        this.desc = "Automatically throws out junk items and keeps the best equipment.";

        this.set = {
            delay: 100,
            openOnly: false,
            ignoreHotbar: false,
            keepEquipped: true,
            keepBest: true,
            throwArmor: false
        };
        // Constants
        this.IC_BACKPACK = 0;
        this.IC_POCKET = 1;
        this.IC_ARMOR = 2;
        this.IC_THROW_OUT_ITEM = 509;
        this.IC_LAYOUT_INVENTORY = 12;
        this.IC_CATEGORY_ARMOR = 882;
        this.IC_CATEGORY_TOOLS = 852;

        // Internal State
        this.icTimer = null;
        this.icProcTimer = null;
        this.icBusy = false;
        this.icLogged = false;
        this.icMissCount = 0;
    }

    log(msg) {
        console.log('[Inventory Cleaner] ' + msg);
    }

    logThrottled(msg) {
        if (this.icMissCount++ % 40 === 0) this.log(msg);
    }

    getCtx() {
        try {
            var app = window.app;
            if (!app) {
                const appEl = document.getElementById('app');
                app = appEl && appEl.__vue_app__;
            }
            const pinia = app && app.config && app.config.globalProperties && app.config.globalProperties.$pinia;
            if (!pinia || !pinia._s) return null;
            const gs = pinia._s.get('gameState');
            const store = pinia._s.get('inventoryState');
            const gw = gs && gs.gameWorld;
            if (!gs || !store || !gw || !store.items) return null;
            if (!Array.isArray(store[this.IC_BACKPACK]) || !Array.isArray(store[this.IC_POCKET])) return null;
            return { gs: gs, store: store, gw: gw };
        } catch (err) {
            return null;
        }
    }

    collectSlots(ctx) {
        const groups = [{ t: this.IC_BACKPACK, a: ctx.store[this.IC_BACKPACK] }];
        if (!this.set.ignoreHotbar) groups.push({ t: this.IC_POCKET, a: ctx.store[this.IC_POCKET] });
        if (this.set.throwArmor && Array.isArray(ctx.store[this.IC_ARMOR])) groups.push({ t: this.IC_ARMOR, a: ctx.store[this.IC_ARMOR] });

        const slots = [];
        for (let g = 0; g < groups.length; g++) {
            const arr = groups[g].a;
            for (let j = 0; j < arr.length; j++) {
                const s = arr[j];
                if (s && s.id) slots.push({ t: groups[g].t, index: j, id: s.id, q: s.q, data: s.data });
            }
        }
        return slots;
    }

    isProtected(ctx, t, index) {
        if (this.set.keepEquipped && t === this.IC_POCKET && index === ctx.store.selectedItem) return true;
        return false;
    }

    subtype(def) {
        if (!def || def.category !== this.IC_CATEGORY_TOOLS) return null;
        const n = def.name || '';
        let key = null;
        if (n.indexOf('Sword') !== -1) key = 'sword';
        else if (n.indexOf('Pickaxe') !== -1) key = 'pickaxe';
        else if (n.indexOf('Axe') !== -1) key = 'axe';
        else if (n.indexOf('Shovel') !== -1) key = 'shovel';
        if (!key) return null;
        const stat = (key === 'sword' || key === 'axe') ? (Number(def.damage) || 0) : (Number(def.strength) || 0);
        return { key: key, stat: stat };
    }

    armorSubtype(def) {
        if (!def || def.category !== this.IC_CATEGORY_ARMOR || typeof def.armorType !== 'number') return null;
        return { key: 'armor' + def.armorType, stat: Number(def.armorPoints) || 0 };
    }

    fragility(ctx, s, def) {
        const cur = s.data && typeof s.data.fragility === 'number' ? s.data.fragility : null;
        return cur === null ? (Number(def.fragility) || 0) : cur;
    }

    computeBest(ctx) {
        const best = {};
        const slots = this.collectSlots(ctx);
        for (let i = 0; i < slots.length; i++) {
            const s = slots[i];
            const def = ctx.store.items[s.id];
            if (!def) continue;
            const sub = this.subtype(def) || this.armorSubtype(def);
            if (!sub) continue;
            const cand = { stat: sub.stat, rarity: Number(def.rarity) || 0, frag: this.fragility(ctx, s, def) };
            const cur = best[sub.key];
            if (!cur || cand.stat > cur.stat ||
                (cand.stat === cur.stat && (cand.rarity > cur.rarity ||
                    (cand.rarity === cur.rarity && cand.frag > cur.frag)))) {
                best[sub.key] = cand;
            }
        }
        return best;
    }

    strictlyWorse(a, b) {
        if (a.stat !== b.stat) return a.stat < b.stat;
        if (a.rarity !== b.rarity) return a.rarity < b.rarity;
        return a.frag < b.frag;
    }

    filteredId(id) {
        return false;
    }

    findJunk(ctx) {
        const best = this.set.keepBest ? this.computeBest(ctx) : null;
        const slots = this.collectSlots(ctx);
        const junk = [];
        for (let i = 0; i < slots.length; i++) {
            const s = slots[i];
            const def = ctx.store.items[s.id];
            if (!def) continue;

            if (best) {
                const sub = this.subtype(def) || this.armorSubtype(def);
                if (sub) {
                    const b = best[sub.key];
                    if (b && this.strictlyWorse({ stat: sub.stat, rarity: Number(def.rarity) || 0, frag: this.fragility(ctx, s, def) }, b)) {
                        junk.push(s);
                    }
                    continue;
                }
            }

            if (this.isProtected(ctx, s.t, s.index)) continue;

            if (this.filteredId(s.id)) {
                junk.push(s);
                continue;
            }
        }
        return junk;
    }

    removeSlot(ctx, s) {
        try {
            const arr = ctx.store[s.t];
            const cur = arr && arr[s.index];
            if (!cur || cur.id !== s.id) return;
            try {
                ctx.gw.server.sendData(this.IC_THROW_OUT_ITEM, [s.t, cur.q, s.index]);
            } catch (err) {}
            arr[s.index] = { id: 0, q: 0 };
            try {
                if (s.t === this.IC_ARMOR && typeof ctx.store.calculateArmorPoints === 'function') ctx.store.calculateArmorPoints();
            } catch (err) {}
            try {
                if (typeof ctx.store.backpackOrPocketChanged === 'number') ctx.store.backpackOrPocketChanged++;
            } catch (err) {}
        } catch (err) {}
    }

    process(ctx, junk) {
        this.icBusy = true;
        let i = 0;
        const step = () => {
            if (!this.isEnabled) {
                this.icBusy = false;
                this.icProcTimer = null;
                return;
            }
            const c = this.getCtx();
            if (!c) {
                this.icBusy = false;
                this.icProcTimer = null;
                return;
            }
            if (i >= junk.length) {
                this.icBusy = false;
                this.icProcTimer = null;
                return;
            }
            const s = junk[i++];
            const arr = c.store[s.t];
            const cur = arr && arr[s.index];
            if (cur && cur.id === s.id) this.removeSlot(c, s);
            const delay = Math.min(1000, Math.max(0, Number(this.set.delay) || 0));
            this.icProcTimer = setTimeout(step, delay);
        };
        step();
    }

    scan() {
        if (!this.isEnabled || this.icBusy || (typeof state !== 'undefined' && typeof GuiState !== 'undefined' && state !== GuiState.CLOSED)) return;
        const c = this.getCtx();
        if (!c) {
            this.logThrottled('game world / inventory store not found');
            return;
        }
        if (this.set.openOnly && c.gs.layoutState !== this.IC_LAYOUT_INVENTORY) return;
        const junk = this.findJunk(c);
        if (junk.length === 0) return;
        if (!this.icLogged) {
            this.icLogged = true;
            this.log('inventory hooked — removing ' + junk.length + ' item(s)');
        }
        this.process(c, junk);
    }

    onEnable() {
        this.onDisable();
        this.icMissCount = 0;
        this.icLogged = false;
        this.log('enabled');
        this.icTimer = setInterval(() => this.scan(), 400);
        this.scan();
    }

    onDisable() {
        if (this.icTimer) {
            clearInterval(this.icTimer);
            this.icTimer = null;
        }
        if (this.icProcTimer) {
            clearTimeout(this.icProcTimer);
            this.icProcTimer = null;
        }
        this.icBusy = false;
        this.icLogged = false;
        this.log('disabled');
    }

    onSettingsChange() {}
};
    var ModInstabreak = class extends a { constructor() { super("Instabreak", "Misc", null); this.originalHardness = new Map(); } onEnable() { Object.values(o.gameWorld.items).forEach(e => { if (e?.destruction) { if (!this.originalHardness.has(e)) this.originalHardness.set(e, e.destruction.durability); e.destruction.durability = 0; } }); } onDisable() { Object.values(o.gameWorld.items).forEach(e => { if (e?.destruction && this.originalHardness.has(e)) e.destruction.durability = this.originalHardness.get(e); }); } };

    var ModNuker = class extends a {
    constructor() {
        super("Nuker", "Misc", {
            "Range": 2,
            "Delay Forward": 200,
            "Delay Down": 500,
            "Delay Up": 500,
            "Auto Disable": false
        });
        this.timer = null;
        this.isLeftMouseDown = false;
        this.isArrowDownPressed = false;
        this.isSpacePressed = false;

        this.onMouseDown = (e) => {
            if (e.button === 0) this.isLeftMouseDown = true;
        };

        this.onMouseUp = (e) => {
            if (e.button === 0) this.isLeftMouseDown = false;
        };

        this.onKeyDown = (e) => {
            if (e.code === "KeyC") this.isArrowDownPressed = true;
            if (e.code === "Space") this.isSpacePressed = true;
        };

        this.onKeyUp = (e) => {
            if (e.code === "KeyC") this.isArrowDownPressed = false;
            if (e.code === "Space") this.isSpacePressed = false;
        };
    }

    onEnable() {
        window.addEventListener("mousedown", this.onMouseDown);
        window.addEventListener("mouseup", this.onMouseUp);
        window.addEventListener("keydown", this.onKeyDown);
        window.addEventListener("keyup", this.onKeyUp);
        this.step();
    }

    onDisable() {
        window.removeEventListener("mousedown", this.onMouseDown);
        window.removeEventListener("mouseup", this.onMouseUp);
        window.removeEventListener("keydown", this.onKeyDown);
        window.removeEventListener("keyup", this.onKeyUp);
        this.isLeftMouseDown = false;
        this.isArrowDownPressed = false;
        this.isSpacePressed = false;
        if (this.timer) {
            clearTimeout(this.timer);
            this.timer = null;
        }
    }

    step() {
        if (!this.isEnabled) return;

        let currentDelay = 50;
        let targets = [];

        try {
            const gw = o.gameWorld;
            if (gw && gw.player && gw.chunkManager) {
                const player = gw.player;
                const pos = player.position;

                const px = Math.floor(pos.x);
                const py = Math.floor(pos.y);
                const pz = Math.floor(pos.z);

                if (this.isLeftMouseDown) {
                    currentDelay = parseInt(this.options["Delay Forward"]) || 50;

                    const headY = Math.floor(pos.y + 1.5);
                    const rot = player.rotation || { x: 0, y: 0 };
                    const pitch = rot.x;
                    const yaw = rot.y;

                    let dx = -Math.sin(yaw) * Math.cos(pitch);
                    let dy = Math.sin(pitch);
                    let dz = -Math.cos(yaw) * Math.cos(pitch);

                    const absX = Math.abs(dx);
                    const absY = Math.abs(dy);
                    const absZ = Math.abs(dz);

                    let stepX = 0, stepY = 0, stepZ = 0;

                    if (absY > absX && absY > absZ) {
                        stepY = Math.sign(dy);
                    } else if (absX > absZ) {
                        stepX = Math.sign(dx);
                    } else {
                        stepZ = Math.sign(dz);
                    }

                    const reach = Math.max(1, parseInt(this.options["Range"]) || 3);

                    for (let i = 1; i <= reach; i++) {
                        const tx = px + (stepX * i);
                        const ty = headY + (stepY * i);
                        const tz = pz + (stepZ * i);

                        if (stepY !== 0) {
                            targets.push([tx, ty, tz]);
                        } else {
                            targets.push([tx, Math.floor(pos.y), tz]);
                            targets.push([tx, Math.floor(pos.y + 1), tz]);
                        }
                    }
                }
                else if (this.isArrowDownPressed) {
                    currentDelay = parseInt(this.options["Delay Down"]) || 500;
                    targets.push([px, py - 1, pz]);
                }
                else if (this.isSpacePressed) {
                    currentDelay = parseInt(this.options["Delay Up"]) || 500;
                    targets.push([px, py + 2, pz]);
                }

                targets.forEach(([x, y, z]) => {
                    if (gw.chunkManager.getBlock(x, y, z) !== 0) {
                        gw.chunkManager.setBlock(x, y, z, 0, true);

                        if (gw.server && typeof gw.server.sendData === 'function') {
                            gw.server.sendData(2, [x, y, z]);
                        }
                    }
                });
            }
        } catch (err) {}

        this.timer = setTimeout(() => this.step(), Math.max(0, currentDelay));
    }
};
    var ModAdBypass = class extends a { constructor() { super("AdBypass", "Misc"); } onEnable() { this._reward = this._reward || o.stores.get("adsStore").rewardCommercialVideoWrapper; o.stores.get("adsStore").rewardCommercialVideoWrapper = () => true; } onDisable() { o.stores.get("adsStore").rewardCommercialVideoWrapper = () => this._reward; } };
    var ModFreeHeadcoins = class extends a { constructor() { super("FreeHeadbuckpatch:(", "Misc"); } async onEnable() { let e = await o.network.get("users/freeSpinner"); o.stores.get("userState").user.balance.headcoins += e.data.amount; h.modules.FreeHeadcoins.disable(); } };
    var ModFill = class extends a { constructor() { super("Fill", "Misc", { Radius: 4, "Block ID": 652, "Chunk Interval": 500 }); this.lastExecutionTime = 0; } onRender() { if (!o?.gameWorld?.player) return; let e = this.options.Radius; let t = this.options["Chunk Interval"]; let i = Date.now(); if (i - this.lastExecutionTime >= t) { this.lastExecutionTime = i; let s = Object.values(o.gameWorld.player.position).splice(0, 3).map(Math.floor); for (let n = -e; n <= e; n++) for (let l = -e; l <= e; l++) for (let d = -e; d <= e; d++) { let [u, y, f] = [s[0] + n, s[1] + l, s[2] + d]; if (o.gameWorld.chunkManager.getBlock(u, y, f) == 0) o.gameWorld.chunkManager.setBlock(u, y, f, this.options["Block ID"], true, true); } } } };
    var ModNoHunger = class extends a { constructor() { super("NoHunger", "Misc", null); } onEnable() { p.listeners.NoHunger = function (e, t) { if (e == p.toServer.TIME_STEP_INFO) { if (t.m) delete t.m; if (t.s) delete t.s; if (t.j) delete t.j; } }; } onDisable() { delete p.listeners.NoHunger; } };
    var ModNoDrown = class extends a {
    constructor() {
        super("NoDrown", "Misc", null);
        this.originalCallback = null;
    }

    getO() {
        try {
            var app = window.app;
            var r = app._vnode.component.appContext.provides;
            var sym = Object.getOwnPropertySymbols(r).find(function(s){ return r[s] && r[s]._s; });
            if (!sym) return null;
            var gameState = r[sym]._s.get('gameState');
            if (!gameState || !gameState.gameWorld) return null;
            return gameState;
        } catch(e) { return null; }
    }

    get damageListener() {
        try {
            var gameState = this.getO();
            if (!gameState || !gameState.gameWorld || !gameState.gameWorld.eventEmitter) return null;
            var events = gameState.gameWorld.eventEmitter._events;
            if (!events) return null;
            var listenerMap = events.get(48);
            if (!listenerMap) return null;
            return listenerMap.values().next().value;
        } catch(e) { return null; }
    }

    onRender() {
        var listener = this.damageListener;
        if (listener && listener.callback) {
            var cbStr = listener.callback.toString();
            if (cbStr.includes("damageToApply")) {
                this.originalCallback = listener.callback;
                listener.callback = () => {};
            }
        }
    }

    onDisable() {
        var listener = this.damageListener;
        if (listener) {
            if (this.originalCallback) {
                listener.callback = this.originalCallback;
            } else {
                listener.callback = e => { this.damageToApply += e; };
            }
        }
    }
};
    var ModInstantRespawn = class extends a { constructor() { super("InstantRespawn", "Misc"); } get gamemode() { return location.pathname.replace("/match/", ""); } onRender() { if (o.gameWorld?.player.isAlive) return; let e = false; switch (this.gamemode) { case "one-block": o.gameWorld.server.sendData(p.toServer.ONE_BLOCK_REQUEST_RESPAWN, true); e = true; break; case "parkour": o.gameWorld.server.sendData(p.toServer.PARKOUR_REQUEST_RESPAWN, true); e = true; break; case "bedwars": o.gameWorld.server.sendData(p.toServer.BED_WARS_REQUEST_RESPAWN, true); e = true; break; case "survival": o.gameWorld.server.sendData(p.toServer.SANDBOX_REQUEST_RESPAWN, true); e = true; break; } if (e) o.stores.get("gameState").setLayoutState(0); } };
    var ModShopAnywhere = class extends a { constructor() { super("ShopAnywhere", "Misc"); } get npcSystem() { return o?.gameWorld?.systemsManager?.activeSystems.find(e => e?.isPlayerInShoppingZone); } onRender() { if (this?.npcSystem) { this._og = this._og || this.npcSystem.isPlayerInShoppingZone; if (this.npcSystem.isPlayerInShoppingZone == this._og) this.npcSystem.isPlayerInShoppingZone = () => true; } } onDisable() { if (this.npcSystem) this.npcSystem.isPlayerInShoppingZone = this._og; } };
    var ModSelfHarm = class extends a { constructor() { super("SelfHarm", "Misc", { Amount: 1 }); } onEnable() { o.gameWorld.server.msgsToSend.push(p.toServer.GOT_DAMAGE, parseFloat(this.options.Amount)); this.disable(); } };
    var ModBlockFinder = class extends a {
    constructor() {
        super("Block Finder", "Misc");
        this.desc = "Scan and render ESP for targeted blocks in world";

        this.set = {};
        this.settings = [];

        this.BLOCK_TYPES = [
            { name: 'Infernal Shard', ids: [1067], color: '#f70a41' },
            { name: 'Gold Block', ids: [572], color: '#575403' },
            { name: 'Diamond Block', ids: [580], color: '#08fcfc' },
            { name: 'White Wool', ids: [494], color: '#ebeded' },
            { name: 'Copper', ids: [691, 1197], color: '#f55b02' },
            { name: 'Screaming Obsidian', ids: [1063], color: '#230a40' },
            { name: 'Gold', ids: [571, 1199], color: '#ffff05' },
            { name: 'Diamond', ids: [581, 1200], color: '#80DEEA' },
            { name: 'Coal', ids: [616], color: '#050505' },
            { name: 'Iron', ids: [830, 1198], color: '#b0afae' }
        ];

        this.ID_MAP = {};
        this.ALL_IDS = [];
        this.BLOCK_TYPES.forEach(item => {
            item.ids.forEach(id => {
                this.ALL_IDS.push(id);
                this.ID_MAP[id] = item;
            });
        });

        this.ACTIVE_IDS = [...this.ALL_IDS];
        this.SEARCH_RADIUS = 5;
        this.MAX_RADIUS = 30;
        this.FOV_Y = 70;
        this.BATCH_SIZE = 20;
        this.STEPS_FRAME = 80;

        this.targetBlocks = [];
        this.allBlocks = [];
        this.espOn = true;
        this.showCoords = true;
        this.showList = true;
        this.camera = null;
        this.scanState = null;
        this.lastURL = location.href;
        this.checkTick = 0;

        this.cvs = null;
        this.ctx = null;
        this.ui = null;
        this.listEl = null;
        this.statusEl = null;

        this.animFrameId = null;
        this.resizeHandler = null;
    }

    colorFor(id) {
        return this.ID_MAP[id]?.color || '#ffffff';
    }

    nameFor(id) {
        return this.ID_MAP[id]?.name || id;
    }

    clampR(r) {
        r = parseInt(r) || 5;
        if (r < 1) r = 1;
        if (r > this.MAX_RADIUS) r = this.MAX_RADIUS;
        return r;
    }

    makeIdSet() {
        var s = {};
        for (var i = 0; i < this.ACTIVE_IDS.length; i++) s[this.ACTIVE_IDS[i]] = true;
        return s;
    }

    getO() {
        try {
            var app = window.app;
            var r = app._vnode.component.appContext.provides;
            var sym = Object.getOwnPropertySymbols(r).find(function(s){ return r[s] && r[s]._s; });
            if (!sym) return null;
            var o = r[sym]._s.get('gameState');
            if (!o || !o.gameWorld || !o.gameWorld.chunkManager || !o.gameWorld.player) return null;
            return o;
        } catch(e) { return null; }
    }

    findCamera(o) {
        if (this.camera) {
            try { if (this.camera.matrixWorldInverse) return this.camera; } catch(e){}
            this.camera = null;
        }
        try {
            var sys = o.gameWorld.systemsManager.activeSystems;
            for (var i = 0; i < sys.length; i++) {
                var s = sys[i]; if (!s) continue;
                var ks = Object.getOwnPropertyNames(s);
                for (var j = 0; j < ks.length; j++) {
                    try {
                        var v = s[ks[j]]; if (!v || typeof v !== 'object') continue;
                        if (v.isPerspectiveCamera || v.isCamera) { this.camera = v; return v; }
                        var ks2 = Object.getOwnPropertyNames(v);
                        for (var n = 0; n < ks2.length; n++) {
                            try {
                                var v2 = v[ks2[n]];
                                if (v2 && (v2.isPerspectiveCamera || v2.isCamera)) { this.camera = v2; return v2; }
                            } catch(e){}
                        }
                    } catch(e){}
                }
            }
        } catch(e){}
        return null;
    }

    worldToScreen(pp, rot, bx, by, bz) {
        if (this.camera && this.camera.projectionMatrix && this.camera.matrixWorldInverse) {
            try {
                var mv = this.camera.matrixWorldInverse.elements, p = this.camera.projectionMatrix.elements;
                var vx = mv[0]*bx + mv[4]*by + mv[8]*bz + mv[12], vy = mv[1]*bx + mv[5]*by + mv[9]*bz + mv[13];
                var vz = mv[2]*bx + mv[6]*by + mv[10]*bz + mv[14], vw = mv[3]*bx + mv[7]*by + mv[11]*bz + mv[15];
                var cx = p[0]*vx + p[4]*vy + p[8]*vz + p[12]*vw, cy = p[1]*vx + p[5]*vy + p[9]*vz + p[13]*vw;
                var cz = p[2]*vx + p[6]*vy + p[10]*vz + p[14]*vw, cw = p[3]*vx + p[7]*vy + p[11]*vz + p[15]*vw;
                if (cw <= 0 || cz/cw > 1) return null;
                return { x: ((cx/cw)*0.5 + 0.5)*this.cvs.width, y: (-(cy/cw)*0.5 + 0.5)*this.cvs.height };
            } catch(e) { this.camera = null; }
        }
        var dx = bx - pp[0], dy = by - pp[1] - 1.6, dz = bz - pp[2];
        var bYaw = Math.atan2(dx, dz) + Math.PI;
        var pYaw = ((rot.y % (2 * Math.PI)) + 2 * Math.PI) % (2 * Math.PI);
        var yd = bYaw - pYaw;
        while (yd > Math.PI) yd -= 2 * Math.PI;
        while (yd < -Math.PI) yd += 2 * Math.PI;
        if (Math.abs(yd) > Math.PI * 0.65) return null;
        var h = Math.sqrt(dx*dx + dz*dz), pd = Math.atan2(dy, h) - rot.x;
        var W = this.cvs.width, H = this.cvs.height, fvY = this.FOV_Y * Math.PI / 180, fvX = 2 * Math.atan(Math.tan(fvY/2) * W / H);
        return { x: W/2 + (yd/(fvX/2))*(W/2), y: H/2 - (pd/(fvY/2))*(H/2) };
    }

    startScan(o) {
        if (this.scanState) return;
        var R = this.clampR(this.SEARCH_RADIUS);
        var pos = Array.from(o.gameWorld.player.position);
        var sx = pos[0] >> 4, sy = pos[1] >> 4, sz = pos[2] >> 4;
        this.scanState = {
            cm: o.gameWorld.chunkManager,
            idSet: this.makeIdSet(),
            found: [], a: -R, l: -R, m: -R, R: R,
            cx: sx, cy: sy, cz: sz,
            pp: pos, total: Math.pow(2 * R + 1, 3), done: 0
        };
    }

    forceScan() {
        this.scanState = null; this.targetBlocks = []; this.allBlocks = [];
        var o = this.getO(); if (o) this.startScan(o);
    }

    tickScan() {
        if (!this.scanState) return;
        var st = this.scanState, R = st.R, steps = 0;
        while (steps < this.STEPS_FRAME) {
            var cx = st.cx + st.a, cy = st.cy + st.l, cz = st.cz + st.m;
            try {
                var arr = st.cm.getChunkArray(cx, cy, cz);
                if (arr) {
                    for (var g = 0; g < arr.length; g++) {
                        var bid = arr[g];
                        if (!st.idSet[bid]) continue;
                        var bx = (cx << 4) + (g & 15), by = (cy << 4) + ((g >> 4) & 15), bz = (cz << 4) + (g >> 8);
                        try { if (st.cm.getBlock(bx, by, bz) === bid) st.found.push({ bx: bx, by: by, bz: bz, id: bid }); } catch(e){}
                    }
                }
            } catch(e){}
            st.done++; st.m++;
            if (st.m > R) { st.m = -R; st.l++; }
            if (st.l > R) { st.l = -R; st.a++; }
            if (st.a > R) {
                this.allBlocks = st.found;
                var pp = st.pp; this.scanState = null;

                this.targetBlocks = this.allBlocks
                    .map(b => ({ b: b, d: Math.hypot(b.bx - pp[0], b.by - pp[1], b.bz - pp[2]) }))
                    .sort((a, z) => a.d - z.d)
                    .slice(0, this.BATCH_SIZE).map(x => x.b);
                return;
            }
            steps++;
        }
        if (this.statusEl) {
            var pct = Math.round(st.done / st.total * 100);
            this.statusEl.textContent = 'Scanning... ' + pct + '%';
        }
    }

    blockExists(o, b) {
        try { return o.gameWorld.chunkManager.getBlock(b.bx, b.by, b.bz) === b.id; } catch(e) { return false; }
    }

    renderLoop() {
        if (!this.isEnabled) return;

        this.ctx.clearRect(0, 0, this.cvs.width, this.cvs.height);
        this.tickScan();
        var o = this.getO();

        if (o) {
            if (!this.camera) this.findCamera(o);
            if (this.camera) { try { this.camera.updateMatrixWorld(true); } catch(e) { this.camera = null; } }

            this.checkTick++;
            if (this.checkTick >= 45) {
                this.checkTick = 0;
                if (!this.scanState) {
                    var alive = this.targetBlocks.filter(b => this.blockExists(o, b));
                    if (alive.length < this.targetBlocks.length) this.startScan(o);
                }
            }

            if (this.espOn && this.targetBlocks.length) {
                var pp = Array.from(o.gameWorld.player.position);
                var rot = o.gameWorld.player.rotation;
                for (var i = 0; i < this.targetBlocks.length; i++) {
                    var b = this.targetBlocks[i];
                    var sc = this.worldToScreen(pp, rot, b.bx + 0.5, b.by + 0.5, b.bz + 0.5);
                    if (!sc || sc.x < -80 || sc.x > this.cvs.width + 80 || sc.y < -80 || sc.y > this.cvs.height + 80) continue;
                    var d = Math.hypot(b.bx - pp[0], b.by - pp[1], b.bz - pp[2]);
                    var sz = Math.max(8, Math.min(52, 400 / d)), hw = sz / 2;
                    var col = this.colorFor(b.id);

                    this.ctx.save();
                    this.ctx.shadowColor = col; this.ctx.shadowBlur = 18; this.ctx.strokeStyle = col; this.ctx.lineWidth = 2.5;
                    this.ctx.strokeRect(sc.x - hw, sc.y - hw, sz, sz);
                    this.ctx.fillStyle = col.slice(0, 7) + '22'; this.ctx.fillRect(sc.x - hw, sc.y - hw, sz, sz);
                    this.ctx.restore();

                    this.ctx.save();
                    this.ctx.font = 'bold 10px monospace'; this.ctx.textAlign = 'center';
                    this.ctx.strokeStyle = 'rgba(0,0,0,0.9)'; this.ctx.lineWidth = 3;

                    var labelText = this.nameFor(b.id) + ' ' + d.toFixed(0) + 'm';
                    if (this.showCoords) {
                        labelText += ' (' + b.bx + ',' + b.by + ',' + b.bz + ')';
                    }

                    this.ctx.strokeText(labelText, sc.x, sc.y - hw - 3);
                    this.ctx.fillStyle = '#fff'; this.ctx.fillText(labelText, sc.x, sc.y - hw - 3);
                    this.ctx.restore();
                }
            }

            if (!this.scanState) {
                var pp2 = Array.from(o.gameWorld.player.position);
                var camL = this.camera ? 'cam exacta' : 'angular FOV:' + this.FOV_Y;
                if (this.statusEl) this.statusEl.textContent = this.targetBlocks.length + '/' + this.BATCH_SIZE + ' activos | ' + this.allBlocks.length + ' total | ' + camL;

                if (this.listEl && this.showList) {
                    this.listEl.textContent = this.targetBlocks.length === 0 ? 'none nearby' :
                        this.targetBlocks.map(b => ({ b: b, d: Math.hypot(b.bx - pp2[0], b.by - pp2[1], b.bz - pp2[2]) }))
                        .sort((a, z) => a.d - z.d)
                        .map(x => '[' + this.nameFor(x.b.id) + '] ' + x.b.bx + ',' + x.b.by + ',' + x.b.bz + '  ' + x.d.toFixed(1) + 'm')
                        .join('\n');
                }
            }
        } else {
            if (this.targetBlocks.length > 0) {
                this.targetBlocks = []; this.allBlocks = []; this.camera = null; this.scanState = null;
                if (this.listEl) this.listEl.textContent = '';
                if (this.statusEl) this.statusEl.textContent = 'Waiting for match...';
            }
        }

        if (location.href !== this.lastURL) {
            this.lastURL = location.href; this.targetBlocks = []; this.allBlocks = []; this.camera = null; this.scanState = null;
            if (this.statusEl) this.statusEl.textContent = 'Loading match...';
        }

        this.animFrameId = requestAnimationFrame(() => this.renderLoop());
    }

    createUI() {
        if (this.ui) return;

        this.cvs = document.createElement('canvas');
        this.cvs.style.cssText = 'position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:2147483646';
        document.body.appendChild(this.cvs);
        this.ctx = this.cvs.getContext('2d');

        this.resizeHandler = () => {
            if (this.cvs) { this.cvs.width = innerWidth; this.cvs.height = innerHeight; }
        };
        this.resizeHandler();
        window.addEventListener('resize', this.resizeHandler);

        this.ui = document.createElement('div');
        this.ui.style.cssText = 'position:fixed;top:80px;left:80px;width:280px;background:#0d0d0d;color:#e0e0e0;font:11px system-ui,sans-serif;border:1.5px solid #ff1e1e;border-radius:6px;box-shadow:0 0 15px rgba(255,30,30,0.3);z-index:2147483647;user-select:none;display:flex;flex-direction:column;';

        var cbHtml = '';
        for (var i = 0; i < this.BLOCK_TYPES.length; i++) {
            var item = this.BLOCK_TYPES[i];
            var idsStr = item.ids.join(',');
            cbHtml += '<label style="display:inline-flex;align-items:center;gap:2px;margin:2px;cursor:pointer;font-size:10px">'
                + '<input type="checkbox" class="bfcb" data-ids="' + idsStr + '" checked '
                + 'style="accent-color:' + item.color + '"> '
                + '<span style="color:' + item.color + '">' + item.name + '</span></label>';
        }

        this.ui.innerHTML = '<div class="bfh" style="padding:6px 8px;cursor:move;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #ff1e1e;font-weight:700;background:#140505;color:#ff4d4d">'
            + '<span>Block Finder</span>'
            + '<div style="display:flex;gap:4px;">'
            + '<button id="bflisttoggle" style="background:#260a0a;border:1px solid #ff3333;color:#ff9999;border-radius:3px;padding:2px 5px;cursor:pointer;font-size:10px">LIST ON</button>'
            + '<button id="bfesp" style="background:#b71c1c;border:1px solid #ff5252;color:#fff;border-radius:3px;padding:2px 7px;cursor:pointer;font-size:10px">ESP ON</button>'
            + '</div></div>'
            + '<div style="padding:4px 8px;border-bottom:1px solid #260a0a;display:flex;justify-content:space-between;align-items:center;background:#110404;">'
            + '<span style="font-size:10px;color:#888;">Select Targets:</span>'
            + '<div><button id="bfselectall" style="background:#260a0a;border:1px solid #ff3333;color:#ff9999;border-radius:3px;padding:1px 5px;cursor:pointer;font-size:9px;margin-right:3px;">All</button>'
            + '<button id="bfselectnone" style="background:#260a0a;border:1px solid #555;color:#aaa;border-radius:3px;padding:1px 5px;cursor:pointer;font-size:9px;">None</button></div>'
            + '</div>'
            + '<div style="padding:4px 8px;border-bottom:1px solid #260a0a">' + cbHtml + '</div>'
            + '<div style="padding:4px 8px;border-bottom:1px solid #260a0a;display:flex;gap:4px;align-items:center;flex-wrap:wrap;">'
            + '<label style="font-size:10px;color:#ccc">R:<input id="bfr" type="number" min="1" max="' + this.MAX_RADIUS + '" value="' + this.SEARCH_RADIUS + '" style="width:26px;background:#1a1a1a;border:1px solid #ff1e1e;color:#fff;border-radius:3px;padding:2px 2px;text-align:center"></label>'
            + '<label style="font-size:10px;color:#ccc">FOV:<input id="bffov" type="number" value="' + this.FOV_Y + '" style="width:30px;background:#1a1a1a;border:1px solid #ff1e1e;color:#fff;border-radius:3px;padding:2px 2px;text-align:center"></label>'
            + '<label style="font-size:10px;color:#ccc">Max:<input id="bfmax" type="number" min="1" max="20" value="' + this.BATCH_SIZE + '" style="width:26px;background:#1a1a1a;border:1px solid #ff1e1e;color:#fff;border-radius:3px;padding:2px 2px;text-align:center"></label>'
            + '<label style="font-size:10px;color:#ccc;cursor:pointer;margin-left:2px;"><input id="bfcoords" type="checkbox" ' + (this.showCoords ? 'checked' : '') + '> XYZ</label>'
            + '<button id="bfscan" style="background:#81c784;border:none;color:#000;font-weight:bold;border-radius:3px;padding:2px 6px;cursor:pointer;font-size:10px;margin-left:auto;">Scan</button>'
            + '</div>'
            + '<div id="bfst" style="padding:2px 8px;font-size:10px;color:#ff6666;border-bottom:1px solid #260a0a">Waiting for match...</div>'
            + '<div id="bflist" style="max-height:180px;overflow:auto;padding:4px 8px 8px;font-family:monospace;white-space:pre;font-size:11px;color:#ffb3b3"></div>'
            + '<div class="bfb-drag" style="padding:6px;cursor:move;background:#140505;border-top:1px solid #ff1e1e;display:flex;justify-content:center;align-items:center;border-radius:0 0 4px 4px;">'
            + '<div style="width:40px;height:4px;background:#ff4d4d;border-radius:2px;box-shadow:0 0 5px rgba(255,77,77,0.5);"></div>'
            + '</div>';

        document.body.appendChild(this.ui);
        this.listEl = this.ui.querySelector('#bflist');
        this.statusEl = this.ui.querySelector('#bfst');

        const readActive = () => {
            this.ACTIVE_IDS = [];
            var cbs = this.ui.querySelectorAll('.bfcb');
            for (var i = 0; i < cbs.length; i++) {
                if (cbs[i].checked) {
                    var ids = cbs[i].dataset.ids.split(',').map(id => parseInt(id));
                    this.ACTIVE_IDS.push(...ids);
                }
            }
        };

        this.ui.querySelectorAll('.bfcb').forEach(cb => {
            cb.addEventListener('change', () => { readActive(); this.forceScan(); });
        });

        this.ui.querySelector('#bfselectall').onclick = () => {
            this.ui.querySelectorAll('.bfcb').forEach(cb => cb.checked = true);
            readActive();
            this.forceScan();
        };

        this.ui.querySelector('#bfselectnone').onclick = () => {
            this.ui.querySelectorAll('.bfcb').forEach(cb => cb.checked = false);
            readActive();
            this.forceScan();
        };

        this.ui.querySelector('#bfscan').onclick = () => {
            this.SEARCH_RADIUS = this.clampR(this.ui.querySelector('#bfr').value);
            this.ui.querySelector('#bfr').value = this.SEARCH_RADIUS;
            this.FOV_Y = parseInt(this.ui.querySelector('#bffov').value) || 70;
            this.BATCH_SIZE = Math.max(1, Math.min(20, parseInt(this.ui.querySelector('#bfmax').value) || 10));
            this.ui.querySelector('#bfmax').value = this.BATCH_SIZE;
            readActive(); this.forceScan();
        };

        this.ui.querySelector('#bfr').addEventListener('change', (e) => {
            this.SEARCH_RADIUS = this.clampR(e.target.value);
            e.target.value = this.SEARCH_RADIUS;
        });

        this.ui.querySelector('#bffov').addEventListener('change', (e) => {
            this.FOV_Y = parseInt(e.target.value) || 70;
        });

        this.ui.querySelector('#bfmax').addEventListener('change', (e) => {
            this.BATCH_SIZE = Math.max(1, Math.min(20, parseInt(e.target.value) || 10));
            e.target.value = this.BATCH_SIZE;
            this.forceScan();
        });

        this.ui.querySelector('#bfcoords').addEventListener('change', (e) => {
            this.showCoords = e.target.checked;
        });

        this.ui.querySelector('#bflisttoggle').onclick = (e) => {
            this.showList = !this.showList;
            this.listEl.style.display = this.showList ? 'block' : 'none';
            e.target.textContent = this.showList ? 'LIST ON' : 'LIST OFF';
            e.target.style.background = this.showList ? '#260a0a' : '#111';
            e.target.style.color = this.showList ? '#ff9999' : '#666';
        };

        this.ui.querySelector('#bfesp').onclick = (e) => {
            this.espOn = !this.espOn;
            e.target.textContent = this.espOn ? 'ESP ON' : 'ESP OFF';
            e.target.style.background = this.espOn ? '#b71c1c' : '#333';
            e.target.style.borderColor = this.espOn ? '#ff5252' : '#555';
        };

        var drag = false, ox = 0, oy = 0;

        const startDrag = (clientX, clientY) => {
            drag = true;
            ox = clientX - this.ui.offsetLeft;
            oy = clientY - this.ui.offsetTop;
        };

        const doDrag = (clientX, clientY) => {
            if (drag) {
                this.ui.style.left = (clientX - ox) + 'px';
                this.ui.style.top = (clientY - oy) + 'px';
            }
        };

        const stopDrag = () => { drag = false; };

        var dragElements = [this.ui.querySelector('.bfh'), this.ui.querySelector('.bfb-drag')];
        dragElements.forEach(el => {
            el.addEventListener('mousedown', (e) => startDrag(e.clientX, e.clientY));
            el.addEventListener('touchstart', (e) => {
                if (e.touches.length === 1) startDrag(e.touches[0].clientX, e.touches[0].clientY);
            }, { passive: true });
        });

        document.addEventListener('mousemove', (e) => doDrag(e.clientX, e.clientY));
        document.addEventListener('mouseup', stopDrag);

        document.addEventListener('touchmove', (e) => {
            if (drag && e.touches.length === 1) doDrag(e.touches[0].clientX, e.touches[0].clientY);
        }, { passive: true });
        document.addEventListener('touchend', stopDrag);
    }

    destroyUI() {
        if (this.cvs) {
            this.cvs.remove();
            this.cvs = null;
            this.ctx = null;
        }
        if (this.ui) {
            this.ui.remove();
            this.ui = null;
        }
        if (this.resizeHandler) {
            window.removeEventListener('resize', this.resizeHandler);
            this.resizeHandler = null;
        }
    }

    onEnable() {
        this.createUI();
        var o = this.getO();
        if (o) {
            this.findCamera(o);
            this.startScan(o);
        }
        this.renderLoop();
    }

    onDisable() {
        if (this.animFrameId) {
            cancelAnimationFrame(this.animFrameId);
            this.animFrameId = null;
        }
        this.destroyUI();
        this.targetBlocks = [];
        this.allBlocks = [];
        this.camera = null;
        this.scanState = null;
    }

    onSettingsChange() {}
};
    var ModBedESP = class extends a {
    constructor() {
        super("BedESPpatch:(", "Misc");
        this.desc = "Scan and render ESP for target beds in world";

        this.set = {};
        this.settings = [];

        this.ALL_IDS = [1046, 1048, 1050, 1052, 1054, 1056, 1058, 640];
        this.ACTIVE_IDS = [...this.ALL_IDS];
        this.SEARCH_RADIUS = 5;
        this.MAX_RADIUS = 30;
        this.FOV_Y = 70;
        this.BATCH_SIZE = 20;
        this.STEPS_FRAME = 80;

        this.ID_NAMES = {
            1046: 'Blue Bed',
            1048: 'Green Bed',
            1050: 'Light Blue Bed',
            1052: 'Orange Bed',
            1054: 'Purple Bed',
            1056: 'White Bed',
            1058: 'Yellow Bed',
            640:  'Red Bed'
        };

        this.ID_COLORS = {
            1046: '#0088ff',
            1048: '#00ff22',
            1050: '#00e5ff',
            1052: '#ff8800',
            1054: '#aa00ff',
            1056: '#ffffff',
            1058: '#ffff00',
            640:  '#ff0000'
        };

        this.targetBlocks = [];
        this.allBlocks = [];
        this.espOn = true;
        this.camera = null;
        this.scanState = null;
        this.lastURL = location.href;
        this.checkTick = 0;

        this.cvs = null;
        this.ctx = null;
        this.ui = null;
        this.listEl = null;
        this.statusEl = null;

        this.animFrameId = null;
        this.resizeHandler = null;
    }

    colorFor(id) {
        return this.ID_COLORS[id] || '#ffffff';
    }

    nameFor(id) {
        return this.ID_NAMES[id] || id;
    }

    clampR(r) {
        r = parseInt(r) || 5;
        if (r < 1) r = 1;
        if (r > this.MAX_RADIUS) r = this.MAX_RADIUS;
        return r;
    }

    makeIdSet() {
        var s = {};
        for (var i = 0; i < this.ACTIVE_IDS.length; i++) s[this.ACTIVE_IDS[i]] = true;
        return s;
    }

    getO() {
        try {
            var app = window.app;
            var r = app._vnode.component.appContext.provides;
            var sym = Object.getOwnPropertySymbols(r).find(function(s){ return r[s] && r[s]._s; });
            if (!sym) return null;
            var o = r[sym]._s.get('gameState');
            if (!o || !o.gameWorld || !o.gameWorld.chunkManager || !o.gameWorld.player) return null;
            return o;
        } catch(e) { return null; }
    }

    findCamera(o) {
        if (this.camera) {
            try { if (this.camera.matrixWorldInverse) return this.camera; } catch(e){}
            this.camera = null;
        }
        try {
            var sys = o.gameWorld.systemsManager.activeSystems;
            for (var i = 0; i < sys.length; i++) {
                var s = sys[i]; if (!s) continue;
                var ks = Object.getOwnPropertyNames(s);
                for (var j = 0; j < ks.length; j++) {
                    try {
                        var v = s[ks[j]]; if (!v || typeof v !== 'object') continue;
                        if (v.isPerspectiveCamera || v.isCamera) { this.camera = v; return v; }
                        var ks2 = Object.getOwnPropertyNames(v);
                        for (var n = 0; n < ks2.length; n++) {
                            try {
                                var v2 = v[ks2[n]];
                                if (v2 && (v2.isPerspectiveCamera || v2.isCamera)) { this.camera = v2; return v2; }
                            } catch(e){}
                        }
                    } catch(e){}
                }
            }
        } catch(e){}
        return null;
    }

    worldToScreen(pp, rot, bx, by, bz) {
        if (this.camera && this.camera.projectionMatrix && this.camera.matrixWorldInverse) {
            try {
                var mv = this.camera.matrixWorldInverse.elements, p = this.camera.projectionMatrix.elements;
                var vx = mv[0]*bx + mv[4]*by + mv[8]*bz + mv[12], vy = mv[1]*bx + mv[5]*by + mv[9]*bz + mv[13];
                var vz = mv[2]*bx + mv[6]*by + mv[10]*bz + mv[14], vw = mv[3]*bx + mv[7]*by + mv[11]*bz + mv[15];
                var cx = p[0]*vx + p[4]*vy + p[8]*vz + p[12]*vw, cy = p[1]*vx + p[5]*vy + p[9]*vz + p[13]*vw;
                var cz = p[2]*vx + p[6]*vy + p[10]*vz + p[14]*vw, cw = p[3]*vx + p[7]*vy + p[11]*vz + p[15]*vw;
                if (cw <= 0 || cz/cw > 1) return null;
                return { x: ((cx/cw)*0.5 + 0.5)*this.cvs.width, y: (-(cy/cw)*0.5 + 0.5)*this.cvs.height };
            } catch(e) { this.camera = null; }
        }
        var dx = bx - pp[0], dy = by - pp[1] - 1.6, dz = bz - pp[2];
        var bYaw = Math.atan2(dx, dz) + Math.PI;
        var pYaw = ((rot.y % (2 * Math.PI)) + 2 * Math.PI) % (2 * Math.PI);
        var yd = bYaw - pYaw;
        while (yd > Math.PI) yd -= 2 * Math.PI;
        while (yd < -Math.PI) yd += 2 * Math.PI;
        if (Math.abs(yd) > Math.PI * 0.65) return null;
        var h = Math.sqrt(dx*dx + dz*dz), pd = Math.atan2(dy, h) - rot.x;
        var W = this.cvs.width, H = this.cvs.height, fvY = this.FOV_Y * Math.PI / 180, fvX = 2 * Math.atan(Math.tan(fvY/2) * W / H);
        return { x: W/2 + (yd/(fvX/2))*(W/2), y: H/2 - (pd/(fvY/2))*(H/2) };
    }

    startScan(o) {
        if (this.scanState) return;
        var R = this.clampR(this.SEARCH_RADIUS);
        var pos = Array.from(o.gameWorld.player.position);
        var sx = pos[0] >> 4, sy = pos[1] >> 4, sz = pos[2] >> 4;
        this.scanState = {
            cm: o.gameWorld.chunkManager,
            idSet: this.makeIdSet(),
            found: [], a: -R, l: -R, m: -R, R: R,
            cx: sx, cy: sy, cz: sz,
            pp: pos, total: Math.pow(2 * R + 1, 3), done: 0
        };
    }

    forceScan() {
        this.scanState = null; this.targetBlocks = []; this.allBlocks = [];
        var o = this.getO(); if (o) this.startScan(o);
    }

    tickScan() {
        if (!this.scanState) return;
        var st = this.scanState, R = st.R, steps = 0;
        while (steps < this.STEPS_FRAME) {
            var cx = st.cx + st.a, cy = st.cy + st.l, cz = st.cz + st.m;
            try {
                var arr = st.cm.getChunkArray(cx, cy, cz);
                if (arr) {
                    for (var g = 0; g < arr.length; g++) {
                        var bid = arr[g];
                        if (!st.idSet[bid]) continue;
                        var bx = (cx << 4) + (g & 15), by = (cy << 4) + ((g >> 4) & 15), bz = (cz << 4) + (g >> 8);
                        try { if (st.cm.getBlock(bx, by, bz) === bid) st.found.push({ bx: bx, by: by, bz: bz, id: bid }); } catch(e){}
                    }
                }
            } catch(e){}
            st.done++; st.m++;
            if (st.m > R) { st.m = -R; st.l++; }
            if (st.l > R) { st.l = -R; st.a++; }
            if (st.a > R) {
                this.allBlocks = st.found;
                var pp = st.pp; this.scanState = null;

                this.targetBlocks = this.allBlocks
                    .map(b => ({ b: b, d: Math.hypot(b.bx - pp[0], b.by - pp[1], b.bz - pp[2]) }))
                    .sort((a, z) => a.d - z.d)
                    .slice(0, this.BATCH_SIZE).map(x => x.b);
                return;
            }
            steps++;
        }
        if (this.statusEl) {
            var pct = Math.round(st.done / st.total * 100);
            this.statusEl.textContent = 'Escaneando Giường... ' + pct + '%';
        }
    }

    blockExists(o, b) {
        try { return o.gameWorld.chunkManager.getBlock(b.bx, b.by, b.bz) === b.id; } catch(e) { return false; }
    }

    renderLoop() {
        if (!this.isEnabled) return;

        this.ctx.clearRect(0, 0, this.cvs.width, this.cvs.height);
        this.tickScan();
        var o = this.getO();

        if (o) {
            if (!this.camera) this.findCamera(o);
            if (this.camera) { try { this.camera.updateMatrixWorld(true); } catch(e) { this.camera = null; } }

            this.checkTick++;
            if (this.checkTick >= 45) {
                this.checkTick = 0;
                if (!this.scanState) {
                    var alive = this.targetBlocks.filter(b => this.blockExists(o, b));
                    if (alive.length < this.targetBlocks.length) this.startScan(o);
                }
            }

            if (this.espOn && this.targetBlocks.length) {
                var pp = Array.from(o.gameWorld.player.position);
                var rot = o.gameWorld.player.rotation;
                for (var i = 0; i < this.targetBlocks.length; i++) {
                    var b = this.targetBlocks[i];
                    var sc = this.worldToScreen(pp, rot, b.bx + 0.5, b.by + 0.5, b.bz + 0.5);
                    if (!sc || sc.x < -80 || sc.x > this.cvs.width + 80 || sc.y < -80 || sc.y > this.cvs.height + 80) continue;
                    var d = Math.hypot(b.bx - pp[0], b.by - pp[1], b.bz - pp[2]);
                    var sz = Math.max(8, Math.min(52, 400 / d)), hw = sz / 2;
                    var col = this.colorFor(b.id);

                    this.ctx.save();
                    this.ctx.shadowColor = col; this.ctx.shadowBlur = 18; this.ctx.strokeStyle = col; this.ctx.lineWidth = 2.5;
                    this.ctx.strokeRect(sc.x - hw, sc.y - hw, sz, sz);
                    this.ctx.fillStyle = col.slice(0, 7) + '22'; this.ctx.fillRect(sc.x - hw, sc.y - hw, sz, sz);
                    this.ctx.restore();

                    this.ctx.save();
                    this.ctx.font = 'bold 10px monospace'; this.ctx.textAlign = 'center';
                    this.ctx.strokeStyle = 'rgba(0,0,0,0.9)'; this.ctx.lineWidth = 3;
                    this.ctx.strokeText(this.nameFor(b.id) + ' ' + d.toFixed(0) + 'm', sc.x, sc.y - hw - 3);
                    this.ctx.fillStyle = '#fff'; this.ctx.fillText(this.nameFor(b.id) + ' ' + d.toFixed(0) + 'm', sc.x, sc.y - hw - 3);
                    this.ctx.restore();
                }
            }

            if (!this.scanState) {
                var pp2 = Array.from(o.gameWorld.player.position);
                var camL = this.camera ? 'cam exacta' : 'angular FOV:' + this.FOV_Y;
                if (this.statusEl) this.statusEl.textContent = this.targetBlocks.length + '/' + this.BATCH_SIZE + ' activos | ' + this.allBlocks.length + ' total | ' + camL;
                if (this.listEl) {
                    this.listEl.textContent = this.targetBlocks.length === 0 ? 'none nearby' :
                        this.targetBlocks.map(b => ({ b: b, d: Math.hypot(b.bx - pp2[0], b.by - pp2[1], b.bz - pp2[2]) }))
                        .sort((a, z) => a.d - z.d)
                        .map(x => '[' + this.nameFor(x.b.id) + '] ' + x.b.bx + ',' + x.b.by + ',' + x.b.bz + '  ' + x.d.toFixed(1) + 'm')
                        .join('\n');
                }
            }
        } else {
            if (this.targetBlocks.length > 0) {
                this.targetBlocks = []; this.allBlocks = []; this.camera = null; this.scanState = null;
                if (this.listEl) this.listEl.textContent = '';
                if (this.statusEl) this.statusEl.textContent = 'Esperando partida...';
            }
        }

        if (location.href !== this.lastURL) {
            this.lastURL = location.href; this.targetBlocks = []; this.allBlocks = []; this.camera = null; this.scanState = null;
            if (this.statusEl) this.statusEl.textContent = 'Cargando nueva partida...';
        }

        this.animFrameId = requestAnimationFrame(() => this.renderLoop());
    }

    createUI() {
        if (this.ui) return;

        this.cvs = document.createElement('canvas');
        this.cvs.style.cssText = 'position:fixed;top:0;left:0;width:100vw;height:100vh;pointer-events:none;z-index:2147483646';
        document.body.appendChild(this.cvs);
        this.ctx = this.cvs.getContext('2d');

        this.resizeHandler = () => {
            if (this.cvs) { this.cvs.width = innerWidth; this.cvs.height = innerHeight; }
        };
        this.resizeHandler();
        window.addEventListener('resize', this.resizeHandler);

        this.ui = document.createElement('div');
        this.ui.style.cssText = 'position:fixed;top:80px;left:80px;width:280px;background:#0d0d0d;color:#e0e0e0;font:11px system-ui,sans-serif;border:1.5px solid #ff1e1e;border-radius:6px;box-shadow:0 0 15px rgba(255,30,30,0.3);z-index:2147483647;user-select:none;display:flex;flex-direction:column;';

        var cbHtml = '';
        for (var i = 0; i < this.ALL_IDS.length; i++) {
            var id = this.ALL_IDS[i], col = this.colorFor(id), name = this.nameFor(id);
            cbHtml += '<label style="display:inline-flex;align-items:center;gap:2px;margin:2px;cursor:pointer;font-size:10px">'
                + '<input type="checkbox" class="bfcb" data-id="' + id + '" checked '
                + 'style="accent-color:' + col + '"> '
                + '<span style="color:' + col + '">' + name + '</span></label>';
        }

        this.ui.innerHTML = '<div class="bfh" style="padding:6px 8px;cursor:move;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #ff1e1e;font-weight:700;background:#140505;color:#ff4d4d"><span>Bed Finder</span><button id="bfesp" style="background:#b71c1c;border:1px solid #ff5252;color:#fff;border-radius:3px;padding:2px 7px;cursor:pointer;font-size:10px">ESP ON</button></div>'
            + '<div style="padding:4px 8px;border-bottom:1px solid #260a0a;display:flex;justify-content:space-between;align-items:center;background:#110404;">'
            + '<span style="font-size:10px;color:#888;">Select Beds:</span>'
            + '<div><button id="bfselectall" style="background:#260a0a;border:1px solid #ff3333;color:#ff9999;border-radius:3px;padding:1px 5px;cursor:pointer;font-size:9px;margin-right:3px;">All</button>'
            + '<button id="bfselectnone" style="background:#260a0a;border:1px solid #555;color:#aaa;border-radius:3px;padding:1px 5px;cursor:pointer;font-size:9px;">None</button></div>'
            + '</div>'
            + '<div style="padding:4px 8px;border-bottom:1px solid #260a0a">' + cbHtml + '</div>'
            + '<div style="padding:4px 8px;border-bottom:1px solid #260a0a;display:flex;gap:4px;align-items:center;flex-wrap:wrap;">'
            + '<label style="font-size:10px;color:#ccc">R:<input id="bfr" type="number" min="1" max="' + this.MAX_RADIUS + '" value="' + this.SEARCH_RADIUS + '" style="width:26px;background:#1a1a1a;border:1px solid #ff1e1e;color:#fff;border-radius:3px;padding:2px 2px;text-align:center"></label>'
            + '<label style="font-size:10px;color:#ccc">FOV:<input id="bffov" type="number" value="' + this.FOV_Y + '" style="width:30px;background:#1a1a1a;border:1px solid #ff1e1e;color:#fff;border-radius:3px;padding:2px 2px;text-align:center"></label>'
            + '<label style="font-size:10px;color:#ccc">Max:<input id="bfmax" type="number" min="1" max="20" value="' + this.BATCH_SIZE + '" style="width:26px;background:#1a1a1a;border:1px solid #ff1e1e;color:#fff;border-radius:3px;padding:2px 2px;text-align:center"></label>'
            + '<button id="bfscan" style="background:#81c784;border:none;color:#000;font-weight:bold;border-radius:3px;padding:2px 6px;cursor:pointer;font-size:10px;margin-left:auto;">Scan</button>'
            + '</div>'
            + '<div id="bfst" style="padding:2px 8px;font-size:10px;color:#ff6666;border-bottom:1px solid #260a0a">Esperando partida...</div>'
            + '<div id="bflist" style="max-height:180px;overflow:auto;padding:4px 8px 8px;font-family:monospace;white-space:pre;font-size:11px;color:#ffb3b3"></div>'
            + '<div class="bfb-drag" style="padding:6px;cursor:move;background:#140505;border-top:1px solid #ff1e1e;display:flex;justify-content:center;align-items:center;border-radius:0 0 4px 4px;">'
            + '<div style="width:40px;height:4px;background:#ff4d4d;border-radius:2px;box-shadow:0 0 5px rgba(255,77,77,0.5);"></div>'
            + '</div>';

        document.body.appendChild(this.ui);
        this.listEl = this.ui.querySelector('#bflist');
        this.statusEl = this.ui.querySelector('#bfst');

        const readActive = () => {
            this.ACTIVE_IDS = [];
            var cbs = this.ui.querySelectorAll('.bfcb');
            for (var i = 0; i < cbs.length; i++) if (cbs[i].checked) this.ACTIVE_IDS.push(parseInt(cbs[i].dataset.id));
        };

        this.ui.querySelectorAll('.bfcb').forEach(cb => {
            cb.addEventListener('change', () => { readActive(); this.forceScan(); });
        });

        this.ui.querySelector('#bfselectall').onclick = () => {
            this.ui.querySelectorAll('.bfcb').forEach(cb => cb.checked = true);
            readActive();
            this.forceScan();
        };

        this.ui.querySelector('#bfselectnone').onclick = () => {
            this.ui.querySelectorAll('.bfcb').forEach(cb => cb.checked = false);
            readActive();
            this.forceScan();
        };

        this.ui.querySelector('#bfscan').onclick = () => {
            this.SEARCH_RADIUS = this.clampR(this.ui.querySelector('#bfr').value);
            this.ui.querySelector('#bfr').value = this.SEARCH_RADIUS;
            this.FOV_Y = parseInt(this.ui.querySelector('#bffov').value) || 70;
            this.BATCH_SIZE = Math.max(1, Math.min(20, parseInt(this.ui.querySelector('#bfmax').value) || 10));
            this.ui.querySelector('#bfmax').value = this.BATCH_SIZE;
            readActive(); this.forceScan();
        };

        this.ui.querySelector('#bfr').addEventListener('change', (e) => {
            this.SEARCH_RADIUS = this.clampR(e.target.value);
            e.target.value = this.SEARCH_RADIUS;
        });

        this.ui.querySelector('#bffov').addEventListener('change', (e) => {
            this.FOV_Y = parseInt(e.target.value) || 70;
        });

        this.ui.querySelector('#bfmax').addEventListener('change', (e) => {
            this.BATCH_SIZE = Math.max(1, Math.min(20, parseInt(e.target.value) || 10));
            e.target.value = this.BATCH_SIZE;
            this.forceScan();
        });

        this.ui.querySelector('#bfesp').onclick = (e) => {
            this.espOn = !this.espOn;
            e.target.textContent = this.espOn ? 'ESP ON' : 'ESP OFF';
            e.target.style.background = this.espOn ? '#b71c1c' : '#333';
            e.target.style.borderColor = this.espOn ? '#ff5252' : '#555';
        };

        var drag = false, ox = 0, oy = 0;

        const startDrag = (clientX, clientY) => {
            drag = true;
            ox = clientX - this.ui.offsetLeft;
            oy = clientY - this.ui.offsetTop;
        };

        const doDrag = (clientX, clientY) => {
            if (drag) {
                this.ui.style.left = (clientX - ox) + 'px';
                this.ui.style.top = (clientY - oy) + 'px';
            }
        };

        const stopDrag = () => { drag = false; };

        var dragElements = [this.ui.querySelector('.bfh'), this.ui.querySelector('.bfb-drag')];
        dragElements.forEach(el => {
            el.addEventListener('mousedown', (e) => startDrag(e.clientX, e.clientY));
            el.addEventListener('touchstart', (e) => {
                if (e.touches.length === 1) startDrag(e.touches[0].clientX, e.touches[0].clientY);
            }, { passive: true });
        });

        document.addEventListener('mousemove', (e) => doDrag(e.clientX, e.clientY));
        document.addEventListener('mouseup', stopDrag);

        document.addEventListener('touchmove', (e) => {
            if (drag && e.touches.length === 1) doDrag(e.clientX, e.clientY);
        }, { passive: true });
        document.addEventListener('touchend', stopDrag);
    }

    destroyUI() {
        if (this.cvs) {
            this.cvs.remove();
            this.cvs = null;
            this.ctx = null;
        }
        if (this.ui) {
            this.ui.remove();
            this.ui = null;
        }
        if (this.resizeHandler) {
            window.removeEventListener('resize', this.resizeHandler);
            this.resizeHandler = null;
        }
    }

    onEnable() {
        this.createUI();
        var o = this.getO();
        if (o) {
            this.findCamera(o);
            this.startScan(o);
        }
        this.renderLoop();
    }

    onDisable() {
        if (this.animFrameId) {
            cancelAnimationFrame(this.animFrameId);
            this.animFrameId = null;
        }
        this.destroyUI();
        this.targetBlocks = [];
        this.allBlocks = [];
        this.camera = null;
        this.scanState = null;
    }

    onSettingsChange() {}
};
    var ModAirPlace = class extends a { constructor() { super("AirPlace", "Misc"); } get blockPlaceSystem() { return o.gameWorld.systemsManager.activeSystems.find(e => e?._handlePlaceInAir); } onRender() { if (this.blockPlaceSystem) this.blockPlaceSystem.canPlaceBlocksInAir = true; } onDisable() { if (this.blockPlaceSystem && (!h.modules.Scaffold || !h.modules.Scaffold.isEnabled)) { this.blockPlaceSystem.canPlaceBlocksInAir = o.gameWorld.player.gameMode == 2; } } };
    // 🌐 WORLD MODULES
    var ModAntiBan = class extends a {
        constructor() {
            super("AntiBanpatch:(", "World", {
                "Auto Disable Combat": true,
                "Tab Blur Protection": true,
                "Console Cloak": true,
                "Smooth Rotations": true,
                "Randomize Delays": true,
                "Jitter MS (±)": 25,
                "Staff Detection": true,
                "Auto Hide GUI": true
            });
            this._staffKeywords = ["admin","mod","staff","helper","support","gm","owner","dev","operator","op","trial","spectator","watch"];
            this._suspectPlayers = [];
            this._lastScan = 0;
            this._ogConsole = {};
            this._blurred = false;
            this._scanInterval = null;
            this._consoleCleanInterval = null;
            this._moduleTimers = {};
            this._onBlur = () => { this._blurred = true; if(this.options["Tab Blur Protection"] && this.isEnabled) this.handleBlur(); };
            this._onFocus = () => { this._blurred = false; if(this.options["Tab Blur Protection"] && this.isEnabled) this.handleFocus(); };
        }
        onEnable() {
            if (this.options["Staff Detection"]) {
                this._scanInterval = setInterval(() => this.scanForStaff(), 3000);
                this.scanForStaff();
            }
            if (this.options["Console Cloak"]) {
                this._ogConsole = { log: console.log, warn: console.warn, error: console.error, info: console.info };
                const self = this;
                const filter = (args) => { const str = Array.from(args).join(' ').toLowerCase(); return str.includes('neonviper') || str.includes('tvclient') || str.includes('hack') || str.includes('cheat') || str.includes('module') || str.includes('killaura') || str.includes('aimbot'); };
                console.log = function() { if (!filter(arguments)) self._ogConsole.log.apply(console, arguments); };
                console.warn = function() { if (!filter(arguments)) self._ogConsole.warn.apply(console, arguments); };
                console.error = function() { if (!filter(arguments)) self._ogConsole.error.apply(console, arguments); };
                console.info = function() { if (!filter(arguments)) self._ogConsole.info.apply(console, arguments); };
                this._consoleCleanInterval = setInterval(() => { try { console.clear(); } catch(e) {} }, 30000);
            }
            if (this.options["Tab Blur Protection"]) { window.addEventListener("blur", this._onBlur); window.addEventListener("focus", this._onFocus); }
            if (this.options["Randomize Delays"]) {
                const killaura = h.modules["Killaura"];
                if (killaura && killaura.options && killaura.options["Delay"]) {
                    this._moduleTimers.killaura = killaura.options["Delay"];
                    const jitter = parseInt(this.options["Jitter MS (±)"]) || 25;
                    Object.defineProperty(killaura.options, "Delay", {
                        get: () => { const base = this._moduleTimers.killaura; return base + Math.floor(Math.random() * jitter * 2 - jitter); },
                        set: (val) => { this._moduleTimers.killaura = val; },
                        configurable: true
                    });
                }
            }
            if (this.options["Smooth Rotations"]) {
                const aimbot = h.modules["Aimbot"];
                if (aimbot && aimbot.aimAtEnemy) {
                    const smoothFactor = 0.35 + Math.random() * 0.3;
                    aimbot.aimAtEnemy = function() {
                        const e = o.gameWorld.player, t = o.gameWorld.server.players;
                        if (!e || !t) return;
                        const i = aimbot.getClosestEnemy(e, t);
                        if (i) {
                            const s = i.model.position, n = e.position;
                            const l = { x: s.x - n.x, z: s.z - n.z };
                            const d = Math.atan2(l.x, l.z);
                            const u = parseFloat(aimbot.options["Y Offset"] || "-0.7");
                            const y = s.y + u - n.y;
                            const f = Math.hypot(l.x, l.z);
                            let g = Math.atan2(y, f);
                            g = Math.max(Math.min(g, Math.PI / 2), -Math.PI / 2);
                            let b = (d + Math.PI) % (2 * Math.PI);
                            if (window._lastAimYaw !== undefined) { let yawDiff = b - window._lastAimYaw; if (yawDiff > Math.PI) yawDiff -= 2 * Math.PI; if (yawDiff < -Math.PI) yawDiff += 2 * Math.PI; b = window._lastAimYaw + yawDiff * smoothFactor; }
                            if (window._lastAimPitch !== undefined) { g = window._lastAimPitch + (g - window._lastAimPitch) * smoothFactor; }
                            window._lastAimYaw = b; window._lastAimPitch = g;
                            e.rotation.y = b; e.rotation.x = g;
                        }
                    };
                }
            }
            showNotification("🛡️ AntiBan active", true);
        }
        scanForStaff() {
            this._lastScan = Date.now();
            if (!o?.gameWorld?.server?.players) return;
            const players = o.gameWorld.server.players;
            players.forEach((p, id) => {
                if (!p || !p.name) return;
                const name = p.name.toLowerCase();
                const isStaff = this._staffKeywords.some(kw => name.includes(kw) || name.replace(/[^a-z0-9]/g, '').includes(kw));
                if (isStaff && !this._suspectPlayers.includes(id)) {
                    this._suspectPlayers.push(id);
                    showNotification(`⚠️ Staff detected: ${p.name}`, false, true);
                    if (this.options["Auto Disable Combat"]) this.disableCombatModules();
                    if (this.options["Auto Hide GUI"]) this.hideGUI();
                }
            });
        }
        handleBlur() { if (this._blurred) { this.disableCombatModules(); showNotification("⚠️ Tab blurred - modules disabled", false, true); } }
        handleFocus() { showNotification("✅ Tab focused - re-enable manually", true); }
        disableCombatModules() { ["Killaura","Aimbot","Rangeclick beta","GunModifier","Fly","Speed","NoClip","Timer"].forEach(name => { const mod = h.modules[name]; if(mod && mod.isEnabled) try{mod.disable()}catch(e){} }); }
        hideGUI() { const clickGUI = h.modules["ClickGUI"]; if(clickGUI && clickGUI.isEnabled) try{clickGUI.onDisable(false)}catch(e){} }
        onDisable() {
            if(this._ogConsole.log){console.log=this._ogConsole.log;console.warn=this._ogConsole.warn;console.error=this._ogConsole.error;console.info=this._ogConsole.info;this._ogConsole={}}
            if(this._scanInterval)clearInterval(this._scanInterval);
            if(this._consoleCleanInterval)clearInterval(this._consoleCleanInterval);
            window.removeEventListener("blur",this._onBlur);window.removeEventListener("focus",this._onFocus);
            if(this._moduleTimers.killaura){const k=h.modules["Killaura"];if(k&&k.options){delete k.options.Delay;k.options.Delay=this._moduleTimers.killaura}}
            this._suspectPlayers=[];this._blurred=false;window._lastAimYaw=undefined;window._lastAimPitch=undefined;
        }
    };
    var ModFastBreak = class extends a {
    constructor() {
        super("Fast Break", "World");
        this.desc = "Breaks blocks faster: holding LMB keeps breaking (chain), 100% speed = instant break (Instabreak).";

        this.set = { speed: 80 };
        this.settings = [
            { type: 'slider', id: 'speed', label: 'Speed', min: 0, max: 100, step: 1 }
        ];

        // Constants
        this.TICK_MS = 50;
        this.SCAN_MS = 1000;
        this.SWING_MIN_MS = 200;
        this.GHOST_GUARD_MS = 12;
        this.SWING_EVENT = 409;

        // Internal State
        this.timer = 0;
        this.system = null;
        this.sysOrig = null;
        this.patchedIV = false;
        this.patchedMS = false;
        this.logged = false;
        this.emitHost = null;
        this.emitOrig = null;
        this.emitBound = null;
        this.lastSwingAt = 0;
    }

    log(msg) {
        console.log('[Fast Break] ' + msg);
    }

    getCtx() {
        try {
            const appEl = document.getElementById('app');
            const app = appEl && appEl.__vue_app__;
            const pinia = app && app.config && app.config.globalProperties && app.config.globalProperties.$pinia;
            if (!pinia || !pinia._s) return null;
            const gs = pinia._s.get('gameState');
            const gw = gs && gs.gameWorld;
            if (!gw || !gw.systemsManager || !gw.player) return null;
            return { gs: gs, gw: gw };
        } catch (err) {
            return null;
        }
    }

    getSystem(gw) {
        try {
            const sm = gw.systemsManager;
            if (!sm || !sm.activeSystems) return null;
            const arr = sm.activeSystems;
            for (let i = 0; i < arr.length; i++) {
                const s = arr[i];
                if (s && s.gameWorld === gw &&
                    s.blockDestruction && typeof s.blockDestruction.key === 'string' &&
                    typeof s.blockDestruction.state === 'number' &&
                    typeof s._handleProgressiveBlockBreaking === 'function' &&
                    typeof s.placeBlockOnIntersect === 'function' &&
                    typeof s.blockBreakingIntervalMs === 'number') {
                    return s;
                }
            }
        } catch (err) {}
        return null;
    }

    getFactor() {
        let sp = Number(this.set.speed);
        if (!isFinite(sp)) sp = 80;
        if (sp <= 0) return 0;
        if (sp <= 1) return 1;
        if (sp < 10) return 1 + (sp - 1) / 9 * 0.5;
        return Math.min(20, 1.3055555555555556 + sp * 0.0008333333333333333 + sp * sp * 0.0018611111111111111);
    }

    getToolStrength(sys) {
        try {
            const gw = sys.gameWorld;
            const pid = gw.player && gw.player.currentInventoryItemId;
            if (pid === undefined || pid === null) return null;
            const tools = gw.structuredItems && gw.structuredItems.tools;
            const u = tools && tools[pid];
            const u2 = u || (gw.items && gw.items[pid]);
            if (!u2 || typeof u2.strength !== 'number' || !isFinite(u2.strength)) return null;
            const s = u2.strength;
            if (!(s > 1)) return null;
            let mat;
            try {
                const bxyz = gw.player && gw.player.destroyingBlockXYZ;
                if (bxyz && gw.chunkManager && typeof gw.chunkManager.getBlock === 'function') {
                    const bid = gw.chunkManager.getBlock(bxyz[0], bxyz[1], bxyz[2]);
                    const blk = gw.chunkManager.blocks && gw.chunkManager.blocks[bid];
                    mat = blk && blk.destruction && blk.destruction.material;
                }
            } catch (err2) {}
            if (u && Array.isArray(u.materials) && u.materials.indexOf(mat) >= 0) return null;
            return s;
        } catch (err3) {
            return null;
        }
    }

    getDelayMs() {
        let sp = Number(this.set.speed);
        if (!isFinite(sp)) sp = 80;
        return this.TICK_MS + (sp >= 100 ? this.GHOST_GUARD_MS : 0);
    }

    hookEmitter(gw) {
        if (!gw || !gw.eventEmitter) return;
        const em = gw.eventEmitter;
        if (em.emit === this.emitProxy) return;

        this.emitOrig = em.emit;
        this.emitBound = em.emit.bind(em);
        this.emitHost = em;

        const self = this;
        this.emitProxy = function(type) {
            if (type === self.SWING_EVENT) {
                const now = Date.now();
                if (now - self.lastSwingAt < self.SWING_MIN_MS) return undefined;
                self.lastSwingAt = now;
            }
            return self.emitBound.apply(null, arguments);
        };

        em.emit = this.emitProxy;
    }

    unhookEmitter() {
        if (this.emitHost && this.emitHost.emit === this.emitProxy) {
            this.emitHost.emit = this.emitOrig;
        }
        this.emitHost = null;
        this.emitOrig = null;
        this.emitBound = null;
        this.emitProxy = null;
    }

    unpatch() {
        this.unhookEmitter();
        if (!this.system) return;
        if (this.patchedIV) {
            try { delete this.system.blockBreakingIntervalMs; } catch (err) {}
        }
        if (this.patchedMS) {
            try { delete this.system.miningSpeedMultiplier; } catch (err) {}
        }
        this.system = null;
        this.sysOrig = null;
        this.patchedIV = false;
        this.patchedMS = false;
    }

    patch(sys) {
        if (this.system === sys) return;
        this.unpatch();
        let ivNative = 210;
        let msDesc = null;
        let msNative = 1;
        try {
            const proto = Object.getPrototypeOf(sys);
            const ivDesc = Object.getOwnPropertyDescriptor(proto, 'blockBreakingIntervalMs');
            if (ivDesc && typeof ivDesc.get === 'function') ivNative = ivDesc.get.call(sys);
            msDesc = Object.getOwnPropertyDescriptor(proto, 'miningSpeedMultiplier');
            if (msDesc && typeof msDesc.get === 'function') msNative = msDesc.get.call(sys);
        } catch (err) {}

        this.sysOrig = { ivNative: ivNative, msNative: msNative, msDesc: msDesc };
        const self = this;

        try {
            Object.defineProperty(sys, 'blockBreakingIntervalMs', {
                configurable: true,
                get: function () {
                    try {
                        return self.getDelayMs();
                    } catch (err) {
                        return self.sysOrig ? self.sysOrig.ivNative : 210;
                    }
                }
            });
            this.patchedIV = true;
        } catch (err) {}

        try {
            Object.defineProperty(sys, 'miningSpeedMultiplier', {
                configurable: true,
                get: function () {
                    let native = 1;
                    try {
                        if (self.sysOrig && self.sysOrig.msDesc && typeof self.sysOrig.msDesc.get === 'function') {
                            native = self.sysOrig.msDesc.get.call(this);
                        } else if (self.sysOrig) {
                            native = self.sysOrig.msNative;
                        }
                    } catch (err) {}
                    let d = native * self.getFactor();
                    if (!(d > 0)) return 0;

                    const ts = self.getToolStrength(this);
                    return ts !== null && ts > 1 ? d * ts : d;
                }
            });
            this.patchedMS = true;
        } catch (err) {}

        this.system = sys;
    }

    tick() {
        if (!this.isEnabled) {
            this.onDisable();
            return;
        }
        const ctx = this.getCtx();
        if (!ctx) {
            this.timer = setTimeout(() => this.tick(), this.SCAN_MS);
            return;
        }
        const gw = ctx.gw;
        let alive = false;
        try {
            const sm = gw.systemsManager;
            if (sm && sm.activeSystems) {
                for (let i = 0; i < sm.activeSystems.length; i++) {
                    if (sm.activeSystems[i] === this.system) {
                        alive = true;
                        break;
                    }
                }
            }
        } catch (err) {}
        if (this.system && (this.system.gameWorld !== gw || !alive)) {
            this.unpatch();
        }
        if (!this.system) {
            const sys = this.getSystem(gw);
            if (sys) {
                this.patch(sys);
                this.hookEmitter(gw);
                if (!this.logged) {
                    this.logged = true;
                    this.log('hooked block system');
                }
            }
        }
        this.timer = setTimeout(() => this.tick(), this.SCAN_MS);
    }

    onEnable() {
        this.onDisable();
        this.log('enabled');
        this.tick();
    }

    onDisable() {
        if (this.timer) {
            clearTimeout(this.timer);
            this.timer = 0;
        }
        this.unpatch();
        this.logged = false;
        this.log('disabled');
    }

    onSettingsChange() {}
};
    // SNIPER MODULES
    var ModZoom = class extends a {
    constructor() {
        super("Zoom", "Sniper", {
            "Zoom FOV": 25,
            "Min FOV": 2,
            "Sens Multiplier": 0.30
        });

        this.isZooming = false;
        this.currentFOV = 30;
        this.minFOV = 2;
        this.maxFOV = 70;
        this.originalFOV = 70;
        this.zoomMultiplier = 0.20;

        this.noticeEl = null;
        this.sensTimeout = null;

        this.mouseDownHandler = null;
        this.mouseUpHandler = null;
        this.contextMenuHandler = null;
        this.keyDownHandler = null;
        this.wheelHandler = null;

        this.initMouseHook();
    }

    initMouseHook() {
        if (window._zoomMouseHooked) return;
        window._zoomMouseHooked = true;

        const proto = MouseEvent.prototype;
        const mx = Object.getOwnPropertyDescriptor(proto, 'movementX');
        const my = Object.getOwnPropertyDescriptor(proto, 'movementY');

        const self = this;

        Object.defineProperty(proto, 'movementX', {
            get() {
                const v = mx.get.call(this);
                return (self.isEnabled && self.isZooming) ? v * self.zoomMultiplier : v;
            }
        });

        Object.defineProperty(proto, 'movementY', {
            get() {
                const v = my.get.call(this);
                return (self.isEnabled && self.isZooming) ? v * self.zoomMultiplier : v;
            }
        });
    }

    getStores() {
        try {
            let r = app._vnode.component.appContext.provides;
            let e = r[Object.getOwnPropertySymbols(r).find(t => r[t]._s)];
            return e._s;
        } catch(err) { return null; }
    }

    getGameWorld() {
        let stores = this.getStores();
        return stores ? stores.get("gameState").gameWorld : null;
    }

    isTypingInChat() {
        return document.activeElement &&
               (document.activeElement.tagName === "INPUT" ||
                document.activeElement.tagName === "TEXTAREA");
    }

    updateFOV(fovValue) {
        let gameWorld = this.getGameWorld();
        let camera = gameWorld?.threeScene?.camera || null;
        if (camera && camera.updateProjectionMatrix) {
            camera.fov = fovValue;
            camera.updateProjectionMatrix();
            if (gameWorld.player && gameWorld.player.settings) {
                gameWorld.player.settings.fov = fovValue;
            }
        }
    }

    showNotice() {
        if (!this.noticeEl) {
            this.noticeEl = document.createElement('div');
            this.noticeEl.style.cssText = `
                position: fixed;
                top: 20%;
                left: 50%;
                transform: translate(-50%, -50%);
                background: rgba(0, 0, 0, 0.8);
                color: #00f2ff;
                font-family: 'Product Sans', sans-serif;
                padding: 8px 16px;
                border-radius: 6px;
                font-size: 15px;
                font-weight: bold;
                border: 2px solid #fffb00;
                box-shadow: 0 0 15px rgba(0, 242, 255, 0.5);
                z-index: 999999;
                pointer-events: none;
                text-shadow: 0 0 3px #000;
            `;
            document.body.appendChild(this.noticeEl);
        }
        this.noticeEl.innerHTML = `🎯 Zoom Sens: ${(this.zoomMultiplier * 100).toFixed(0)}%`;
        this.noticeEl.style.display = 'block';
        clearTimeout(this.sensTimeout);
        this.sensTimeout = setTimeout(() => {
            if (this.noticeEl) this.noticeEl.style.display = 'none';
        }, 1200);
    }

    bindEvents() {
        this.mouseDownHandler = (e) => {
            if (!this.isEnabled || this.isTypingInChat()) return;

            if (e.button === 2 && !this.isZooming) {
                let gameWorld = this.getGameWorld();
                if (gameWorld?.player?.settings?.fov) {
                    this.originalFOV = gameWorld.player.settings.fov;
                }
                this.maxFOV = this.originalFOV;
                this.isZooming = true;
                this.currentFOV = Math.min(parseFloat(this.options["Zoom FOV"]) || 25, this.originalFOV - 30);
                this.updateFOV(this.currentFOV);
            }
        };

        this.mouseUpHandler = (e) => {
            if (e.button === 2 && this.isZooming) {
                this.isZooming = false;
                this.updateFOV(this.originalFOV);
            }
        };

        this.contextMenuHandler = (e) => {
            if (this.isEnabled) {
                e.preventDefault();
            }
        };

        this.keyDownHandler = (e) => {
            if (!this.isEnabled || this.isTypingInChat()) return;

            if (e.code === "Equal") {
                this.zoomMultiplier += 0.05;
                if (this.zoomMultiplier > 5.0) this.zoomMultiplier = 5.0;
                this.showNotice();
            }

            if (e.code === "Minus") {
                this.zoomMultiplier -= 0.05;
                if (this.zoomMultiplier < 0.01) this.zoomMultiplier = 0.01;
                this.showNotice();
            }
        };

        this.wheelHandler = (e) => {
            if (this.isEnabled && this.isZooming) {
                if (this.isTypingInChat()) {
                    this.isZooming = false;
                    this.updateFOV(this.originalFOV);
                    return;
                }

                e.preventDefault();
                e.stopImmediatePropagation();

                if (e.deltaY < 0) {
                    this.currentFOV -= 4;
                } else if (e.deltaY > 0) {
                    this.currentFOV += 4;
                }

                let minLimit = parseFloat(this.options["Min FOV"]) || this.minFOV;
                if (this.currentFOV < minLimit) this.currentFOV = minLimit;
                if (this.currentFOV > this.maxFOV) this.currentFOV = this.maxFOV;

                this.updateFOV(this.currentFOV);
            }
        };

        document.addEventListener("mousedown", this.mouseDownHandler);
        document.addEventListener("mouseup", this.mouseUpHandler);
        document.addEventListener("contextmenu", this.contextMenuHandler);
        document.addEventListener("keydown", this.keyDownHandler);
        document.addEventListener("wheel", this.wheelHandler, { capture: true, passive: false });
    }

    onEnable() {
        this.zoomMultiplier = parseFloat(this.options["Sens Multiplier"]) || 0.30;
        this.bindEvents();
    }

    onDisable() {
        if (this.mouseDownHandler) document.removeEventListener("mousedown", this.mouseDownHandler);
        if (this.mouseUpHandler) document.removeEventListener("mouseup", this.mouseUpHandler);
        if (this.contextMenuHandler) document.removeEventListener("contextmenu", this.contextMenuHandler);
        if (this.keyDownHandler) document.removeEventListener("keydown", this.keyDownHandler);
        if (this.wheelHandler) document.removeEventListener("wheel", this.wheelHandler, { capture: true });

        if (this.isZooming) {
            this.isZooming = false;
            this.updateFOV(this.originalFOV);
        }

        if (this.noticeEl) {
            this.noticeEl.style.display = 'none';
        }
    }
};
// ------------------------------ Module Manager ------------------------------
    var h = {
    modules: {},
    STORAGE_KEY: "Client_Module_Settings",
// You can custom keybind loader
    defaultKeybinds: {
        "Fly": "",
        "Timer": "",
        "Instabreak": "",
        "Aimbot": "",
        "Spider": "",
        "Freecam": "",
        "Fullbright": "",
        "Clickfast": ""
    },

    addModules(...classes) {
        for (let cls of classes) {
            let mod = new cls();
            this.modules[mod.name] = mod;
        }
    },
    saveSettings() {
        let saveData = {};
        for (let name in this.modules) {
            let mod = this.modules[name];
            saveData[name] = {
                enabled: !!mod.isEnabled,
                keybind: mod.keybind || null
            };
        }
        localStorage.setItem(this.STORAGE_KEY, JSON.stringify(saveData));
    },
    loadSettings() {
        let saved = localStorage.getItem(this.STORAGE_KEY);
        if (!saved) return;

        try {
            let saveData = JSON.parse(saved);
            for (let name in saveData) {
                let mod = this.modules[name];
                if (!mod) continue;
                if (saveData[name].keybind !== undefined) {
                    mod.keybind = saveData[name].keybind;
                }
                if (saveData[name].enabled) {
                    this.enableModuleSafely(name);
                }
            }
        } catch (e) {
            console.warn("[Client] Lỗi khi đọc file lưu:", e);
        }
    },

    handleKeyPress(code) {
        for (let name in this.modules) {
            let mod = this.modules[name];
            if (mod.waitingForBind) {
                mod.keybind = code === "Escape" ? null : code;
                mod.waitingForBind = false;
                this.saveSettings();
            } else if (mod.keybind === code) {
                this.toggleModuleSafely(name);
            }
        }
    },

    enableModuleSafely(name) {
        let mod = this.modules[name];
        if (!mod || mod.isEnabled) return;
        try {
            mod.isEnabled = true;
            if (typeof mod.enable === "function") mod.enable();
            else if (typeof mod.onEnable === "function") mod.onEnable();
        } catch (err) {
            console.warn(`[Client] Không thể bật ${name}:`, err);
        }
    },

    toggleModuleSafely(name) {
        let mod = this.modules[name];
        if (!mod) return;
        try {
            if (typeof mod.toggle === "function") {
                mod.toggle();
            } else if (mod.isEnabled) {
                mod.isEnabled = false;
                if (typeof mod.disable === "function") mod.disable();
                else if (typeof mod.onDisable === "function") mod.onDisable();
            } else {
                this.enableModuleSafely(name);
            }
            this.saveSettings();
        } catch (err) {
            console.warn(`[Client] Lỗi toggle module ${name}:`, err);
        }
    },

    applyDefaultKeybinds() {
        for (let name in this.defaultKeybinds) {
            if (this.modules[name]) {
                this.modules[name].keybind = this.defaultKeybinds[name];
            }
        }
    },

    init() {
        this.addModules(
            // Visual
            ModArraylist, ModWatermark, ModClickGUI, ModNoFog, ModChams, ModTracers,
            ModFreecam, ModXray, ModInterface, ModBlockOutline, ModFullbright, ModBetterCam,
            // Movement
            ModAirjumppatch, Modantivoid, ModClutch, ModVelocity, ModFly, ModSpeed, ModNoClip, ModTimer, ModDash, ModHighJump, ModGroundSpeed, ModClimb, ModScaffold, ModAutoSprint, ModStep, Modicewalk,
            // Combat
            ModLegitKillAura, ModGunModifier, ModAimbot, Modautoclicker,ModRangeHit,ModAimbotold,
            // Misc
            ModInstabreak, ModNuker, ModAdBypass, ModFreeHeadcoins, ModFill, ModNoHunger, ModNoDrown, ModInstantRespawn, ModShopAnywhere, ModSelfHarm, ModBlockFinder, ModBedESP, ModAirPlace, ModInventoryCleaner,
            // Fun
            ModWeatherScreen, ModKeystrokes, ModHitParticles, ModFPSBoost, ModClearscreen, ModFPScounter, ModKeyboardDisplay,
            // World
            ModFastBreak, ModAntiBan,
            // Sniper
            ModZoom

        );
        this.applyDefaultKeybinds();
        this.loadSettings();

        c.on("render", () => {
            for (let name in this.modules) {
                let mod = this.modules[name];
                if (mod.isEnabled && mod.onRender) mod.onRender();
            }
        });

        c.on("keydown", this.handleKeyPress.bind(this));

        c.on("setting.update", () => {
            for (let name in this.modules) {
                let mod = this.modules[name];
                if (mod.isEnabled && mod.onSettingUpdate) mod.onSettingUpdate();
            }
            this.saveSettings();
        });

        const immediateModules = ["Arraylist", "Interface"];
        immediateModules.forEach(name => this.enableModuleSafely(name));

        setTimeout(() => {
            const delayedModules = [];    //<--You can custom feature loader
            delayedModules.forEach(name => this.enableModuleSafely(name));
        }, 2500);
    }
};

    // ------------------------------ Main Class ------------------------------
    var se = class {
        constructor() { this.version = "1.0.55"; this.init(); }
        init() {
            setInterval(() => { c.emit("render"); }, 1000 / 60);
            window.addEventListener("keydown", e => { c.emit("keydown", e.code); }, {capture:true});
            h.init(); p.init(); this.packets = p; this.moduleManager = h; this.hooks = o;
        }
        disable() { }
    };

    function le() { window.TVClient = new se(); }
    if (document.readyState === "complete" || document.readyState === "interactive") le();
    else document.addEventListener("DOMContentLoaded", () => { setTimeout(le, 1000); });
})();
//Chúc mọi người chơi vui vẻ với bản hack ☠roma video_YT📺