Greasy Fork镜像 还支持 简体中文。

Minebuns

we do a little trolling

目前為 2025-08-24 提交的版本,檢視 最新版本

// ==UserScript==
// @name Minebuns
// @description we do a little trolling
// @version 1.0.0
// @author crackbob
// @homepage https://github.com/crackbob/Minebuns
// @supportURL https://github.com/crackbob/Minebuns
// @match *://minefun.io/*
// @grant none
// @namespace http://tampermonkey.net/
// ==/UserScript==

(() => {
    "use strict";
    var __webpack_modules__ = {
        679: (e, t, n) => {
            n.d(t, {
                A: () => r
            });
            var o = n(601),
                s = n.n(o),
                i = n(314),
                a = n.n(i)()(s());
            a.push([e.id, "@font-face {\n    font-family: \"Product Sans\";\n    src: url(https://fonts.gstatic.com/s/productsans/v19/pxiDypQkot1TnFhsFMOfGShVF9eO.woff2);\n}\n\n:root {\n    --Minebuns-accent-color: linear-gradient(90deg, rgb(64, 190, 255) 0%, rgb(129, 225, 255) 100%);\n    --button-color: rgb(40, 40, 40, 0.9);\n    --hover-color: rgb(50, 50, 50, 0.9);\n    --panel-bg: rgb(34, 34, 34, 0.85);\n    --panel-bg: rgb(10, 10, 10, 0.85);\n    --text-color: #ffffff;\n    --header-text-size: 25px;\n    --button-text-size: 20px;\n    --setting-text-size: 15px;\n}\n\n.gui-panel {\n    position: fixed;\n    z-index: 1000;\n    width: 200px;\n    border-radius: 8px;\n    background-color: var(--panel-bg);\n    box-shadow: 0 4px 8px rgba(0,0,0,0.3);\n    font-family: 'Product Sans', sans-serif;\n    color: var(--text-color);\n    overflow: hidden;\n}\n\n.gui-header {\n    background-color: var(--header-bg);\n    height: 40px;\n    font-weight: 900;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-size: var(--header-text-size);\n    cursor: grab;\n}\n\n.gui-header:active {\n    cursor: grabbing;\n}\n\n.gui-button {\n    height: 35px;\n    display: flex;\n    align-items: center;\n    padding-left: 10px;\n    box-sizing: border-box;\n    cursor: pointer;\n    border-radius: 0;\n    transition: all 0.3s;\n    font-size: var(--button-text-size);\n    font-weight: 200;\n    outline: none;\n    background: var(--button-color);\n    color: var(--text-color);\n}\n\n.gui-button.enabled {\n    background: var(--Minebuns-accent-color);\n}\n\n.gui-button:not(.enabled):hover {\n    background: var(--hover-color);\n}\n\n.gui-background {\n    position: absolute;\n    left: 0;\n    top: 0;\n    z-index: 999;\n    height: 100%;\n    width: 100%;\n    backdrop-filter: blur(15px);\n    background: rgba(0, 0, 0, 0.3);\n}\n\n.gui-setting-container {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    background-color: var(--panel-bg);\n    padding: 2px;\n}\n\n.gui-setting-label {\n    font-size: var(--setting-text-size);\n    margin-left: 10px;\n    font-weight: 300;\n    color: var(--text-color);\n}\n\n.gui-checkbox {\n    width: 15px;\n    height: 15px;\n    border-radius: 4px;\n    background: var(--button-color);\n    position: relative;\n    margin: 8px;\n    cursor: pointer;\n    transition: background 0.3s;\n}\n\n.gui-checkbox.enabled {\n    background: var(--Minebuns-accent-color);\n}\n\n.gui-color-picker {\n    width: 15px;\n    height: 15px;\n    border-radius: 4px;\n    position: relative;\n    margin: 8px;\n    cursor: pointer;\n}\n\n.gui-color-input {\n    width: 20px;\n    height: 20px;\n    opacity: 0;\n    cursor: pointer;\n}\n\n.gui-button-container {\n    background-color: var(--panel-bg);\n    display: flex;\n    flex-direction: column;\n}\n\n.gui-text-input {\n    background: var(--button-color);\n    border: none;\n    color: var(--text-color);\n    font-family: 'Product Sans', sans-serif;\n    font-size: var(--setting-text-size);\n    width: 40px;\n    border-radius: 4px;\n    outline: none;\n    transition: background 0.3s;\n    text-align: center;\n    margin: 5px;\n    margin-right: 10px;\n}\n\n.gui-text-input:hover {\n    background: var(--hover-color);\n}\n\n.gui-text-input:focus {\n    background: var(--hover-color);\n}\n\n.with-animations .gui-panel {\n    animation: fadeInScale 0.3s ease-out;\n}\n\n@keyframes fadeInScale {\n    from {\n        opacity: 0;\n        transform: scale(0.9);\n    }\n    to {\n        opacity: 1;\n        transform: scale(1);\n    }\n}\n\n.with-animations .gui-background {\n    animation: fadeIn 0.3s ease-out;\n}\n\n@keyframes fadeIn {\n    from { opacity: 0; }\n    to { opacity: 1; }\n}\n\n.with-animations .gui-button {\n    transition: transform 0.2s ease, background 0.2s ease;\n}\n\n.with-animations .gui-button:hover {\n    transform: scale(1.01);\n}\n\n.with-animations .gui-setting-container {\n    will-change: transform, opacity;\n    transform-origin: top;\n    animation: slideDown 0.25s ease-out forwards;\n}\n\n@keyframes slideDown {\n    from {\n        opacity: 0;\n        transform: scaleY(0.8);\n    }\n    to {\n        opacity: 1;\n        transform: scaleY(1);\n    }\n}\n", ""]);
            const r = a
            },
        314: e => {
            e.exports = function(e) {
                var t = [];
                return t.toString = function() {
                    return this.map((function(t) {
                        var n = "",
                            o = void 0 !== t[5];
                        return t[4] && (n += "@supports (".concat(t[4], ") {")), t[2] && (n += "@media ".concat(t[2], " {")), o && (n += "@layer".concat(t[5].length > 0 ? " ".concat(t[5]) : "", " {")), n += e(t), o && (n += "}"), t[2] && (n += "}"), t[4] && (n += "}"), n
                    })).join("")
                }, t.i = function(e, n, o, s, i) {
                    "string" == typeof e && (e = [
                        [null, e, void 0]
                    ]);
                    var a = {};
                    if (o)
                        for (var r = 0; r < this.length; r++) {
                            var l = this[r][0];
                            null != l && (a[l] = !0)
                        }
                    for (var d = 0; d < e.length; d++) {
                        var c = [].concat(e[d]);
                        o && a[c[0]] || (void 0 !== i && (void 0 === c[5] || (c[1] = "@layer".concat(c[5].length > 0 ? " ".concat(c[5]) : "", " {").concat(c[1], "}")), c[5] = i), n && (c[2] ? (c[1] = "@media ".concat(c[2], " {").concat(c[1], "}"), c[2] = n) : c[2] = n), s && (c[4] ? (c[1] = "@supports (".concat(c[4], ") {").concat(c[1], "}"), c[4] = s) : c[4] = "".concat(s)), t.push(c))
                    }
                }, t
            }
        },
        601: e => {
            e.exports = function(e) {
                return e[1]
            }
        },
        72: e => {
            var t = [];

            function n(e) {
                for (var n = -1, o = 0; o < t.length; o++)
                    if (t[o].identifier === e) {
                        n = o;
                        break
                    } return n
            }

            function o(e, o) {
                for (var i = {}, a = [], r = 0; r < e.length; r++) {
                    var l = e[r],
                        d = o.base ? l[0] + o.base : l[0],
                        c = i[d] || 0,
                        u = "".concat(d, " ").concat(c);
                    i[d] = c + 1;
                    var p = n(u),
                        h = {
                            css: l[1],
                            media: l[2],
                            sourceMap: l[3],
                            supports: l[4],
                            layer: l[5]
                        };
                    if (-1 !== p) t[p].references++, t[p].updater(h);
                    else {
                        var m = s(h, o);
                        o.byIndex = r, t.splice(r, 0, {
                            identifier: u,
                            updater: m,
                            references: 1
                        })
                    }
                    a.push(u)
                }
                return a
            }

            function s(e, t) {
                var n = t.domAPI(t);
                return n.update(e),
                    function(t) {
                    if (t) {
                        if (t.css === e.css && t.media === e.media && t.sourceMap === e.sourceMap && t.supports === e.supports && t.layer === e.layer) return;
                        n.update(e = t)
                    } else n.remove()
                }
            }
            e.exports = function(e, s) {
                var i = o(e = e || [], s = s || {});
                return function(e) {
                    e = e || [];
                    for (var a = 0; a < i.length; a++) {
                        var r = n(i[a]);
                        t[r].references--
                    }
                    for (var l = o(e, s), d = 0; d < i.length; d++) {
                        var c = n(i[d]);
                        0 === t[c].references && (t[c].updater(), t.splice(c, 1))
                    }
                    i = l
                }
            }
        },
        659: e => {
            var t = {};
            e.exports = function(e, n) {
                var o = function(e) {
                    if (void 0 === t[e]) {
                        var n = document.querySelector(e);
                        if (window.HTMLIFrameElement && n instanceof window.HTMLIFrameElement) try {
                            n = n.contentDocument.head
                        } catch (e) {
                            n = null
                        }
                        t[e] = n
                    }
                    return t[e]
                }(e);
                if (!o) throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
                o.appendChild(n)
            }
        },
        540: e => {
            e.exports = function(e) {
                var t = document.createElement("style");
                return e.setAttributes(t, e.attributes), e.insert(t, e.options), t
            }
        },
        56: (e, t, n) => {
            e.exports = function(e) {
                var t = n.nc;
                t && e.setAttribute("nonce", t)
            }
        },
        825: e => {
            e.exports = function(e) {
                if ("undefined" == typeof document) return {
                    update: function() {},
                    remove: function() {}
                };
                var t = e.insertStyleElement(e);
                return {
                    update: function(n) {
                        ! function(e, t, n) {
                            var o = "";
                            n.supports && (o += "@supports (".concat(n.supports, ") {")), n.media && (o += "@media ".concat(n.media, " {"));
                            var s = void 0 !== n.layer;
                            s && (o += "@layer".concat(n.layer.length > 0 ? " ".concat(n.layer) : "", " {")), o += n.css, s && (o += "}"), n.media && (o += "}"), n.supports && (o += "}");
                            var i = n.sourceMap;
                            i && "undefined" != typeof btoa && (o += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i)))), " */")), t.styleTagTransform(o, e, t.options)
                        }(t, e, n)
                    },
                    remove: function() {
                        ! function(e) {
                            if (null === e.parentNode) return !1;
                            e.parentNode.removeChild(e)
                        }(t)
                    }
                }
            }
        },
        113: e => {
            e.exports = function(e, t) {
                if (t.styleSheet) t.styleSheet.cssText = e;
                else {
                    for (; t.firstChild;) t.removeChild(t.firstChild);
                    t.appendChild(document.createTextNode(e))
                }
            }
        },
        548: (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
            __webpack_require__.d(__webpack_exports__, {
                A: () => __WEBPACK_DEFAULT_EXPORT__
            });
            const __WEBPACK_DEFAULT_EXPORT__ = {
                init: async function() {
                    let safeImport = src => eval(`(async () => { return await import("${src}")})()`),
                        preloadedModules = Array.from(document.querySelectorAll('link[rel="modulepreload"]')).map((e => e.href));
                    preloadedModules.push(Object.values(document.scripts).find((e => e?.src?.includes(location.origin))).src);
                    let importedModules = await Promise.all(preloadedModules.map((e => safeImport(e)))),
                        allModuleExports = importedModules.flatMap((e => Object.values(e)));
                    this.stores = Object.values(allModuleExports).filter((e => e?.$id)).reduce(((e, t) => (e[t.$id] = t(), e)), {}), this.network = Object.values(allModuleExports).find((e => e?.service))
                },
                get gameWorld() {
                    return this?.stores?.gameState?.gameWorld || null
                }
            }
            }
    },
        __webpack_module_cache__ = {};

    function __webpack_require__(e) {
        var t = __webpack_module_cache__[e];
        if (void 0 !== t) return t.exports;
        var n = __webpack_module_cache__[e] = {
            id: e,
            exports: {}
        };
        return __webpack_modules__[e](n, n.exports, __webpack_require__), n.exports
    }
    __webpack_require__.n = e => {
        var t = e && e.__esModule ? () => e.default : () => e;
        return __webpack_require__.d(t, {
            a: t
        }), t
    }, __webpack_require__.d = (e, t) => {
        for (var n in t) __webpack_require__.o(t, n) && !__webpack_require__.o(e, n) && Object.defineProperty(e, n, {
            enumerable: !0,
            get: t[n]
        })
    }, __webpack_require__.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), __webpack_require__.nc = void 0;
    var __webpack_exports__ = {};
    const events = {
        listeners: {},
        activeKeys: new Set,
        on: function(e, t) {
            this.listeners[e] || (this.listeners[e] = []), this.listeners[e].push(t)
        },
        remove: function(e, t) {
            this.listeners[e] && (this.listeners[e] = this.listeners[e].filter((e => e !== t)))
        },
        emit: function(e, t) {
            this.listeners[e] && this.listeners[e].forEach((e => e(t)))
        },
        trackKey: function(e, t, n) {
            "keydown" === e && moduleManager.handleKeyPress(n), "keydown" !== e || this.activeKeys.has(t) || (this.activeKeys.add(t), this.emit("keyPress", {
                key: t,
                code: n
            })), "keyup" === e && this.activeKeys.has(t) && (this.activeKeys.delete(t), this.emit("keyRelease", {
                key: t,
                code: n
            }))
        }
    };
    class Module {
        constructor(e, t, n, o) {
            this.name = e, this.category = t, this.options = n, this.keybind = o, this.waitingForBind = !1, this.isEnabled = !1, this.toggle = this.toggle.bind(this)
        }
        onEnable() {}
        onDisable() {}
        onRender() {}
        onSettingUpdate() {}
        enable() {
            this.isEnabled = !0, events.emit("module.update", this), this.onEnable()
        }
        disable() {
            this.isEnabled = !1, events.emit("module.update", this), this.onDisable()
        }
        toggle() {
            this.isEnabled ? this.disable() : this.enable()
        }
    }
    class ArrayList extends Module {
        constructor() {
            super("Arraylist", "Visual"), this.namesMap = {}, this.arraylistContainer = null, this.initialized = !1
        }
        update(e, t) {
            if (t) {
                if (!this.namesMap[e]) {
                    let t = document.createElement("div");
                    t.style.backgroundColor = "rgba(10, 10, 10, 0.7)", t.style.color = "white", t.style.padding = "2px 10px 2px 10px", t.style.display = "flex", t.style.alignItems = "center", t.style.boxSizing = "border-box", t.style.margin = "0", t.style.fontFamily = "'Product Sans', sans-serif", t.style.boxShadow = "rgb(0, 0, 0, 0.05) -5px 1px", t.style.transition = "max-height 0.2s ease-in-out, opacity 0.2s ease-in-out", t.style.overflow = "hidden", t.style.maxHeight = "0", t.style.opacity = "0";
                    let n = document.createElement("span");
                    n.style.fontWeight = "800", n.style.fontSize = "16px", n.style.backgroundImage = "var(--Minebuns-accent-color)", n.style.color = "transparent", n.style.backgroundClip = "text", n.innerHTML = e, t.appendChild(n), this.arraylistContainer.appendChild(t), setTimeout((() => {
                        t.style.maxHeight = "50px", t.style.opacity = "1"
                    }), 1), this.namesMap[e] = t
                }
            } else if (this.namesMap[e]) {
                const t = this.namesMap[e];
                t.style.maxHeight = "0", t.style.opacity = "0", setTimeout((() => {
                    this.arraylistContainer.removeChild(t), delete this.namesMap[e]
                }), 5)
            }
            const n = Object.values(this.namesMap).sort(((e, t) => this.measureElementWidth(t) - this.measureElementWidth(e)));
            this.arraylistContainer.innerHTML = "", n.forEach((e => {
                this.arraylistContainer.appendChild(e)
            }))
        }
        onEnable() {
            this.initialized ? this.arraylistContainer.style.opacity = "1" : (this.arraylistContainer = document.createElement("div"), this.arraylistContainer.style.flexDirection = "column", this.arraylistContainer.style.position = "absolute", this.arraylistContainer.style.zIndex = "1000", this.arraylistContainer.style.display = "flex", this.arraylistContainer.style.right = "5px", this.arraylistContainer.style.top = "5px", this.arraylistContainer.style.alignItems = "flex-end", this.arraylistContainer.style.pointerEvents = "none", this.arraylistContainer.style.textTransform = "lowercase", this.arraylistContainer.style.border = "2px solid transparent", this.arraylistContainer.style.borderImage = "var(--Minebuns-accent-color)", this.arraylistContainer.style.borderImageSlice = "1", this.arraylistContainer.style.borderBottom = "0", this.arraylistContainer.style.borderLeft = "0", document.body.appendChild(this.arraylistContainer), events.on("module.update", (e => {
                this.update(e.name, e.isEnabled)
            })), this.initialized = !0)
        }
        measureElementWidth(e) {
            return e.getBoundingClientRect().width
        }
        onDisable() {
            this.arraylistContainer.style.opacity = "0"
        }
    }
    var hooks = __webpack_require__(548);
    class Watermark extends Module {
        constructor() {
            super("Watermark", "Visual", {
                Text: "Minebuns"
            })
        }
        onSettingUpdate() {
            let e = document.querySelector(".Minebuns-overlay-title");
            e && (e.textContent = this.options.Text)
        }
        onEnable() {
            let e = document.querySelector(".Minebuns-overlay-title");
            e || (e = document.createElement("div"), e.className = "Minebuns-overlay-title", e.textContent = this.options.Text, e.style.position = "absolute", e.style.top = "0", e.style.left = "0", e.style.padding = "0.5em", e.style.userSelect = "none", e.style.display = "none", e.style.zIndex = "1000", e.style.textShadow = "var(--Minebuns-accent-color) 0px 0px 10px", e.style.fontFamily = "'Product Sans', sans-serif", e.style.fontSize = "24px", e.style.background = "var(--Minebuns-accent-color)", e.style.backgroundClip = "text", e.style.webkitFontSmoothing = "antialiased", e.style.webkitTextFillColor = "transparent", document.body.appendChild(e)), document.querySelector(".Minebuns-overlay-title").style.display = "flex"
        }
        onDisable() {
            document.querySelector(".Minebuns-overlay-title").style.display = "none"
        }
    }
    class ModuleSettings {
        constructor(e, t) {
            this.module = e, this.container = t, this.components = [], this.initialized = !1, this.isOpen = !1
        }
        initialize() {
            !this.initialized && this.module?.options && (Object.keys(this.module.options).forEach((e => {
                const t = this.module.options[e],
                      n = typeof t;
                e.toLowerCase().includes("color") ? this.addColorPicker(e) : "boolean" === n || "true" === t || "false" === t ? this.addCheckbox(e) : "string" === n ? this.addStringInput(e) : this.addNumberInput(e)
            })), this.components.forEach((e => e.style.display = "none")), this.initialized = !0)
        }
        toggle() {
            this.isOpen = !this.isOpen, this.components.forEach((e => {
                e.style.display = this.isOpen ? "flex" : "none", this.isOpen ? this.container.style.marginBottom = "5px" : this.container.style.marginBottom = "0px"
            }))
        }
        addNumberInput(e) {
            const t = document.createElement("div");
            t.className = "gui-setting-container";
            const n = document.createElement("span");
            n.className = "gui-setting-label", n.textContent = e;
            const o = document.createElement("input");
            o.type = "text", o.className = "gui-text-input", o.value = this.module.options[e];
            let s = o.value;
            o.addEventListener("input", (() => {
                const t = o.value.trim();
                isNaN(t) || "" === t || (s = t, this.module.options[e] = t, events.emit("setting.update", this.module))
            })), o.addEventListener("blur", (() => {
                (isNaN(o.value) || "" === o.value.trim()) && (o.value = s)
            })), o.addEventListener("keydown", (e => {
                "Enter" === e.key && o.blur()
            })), t.appendChild(n), t.appendChild(o), this.container.appendChild(t), this.components.push(t)
        }
        addStringInput(e) {
            const t = document.createElement("div");
            t.className = "gui-setting-container";
            const n = document.createElement("span");
            n.className = "gui-setting-label", n.textContent = e;
            const o = document.createElement("input");
            o.type = "text", o.className = "gui-text-input", o.value = this.module.options[e], o.addEventListener("input", (() => {
                const t = o.value.trim();
                this.module.options[e] = t, events.emit("setting.update", this.module)
            })), t.appendChild(n), t.appendChild(o), this.container.appendChild(t), this.components.push(t)
        }
        addCheckbox(e) {
            const t = document.createElement("div");
            t.className = "gui-setting-container";
            const n = document.createElement("span");
            n.className = "gui-setting-label", n.textContent = e;
            const o = document.createElement("div");
            o.className = "gui-checkbox", o.classList.toggle("enabled", !0 === this.module.options[e] || "true" === this.module.options[e]), o.addEventListener("click", (() => {
                const t = o.classList.contains("enabled");
                o.classList.toggle("enabled"), this.module.options[e] = (!t).toString(), events.emit("setting.update", this.module)
            })), t.appendChild(n), t.appendChild(o), this.container.appendChild(t), this.components.push(t)
        }
        addColorPicker(e) {
            const t = document.createElement("div");
            t.className = "gui-setting-container";
            const n = document.createElement("span");
            n.className = "gui-setting-label", n.textContent = e;
            const o = document.createElement("div");
            o.className = "gui-color-picker", o.style.background = this.module.options[e];
            const s = document.createElement("input");
            s.type = "color", s.className = "gui-color-input", o.appendChild(s), s.addEventListener("input", (t => {
                o.style.background = t.target.value, this.module.options[e] = t.target.value, events.emit("setting.update", this.module)
            })), t.appendChild(n), t.appendChild(o), this.container.appendChild(t), this.components.push(t)
        }
    }
    class Panel {
        constructor(e, t = {
            top: "200px",
            left: "200px"
        }) {
            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", this.header.textContent = e, this.panel.appendChild(this.header), document.body.appendChild(this.panel), this.buttons = [], this.setupDragHandling()
        }
        setupDragHandling() {
            let e = !1,
                t = {
                    x: 0,
                    y: 0
                };
            this.header.addEventListener("mousedown", (n => {
                e = !0, t.x = n.clientX - this.panel.offsetLeft, t.y = n.clientY - this.panel.offsetTop
            })), document.addEventListener("mousemove", (n => {
                e && (this.panel.style.left = n.clientX - t.x + "px", this.panel.style.top = n.clientY - t.y + "px")
            })), document.addEventListener("mouseup", (() => e = !1))
        }
        addButton(e) {
            const t = document.createElement("div");
            t.className = "gui-button-container";
            const n = document.createElement("div");
            n.className = "gui-button " + (e.isEnabled ? "enabled" : ""), n.textContent = e.name;
            const o = new ModuleSettings(e, t);
            return n.addEventListener("mousedown", (t => {
                0 === t.button && (e.toggle(), n.classList.toggle("enabled", e.isEnabled)), 1 === t.button && (n.textContent = "waiting for bind..", e.waitingForBind = !0)
            })), n.addEventListener("contextmenu", (e => {
                e.preventDefault(), o.initialize(), o.toggle()
            })), n.setAttribute("tabindex", -1), n.addEventListener("keydown", (t => {
                n.textContent = e.name, e.waitingForBind && (t.preventDefault(), t.stopPropagation(), t.stopImmediatePropagation(), "Escape" === t.key ? e.keybind = null : e.keybind = String(t.code), e.waitingForBind = !1)
            })), t.appendChild(n), this.panel.appendChild(t), this.buttons.push(n), n
        }
        show() {
            this.panel.style.display = "block"
        }
        hide() {
            this.panel.style.display = "none"
        }
    }
    var injectStylesIntoStyleTag = __webpack_require__(72),
        injectStylesIntoStyleTag_default = __webpack_require__.n(injectStylesIntoStyleTag),
        styleDomAPI = __webpack_require__(825),
        styleDomAPI_default = __webpack_require__.n(styleDomAPI),
        insertBySelector = __webpack_require__(659),
        insertBySelector_default = __webpack_require__.n(insertBySelector),
        setAttributesWithoutAttributes = __webpack_require__(56),
        setAttributesWithoutAttributes_default = __webpack_require__.n(setAttributesWithoutAttributes),
        insertStyleElement = __webpack_require__(540),
        insertStyleElement_default = __webpack_require__.n(insertStyleElement),
        styleTagTransform = __webpack_require__(113),
        styleTagTransform_default = __webpack_require__.n(styleTagTransform),
        clickgui = __webpack_require__(679),
        options = {};
    options.styleTagTransform = styleTagTransform_default(), options.setAttributes = setAttributesWithoutAttributes_default(), options.insert = insertBySelector_default().bind(null, "head"), options.domAPI = styleDomAPI_default(), options.insertStyleElement = insertStyleElement_default();
    var update = injectStylesIntoStyleTag_default()(clickgui.A, options);
    const styles_clickgui = clickgui.A && clickgui.A.locals ? clickgui.A.locals : void 0;
    class ClickGUI extends Module {
        constructor() {
            super("ClickGUI", "Visual", {
                "Accent Color 1": "rgb(64, 190, 255)",
                "Accent Color 2": "rgb(129, 225, 255)",
                "Button Color": "rgb(40, 40, 40, 0.9)",
                "Hover Color": "rgb(50, 50, 50, 0.9)",
                "Header Color": "rgb(0, 0, 0, 0.85)",
                "Panel Color": "rgb(18 18 18)",
                "Text Color": "#ffffff",
                "Enable Animations": !0
            }, "Comma"), this.GUILoaded = !1, this.panels = [], this.blurredBackground = null, this.updateColors()
        }
        updateAnimations() {
            this.options["Enable Animations"] ? document.body.classList.add("with-animations") : document.body.classList.remove("with-animations")
        }
        updateColors() {
            document.body.style.setProperty("--Minebuns-accent-color", `linear-gradient(90deg, ${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"])
        }
        onEnable() {
            document.pointerLockElement && document.exitPointerLock(), this.GUILoaded ? (this.showGUI(), this.updateAnimations()) : (this.setupBackground(), this.createPanels(), this.setupEventListeners(), this.GUILoaded = !0, this.updateAnimations())
        }
        setupBackground() {
            this.blurredBackground = document.createElement("div"), this.blurredBackground.className = "gui-background", document.body.appendChild(this.blurredBackground)
        }
        createPanels() {
            this.panels.forEach((e => {
                e.panel && e.panel.parentNode && e.panel.parentNode.removeChild(e.panel)
            })), this.panels = [], [{
                title: "Combat",
                position: {
                    top: "100px",
                    left: "100px"
                }
            }, {
                title: "Movement",
                position: {
                    top: "100px",
                    left: "320px"
                }
            }, {
                title: "Visual",
                position: {
                    top: "100px",
                    left: "540px"
                }
            }, {
                title: "Misc",
                position: {
                    top: "100px",
                    left: "760px"
                }
            }].forEach((e => {
                const t = new Panel(e.title, e.position);
                this.panels.push(t)
            }));
            const e = {};
            Object.values(module_moduleManager.modules).forEach((t => {
                e[t.category] || (e[t.category] = []), e[t.category].push(t)
            })), Object.entries(e).forEach((([e, t]) => {
                const n = this.panels.find((t => t.header.textContent === e));
                n && (t.sort(((e, t) => t.name.length - e.name.length)), t.forEach((e => n.addButton(e))))
            }))
        }
        setupEventListeners() {
            events.on("module.update", (e => {
                const t = this.panels.find((t => t.header.textContent === e.category));
                if (!t) return;
                const n = t.buttons.find((t => t.textContent === e.name));
                n && n.classList.toggle("enabled", e.isEnabled)
            }))
        }
        showGUI() {
            this.panels.forEach((e => e.show())), this.blurredBackground.style.display = "block"
        }
        onDisable() {
            this.panels.forEach((e => e.hide())), this.blurredBackground.style.display = "none"
        }
        onSettingUpdate() {
            this.updateColors(), this.updateAnimations()
        }
    }
    class Airjump extends Module {
        constructor() {
            super("Airjump", "Movement", null)
        }
        onRender() {
            hooks.A?.gameWorld?.player && (hooks.A.gameWorld.player.collision.isGrounded = !0)
        }
    }
    class Instabreak extends Module {
        constructor() {
            super("Instabreak", "Misc", null), this.originalHardness = new Map
        }
        onEnable() {
            Object.values(hooks.A.gameWorld.items).forEach((e => {
                e?.destruction && (this.originalHardness.has(e) || this.originalHardness.set(e, e.destruction.durability), e.destruction.durability = 0)
            }))
        }
        onDisable() {
            Object.values(hooks.A.gameWorld.items).forEach((e => {
                e?.destruction && this.originalHardness.has(e) && (e.destruction.durability = this.originalHardness.get(e))
            }))
        }
    }
    class Nuker extends Module {
        constructor() {
            super("Nuker", "Misc", {
                Radius: 1,
                "Chunk Interval": 1e3
            }), this.lastExecutionTime = 0
        }
        onRender() {
            if (!hooks.A?.gameWorld?.player) return;
            let e = this.options.Radius;
            const t = this.options["Chunk Interval"],
                  n = Date.now();
            if (n - this.lastExecutionTime >= t) {
                this.lastExecutionTime = n;
                let t = Object.values(hooks.A.gameWorld.player.position).splice(0, 3).map(Math.floor);
                for (let n = -e; n <= e; n++)
                    for (let o = -e; o <= e; o++)
                        for (let s = -e; s <= e; s++) {
                            const [e, i, a] = [t[0] + n, t[1] + o, t[2] + s];
                            0 !== hooks.A.gameWorld.chunkManager.getBlock(e, i, a) && hooks.A.gameWorld.chunkManager.setBlock(e, i, a, 0, !0, !0)
                        }
            }
        }
    }
    class AdBypass extends Module {
        constructor() {
            super("AdBypass", "Misc")
        }
        onEnable() {
            this._reward = this._reward || hooks.A.stores.adsStore.rewardCommercialVideoWrapper, hooks.A.stores.adsStore.rewardCommercialVideoWrapper = () => !0
        }
        onDisable() {
            hooks.A.stores.adsStore.rewardCommercialVideoWrapper = this._reward;
        }
    }
    class Fly extends Module {
        constructor() {
            super("Fly", "Movement", {
                "Vertical Speed": 5
            });
            this.toggleKey = "KeyF"; // Tecla para ativar/desativar (F)
            document.addEventListener("keydown", this.handleKeyPress.bind(this));
        }

        handleKeyPress(e) {
            if (e.code === this.toggleKey && !e.repeat) {
                this.toggle(); // ativa ou desativa o módulo
            }
        }

        onRender() {
            const player = hooks.A?.gameWorld?.player;
            if (!player) return;

            player.velocity.gravity = 0;

            if (player.inputs.jump) {
                player.velocity.velVec3.y = this.options["Vertical Speed"];
            } else if (player.inputs.crouch) {
                player.velocity.velVec3.y = -this.options["Vertical Speed"];
            } else {
                player.velocity.velVec3.y = 0;
            }
        }

        onDisable() {
            const player = hooks.A?.gameWorld?.player;
            if (player) player.velocity.gravity = 23;
        }
    }
    class Speed extends Module {
        constructor() {
            super("Speed", "Movement", {
                Speed: 6
            })
        }
        onRender() {
            hooks.A?.gameWorld?.player && (hooks.A.gameWorld.player.velocity.moveSpeed = this.options.Speed, hooks.A.gameWorld.player.velocity.fastMoveSpeed = this.options.Speed)
        }
        onDisable() {
            hooks.A.gameWorld.player.velocity.moveSpeed = 4.5, hooks.A.gameWorld.player.velocity.fastMoveSpeed = 6.4
        }
    }
    class FreeHeadcoins extends Module {
        constructor() {
            super("FreeHeadcoins", "Misc")
        }
        onEnable() {
            hooks.A.network.get("/users/freeHeadcoins"), hooks.A.stores.userState.user.balance.headcoins += 10, module_moduleManager.modules.FreeHeadcoins.disable()
        }
    }
    class Fill extends Module {
        constructor() {
            super("Fill", "Misc", {
                Radius: 4,
                "Block ID": 472,
                "Chunk Interval": 500
            }), this.lastExecutionTime = 0
        }
        onRender() {
            if (!hooks.A?.gameWorld?.player) return;
            let e = this.options.Radius;
            const t = this.options["Chunk Interval"],
                  n = Date.now();
            if (n - this.lastExecutionTime >= t) {
                this.lastExecutionTime = n;
                let t = Object.values(hooks.A.gameWorld.player.position).splice(0, 3).map(Math.floor);
                for (let n = -e; n <= e; n++)
                    for (let o = -e; o <= e; o++)
                        for (let s = -e; s <= e; s++) {
                            const [e, i, a] = [t[0] + n, t[1] + o, t[2] + s];
                            0 == hooks.A.gameWorld.chunkManager.getBlock(e, i, a) && hooks.A.gameWorld.chunkManager.setBlock(e, i, a, this.options["Block ID"], !0, !0)
                        }
            }
        }
    }
    class Chams extends Module {
        constructor() {
            super("Chams", "Visual", null);
        }

        onRender() {
            const gw = hooks.A?.gameWorld;
            if (!gw?.player) return;

            gw.server.players.forEach(plr => {
                if (!plr?.playerMaterial) return;

                // ESP (visibilidade + depthTest off)
                plr.playerMaterial.depthTest = false;
                if (plr.model || plr._model) {
                    (plr.model ?? plr._model).visible = true;
                }

                // Chams (wireframe)
                plr.playerMaterial.wireframe = false;
            });
        }

        onDisable() {
            const gw = hooks.A?.gameWorld;
            if (!gw?.server?.players) return;

            gw.server.players.forEach(plr => {
                if (!plr?.playerMaterial) return;

                // restaurar
                plr.playerMaterial.depthTest = true;
                plr.playerMaterial.wireframe = false;
                if (plr.model || plr._model) {
                    (plr.model ?? plr._model).visible = true; // manter visível
                }
            });
        }
    }

    class HitAllModule extends Module {
        constructor() {
            super("HitAll", "Combat", {
                "Auto Attack": true
            }, "KeyK"); // Vai aparecer no GUI com bind na tecla K
        }

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

            try {
                const gw = window.hooks?.gameWorld;
                if (!gw?.server?.players) return;
                const time = gw.time.localServerTimeMs;

                gw.server.players.forEach(plr => {
                    const { x, y, z } = plr.model.position;

                    // HNS (Hide and Seek)
                    if ('isHuman' in plr) {
                        if (!plr.isHunter) {
                            gw.server.sendData(
                                packetsOut.HNS_ATTACK_BLOCK,
                                [x, y + 0.1, z, 0.00000001, -0.9999999, 0.00000001, time, plr.sessionId]
                            );
                        }
                        return;
                    }

                    // Infection / Zombie
                    if ('isZombie' in plr) {
                        if (!plr.isZombie) {
                            gw.server.sendData(
                                packetsOut.HIT,
                                [time, x, y + 0.1, z, 0.00000001, -0.9999999, 0.00000001, 2, plr.sessionId]
                            );
                        }
                        return;
                    }

                    // Outros jogadores
                    gw.server.sendData(
                        packetsOut.HIT,
                        [time, x, y + 0.1, z, 0.00000001, -0.9999999, 0.00000001, 2, plr.sessionId]
                    );
                });
            } catch (err) {
                console.error("Erro ao atacar todos os jogadores:", err);
            }
        }
    }

    class FogModifier extends Module {
        constructor() {
            super("FogModifier", "Visual", {
                Near: 9999,
                Far: 10000
            });
        }

        onRender() {
            try {
                const sceneFog = window?.hooked?.gameWorld?.threeScene?.scene?.fog;
                if (!sceneFog) return;

                _assign(sceneFog, {
                    near: parseFloat(this.options.Near),
                    far: parseFloat(this.options.Far)
                });
            } catch (err) {
                console.error("Erro ao modificar fog:", err);
            }
        }

        onDisable() {
            try {
                const sceneFog = window?.hooked?.gameWorld?.threeScene?.scene?.fog;
                if (!sceneFog) return;

                // Reset para valores padrão
                _assign(sceneFog, {
                    near: 1,
                    far: 1000
                });
            } catch {}
        }
    }

    // Inicializa o módulo
    const fogModule = new FogModifier();

    class FOVChanger extends Module {
        constructor() {
            super("FOVChanger", "Visual", {
                FOV: 120
            })
        }
        onRender() {
            let e = hooks.A?.gameWorld?.threeScene?.camera || null;
            e?.updateProjectionMatrix && e.fov !== parseFloat(this.options.FOV) && (e.fov = parseFloat(this.options.FOV), e.updateProjectionMatrix(), hooks.A.gameWorld.player.settings.__defineGetter__("fov", (() => parseFloat(this.options.FOV))))
        }
        onDisable() {
            hooks.A.gameWorld.threeScene.camera = 70, hooks.A.gameWorld.threeScene.camera.updateProjectionMatrix(), delete hooks.A.gameWorld.player.settings.fov, hooks.A.gameWorld.player.settings.fov = 70
        }
    }
    class Scaffold extends Module {
        constructor() {
            super("Scaffold", "Movement", null)
        }
        onRender() {
            if (!hooks.A?.gameWorld?.player) return;
            let e = Object.values(hooks.A.gameWorld.player.position).splice(0, 3).map(Math.floor);
            e[1]--;
            let t = hooks.A.gameWorld.player.currentInventoryItemId,
                n = hooks.A.gameWorld.chunkManager.getBlock(...e),
                o = hooks.A.gameWorld.items[n]?.replaceable || !1;
            (0 == n || o) && t && hooks.A.gameWorld.chunkManager.setBlock(...e, t, !0, !0)
        }
    }
    const mathUtils = {
        normalizeVector(e) {
            const t = e.x * e.x + e.y * e.y + e.z * e.z;
            if (t > 0) {
                const n = 1 / Math.sqrt(t);
                return [e.x * n, e.y * n, e.z * n]
            }
            return e
        },
        distanceBetween(e, t) {
            const n = t.x - e.x,
                  o = t.y - e.y,
                  s = t.z - e.z;
            return n * n + o * o + s * s
        },
        distanceBetweenSqrt(e, t) {
            return Math.sqrt(this.distanceBetween(e, t))
        },
        calculateDistance: (e, t) => Math.hypot(t.x - e.x, t.y - e.y, t.z - e.z)
    },
          gameUtils = {
              getClosestPlayer() {
                  let e = hooks.A.gameWorld.player.position,
                      t = hooks.A.gameWorld.server.players,
                      n = [];
                  return t.forEach((function(t, o) {
                      let s = mathUtils.distanceBetween(e, {
                          x: t._model.position.x,
                          y: t._model.position.y,
                          z: t._model.position.z
                      });
                      t.id = o, n.push({
                          player: t,
                          distance: s
                      })
                  })), n.sort(((e, t) => e.distance - t.distance)), n.map((e => e.player))[0]
              },
              hexToRgb(e) {
                  var 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
              }
          };
    class Killaura extends Module {
        constructor() {
            super("Killaura", "Combat", {
                "Y Offset": 1.62,
                "Reach": 700,
                "Delay": 1,
                "FOV": 190 // em graus
            }), this.lastExecutionTime = 1
        }

        onRender() {
            const now = Date.now();
            const player = hooks.A?.gameWorld?.player;
            if (!player) return;

            this.drawReachCircle(player);

            if (now - this.lastExecutionTime >= this.options.Delay) {
                this.lastExecutionTime = now;
                this.tryKill();
            }
        }

        drawReachCircle(player) {
            const radius = this.options.Reach;
            const segments = 990;
            const pos = player.position;

            if (!window.drawCircle3D) return; // função custom, se existir

            // Desenha um círculo ao redor do jogador
            drawCircle3D(pos.x, pos.y + 0.1, pos.z, radius, segments, "#FF0000");
        }

        tryKill() {
            const reach = this.options.Reach;
            const yOffset = this.options["Y Offset"];
            const fovDeg = this.options.FOV;
            const fovRad = (fovDeg * Math.PI) / 180;

            const player = hooks.A.gameWorld.player;
            const target = gameUtils.getClosestPlayer();

            if (!target || !target._model?.position) return;

            const playerPos = {
                x: player.position.x,
                y: player.position.y + yOffset,
                z: player.position.z
            };

            const targetPos = target._model.position;

            // Vetor do jogador para o inimigo
            const dx = targetPos.x - playerPos.x;
            const dy = targetPos.y - playerPos.y;
            const dz = targetPos.z - playerPos.z;
            const distance = Math.sqrt(dx * dx + dy * dy + dz * dz);

            if (distance > reach) return;

            // Verifica se está dentro do FOV horizontal
            const forwardVec = {
                x: Math.sin(player.rotation.y),
                z: Math.cos(player.rotation.y)
            };

            const toTargetVec = {
                x: dx / Math.hypot(dx, dz),
                z: dz / Math.hypot(dx, dz)
            };

            const dot = forwardVec.x * toTargetVec.x + forwardVec.z * toTargetVec.z;
            const angle = Math.acos(dot);

            if (angle > fovRad / 2) return; // fora do campo de visão

            // Direção do ataque (invertida e normalizada)
            const dir = {
                x: -(dx / distance),
                y: -(dy / distance),
                z: -(dz / distance)
            };

            hooks.A.gameWorld.server.sendData(13, [
                hooks.A.gameWorld.time.localServerTimeMs,
                playerPos.x, playerPos.y, playerPos.z,
                dir.x, dir.y, dir.z,
                distance,
                target.id
            ]);
        }
    }
    class GunModifier extends Module {
        constructor() {
            super("GunModifier", "Combat", {
                "Spread": 0.0,
                "Bullets per shot": 1,
                "Firerate (ms)": 100,
                "Bullet distance": 1000,
                "Reload Time": 1,
                "Recoil": 0,
                "isAuto": true
            });

            this.originalValues = null; // Para restaurar depois
            this.toggleKey = "KeyJ"; // Tecla para ativar/desativar (G)
            document.addEventListener("keydown", this.handleKeyPress.bind(this));
        }

        handleKeyPress(e) {
            if (e.code === this.toggleKey && !e.repeat) {
                this.toggle(); // Alterna entre ativado/desativado
            }
        }

        get gunSystem() {
            return hooks.A.stores.gameState.gameWorld.systemsManager.activeSystems.find(e => e?.bulletsSystem);
        }

        onEnable() {
            const gun = this.gunSystem?.playerShooter?.currPlayerWeaponSpec;
            if (!gun) return;

            // Salva valores originais  firerateMs: gun.firerateMs,
            this.originalValues = {
                bulletsPerShot: gun.bulletsPerShot,
                isAuto: gun.isAuto,
                distance: gun.distance,
                startSpread: gun.startSpread,
                reloadTimeMs: gun.reloadTimeMs,
                recoilAttackY: gun.recoilAttackY,
                recoilAttackX: gun.recoilAttackX,
            };

            // Aplica modificações
            gun.bulletsPerShot = this.options["Bullets per shot"];
            gun.firerateMs = this.options["Firerate (ms)"];
            gun.isAuto = this.options["isAuto"];
            gun.distance = this.options["Bullet distance"];
            gun.startSpread = this.options["Spread"];
            gun.reloadTimeMs = this.options["Reload Time"];
            if (this.options["Recoil"] === 0) {
                gun.recoilAttackY = 0;
                gun.recoilAttackX = 0;
            }
        }

        onDisable() {
            const gun = this.gunSystem?.playerShooter?.currPlayerWeaponSpec;
            if (!gun || !this.originalValues) return;

            // Restaura valores originais
            Object.assign(gun, this.originalValues);
            this.originalValues = null;
        }
    }

    class Disabler extends Module {
        constructor() {
            super("Disabler", "Misc"), this.packetID = null
        }
        insaneBypass() {}
        onRender() {
            if (!hooks.A?.gameWorld?.player) return;
            let e = hooks.A.stores.gameState.gameWorld.server.msgsListeners;
            this.packetID || (this.packetID = Object.keys(e).find((t => e[t].toString().includes("correct pos")))), e[this.packetID] !== this.insaneBypass && (e[this.packetID] = this.insaneBypass)
        }
    }
    class Aimbot extends Module {
        constructor() {
            super("Aimbot", "Combat", {
                "On Aim": "false",
                "On Shoot": "false",
                "Y Offset": 1,
                "Auto Shoot": "false"
            });
        }

        getClosestEnemy(player, players) {
            let target = null, bestDist = Infinity;
            players.forEach(p => {
                if (p?.model?.position && p.isAlive) {
                    let dist = mathUtils.calculateDistance(player.position, p.model.position);
                    if (dist < bestDist) { bestDist = dist; target = p; }
                }
            });
            return target;
        }

        hasLineOfSight(player, enemy) {
            try {
                let gw = hooks.A?.gameWorld;
                if (!gw?.raycaster) return true; // fallback: se não tiver raycaster, deixa passar

                // Faz raycast da posição do player até o inimigo
                let from = player.position;
                let to = enemy.model.position;
                let hit = gw.raycaster.cast(from, to);

                // Se não bateu em nada OU bateu direto no inimigo -> visível
                return !hit || hit.entity === enemy;
            } catch {
                return true;
            }
        }

        aimAtEnemy() {
            let gs = hooks.A.stores.gameState,
                player = gs.gameWorld.player,
                players = gs.gameWorld.server.players;
            if (!player || !players) return;

            let enemy = this.getClosestEnemy(player, players);
            if (enemy) {
                let ePos = enemy.model.position,
                    pPos = player.position,
                    diff = { x: ePos.x - pPos.x, z: ePos.z - pPos.z },
                    yaw = Math.atan2(diff.x, diff.z),
                    yOffset = parseFloat(this.options["Y Offset"]),
                    dy = ePos.y + yOffset - pPos.y,
                    dist = Math.hypot(diff.x, diff.z),
                    pitch = Math.atan2(dy, dist);

                pitch = Math.max(Math.min(pitch, Math.PI / 2), -Math.PI / 2);
                player.rotation.y = (yaw + Math.PI) % (2 * Math.PI);
                player.rotation.x = pitch;

                // 🔫 AutoShoot somente se o inimigo estiver na linha de visão
                if (this.options["Auto Shoot"] === "true" && this.hasLineOfSight(player, enemy)) {
                    player.inputs.leftMB = true;
                }
            }
        }

        onRender() {
            const gs = hooks.A?.stores?.gameState;
            if (!gs?.gameWorld?.server) return;

            const pl = gs.gameWorld.player;
            if (
                ("true" == this.options["On Aim"] && pl.inputs.rightMB) ||
                ("true" == this.options["On Shoot"] && pl.inputs.leftMB) ||
                ("true" !== this.options["On Shoot"] && "true" !== this.options["On Aim"])
            ) {
                this.aimAtEnemy();
            }
        }
    }

    class WallBullet extends Module {
    constructor() {
        super("WallBullet", "Combat", {
            "Distance": 9999 // Alcance máximo do projétil
        }, "KeyO"); // Tecla padrão = O
        this._ogRaycast = null;
    }

    onEnable() {
        try {
            // 🔹 Salva raycast original
            this._ogRaycast = hooks.A.gameWorld.raycaster.cast;

            // 🔹 Ignora colisões → sempre retorna null (projéteis não batem em nada)
            hooks.A.gameWorld.raycaster.cast = () => null;

            // 🔹 Aumenta distância do tiro
            const gun = hooks.A.stores.gameState.gameWorld.systemsManager.activeSystems
                .find(s => s?.playerShooter)?.playerShooter?.currPlayerWeaponSpec;
            if (gun) {
                gun.distance = this.options["Distance"];
            }
        } catch (err) {
            console.error("Erro ao ativar WallBullet:", err);
        }
    }

    onDisable() {
        try {
            // 🔹 Restaura raycast original
            if (this._ogRaycast) {
                hooks.A.gameWorld.raycaster.cast = this._ogRaycast;
            }

            // 🔹 Restaura distância padrão do projétil
            const gun = hooks.A.stores.gameState.gameWorld.systemsManager.activeSystems
                .find(s => s?.playerShooter)?.playerShooter?.currPlayerWeaponSpec;
            if (gun) {
                gun.distance = 1000; // valor padrão
            }
        } catch {}
    }
}

    class NoClip extends Module {
        constructor() {
            super("NoClip", "Movement");
            this.toggleKey = "KeyG"; // Tecla para ativar/desativar (letra N)
            this._og = null;

            document.addEventListener("keydown", this.handleKeyPress.bind(this));
        }

        handleKeyPress(e) {
            if (e.code === this.toggleKey && !e.repeat) {
                this.toggle();
            }
        }

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

        onRender() {
            const system = this.playerPhysicsSystem;
            if (!system || !hooks.A?.gameWorld?.player) return;

            if (!this._og) this._og = system.resolveBlockCollision;

            if (system.resolveBlockCollision === this._og) {
                system.resolveBlockCollision = () => {};
            }
        }

        onDisable() {
            const system = this.playerPhysicsSystem;
            if (system && this._og) {
                system.resolveBlockCollision = this._og;
            }
        }
    }

    class HitAll extends Module {
        constructor() {
            super("HitAll", "Combat");
            this.toggleKey = "KeyH"; // Tecla para ativar/desativar
            document.addEventListener("keydown", this.handleKeyPress.bind(this));
        }

        handleKeyPress(e) {
            if (e.code === this.toggleKey && !e.repeat) {
                this.toggle();
            }
        }

        onRender() {
            try {
                window.hooks.gameWorld.server.players.forEach(plr => {
                    const { x, y, z } = plr.model.position;

                    if (plr.hasOwnProperty('isHuman')) { // HNS
                        if (plr.isHunter) return;
                        window.hooks.gameWorld.server.sendData(packetsOut.HNS_ATTACK_BLOCK, [
                            x, y + 0.1, z,
                            0.00000001, -0.9999999, 0.00000001,
                            window.hooks.gameWorld.time.localServerTimeMs,
                            plr.sessionId
                        ]);
                    } else if (plr.hasOwnProperty('isZombie')) { // Infection
                        if (plr.isZombie) return;
                        window.hooks.gameWorld.server.sendData(packetsOut.HIT, [
                            window.hooks.gameWorld.time.localServerTimeMs,
                            x, y + 0.1, z,
                            0.00000001, -0.9999999, 0.00000001,
                            2, plr.sessionId
                        ]);
                    } else { // Other
                        window.hooks.gameWorld.server.sendData(packetsOut.HIT, [
                            window.hooks.gameWorld.time.localServerTimeMs,
                            x, y + 0.1, z,
                            0.00000001, -0.9999999, 0.00000001,
                            2, plr.sessionId
                        ]);
                    }
                });
            } catch {}
        }
    }

    class RemoveFloor extends Module {
        constructor() {
            super("RemoveFloor", "Misc");
        }

        onRender() {
            try {
                window.hooks.gameWorld.server.players.forEach(plr => {
                    if (!plr.isAlive) return;

                    let { x, y, z } = plr.model.position;
                    x = Math.round(x);
                    y = Math.round(y - 1);
                    z = Math.round(z);

                    const positions = [
                        [x-1,y,z-1],[x,y,z-1],[x+1,y,z-1],
                        [x-1,y,z],  [x,y,z],  [x+1,y,z],
                        [x-1,y,z+1],[x,y,z+1],[x+1,y,z+1]
                    ];

                    positions.forEach(([px, py, pz]) => {
                        window.hooks.gameWorld.server.sendData(packetsOut.PLACE_BLOCKS, [
                            +px.toFixed(3), +py.toFixed(3), +pz.toFixed(3),
                            1, `${px},${py},${pz}`, 0
                        ]);
                    });
                });
            } catch {}
        }
    }


    class Teleport extends Module {
        constructor() {
            super("Teleport", "Misc", {
                "X": 0,
                "Y": 0,
                "Z": 0
            });
            this.keyTpBlock = "KeyZ"; // tecla para teleportar até o bloco selecionado
            this.keyTpRelative = "KeyX"; // tecla para teleportar relativo aos valores X/Y/Z
            document.addEventListener("keydown", this.handleKeyPress.bind(this));
        }

        handleKeyPress(e) {
            if (!e.repeat) {
                if (e.code === this.keyTpBlock) this.tpToSelectedBlock();
                if (e.code === this.keyTpRelative) this.tp(
                    parseFloat(this.options.X),
                    parseFloat(this.options.Y),
                    parseFloat(this.options.Z),
                    true
                );
            }
        }

        tp(x = 0, y = 0, z = 0, relative = true) {
            try {
                let position = window.hooks.gameWorld.player.position;
                if (relative) {
                    position.x += x;
                    position.y += y;
                    position.z += z;
                } else {
                    Object.assign(position, { x, y, z });
                }
                window.hooks.gameWorld.player.physicsPosComp.copyPos(position);
            } catch {}
        }

        tpToSelectedBlock() {
            try {
                let outlineSystem = window.hooks.gameWorld.systemsManager.activeSystems.find(x => x.currBlockPos);
                if (!outlineSystem) return;
                outlineSystem.intersectAndShow(true, 500);
                if (!outlineSystem.currBlockPos) return;
                let { x, y, z } = outlineSystem.currBlockPos;
                this.tp(x, y + 1, z, false);
            } catch {}
        }
    }

    const module_moduleManager = {
        modules: {},
        addModules: function(...e) {
            for (const t of e) this.modules[t.name] = t
        },
        addModule: function(e) {
            this.modules[e.name] = e
        },
        handleKeyPress: function(e) {
            for (let t in this.modules) {
                let n = this.modules[t];
                n.waitingForBind ? (n.keybind = e, n.waitingForBind = !1) : n.keybind == e && n.toggle()
            }
        },
        init() {
            this.addModules(new ArrayList, new Watermark, new ClickGUI, new Airjump, new Instabreak, new WallBullet, new Nuker, new AdBypass, new Fly, new Speed, new FreeHeadcoins, new Fill, new FogModifier,new Chams, new HitAllModule, new FOVChanger, new Scaffold, new Killaura, new GunModifier, new Disabler, new Aimbot, new NoClip, new HitAll, new RemoveFloor, new Teleport), events.on("render", (() => {
                for (let e in this.modules) this.modules[e].isEnabled && this.modules[e].onRender()
            })), events.on("keydown", this.handleKeyPress.bind(this)), events.on("setting.update", (() => {
                for (let e in this.modules) this.modules[e].isEnabled && this.modules[e].onSettingUpdate()
            })), this.modules.Arraylist.enable(), this.modules.AdBypass.enable()
        }
    };
    class Minebuns {
        constructor() {
            this.version = "1.0.0", this.init()
        }
        init() {
            setInterval((() => {
                events.emit("render")
            }), 1e3 / 60), document.addEventListener("keydown", (e => {
                events.emit("keydown", e.code)
            })), hooks.A.init(), module_moduleManager.init(), window.hooks = hooks.A
        }
        disable() {}
    }
    const main = new Minebuns



    const { log, warn, error, debug } = window.console;

    const _assign = Object.assign;
    const _create = Object.create;
    const _defineProperty = Object.defineProperty;
    const _parse = JSON.parse;

    Object.create = function create() {
        if (!arguments[0]) return {};
        return _create.apply(this, arguments);
    };

    Object.defineProperty = function defineProperty() {
        const ret = _defineProperty.apply(this, arguments);
        if (arguments[1] === 'player') {
            window.hooked = ret;
        }
        return ret;
    };

    Object.defineProperty(Object.prototype, 'player', {
        get() {
            return this.__player;
        },
        set(v) {
            this.__player = v;
        }
    });

    let cheatInterval;
    function cheatingIsFun() {
        if (cheatInterval) {
            clearInterval(cheatInterval);
            cheatInterval = false;
            return;
        }

        cheatInterval = setInterval(() => {
            // ESP
            try {
                window.hooked.gameWorld.server.players.forEach((plr) => {
                    plr.playerMaterial.depthTest = false;
                    if (plr.isHided) plr.model.visible = true;
                });
            } catch {}

            // No Fog
            try {
                if (window?.hooked?.gameWorld?.threeScene?.scene?.fog) {
                    _assign(
                        window.hooked.gameWorld.threeScene.scene.fog,
                        {
                            near: 9999,
                            far: 10000
                        }
                    );
                }
            } catch {}

            // Crouch Speed, anti slip (for ice)
            try {
                _assign(window.hooked.player.velocity, {
                    crouchSpeedMultiplier: 1.6,
                });
                _defineProperty(window.hooked.player.velocity, 'slipperiness', {
                    get() {
                        return 1;
                    },
                    set(v) {}
                });
            } catch {}

            try {
                const weaponMod = {
                    // OP Weapons config
                    isAuto: true,
                    firerateMs: 115,
                    lastShootFirerateMs: 115,

                    timeToScopeSec: 0.01,
                    reloadTimeMs: 10,
                    currAmmo: 30,
                    distance: 9999,

                    recoilDecayRatio: 999,
                    recoilMax: 0.000001,
                    maxCrouchSpread: 0.000001,
                    maxStandSpread: 0.000001,

                    maxJumpInaccuracy: 0.000001,
                    maxMoveInaccuracy: 0.000001,

                    knifeLongAttackDelayMs: 10,
                    knifeLongAttackFirerateMs: 15,
                    recoilAttackX: 0.0001,
                    recoilAttackY: 0.0001,
                    secondAttackDistance: 9999,
                    swapTimeMs: 1
                };

                window.hooked.gameWorld.systemsManager.activeSystems.forEach(
                    (system) => {
                        // Reach
                        if (system?.far) system.far = 9999;

                        // Weapon mods
                        if (system?.playerShooter?.currPlayerWeapon) {
                            _assign(
                                system.playerShooter.currPlayerWeapon,
                                weaponMod
                            );
                        }
                        if (system?.playerShooter?.currPlayerWeaponSpec) {
                            _assign(
                                system.playerShooter.currPlayerWeaponSpec,
                                weaponMod
                            );
                        }
                        if (
                            system?.playerShooter?.currPlayerWeaponSpec
                            ?.bulletsQueue
                        ) {
                            _assign(
                                system.playerShooter.currPlayerWeaponSpec
                                .bulletsQueue,
                                {
                                    queueStepMs: 15
                                }
                            );
                        }
                        if (system?.playerShooter) {
                            _defineProperty(system, 'cooldownRemainderMs', {
                                get() {
                                    return 15;
                                },
                                set(v) {}
                            });
                            _defineProperty(system, 'shootPressedDelayer', {
                                get() {
                                    return 1;
                                },
                                set(v) {}
                            });
                        }
                    }
                );
            } catch {}

            try {
                if (typeof window.hooked.gameWorld.server.msgsToSend?._push !== 'function') {
                    window.hooked.gameWorld.server.msgsToSend._push = window.hooked.gameWorld.server.msgsToSend.push;
                    window.hooked.gameWorld.server.msgsToSend.push = function () {
                        if (arguments[0] === 13 && Array.isArray(arguments[1])) { // packets.HIT
                            for (let i = 0; i < 15; i++) this._push.apply(this, arguments);
                        }
                        if (arguments[0] === 1200 && Array.isArray(arguments[1])) { // packets.HNS_ATTACK_BLOCK
                            for (let i = 0; i < 5; i++) this._push.apply(this, arguments);
                        }

                        return this._push.apply(this, arguments);
                    }
                }
            } catch {}


            try {
                let system = window.hooked.gameWorld.systemsManager.activeSystems.find(x => x?.infinityBlocks !== undefined);
                if (system) _defineProperty(system, 'instantBlockBreaking', {
                    get() { return true },
                    set(v) {}
                });
            } catch {}

            try {
                // Adel you're going to have to try a LOT harder than this if you want to stop me LOL
                let posCorrection = Object.entries(window.hooked.gameWorld.server.msgsListeners).find(([k,v]) => v.toString().includes('=this.player.physicsPosComp'));
                if (posCorrection) delete window.hooked.gameWorld.server.msgsListeners[posCorrection[0]];
            } catch {}
        }, 100);
    }

    setTimeout(() => {
        cheatingIsFun();
        keybindsLoop();
    }, 8000);

    /* Teleportation Stuff */
    function tp(x = 0, y = 0, z = 0, relative = true) {
        try {
            let position = window.hooked.gameWorld.player.position;
            if (relative) {
                position.x += x;
                position.y += y;
                position.z += z;
            } else {
                _assign(position, { x, y, z });
            }
            window.hooked.gameWorld.player.physicsPosComp.copyPos(position)
        } catch {}
    }

    function tpToSelectedBlock() {
        try {
            let outlineSystem = window.hooked.gameWorld.systemsManager.activeSystems.find(x => x.currBlockPos);
            if (!outlineSystem) return;
            outlineSystem.intersectAndShow(true, 500);
            if (!outlineSystem.currBlockPos) return;
            let { x, y, z } = outlineSystem.currBlockPos;
            tp(x, y + 1, z, false);
        } catch {}
    }

    function hitAll() {
        try {
            window.hooked.gameWorld.server.players.forEach(plr => {
                const { x, y, z } = plr.model.position;

                if (plr.hasOwnProperty('isBlock')) { // HNS
                    if (plr.isHunter) return;
                    window.hooked.gameWorld.server.sendData(1200, [x, y + 0.1, z, 0.00000001, -0.9999999, 0.00000001, window.hooked.gameWorld.time.localServerTimeMs, plr.sessionId]);
                } if (plr.hasOwnProperty('isZombie')) { // Infection
                    if (plr.isZombie) return;
                    window.hooked.gameWorld.server.sendData(1300, [window.hooked.gameWorld.time.localServerTimeMs, x, y + 0.1, z, 0.00000001, -0.9999999, 0.00000001, 2, plr.sessionId]);
                } else { // Other
                    window.hooked.gameWorld.server.sendData(1300, [window.hooked.gameWorld.time.localServerTimeMs, x, y + 0.1, z, 0.00000001, -0.9999999, 0.00000001, 2, plr.sessionId]);
                }
            });
        } catch {}
    }

    /* Keystokes Stuff */
    const pressedKeys = {
        allowBackquote: true,
        allowPeriod: true,
    };

    function unlockKey(code) {
        pressedKeys[`allow${code}`] = true;
    }

    window.addEventListener('keydown', (event) => {
        pressedKeys[event.code] = true;
    });

    // Event listener for when a key is released
    window.addEventListener('keyup', (event) => {
        pressedKeys[event.code] = false;
    });

    function keybindsLoop() {
        if (pressedKeys['Space']) {
            if (window?.hooked?.gameWorld?.player?.velocity?.velVec3) {
                try {
                    let { x, y, z } = window.hooked.gameWorld.player.velocity.velVec3;
                    window.hooked.gameWorld.player.velocity.velVec3.set(x, 8, z);
                } catch {}
            }
        }
        if (pressedKeys['Backquote'] && pressedKeys.allowBackquote) {
            if (window?.hooked?.gameWorld?.player?.velocity?.velVec3) {
                pressedKeys.allowBackquote = false;
                setTimeout(unlockKey.bind(this, ['Backquote']), 500);
                tpToSelectedBlock();
            }
        }
        if (pressedKeys['Period'] && pressedKeys.allowPeriod) {
            if (window?.hooked?.gameWorld) {
                pressedKeys.allowPeriod = false;
                setTimeout(unlockKey.bind(this, ['Period']), 250);
                hitAll();
            }
        }
        requestAnimationFrame(keybindsLoop);
    }

    /* POKI SDK Stuff */
    function skipRewardedBreak() {
        return new Promise((resolve) => {
            resolve(true);
        });
    }

    Object.defineProperties(Object.prototype, {
        rewardedBreak: {
            get() {
                return skipRewardedBreak.bind(this);
            },
            set() {},
            enumerable: false
        },
        gameanalytics: {
            get() {
                return {
                    GameAnalytics: {
                        addAdEvent: () => {}
                    },
                    EGAErrorSeverity: {
                        0: 'Undefined',
                        1: 'Debug',
                        2: 'Info',
                        3: 'Warning',
                        4: 'Error',
                        5: 'Critical',
                        Undefined: 0,
                        Debug: 1,
                        Info: 2,
                        Warning: 3,
                        Error: 4,
                        Critical: 5
                    },
                    EGAProgressionStatus: {
                        0: 'Undefined',
                        1: 'Start',
                        2: 'Complete',
                        3: 'Fail',
                        Undefined: 0,
                        Start: 1,
                        Complete: 2,
                        Fail: 3
                    },
                    EGAResourceFlowType: {
                        0: 'Undefined',
                        1: 'Source',
                        2: 'Sink',
                        Undefined: 0,
                        Source: 1,
                        Sink: 2
                    },
                    EGAAdAction: {
                        0: 'Undefined',
                        1: 'Clicked',
                        2: 'Show',
                        3: 'FailedShow',
                        4: 'RewardReceived',
                        Undefined: 0,
                        Clicked: 1,
                        Show: 2,
                        FailedShow: 3,
                        RewardReceived: 4
                    },
                    EGAAdError: {
                        0: 'Undefined',
                        1: 'Unknown',
                        2: 'Offline',
                        3: 'NoFill',
                        4: 'InternalError',
                        5: 'InvalidRequest',
                        6: 'UnableToPrecache',
                        Undefined: 0,
                        Unknown: 1,
                        Offline: 2,
                        NoFill: 3,
                        InternalError: 4,
                        InvalidRequest: 5,
                        UnableToPrecache: 6
                    },
                    EGAAdType: {
                        0: 'Undefined',
                        1: 'Video',
                        2: 'RewardedVideo',
                        3: 'Playable',
                        4: 'Interstitial',
                        5: 'OfferWall',
                        6: 'Banner',
                        Undefined: 0,
                        Video: 1,
                        RewardedVideo: 2,
                        Playable: 3,
                        Interstitial: 4,
                        OfferWall: 5,
                        Banner: 6
                    },
                    http: {
                        EGAHTTPApiResponse: {
                            0: 'NoResponse',
                            1: 'BadResponse',
                            2: 'RequestTimeout',
                            3: 'JsonEncodeFailed',
                            4: 'JsonDecodeFailed',
                            5: 'InternalServerError',
                            6: 'BadRequest',
                            7: 'Unauthorized',
                            8: 'UnknownResponseCode',
                            9: 'Ok',
                            10: 'Created',
                            NoResponse: 0,
                            BadResponse: 1,
                            RequestTimeout: 2,
                            JsonEncodeFailed: 3,
                            JsonDecodeFailed: 4,
                            InternalServerError: 5,
                            BadRequest: 6,
                            Unauthorized: 7,
                            UnknownResponseCode: 8,
                            Ok: 9,
                            Created: 10
                        }
                    },
                    events: {
                        EGASdkErrorCategory: {
                            0: 'Undefined',
                            1: 'EventValidation',
                            2: 'Database',
                            3: 'Init',
                            4: 'Http',
                            5: 'Json',
                            Undefined: 0,
                            EventValidation: 1,
                            Database: 2,
                            Init: 3,
                            Http: 4,
                            Json: 5
                        },
                        EGASdkErrorArea: {
                            0: 'Undefined',
                            1: 'BusinessEvent',
                            2: 'ResourceEvent',
                            3: 'ProgressionEvent',
                            4: 'DesignEvent',
                            5: 'ErrorEvent',
                            9: 'InitHttp',
                            10: 'EventsHttp',
                            11: 'ProcessEvents',
                            12: 'AddEventsToStore',
                            20: 'AdEvent',
                            Undefined: 0,
                            BusinessEvent: 1,
                            ResourceEvent: 2,
                            ProgressionEvent: 3,
                            DesignEvent: 4,
                            ErrorEvent: 5,
                            InitHttp: 9,
                            EventsHttp: 10,
                            ProcessEvents: 11,
                            AddEventsToStore: 12,
                            AdEvent: 20
                        },
                        EGASdkErrorAction: {
                            0: 'Undefined',
                            1: 'InvalidCurrency',
                            2: 'InvalidShortString',
                            3: 'InvalidEventPartLength',
                            4: 'InvalidEventPartCharacters',
                            5: 'InvalidStore',
                            6: 'InvalidFlowType',
                            7: 'StringEmptyOrNull',
                            8: 'NotFoundInAvailableCurrencies',
                            9: 'InvalidAmount',
                            10: 'NotFoundInAvailableItemTypes',
                            11: 'WrongProgressionOrder',
                            12: 'InvalidEventIdLength',
                            13: 'InvalidEventIdCharacters',
                            15: 'InvalidProgressionStatus',
                            16: 'InvalidSeverity',
                            17: 'InvalidLongString',
                            18: 'DatabaseTooLarge',
                            19: 'DatabaseOpenOrCreate',
                            25: 'JsonError',
                            29: 'FailHttpJsonDecode',
                            30: 'FailHttpJsonEncode',
                            31: 'InvalidAdAction',
                            32: 'InvalidAdType',
                            33: 'InvalidString',
                            Undefined: 0,
                            InvalidCurrency: 1,
                            InvalidShortString: 2,
                            InvalidEventPartLength: 3,
                            InvalidEventPartCharacters: 4,
                            InvalidStore: 5,
                            InvalidFlowType: 6,
                            StringEmptyOrNull: 7,
                            NotFoundInAvailableCurrencies: 8,
                            InvalidAmount: 9,
                            NotFoundInAvailableItemTypes: 10,
                            WrongProgressionOrder: 11,
                            InvalidEventIdLength: 12,
                            InvalidEventIdCharacters: 13,
                            InvalidProgressionStatus: 15,
                            InvalidSeverity: 16,
                            InvalidLongString: 17,
                            DatabaseTooLarge: 18,
                            DatabaseOpenOrCreate: 19,
                            JsonError: 25,
                            FailHttpJsonDecode: 29,
                            FailHttpJsonEncode: 30,
                            InvalidAdAction: 31,
                            InvalidAdType: 32,
                            InvalidString: 33
                        },
                        EGASdkErrorParameter: {
                            0: 'Undefined',
                            1: 'Currency',
                            2: 'CartType',
                            3: 'ItemType',
                            4: 'ItemId',
                            5: 'Store',
                            6: 'FlowType',
                            7: 'Amount',
                            8: 'Progression01',
                            9: 'Progression02',
                            10: 'Progression03',
                            11: 'EventId',
                            12: 'ProgressionStatus',
                            13: 'Severity',
                            14: 'Message',
                            15: 'AdAction',
                            16: 'AdType',
                            17: 'AdSdkName',
                            18: 'AdPlacement',
                            Undefined: 0,
                            Currency: 1,
                            CartType: 2,
                            ItemType: 3,
                            ItemId: 4,
                            Store: 5,
                            FlowType: 6,
                            Amount: 7,
                            Progression01: 8,
                            Progression02: 9,
                            Progression03: 10,
                            EventId: 11,
                            ProgressionStatus: 12,
                            Severity: 13,
                            Message: 14,
                            AdAction: 15,
                            AdType: 16,
                            AdSdkName: 17,
                            AdPlacement: 18
                        }
                    },
                    logging: {},
                    utilities: {},
                    validators: {},
                    device: {},
                    threading: {},
                    store: {
                        EGAStoreArgsOperator: {
                            0: 'Equal',
                            1: 'LessOrEqual',
                            2: 'NotEqual',
                            Equal: 0,
                            LessOrEqual: 1,
                            NotEqual: 2
                        },
                        EGAStore: {
                            0: 'Events',
                            1: 'Sessions',
                            2: 'Progression',
                            Events: 0,
                            Sessions: 1,
                            Progression: 2
                        }
                    },
                    state: {},
                    tasks: {}
                };
            },
            set(v) {},
            enumerable: false
        }
    });

    console.warn = function (...m) {
        if (m[0] && String(m[0]).includes('GameAnalytics')) {
            return;
        }
        return warn.apply(this, arguments);
    };

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址