Fentify

we do a little trolling

目前為 2025-07-13 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name Fentify
// @description we do a little trolling
// @version 0.0.4
// @author crackbob
// @license GPL-3.0-or-later
// @homepage https://github.com/crackbob/Fentify
// @supportURL https://github.com/crackbob/Fentify
// @match *://Vectaria.io/*
// @grant none
// @namespace fentify
// ==/UserScript==

/******/ (() => { // webpackBootstrap
/******/ 	"use strict";
/******/ 	var __webpack_modules__ = ({

/***/ "./node_modules/css-loader/dist/cjs.js!./src/module/modules/visual/styles/clickgui.css":
/*!*********************************************************************************************!*\
  !*** ./node_modules/css-loader/dist/cjs.js!./src/module/modules/visual/styles/clickgui.css ***!
  \*********************************************************************************************/
/***/ ((module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ "./node_modules/css-loader/dist/runtime/noSourceMaps.js");
/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
// Imports


var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
// Module
___CSS_LOADER_EXPORT___.push([module.id, `@font-face {
    font-family: "Product Sans";
    src: url(https://fonts.gstatic.com/s/productsans/v19/pxiDypQkot1TnFhsFMOfGShVF9eO.woff2);
}

:root {
    --Fentify-accent-color: linear-gradient(90deg, rgb(64, 190, 255) 0%, rgb(129, 225, 255) 100%);
    --button-color: rgb(40, 40, 40, 0.9);
    --hover-color: rgb(50, 50, 50, 0.9);
    --panel-bg: rgb(34, 34, 34, 0.85);
    --panel-bg: rgb(10, 10, 10, 0.85);
    --text-color: #ffffff;
    --header-text-size: 25px;
    --button-text-size: 20px;
    --setting-text-size: 15px;
}

.gui-panel {
    position: fixed;
    z-index: 1000;
    width: 200px;
    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: 40px;
    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: 35px;
    display: flex;
    align-items: center;
    padding-left: 10px;
    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(--Fentify-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: 10px;
    font-weight: 300;
    color: var(--text-color);
}

.gui-checkbox {
    width: 15px;
    height: 15px;
    border-radius: 4px;
    background: var(--button-color);
    position: relative;
    margin: 8px;
    cursor: pointer;
    transition: background 0.3s;
}

.gui-checkbox.enabled {
    background: var(--Fentify-accent-color);
}

.gui-color-picker {
    width: 15px;
    height: 15px;
    border-radius: 4px;
    position: relative;
    margin: 8px;
    cursor: pointer;
}

.gui-color-input {
    width: 20px;
    height: 20px;
    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: 40px;
    border-radius: 4px;
    outline: none;
    transition: background 0.3s;
    text-align: center;
    margin: 5px;
    margin-right: 10px;
}

.gui-text-input:hover {
    background: var(--hover-color);
}

.gui-text-input:focus {
    background: var(--hover-color);
}

.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);
    }
}

.blockSelector {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 500px;
    height: 500px;
    overflow-y: auto;
    background-color: rgba(40, 40, 40);
    border-radius: 10px;
    padding: 20px;
    z-index: 9999;
}

.blockSelector::-webkit-scrollbar {
    display: none;
}`, ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);


/***/ }),

/***/ "./node_modules/css-loader/dist/runtime/api.js":
/*!*****************************************************!*\
  !*** ./node_modules/css-loader/dist/runtime/api.js ***!
  \*****************************************************/
/***/ ((module) => {



/*
  MIT License http://www.opensource.org/licenses/mit-license.php
  Author Tobias Koppers @sokra
*/
module.exports = function (cssWithMappingToString) {
  var list = [];

  // return the list of modules as css string
  list.toString = function toString() {
    return this.map(function (item) {
      var content = "";
      var needLayer = typeof item[5] !== "undefined";
      if (item[4]) {
        content += "@supports (".concat(item[4], ") {");
      }
      if (item[2]) {
        content += "@media ".concat(item[2], " {");
      }
      if (needLayer) {
        content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");
      }
      content += cssWithMappingToString(item);
      if (needLayer) {
        content += "}";
      }
      if (item[2]) {
        content += "}";
      }
      if (item[4]) {
        content += "}";
      }
      return content;
    }).join("");
  };

  // import a list of modules into the list
  list.i = function i(modules, media, dedupe, supports, layer) {
    if (typeof modules === "string") {
      modules = [[null, modules, undefined]];
    }
    var alreadyImportedModules = {};
    if (dedupe) {
      for (var k = 0; k < this.length; k++) {
        var id = this[k][0];
        if (id != null) {
          alreadyImportedModules[id] = true;
        }
      }
    }
    for (var _k = 0; _k < modules.length; _k++) {
      var item = [].concat(modules[_k]);
      if (dedupe && alreadyImportedModules[item[0]]) {
        continue;
      }
      if (typeof layer !== "undefined") {
        if (typeof item[5] === "undefined") {
          item[5] = layer;
        } else {
          item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
          item[5] = layer;
        }
      }
      if (media) {
        if (!item[2]) {
          item[2] = media;
        } else {
          item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
          item[2] = media;
        }
      }
      if (supports) {
        if (!item[4]) {
          item[4] = "".concat(supports);
        } else {
          item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
          item[4] = supports;
        }
      }
      list.push(item);
    }
  };
  return list;
};

/***/ }),

/***/ "./node_modules/css-loader/dist/runtime/noSourceMaps.js":
/*!**************************************************************!*\
  !*** ./node_modules/css-loader/dist/runtime/noSourceMaps.js ***!
  \**************************************************************/
/***/ ((module) => {



module.exports = function (i) {
  return i[1];
};

/***/ }),

/***/ "./src/module/modules/visual/styles/clickgui.css":
/*!*******************************************************!*\
  !*** ./src/module/modules/visual/styles/clickgui.css ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "./node_modules/style-loader/dist/runtime/styleDomAPI.js");
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "./node_modules/style-loader/dist/runtime/insertBySelector.js");
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "./node_modules/style-loader/dist/runtime/insertStyleElement.js");
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "./node_modules/style-loader/dist/runtime/styleTagTransform.js");
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_clickgui_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../../node_modules/css-loader/dist/cjs.js!./clickgui.css */ "./node_modules/css-loader/dist/cjs.js!./src/module/modules/visual/styles/clickgui.css");

      
      
      
      
      
      
      
      
      

var options = {};

options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());

var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_clickgui_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);




       /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_clickgui_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_clickgui_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_clickgui_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);


/***/ }),

/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
/*!****************************************************************************!*\
  !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
  \****************************************************************************/
/***/ ((module) => {



var stylesInDOM = [];
function getIndexByIdentifier(identifier) {
  var result = -1;
  for (var i = 0; i < stylesInDOM.length; i++) {
    if (stylesInDOM[i].identifier === identifier) {
      result = i;
      break;
    }
  }
  return result;
}
function modulesToDom(list, options) {
  var idCountMap = {};
  var identifiers = [];
  for (var i = 0; i < list.length; i++) {
    var item = list[i];
    var id = options.base ? item[0] + options.base : item[0];
    var count = idCountMap[id] || 0;
    var identifier = "".concat(id, " ").concat(count);
    idCountMap[id] = count + 1;
    var indexByIdentifier = getIndexByIdentifier(identifier);
    var obj = {
      css: item[1],
      media: item[2],
      sourceMap: item[3],
      supports: item[4],
      layer: item[5]
    };
    if (indexByIdentifier !== -1) {
      stylesInDOM[indexByIdentifier].references++;
      stylesInDOM[indexByIdentifier].updater(obj);
    } else {
      var updater = addElementStyle(obj, options);
      options.byIndex = i;
      stylesInDOM.splice(i, 0, {
        identifier: identifier,
        updater: updater,
        references: 1
      });
    }
    identifiers.push(identifier);
  }
  return identifiers;
}
function addElementStyle(obj, options) {
  var api = options.domAPI(options);
  api.update(obj);
  var updater = function updater(newObj) {
    if (newObj) {
      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {
        return;
      }
      api.update(obj = newObj);
    } else {
      api.remove();
    }
  };
  return updater;
}
module.exports = function (list, options) {
  options = options || {};
  list = list || [];
  var lastIdentifiers = modulesToDom(list, options);
  return function update(newList) {
    newList = newList || [];
    for (var i = 0; i < lastIdentifiers.length; i++) {
      var identifier = lastIdentifiers[i];
      var index = getIndexByIdentifier(identifier);
      stylesInDOM[index].references--;
    }
    var newLastIdentifiers = modulesToDom(newList, options);
    for (var _i = 0; _i < lastIdentifiers.length; _i++) {
      var _identifier = lastIdentifiers[_i];
      var _index = getIndexByIdentifier(_identifier);
      if (stylesInDOM[_index].references === 0) {
        stylesInDOM[_index].updater();
        stylesInDOM.splice(_index, 1);
      }
    }
    lastIdentifiers = newLastIdentifiers;
  };
};

/***/ }),

/***/ "./node_modules/style-loader/dist/runtime/insertBySelector.js":
/*!********************************************************************!*\
  !*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***!
  \********************************************************************/
/***/ ((module) => {



var memo = {};

/* istanbul ignore next  */
function getTarget(target) {
  if (typeof memo[target] === "undefined") {
    var styleTarget = document.querySelector(target);

    // Special case to return head of iframe instead of iframe itself
    if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
      try {
        // This will throw an exception if access to iframe is blocked
        // due to cross-origin restrictions
        styleTarget = styleTarget.contentDocument.head;
      } catch (e) {
        // istanbul ignore next
        styleTarget = null;
      }
    }
    memo[target] = styleTarget;
  }
  return memo[target];
}

/* istanbul ignore next  */
function insertBySelector(insert, style) {
  var target = getTarget(insert);
  if (!target) {
    throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
  }
  target.appendChild(style);
}
module.exports = insertBySelector;

/***/ }),

/***/ "./node_modules/style-loader/dist/runtime/insertStyleElement.js":
/*!**********************************************************************!*\
  !*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***!
  \**********************************************************************/
/***/ ((module) => {



/* istanbul ignore next  */
function insertStyleElement(options) {
  var element = document.createElement("style");
  options.setAttributes(element, options.attributes);
  options.insert(element, options.options);
  return element;
}
module.exports = insertStyleElement;

/***/ }),

/***/ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":
/*!**********************************************************************************!*\
  !*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***!
  \**********************************************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {



/* istanbul ignore next  */
function setAttributesWithoutAttributes(styleElement) {
  var nonce =  true ? __webpack_require__.nc : 0;
  if (nonce) {
    styleElement.setAttribute("nonce", nonce);
  }
}
module.exports = setAttributesWithoutAttributes;

/***/ }),

/***/ "./node_modules/style-loader/dist/runtime/styleDomAPI.js":
/*!***************************************************************!*\
  !*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***!
  \***************************************************************/
/***/ ((module) => {



/* istanbul ignore next  */
function apply(styleElement, options, obj) {
  var css = "";
  if (obj.supports) {
    css += "@supports (".concat(obj.supports, ") {");
  }
  if (obj.media) {
    css += "@media ".concat(obj.media, " {");
  }
  var needLayer = typeof obj.layer !== "undefined";
  if (needLayer) {
    css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");
  }
  css += obj.css;
  if (needLayer) {
    css += "}";
  }
  if (obj.media) {
    css += "}";
  }
  if (obj.supports) {
    css += "}";
  }
  var sourceMap = obj.sourceMap;
  if (sourceMap && typeof btoa !== "undefined") {
    css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
  }

  // For old IE
  /* istanbul ignore if  */
  options.styleTagTransform(css, styleElement, options.options);
}
function removeStyleElement(styleElement) {
  // istanbul ignore if
  if (styleElement.parentNode === null) {
    return false;
  }
  styleElement.parentNode.removeChild(styleElement);
}

/* istanbul ignore next  */
function domAPI(options) {
  if (typeof document === "undefined") {
    return {
      update: function update() {},
      remove: function remove() {}
    };
  }
  var styleElement = options.insertStyleElement(options);
  return {
    update: function update(obj) {
      apply(styleElement, options, obj);
    },
    remove: function remove() {
      removeStyleElement(styleElement);
    }
  };
}
module.exports = domAPI;

/***/ }),

/***/ "./node_modules/style-loader/dist/runtime/styleTagTransform.js":
/*!*********************************************************************!*\
  !*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***!
  \*********************************************************************/
/***/ ((module) => {



/* istanbul ignore next  */
function styleTagTransform(css, styleElement) {
  if (styleElement.styleSheet) {
    styleElement.styleSheet.cssText = css;
  } else {
    while (styleElement.firstChild) {
      styleElement.removeChild(styleElement.firstChild);
    }
    styleElement.appendChild(document.createTextNode(css));
  }
}
module.exports = styleTagTransform;

/***/ }),

/***/ "./src/events.js":
/*!***********************!*\
  !*** ./src/events.js ***!
  \***********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
    listeners: {},
    activeKeys: new Set(),
    on: function (event, callback) {
        if (!this.listeners[event]) {
            this.listeners[event] = [];
        }

        this.listeners[event].push(callback);
    },
    remove: function (event, callback) {
        if (!this.listeners[event]) {
            return;
        }

        this.listeners[event] = this.listeners[event].filter(cb => cb !== callback);
    },
    emit: function (event, data) {
        if (!this.listeners[event]) {
            return;
        }

        this.listeners[event].forEach(callback => callback(data));
    },
    trackKey: function (eventType, key, code) {
        if (eventType === "keydown") {
            moduleManager.handleKeyPress(code);
        }
        if (eventType === "keydown" && !this.activeKeys.has(key)) {
            this.activeKeys.add(key);
            this.emit("keyPress", { key, code });
        }
        if (eventType === "keyup" && this.activeKeys.has(key)) {
            this.activeKeys.delete(key);
            this.emit("keyRelease", { key, code });
        }
    }
});

/***/ }),

/***/ "./src/hooks.js":
/*!**********************!*\
  !*** ./src/hooks.js ***!
  \**********************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
    get mainIndexUrl () {
        return Object.values(document.scripts).find(script => script?.src?.includes("index")).src
    },
    
    async getAllChunks () {
        let code = await fetch(this.mainIndexUrl)
        .then(res => res.text())
        .then(code => code.split('\n')[0]);

        let __vite__mapDeps = Function(code + `return __vite__mapDeps`)()
        __vite__mapDeps([1]);
        return __vite__mapDeps.f.filter(chunkUrl => chunkUrl.includes("js"));
    },

    safeImport (src) {
        return eval(`(async () => { return await import("${src}")})()`);
    },

    init: async function () {
        let allChunks = (await this.getAllChunks()).map(url => "https://" + location.host + "/" + url);
        allChunks.push(this.mainIndexUrl);
        allChunks = allChunks.filter(url => !url.includes("General")); // causes errors idk wtf
        let importedModules = await Promise.all(allChunks.map(url => this.safeImport(url)));
        let allModuleExports = importedModules.flatMap(module => Object.values(module));
        this.stores = Object.values(allModuleExports).filter(exports => exports?.$id).reduce((acc, exports) => (acc[exports.$id] = exports(), acc), {});
    }
});

/***/ }),

/***/ "./src/module/module.js":
/*!******************************!*\
  !*** ./src/module/module.js ***!
  \******************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Module)
/* harmony export */ });
/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ "./src/events.js");


class Module {
    constructor(name, category, options, keybind) {
        this.name = name;
        this.category = category;
        this.options = options;
        this.keybind = keybind;
        this.waitingForBind = false;
        this.isEnabled = false;
        this.toggle = this.toggle.bind(this);
    }

    onEnable () {}
    onDisable() {}
    onRender() {}
    onSettingUpdate() {}

    enable () {
        this.isEnabled = true;
        _events__WEBPACK_IMPORTED_MODULE_0__["default"].emit("module.update", this);
        this.onEnable();
    }

    disable () {
        this.isEnabled = false;
        _events__WEBPACK_IMPORTED_MODULE_0__["default"].emit("module.update", this);
        this.onDisable();
    }

    toggle () {
        if (this.isEnabled) {
            this.disable();
        } else {
            this.enable();
        }
    };
};

/***/ }),

/***/ "./src/module/moduleManager.js":
/*!*************************************!*\
  !*** ./src/module/moduleManager.js ***!
  \*************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../events */ "./src/events.js");
/* harmony import */ var _modules_visual_Arraylist__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/visual/Arraylist */ "./src/module/modules/visual/Arraylist.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../hooks */ "./src/hooks.js");
/* harmony import */ var _modules_visual_Watermark__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modules/visual/Watermark */ "./src/module/modules/visual/Watermark.js");
/* harmony import */ var _modules_visual_ClickGUI__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/visual/ClickGUI */ "./src/module/modules/visual/ClickGUI.js");
/* harmony import */ var _modules_movement_Airjump__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modules/movement/Airjump */ "./src/module/modules/movement/Airjump.js");
/* harmony import */ var _modules_misc_Instabreak__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modules/misc/Instabreak */ "./src/module/modules/misc/Instabreak.js");
/* harmony import */ var _modules_misc_SpoofBlock__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modules/misc/SpoofBlock */ "./src/module/modules/misc/SpoofBlock.js");
/* harmony import */ var _modules_misc_Nuker__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modules/misc/Nuker */ "./src/module/modules/misc/Nuker.js");
/* harmony import */ var _modules_misc_SpoofLevel__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./modules/misc/SpoofLevel */ "./src/module/modules/misc/SpoofLevel.js");
/* harmony import */ var _modules_misc_Emote__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./modules/misc/Emote */ "./src/module/modules/misc/Emote.js");
/* harmony import */ var _modules_misc_AdBypass__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./modules/misc/AdBypass */ "./src/module/modules/misc/AdBypass.js");
/* harmony import */ var _modules_movement_Velocity__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modules/movement/Velocity */ "./src/module/modules/movement/Velocity.js");
/* harmony import */ var _modules_combat_NoHitDelay__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./modules/combat/NoHitDelay */ "./src/module/modules/combat/NoHitDelay.js");
/* harmony import */ var _modules_movement_Fly__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./modules/movement/Fly */ "./src/module/modules/movement/Fly.js");
/* harmony import */ var _modules_movement_NoFall__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./modules/movement/NoFall */ "./src/module/modules/movement/NoFall.js");
/* harmony import */ var _modules_movement_Speed__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./modules/movement/Speed */ "./src/module/modules/movement/Speed.js");
/* harmony import */ var _modules_misc_FreeCoupons__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./modules/misc/FreeCoupons */ "./src/module/modules/misc/FreeCoupons.js");
/* harmony import */ var _modules_visual_Chams__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./modules/visual/Chams */ "./src/module/modules/visual/Chams.js");
/* harmony import */ var _modules_combat_Triggerbot__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./modules/combat/Triggerbot */ "./src/module/modules/combat/Triggerbot.js");
/* harmony import */ var _modules_movement_Scaffold__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./modules/movement/Scaffold */ "./src/module/modules/movement/Scaffold.js");
/* harmony import */ var _modules_misc_Fill__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./modules/misc/Fill */ "./src/module/modules/misc/Fill.js");
/* harmony import */ var _modules_movement_NoClip__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./modules/movement/NoClip */ "./src/module/modules/movement/NoClip.js");
/* harmony import */ var _modules_combat_Killaura__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./modules/combat/Killaura */ "./src/module/modules/combat/Killaura.js");
/* harmony import */ var _modules_visual_BlockOutline__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./modules/visual/BlockOutline */ "./src/module/modules/visual/BlockOutline.js");
/* harmony import */ var _modules_combat_TPAura__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./modules/combat/TPAura */ "./src/module/modules/combat/TPAura.js");
/* harmony import */ var _modules_misc_InstantRespawn__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./modules/misc/InstantRespawn */ "./src/module/modules/misc/InstantRespawn.js");





























/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
    modules: {},
    addModules: function (...modules) {
        for(const module of modules) this.modules[module.name] = module;
    },
    addModule: function (module) {
        this.modules[module.name] = module;
    },
    handleKeyPress: function (key) {
        for (let name in this.modules) {
            let module = this.modules[name];

            if (module.waitingForBind) {
                module.keybind = key;
                module.waitingForBind = false;
                
            } else if (module.keybind == key) {
                module.toggle();
            }
        }
    },

    init () {
        this.addModules(
            new _modules_visual_Arraylist__WEBPACK_IMPORTED_MODULE_1__["default"](),
            new _modules_visual_Watermark__WEBPACK_IMPORTED_MODULE_3__["default"](),
            new _modules_visual_ClickGUI__WEBPACK_IMPORTED_MODULE_4__["default"](),
            new _modules_movement_Airjump__WEBPACK_IMPORTED_MODULE_5__["default"](),
            new _modules_misc_Instabreak__WEBPACK_IMPORTED_MODULE_6__["default"](),
            new _modules_misc_SpoofBlock__WEBPACK_IMPORTED_MODULE_7__["default"](),
            new _modules_misc_Nuker__WEBPACK_IMPORTED_MODULE_8__["default"](),
            new _modules_misc_SpoofLevel__WEBPACK_IMPORTED_MODULE_9__["default"](),
            new _modules_misc_Emote__WEBPACK_IMPORTED_MODULE_10__["default"](),
            new _modules_misc_AdBypass__WEBPACK_IMPORTED_MODULE_11__["default"](),
            new _modules_movement_Velocity__WEBPACK_IMPORTED_MODULE_12__["default"](),
            new _modules_combat_NoHitDelay__WEBPACK_IMPORTED_MODULE_13__["default"](),
            new _modules_movement_Fly__WEBPACK_IMPORTED_MODULE_14__["default"](),
            new _modules_movement_NoFall__WEBPACK_IMPORTED_MODULE_15__["default"](),
            new _modules_movement_Speed__WEBPACK_IMPORTED_MODULE_16__["default"](),
            new _modules_misc_FreeCoupons__WEBPACK_IMPORTED_MODULE_17__["default"](),
            new _modules_visual_Chams__WEBPACK_IMPORTED_MODULE_18__["default"](),
            new _modules_combat_Triggerbot__WEBPACK_IMPORTED_MODULE_19__["default"](),
            new _modules_movement_Scaffold__WEBPACK_IMPORTED_MODULE_20__["default"](),
            new _modules_misc_Fill__WEBPACK_IMPORTED_MODULE_21__["default"](),
            new _modules_movement_NoClip__WEBPACK_IMPORTED_MODULE_22__["default"](),
            new _modules_combat_Killaura__WEBPACK_IMPORTED_MODULE_23__["default"](),
            new _modules_visual_BlockOutline__WEBPACK_IMPORTED_MODULE_24__["default"](),
            new _modules_combat_TPAura__WEBPACK_IMPORTED_MODULE_25__["default"](),
            new _modules_misc_InstantRespawn__WEBPACK_IMPORTED_MODULE_26__["default"]()
        );

        _events__WEBPACK_IMPORTED_MODULE_0__["default"].on("render", () => {
            for (let name in this.modules) {
                if (this.modules[name].isEnabled) {
                    this.modules[name].onRender();
                }
            }
        });

        _events__WEBPACK_IMPORTED_MODULE_0__["default"].on("keydown", this.handleKeyPress.bind(this));
        _events__WEBPACK_IMPORTED_MODULE_0__["default"].on("setting.update", () => {
            for (let name in this.modules) {
                if (this.modules[name].isEnabled) {
                    this.modules[name].onSettingUpdate();
                }
            }
        });

        
        this.modules["Arraylist"].enable();
        this.modules["Watermark"].enable();
    }
});

/***/ }),

/***/ "./src/module/modules/combat/Killaura.js":
/*!***********************************************!*\
  !*** ./src/module/modules/combat/Killaura.js ***!
  \***********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Killaura)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");
/* harmony import */ var _moduleManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../moduleManager */ "./src/module/moduleManager.js");
/* harmony import */ var _utils_gameUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../utils/gameUtils */ "./src/utils/gameUtils.js");





class Killaura extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor() {
        super("Killaura", "Combat", {
            "Y Offset": 1.62,
            "Reach": 5,
            "Delay": 100
        });
        this.lastExecutionTime = null;
    }

    onRender() {
        const currentTime = Date.now();
        if (!_hooks__WEBPACK_IMPORTED_MODULE_1__["default"]?.stores?.gameState?.gameWorld?.player) return;
        if (currentTime - this.lastExecutionTime >= this.options["Delay"]) {
            this.lastExecutionTime = currentTime;
            this.tryKill();
        }
    }

    tryKill () {
        let reach = this.options["Reach"];
        let yOffset = this.options["Y Offset"];

        let targetPlayer = _utils_gameUtils__WEBPACK_IMPORTED_MODULE_3__["default"].getClosestPlayer();
        var playerPosition = {
            x: _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.position.x,
            y: _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.position.y + yOffset,
            z: _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.position.z
        };

        var targetPosition = targetPlayer.position;
        var direction = {
            x: playerPosition.x - targetPosition.x,
            y: playerPosition.y - targetPosition.y,
            z: playerPosition.z - targetPosition.z
        };

        var length = Math.sqrt(direction.x * direction.x + direction.y * direction.y + direction.z * direction.z);

        if (length !== 0) {
            direction.x /= length;
            direction.y /= length;
            direction.z /= length;
        }

        direction.x = -direction.x;
        direction.y = -direction.y;
        direction.z = -direction.z;

        var distance = Math.sqrt(
            Math.pow(playerPosition.x - targetPosition.x, 2) +
            Math.pow(playerPosition.y - targetPosition.y, 2) +
            Math.pow(playerPosition.z - targetPosition.z, 2)
        );

        if (distance < reach) {
            _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.server.sendData(61, [
                playerPosition.x,
                playerPosition.y,
                playerPosition.z,
                direction.x,
                direction.y,
                direction.z,
                _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.time.localServerTimeMs,
                targetPlayer.id
            ]);
        }
    }
}

/***/ }),

/***/ "./src/module/modules/combat/NoHitDelay.js":
/*!*************************************************!*\
  !*** ./src/module/modules/combat/NoHitDelay.js ***!
  \*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ NoHitDelay)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");



class NoHitDelay extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor() {
        super("NoHitDelay", "Combat");
    }

    get hitSystem () {
        return _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.systemsManager.activeExecuteSystems.find(sys => sys?.lastAttackTimeMs !== undefined);
    }

    onEnable() {
        this.hitSystem.__defineGetter__("attackTimeDelayMs", () => 0);
        this.hitSystem.__defineSetter__("attackTimeDelayMs", () => 0);
    }

    onDisable() {
        delete this.hitSystem.attackTimeDelayMs;
        this.hitSystem.attackTimeDelayMs = 750;
    }
}

/***/ }),

/***/ "./src/module/modules/combat/TPAura.js":
/*!*********************************************!*\
  !*** ./src/module/modules/combat/TPAura.js ***!
  \*********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ TPAura)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");
/* harmony import */ var _moduleManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../moduleManager */ "./src/module/moduleManager.js");
/* harmony import */ var _utils_gameUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../utils/gameUtils */ "./src/utils/gameUtils.js");





class TPAura extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor() {
        super("TPAura", "Combat", {
            "Y Offset": 1.62,
            "Radius": 1,
            "Delay": 100
        });
        this.lastExecutionTime = null;
    }

    onRender() {
        const currentTime = Date.now();
        if (!_hooks__WEBPACK_IMPORTED_MODULE_1__["default"]?.stores?.gameState?.gameWorld?.player) return;
        if (currentTime - this.lastExecutionTime >= this.options["Delay"]) {
            this.lastExecutionTime = currentTime;
            this.tryKill();
        }
    }

    tryKill () {
        let radius = this.options["Radius"];
        let yOffset = this.options["Y Offset"];

        let targetPlayer = _utils_gameUtils__WEBPACK_IMPORTED_MODULE_3__["default"].getClosestPlayer();

        if (!targetPlayer?.position) return;

        var playerPosition = {
            x: _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.position.x,
            y: _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.position.y + yOffset,
            z: _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.position.z
        };

        var targetPosition = targetPlayer.position;
        var direction = {
            x: playerPosition.x - targetPosition.x,
            y: playerPosition.y - targetPosition.y,
            z: playerPosition.z - targetPosition.z
        };

        var length = Math.sqrt(direction.x * direction.x + direction.y * direction.y + direction.z * direction.z);

        if (length !== 0) {
            direction.x /= length;
            direction.y /= length;
            direction.z /= length;
        }

        direction.x = -direction.x;
        direction.y = -direction.y;
        direction.z = -direction.z;

        var distance = Math.sqrt(
            Math.pow(playerPosition.x - targetPosition.x, 2) +
            Math.pow(playerPosition.y - targetPosition.y, 2) +
            Math.pow(playerPosition.z - targetPosition.z, 2)
        );

        if (distance > radius) {
            _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.position = targetPlayer.position.clone();
        }

        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.server.sendData(61, [
            playerPosition.x,
            playerPosition.y,
            playerPosition.z,
            direction.x,
            direction.y,
            direction.z,
            _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].gameWorld.time.localServerTimeMs,
            targetPlayer.id
        ]);
    }
}

/***/ }),

/***/ "./src/module/modules/combat/Triggerbot.js":
/*!*************************************************!*\
  !*** ./src/module/modules/combat/Triggerbot.js ***!
  \*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Triggerbot)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");



class Triggerbot extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor() {
        super("Triggerbot", "Combat", {
            "Interval": 50
        });
        this.lastExecutionTime = 0;
    }

    get hitSystem () {
        return _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.systemsManager.activeExecuteSystems.find(sys => sys?.lastAttackTimeMs !== undefined);
    }

    onRender() {
        const currentTime = Date.now();

        if (!_hooks__WEBPACK_IMPORTED_MODULE_1__["default"]?.stores?.gameState?.gameWorld?.player) return;
        if (currentTime - this.lastExecutionTime >= this.options["Interval"] && this.hitSystem?.hitPlayers) {
            this.lastExecutionTime = currentTime;
            this.hitSystem.hitPlayers()
        }
    }
}

/***/ }),

/***/ "./src/module/modules/misc/AdBypass.js":
/*!*********************************************!*\
  !*** ./src/module/modules/misc/AdBypass.js ***!
  \*********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ AdBypass)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");



class AdBypass extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor() {
        super("AdBypass", "Misc");
    }

    onEnable() {
        this._reward = this._reward || _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.user.rewardCommercialVideoWrapper;
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.user.rewardCommercialVideoWrapper = () => true;
    }

    onDisable() {
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.user.rewardCommercialVideoWrapper = () => this._reward;
    }
}

/***/ }),

/***/ "./src/module/modules/misc/Emote.js":
/*!******************************************!*\
  !*** ./src/module/modules/misc/Emote.js ***!
  \******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Emote)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");



class Emote extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor() {
        super("Emote", "Misc", {
            "Emote name": "No",
            "Infinity": false
        });
    }

    onEnable() {
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.roomManager.ws.sendData(77, {
            name: this.options["Emote name"],
            infinity: this.options["Infinity"]
        })
    }
}

/***/ }),

/***/ "./src/module/modules/misc/Fill.js":
/*!*****************************************!*\
  !*** ./src/module/modules/misc/Fill.js ***!
  \*****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Fill)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");
/* harmony import */ var _moduleManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../moduleManager */ "./src/module/moduleManager.js");




class Fill extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor() {
        super("Fill", "Misc", {
            "Radius": 4,
            "Delay": 120
        });
        this.blockIndex = 0;
    }

    onEnable() {
        this.blockIndex = 0;
        let radius = this.options["Radius"];
        let blockUnderPlayer = Object.values(_hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.position).map(Math.floor);
        blockUnderPlayer[1]--;

        let dx = -radius, dy = -radius, dz = -radius;
        let blocks = [];
        
        while (dx <= radius) {
            while (dy <= radius) {
                while (dz <= radius) {
                    if (Math.sqrt(dx * dx + dy * dy + dz * dz) <= radius) {
                        let blockPos = [blockUnderPlayer[0] + dx, blockUnderPlayer[1] + dy, blockUnderPlayer[2] + dz];
                        let blockID = _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.chunkManager.getBlock(...blockPos);
                        let replaceable = _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.allItems[blockID]?.replaceable || false;

                        if (replaceable || blockID == 0) {
                            blocks.push(blockPos);
                        }
                    }
                    dz++;
                }
                dz = -radius;
                dy++;
            }
            dy = -radius;
            dx++;
        }
        
        let context = this;
        let delay = this.options["Delay"];
        function placeNextBlock() {
            let blockId = _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.currentHandItemId;
            if (context.blockIndex < blocks.length) {
                const [newX, newY, newZ] = blocks[context.blockIndex];
                setTimeout(() => {
                    _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.chunkManager.placeBlockWithMsgSending(newX, newY, newZ, blockId);
                    context.blockIndex++;
                    placeNextBlock();
                }, delay);
            } else {
                context.blockIndex = 0;
                _moduleManager__WEBPACK_IMPORTED_MODULE_2__["default"].modules["Fill"].disable();
            }
        }
        placeNextBlock();
    }
}

/***/ }),

/***/ "./src/module/modules/misc/FreeCoupons.js":
/*!************************************************!*\
  !*** ./src/module/modules/misc/FreeCoupons.js ***!
  \************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ FreeCoupons)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");
/* harmony import */ var _moduleManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../moduleManager */ "./src/module/moduleManager.js");




class FreeCoupons extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor() {
        super("FreeCoupons", "Misc");
        
    }

    onEnable() {
        fetch("https://api.vectaria.io/v2/users/getAdCoupons", {
            "credentials": "include"
        }).then(response => {
            if (!response.ok) {
                alert("Reached Daily limit");
            } else {
                _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.user.user.coupons += 10;
            }
        })
        _moduleManager__WEBPACK_IMPORTED_MODULE_2__["default"].modules["FreeCoupons"].disable();
    }
}

/***/ }),

/***/ "./src/module/modules/misc/Instabreak.js":
/*!***********************************************!*\
  !*** ./src/module/modules/misc/Instabreak.js ***!
  \***********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Instabreak)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");



class Instabreak extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor() {
        super("Instabreak", "Misc", null);
        this.originalHardness = new Map();
    }

    onEnable() {
        Object.values(_hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.allItems).forEach((block) => {
            if (block?.destruction) {
                if (!this.originalHardness.has(block)) {
                    this.originalHardness.set(block, block.destruction.durability);
                }
                block.destruction.durability = 0;
            }
        });
    }

    onDisable() {
        Object.values(_hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.allItems).forEach((block) => {
            if (block?.destruction && this.originalHardness.has(block)) {
                block.destruction.durability = this.originalHardness.get(block);
            }
        });
    }
}

/***/ }),

/***/ "./src/module/modules/misc/InstantRespawn.js":
/*!***************************************************!*\
  !*** ./src/module/modules/misc/InstantRespawn.js ***!
  \***************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ InstantRespawn)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");



class InstantRespawn extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor() {
        super("InstantRespawn", "Misc", null);
    }

    onRender() {
        if (!_hooks__WEBPACK_IMPORTED_MODULE_1__["default"]?.stores?.gameState?.gameWorld?.player) return;

        if (_hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.playerState.isDeath) {
            _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.playerState.respawn();
            _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.playerState.isDeath = false;
        }
    }
}

/***/ }),

/***/ "./src/module/modules/misc/Nuker.js":
/*!******************************************!*\
  !*** ./src/module/modules/misc/Nuker.js ***!
  \******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Nuker)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");
/* harmony import */ var _moduleManager__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../moduleManager */ "./src/module/moduleManager.js");




class Nuker extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor() {
        super("Nuker", "Misc", {
            "Radius": 4,
            "Delay": 120,
            "Target Selected Block": false,
            "Auto Disable": false
        });
        this.blockIndex = 0;
    }

    get selectedBlock () {
        return _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld?.systemsManager.activeExecuteSystems.find(sys => sys?.currBlockPos !== undefined) || undefined;
    }

    onEnable() {
        this.blockIndex = 0;
        let radius = this.options["Radius"];
        let blockUnderPlayer = Object.values(_hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.position).map(Math.floor);
        blockUnderPlayer[1]--;

        if (this.options["Target Selected Block"]) {
            blockUnderPlayer = [...this.selectedBlock.currBlockPos];
        }

        let dx = -radius, dy = -radius, dz = -radius;
        let blocks = [];
        
        while (dx <= radius) {
            while (dy <= radius) {
                while (dz <= radius) {
                    if (Math.sqrt(dx * dx + dy * dy + dz * dz) <= radius) {
                        let blockPos = [blockUnderPlayer[0] + dx, blockUnderPlayer[1] + dy, blockUnderPlayer[2] + dz];
                        let blockID = _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.chunkManager.getBlock(...blockPos);

                        if (blockID !== 0) {
                            blocks.push(blockPos);
                        }
                    }
                    dz++;
                }
                dz = -radius;
                dy++;
            }
            dy = -radius;
            dx++;
        }
        
        let context = this;
        let options = this.options;
        function breakNextBlock() {
            if (context.blockIndex < blocks.length) {
                const [newX, newY, newZ] = blocks[context.blockIndex];
                setTimeout(() => {
                    _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.chunkManager.placeBlockWithMsgSending(newX, newY, newZ, 0);
                    context.blockIndex++;
                    breakNextBlock();
                }, options["Delay"]);
            } else {
                context.blockIndex = 0;
                if (options["Auto Disable"]) {
                    _moduleManager__WEBPACK_IMPORTED_MODULE_2__["default"].modules["Nuker"].disable();
                } else {
                    context.onEnable();
                }
            }
        }

        breakNextBlock();
    }
}

/***/ }),

/***/ "./src/module/modules/misc/SpoofBlock.js":
/*!***********************************************!*\
  !*** ./src/module/modules/misc/SpoofBlock.js ***!
  \***********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ SpoofBlock)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");



class SpoofBlock extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor() {
        super("SpoofBlock", "Misc");
        this.blockID = 0;
    }

    onRender () {
        if (!_hooks__WEBPACK_IMPORTED_MODULE_1__["default"]?.stores?.gameState?.gameWorld?.player) return;
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.itemsManager[1][_hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.itemsManager.selectedItem][0] = this.blockID;
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.currentHandItemId = this.blockID;
    }

    onEnable () {
        let moduleContext = this;
        let menuContainer = document.createElement("div");
        menuContainer.className = "blockSelector";
        document.body.appendChild(menuContainer);

        let itemContainer = document.createElement("div");
        Object.assign(itemContainer.style, {
            display: "flex",
            flexWrap: "wrap",
            justifyContent: "center"
        });
        menuContainer.appendChild(itemContainer);

        function addButton(id) {
            let button = document.createElement("button");
            Object.assign(button.style, {
                border: "none",
                background: "none",
                margin: "10px"
            });
            let img = document.createElement("img");
            Object.assign(img.style, {
                width: "40px",
                height: "40px",
                objectFit: "cover"
            });
            img.src = $assetsUrls["defaultSurvival/renderItems/" + id + ".png"];
            button.appendChild(img);
            button.addEventListener("click", () => {
                _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.itemsManager[1][_hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.itemsManager.selectedItem][0] = id;
                _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.currentHandItemId = id;
                moduleContext.blockID = id;
                menuContainer.remove();
            });
            itemContainer.appendChild(button);
        }

        Object.keys(_hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.allItems).forEach(key => addButton(key));
    }
}

/***/ }),

/***/ "./src/module/modules/misc/SpoofLevel.js":
/*!***********************************************!*\
  !*** ./src/module/modules/misc/SpoofLevel.js ***!
  \***********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ SpoofLevel)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");



class SpoofLevel extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor() {
        super("SpoofLevel", "Misc", {
            "Level": 999
        });
        this.ogLevel;
    }

    onEnable() {
        if (_hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.user?.user?.lvl) this.ogLevel = _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.user.user.lvl;
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.user.user = _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.user.user || {};
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.user.user.lvl = this.options["Level"];
    }

    onDisable() {
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.user.user = _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.user.user || {};
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.user.user.lvl = this.ogLevel;
    }
}

/***/ }),

/***/ "./src/module/modules/movement/Airjump.js":
/*!************************************************!*\
  !*** ./src/module/modules/movement/Airjump.js ***!
  \************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Airjump)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");



class Airjump extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor () {
        super("Airjump", "Movement", null)
    }

    onEnable () {
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.collision.__defineGetter__("isGrounded", () => true);
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.collision.__defineSetter__("isGrounded", () => true);
    }

    onDisable () {
        delete _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.collision.isGrounded;
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.collision.isGrounded = true;
    }
};

/***/ }),

/***/ "./src/module/modules/movement/Fly.js":
/*!********************************************!*\
  !*** ./src/module/modules/movement/Fly.js ***!
  \********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Fly)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");



class Fly extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor () {
        super("Fly", "Movement", {
            "Vertical Speed": 5
        })
    }

    onEnable () {
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.velocity.gravity = 0;
    }

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

    onDisable () {
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.velocity.gravity = 23;
    }
};

/***/ }),

/***/ "./src/module/modules/movement/NoClip.js":
/*!***********************************************!*\
  !*** ./src/module/modules/movement/NoClip.js ***!
  \***********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ NoClip)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");



class NoClip extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor() {
        super("NoClip", "Movement");
        this.realGameMode = 0;
    }

    onEnable() {
        this.realGameMode = _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.gameMode;
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.server.switchGameMode(3);
    }

    onDisable() {
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.server.switchGameMode(this.realGameMode);
    }
}

/***/ }),

/***/ "./src/module/modules/movement/NoFall.js":
/*!***********************************************!*\
  !*** ./src/module/modules/movement/NoFall.js ***!
  \***********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ NoFall)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");



class NoFall extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor () {
        super("NoFall", "Movement")
    }

    onRender () {
        if (!_hooks__WEBPACK_IMPORTED_MODULE_1__["default"]?.stores?.gameState?.gameWorld?.player) return;
        
        let blockPos = _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.position.clone().floor();
        blockPos.y--;
        let blockDirectlyUnderPlayer = !!_hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.chunkManager.getBlock(...blockPos);
        blockPos.y -= 2;
        let blockUnderPlayer = !!_hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.chunkManager.getBlock(...blockPos);


        if (blockUnderPlayer && _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.velocity.velVec3.y < -6 && !blockDirectlyUnderPlayer) {
            _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.position.y = blockPos.y + 1.5;
            _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.velocity.velVec3.y = 0.1;
        }
    }
};

/***/ }),

/***/ "./src/module/modules/movement/Scaffold.js":
/*!*************************************************!*\
  !*** ./src/module/modules/movement/Scaffold.js ***!
  \*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Scaffold)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");



class Scaffold extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor () {
        super("Scaffold", "Movement", null)
    }

    onRender () {
        let blockPos = Object.values(_hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.position).splice(0, 3).map(Math.floor);
        
        blockPos[1]--;

        let holdingBlockID = _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.currentHandItemId;
        let blockUnderID = _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.chunkManager.getBlock(...blockPos);
        let replaceable = _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.allItems[blockUnderID]?.replaceable || false;
        
        if ((blockUnderID == 0 || replaceable) && holdingBlockID) {
            _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.chunkManager.placeBlockWithMsgSending(...blockPos, holdingBlockID);
        }
    }
};

/***/ }),

/***/ "./src/module/modules/movement/Speed.js":
/*!**********************************************!*\
  !*** ./src/module/modules/movement/Speed.js ***!
  \**********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Speed)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");



class Speed extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor () {
        super("Speed", "Movement", {
            "Speed": 15
        })
    }

    onEnable () {
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.velocity.__defineGetter__("moveSpeed", () => this.options["Speed"]);
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.velocity.__defineSetter__("moveSpeed", () => this.options["Speed"]);
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.velocity.__defineGetter__("fastMoveSpeed", () => this.options["Speed"]);
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.velocity.__defineSetter__("fastMoveSpeed", () => this.options["Speed"]);
    }

    onDisable () {
        delete _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.velocity.moveSpeed;
        delete _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.velocity.fastMoveSpeed;
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.velocity.moveSpeed = 4.5;
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.player.velocity.fastMoveSpeed = 6.4;
    }
};

/***/ }),

/***/ "./src/module/modules/movement/Velocity.js":
/*!*************************************************!*\
  !*** ./src/module/modules/movement/Velocity.js ***!
  \*************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Velocity)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");



class Velocity extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor () {
        super("Velocity", "Movement", null)
    }

    get serverPacketHandlers () {
        return _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.server.msgsListeners
    }

    get velocityPacket () {
        return Object.keys(this.serverPacketHandlers).find(key => this.serverPacketHandlers[key].toString().includes('velocity'));
    }

    onEnable () {
        this.velocityHandler = this.velocityHandler || this.serverPacketHandlers[this.velocityPacket];
        this.serverPacketHandlers[this.velocityPacket] = () => {};
    }

    onDisable () {
        this.serverPacketHandlers[this.velocityPacket] = this.velocityHandler;
    }
};

/***/ }),

/***/ "./src/module/modules/visual/Arraylist.js":
/*!************************************************!*\
  !*** ./src/module/modules/visual/Arraylist.js ***!
  \************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ ArrayList)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _moduleManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../moduleManager */ "./src/module/moduleManager.js");
/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../events */ "./src/events.js");




class ArrayList extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor () {
        super("Arraylist", "Visual");
        this.namesMap = {};
        this.arraylistContainer = null;
        this.initialized = false;
    }

    update(name, enabled) {
        if (enabled) {
            if (!this.namesMap[name]) {
                let moduleElement = document.createElement("div");
                moduleElement.style.backgroundColor = "rgba(10, 10, 10, 0.7)";
                moduleElement.style.color = "white";
                moduleElement.style.padding = "2px 10px 2px 10px";
                moduleElement.style.display = "flex";
                moduleElement.style.alignItems = "center";
                moduleElement.style.boxSizing = "border-box";
                moduleElement.style.margin = "0";
                moduleElement.style.fontFamily = "'Product Sans', sans-serif";
                moduleElement.style.boxShadow = "rgb(0, 0, 0, 0.05) -5px 1px";
                moduleElement.style.transition = "max-height 0.2s ease-in-out, opacity 0.2s ease-in-out";
                moduleElement.style.overflow = "hidden";
                moduleElement.style.maxHeight = "0";
                moduleElement.style.opacity = "0";

                let textElem = document.createElement("span");
                textElem.style.fontWeight = "800";
                textElem.style.fontSize = "16px";
                textElem.style.backgroundImage = "var(--Fentify-accent-color)";
                textElem.style.color = "transparent";
                textElem.style.backgroundClip = "text";
                textElem.innerHTML = name;
                moduleElement.appendChild(textElem);

                this.arraylistContainer.appendChild(moduleElement);
                
                setTimeout(() => {
                    moduleElement.style.maxHeight = "50px";
                    moduleElement.style.opacity = "1";
                }, 1);

                this.namesMap[name] = moduleElement;
            }
        } else {
            if (this.namesMap[name]) {
                const moduleElement = this.namesMap[name];
                moduleElement.style.maxHeight = "0";
                moduleElement.style.opacity = "0";

                setTimeout(() => {
                    this.arraylistContainer.removeChild(moduleElement);
                    delete this.namesMap[name];
                }, 5);
            }
        }

        const sortedElements = Object.values(this.namesMap).sort((a, b) => this.measureElementWidth(b) - this.measureElementWidth(a));
        this.arraylistContainer.innerHTML = '';

        sortedElements.forEach(element => {
            this.arraylistContainer.appendChild(element);
        });
    }

    onEnable() {
        if (!this.initialized) {
            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(--Fentify-accent-color)";
            this.arraylistContainer.style.borderImageSlice = "1";
            this.arraylistContainer.style.borderBottom = "0";
            this.arraylistContainer.style.borderLeft = "0";

            document.body.appendChild(this.arraylistContainer);

            _events__WEBPACK_IMPORTED_MODULE_2__["default"].on("module.update", (module) => {
                this.update(module.name, module.isEnabled);
            });

            this.initialized = true;
        } else {
            this.arraylistContainer.style.opacity = "1";
        }
    }

    measureElementWidth(element) {
        return element.getBoundingClientRect().width;
    }

    onDisable() {
        this.arraylistContainer.style.opacity = "0";
    }
}

/***/ }),

/***/ "./src/module/modules/visual/BlockOutline.js":
/*!***************************************************!*\
  !*** ./src/module/modules/visual/BlockOutline.js ***!
  \***************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ BlockOutline)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");
/* harmony import */ var _utils_gameUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils/gameUtils */ "./src/utils/gameUtils.js");




class BlockOutline extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor () {
        super("Block Outline", "Movement", {
            "Outline Color": "#81e1ff",
        })
    }

    get selectedBlock () {
        return _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld?.systemsManager.activeExecuteSystems.find(sys => sys?.currBlockPos !== undefined) || undefined;
    }

    onRender () {
        if (this?.selectedBlock?.mesh) {
            let selectedColor = _utils_gameUtils__WEBPACK_IMPORTED_MODULE_2__["default"].hexToRgb(this.options["Outline Color"]);
            
            if (this.selectedBlock.mesh.material.color.r !== selectedColor.r) {
                this.onEnable();
            }
        }
    }

    onEnable () {
        let selectedColor = _utils_gameUtils__WEBPACK_IMPORTED_MODULE_2__["default"].hexToRgb(this.options["Outline Color"]);
        let selectedBlockMesh = this.selectedBlock.mesh;
        Object.keys(selectedColor).forEach(function (key) {
            selectedBlockMesh.material.color[key] = selectedColor[key];
        })
    }

    onDisable () {
        this.selectedBlock.mesh.material.color.r = 1;
        this.selectedBlock.mesh.material.color.g = 1;
        this.selectedBlock.mesh.material.color.b = 1;
    }
};

/***/ }),

/***/ "./src/module/modules/visual/Chams.js":
/*!********************************************!*\
  !*** ./src/module/modules/visual/Chams.js ***!
  \********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Chams)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../hooks */ "./src/hooks.js");



class Chams extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor () {
        super("Chams", "Visual", null)
    }

    onRender () {
        if (!_hooks__WEBPACK_IMPORTED_MODULE_1__["default"]?.stores?.gameState?.gameWorld?.player) return;
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.server.playerIdToData.forEach(player => {
            player.headObj3D.material.depthTest = false;
            player.headObj3D.material.wireframe = true;
        });
    }

    onDisable () {
        if (!_hooks__WEBPACK_IMPORTED_MODULE_1__["default"]?.stores?.gameState?.gameWorld?.player) return;
        _hooks__WEBPACK_IMPORTED_MODULE_1__["default"].stores.gameState.gameWorld.server.playerIdToData.forEach(player => {
            player.headObj3D.material.depthTest = true;
            player.headObj3D.material.wireframe = false;
        });
    }
};

/***/ }),

/***/ "./src/module/modules/visual/ClickGUI.js":
/*!***********************************************!*\
  !*** ./src/module/modules/visual/ClickGUI.js ***!
  \***********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ ClickGUI)
/* harmony export */ });
/* harmony import */ var _module_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module.js */ "./src/module/module.js");
/* harmony import */ var _moduleManager_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../moduleManager.js */ "./src/module/moduleManager.js");
/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../events */ "./src/events.js");
/* harmony import */ var _components_Panel_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/Panel.js */ "./src/module/modules/visual/components/Panel.js");
/* harmony import */ var _styles_clickgui_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./styles/clickgui.css */ "./src/module/modules/visual/styles/clickgui.css");






class ClickGUI extends _module_js__WEBPACK_IMPORTED_MODULE_0__["default"] {
    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": true
        }, "ShiftRight");

        this.GUILoaded = false;
        this.panels = [];
        this.blurredBackground = null;
        this.updateColors();
    }

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

    updateColors() {
        document.body.style.setProperty('--Fentify-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();

        if (!this.GUILoaded) {
            this.setupBackground();
            this.createPanels();
            this.setupEventListeners();
            this.GUILoaded = true;
            this.updateAnimations();
        } else {
            this.showGUI();
            this.updateAnimations();
        }
    }

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

    createPanels() {
        const panelConfigs = [
            { 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" } }
        ];

        this.panels.forEach(panel => {
            if (panel.panel && panel.panel.parentNode) {
                panel.panel.parentNode.removeChild(panel.panel);
            }
        });
        this.panels = [];

        panelConfigs.forEach(config => {
            const panel = new _components_Panel_js__WEBPACK_IMPORTED_MODULE_3__["default"](config.title, config.position);
            this.panels.push(panel);
        });

        const modulesByCategory = {};
        Object.values(_moduleManager_js__WEBPACK_IMPORTED_MODULE_1__["default"].modules).forEach(module => {
            if (!modulesByCategory[module.category]) {
                modulesByCategory[module.category] = [];
            }
            modulesByCategory[module.category].push(module);
        });

        Object.entries(modulesByCategory).forEach(([category, modules]) => {
            const panel = this.panels.find(p => p.header.textContent === category);
            if (!panel) return;

            modules.sort((a, b) => b.name.length - a.name.length);
            modules.forEach(module => panel.addButton(module));
        });
    }

    setupEventListeners() {
        _events__WEBPACK_IMPORTED_MODULE_2__["default"].on("module.update", (module) => {
            const panel = this.panels.find(p => p.header.textContent === module.category);
            if (!panel) return;
            
            const button = panel.buttons.find(btn => btn.textContent === module.name);
            if (button) button.classList.toggle("enabled", module.isEnabled);
        });
    }

    showGUI() {
        this.panels.forEach(panel => panel.show());
        this.blurredBackground.style.display = "block";
    }

    onDisable() {
        this.panels.forEach(panel => panel.hide());
        this.blurredBackground.style.display = "none";
    }

    onSettingUpdate() {
        this.updateColors();
        this.updateAnimations();
    }
}

/***/ }),

/***/ "./src/module/modules/visual/Watermark.js":
/*!************************************************!*\
  !*** ./src/module/modules/visual/Watermark.js ***!
  \************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Watermark)
/* harmony export */ });
/* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../module */ "./src/module/module.js");


class Watermark extends _module__WEBPACK_IMPORTED_MODULE_0__["default"] {
    constructor () {
        super("Watermark", "Visual", {
            "Text": "Fentify"
        })
    }

    onSettingUpdate() {
        let watermarkElement = document.querySelector(".Fentify-overlay-title");
        if(watermarkElement) watermarkElement.textContent = this.options["Text"];
    }

    onEnable() {
        let watermarkElement = document.querySelector(".Fentify-overlay-title");
        if (!watermarkElement) {
            watermarkElement = document.createElement("div");
            watermarkElement.className = "Fentify-overlay-title";
            watermarkElement.textContent = this.options["Text"];
            watermarkElement.style.position = "absolute";
            watermarkElement.style.top = "0";
            watermarkElement.style.left = "0";
            watermarkElement.style.padding = "0.5em";
            watermarkElement.style.userSelect = "none";
            watermarkElement.style.display = "none";
            watermarkElement.style.zIndex = "1000";
            watermarkElement.style.textShadow = "var(--Fentify-accent-color) 0px 0px 10px";
            watermarkElement.style.fontFamily = "'Product Sans', sans-serif";
            watermarkElement.style.fontSize = "24px";
            watermarkElement.style.background = "var(--Fentify-accent-color)";
            watermarkElement.style.backgroundClip = "text";
            watermarkElement.style.webkitFontSmoothing = "antialiased";
            watermarkElement.style.webkitTextFillColor = "transparent";
            document.body.appendChild(watermarkElement);
        }

        document.querySelector(".Fentify-overlay-title").style.display = "flex";
    }

    onDisable() {
        document.querySelector(".Fentify-overlay-title").style.display = "none";
    }
};

/***/ }),

/***/ "./src/module/modules/visual/components/ModuleSettings.js":
/*!****************************************************************!*\
  !*** ./src/module/modules/visual/components/ModuleSettings.js ***!
  \****************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ ModuleSettings)
/* harmony export */ });
/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../events */ "./src/events.js");


class ModuleSettings {
    constructor(module, container) {
        this.module = module;
        this.container = container;
        this.components = [];
        this.initialized = false;
        this.isOpen = false;
    }

    initialize() {
        if (this.initialized || !this.module?.options) return;
        
        Object.keys(this.module.options).forEach(key => {
            const settingValue = this.module.options[key];
            const settingType = typeof settingValue;

            if (key.toLowerCase().includes("color")) {
                this.addColorPicker(key);
            } else if (settingType === "boolean" || settingValue === "true" || settingValue === "false") {
                this.addCheckbox(key);
            } else if (settingType === "string") {
                this.addStringInput(key);
            } else {
                this.addNumberInput(key);
            }
        });

        this.components.forEach(component => component.style.display = "none");
        this.initialized = true;
    }

    toggle() {
        this.isOpen = !this.isOpen;
        this.components.forEach(component => {
            component.style.display = this.isOpen ? "flex" : "none";
            if (this.isOpen) {
                this.container.style.marginBottom = "5px";
            } else {
                this.container.style.marginBottom = "0px";
            }
        });
    }

    addNumberInput(name) {
        const container = document.createElement("div");
        container.className = "gui-setting-container";

        const label = document.createElement("span");
        label.className = "gui-setting-label";
        label.textContent = name;

        const input = document.createElement("input");
        input.type = "text";
        input.className = "gui-text-input";
        input.value = this.module.options[name];

        let lastValidValue = input.value;

        input.addEventListener("input", () => {
            const value = input.value.trim();
            if (!isNaN(value) && value !== "") {
                lastValidValue = value;
                this.module.options[name] = value;
                _events__WEBPACK_IMPORTED_MODULE_0__["default"].emit("setting.update", this.module);
            }
        });

        input.addEventListener("blur", () => {
            if (isNaN(input.value) || input.value.trim() === "") {
                input.value = lastValidValue;
            }
        });

        input.addEventListener("keydown", (e) => {
            if (e.key === "Enter") {
                input.blur();
            }
        });

        container.appendChild(label);
        container.appendChild(input);
        this.container.appendChild(container);
        this.components.push(container);
    }

    addStringInput(name) {
        const container = document.createElement("div");
        container.className = "gui-setting-container";

        const label = document.createElement("span");
        label.className = "gui-setting-label";
        label.textContent = name;

        const input = document.createElement("input");
        input.type = "text";
        input.className = "gui-text-input";
        input.value = this.module.options[name];

        input.addEventListener("input", () => {
            const value = input.value.trim();
            this.module.options[name] = value;
            _events__WEBPACK_IMPORTED_MODULE_0__["default"].emit("setting.update", this.module);
        });

        container.appendChild(label);
        container.appendChild(input);
        this.container.appendChild(container);
        this.components.push(container);
    }

    addCheckbox(name) {
        const container = document.createElement("div");
        container.className = "gui-setting-container";

        const label = document.createElement("span");
        label.className = "gui-setting-label";
        label.textContent = name;

        const checkbox = document.createElement("div");
        checkbox.className = "gui-checkbox";
        checkbox.classList.toggle("enabled", this.module.options[name] === true || this.module.options[name] === "true");

        checkbox.addEventListener("click", () => {
            const wasChecked = checkbox.classList.contains("enabled");
            checkbox.classList.toggle("enabled");
            this.module.options[name] = (!wasChecked).toString();
            _events__WEBPACK_IMPORTED_MODULE_0__["default"].emit("setting.update", this.module);
        });

        container.appendChild(label);
        container.appendChild(checkbox);
        this.container.appendChild(container);
        this.components.push(container);
    }

    addColorPicker(name) {
        const container = document.createElement("div");
        container.className = "gui-setting-container";

        const label = document.createElement("span");
        label.className = "gui-setting-label";
        label.textContent = name;

        const colorPickerBg = document.createElement("div");
        colorPickerBg.className = "gui-color-picker";
        colorPickerBg.style.background = this.module.options[name];

        const colorPicker = document.createElement("input");
        colorPicker.type = "color";
        colorPicker.className = "gui-color-input";
        colorPickerBg.appendChild(colorPicker);

        colorPicker.addEventListener("input", (event) => {
            colorPickerBg.style.background = event.target.value;
            this.module.options[name] = event.target.value;
            _events__WEBPACK_IMPORTED_MODULE_0__["default"].emit("setting.update", this.module);
        });

        container.appendChild(label);
        container.appendChild(colorPickerBg);
        this.container.appendChild(container);
        this.components.push(container);
    }
}


/***/ }),

/***/ "./src/module/modules/visual/components/Panel.js":
/*!*******************************************************!*\
  !*** ./src/module/modules/visual/components/Panel.js ***!
  \*******************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (/* binding */ Panel)
/* harmony export */ });
/* harmony import */ var _ModuleSettings_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ModuleSettings.js */ "./src/module/modules/visual/components/ModuleSettings.js");


class Panel {
    constructor(title, position = { top: "200px", left: "200px" }) {
        this.panel = document.createElement("div");
        this.panel.className = "gui-panel";
        this.panel.style.top = position.top;
        this.panel.style.left = position.left;
        
        this.header = document.createElement("div");
        this.header.className = "gui-header";
        this.header.textContent = title;
        this.panel.appendChild(this.header);
        
        document.body.appendChild(this.panel);
        this.buttons = [];
        this.setupDragHandling();
    }

    setupDragHandling() {
        let isDragging = false;
        let offset = { x: 0, y: 0 };

        this.header.addEventListener("mousedown", (e) => {
            isDragging = true;
            offset.x = e.clientX - this.panel.offsetLeft;
            offset.y = e.clientY - this.panel.offsetTop;
        });

        document.addEventListener("mousemove", (e) => {
            if (!isDragging) return;
            this.panel.style.left = (e.clientX - offset.x) + "px";
            this.panel.style.top = (e.clientY - offset.y) + "px";
        });

        document.addEventListener("mouseup", () => isDragging = false);
    }

    addButton(module) {
        const buttonContainer = document.createElement("div");
        buttonContainer.className = "gui-button-container";

        const btn = document.createElement("div");
        btn.className = `gui-button ${module.isEnabled ? "enabled" : ""}`;
        btn.textContent = module.name;

        const settings = new _ModuleSettings_js__WEBPACK_IMPORTED_MODULE_0__["default"](module, buttonContainer);

        btn.addEventListener("mousedown", (event) => {
            if (event.button === 0) {
                module.toggle();
                btn.classList.toggle("enabled", module.isEnabled);
            }
            if (event.button === 1) {
                btn.textContent = "waiting for bind..";
                module.waitingForBind = true;
            }
        });

        btn.addEventListener("contextmenu", (event) => {
            event.preventDefault();
            settings.initialize();
            settings.toggle();
        });

        btn.setAttribute("tabindex", -1);
        btn.addEventListener("keydown", (event) => {
            btn.textContent = module.name;
            if (module.waitingForBind) {
                event.preventDefault();
                event.stopPropagation();
                event.stopImmediatePropagation();
                if (event.key === "Escape") {
                    module.keybind = null;
                } else {
                    module.keybind = String(event.code);
                }
                module.waitingForBind = false;
            }
        });

        buttonContainer.appendChild(btn);
        this.panel.appendChild(buttonContainer);
        this.buttons.push(btn);
        return btn;
    }

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

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


/***/ }),

/***/ "./src/utils/gameUtils.js":
/*!********************************!*\
  !*** ./src/utils/gameUtils.js ***!
  \********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../hooks */ "./src/hooks.js");
/* harmony import */ var _mathUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mathUtils */ "./src/utils/mathUtils.js");



/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
    getClosestPlayer () {
        let localPlayerPos = _hooks__WEBPACK_IMPORTED_MODULE_0__["default"].stores.gameState.gameWorld.player.position;
        let playersData = _hooks__WEBPACK_IMPORTED_MODULE_0__["default"].stores.gameState.gameWorld.server.playerIdToData;
        let playersWithDistances = [];

        playersData.forEach(function(player, playerId) {
            let distance = _mathUtils__WEBPACK_IMPORTED_MODULE_1__["default"].distanceBetween(
                localPlayerPos,
                { x: player.position.x, y: player.position.y, z: player.position.z }
            );
            player.id = playerId;
            playersWithDistances.push({ player, distance });
        });

        playersWithDistances.sort((a, b) => a.distance - b.distance);

        return playersWithDistances.map(item => item.player)[0];
    },

    hexToRgb(hex) {
        var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
        return result ? {
          r: parseInt(result[1], 16),
          g: parseInt(result[2], 16),
          b: parseInt(result[3], 16)
        } : null;
    }
});

/***/ }),

/***/ "./src/utils/mathUtils.js":
/*!********************************!*\
  !*** ./src/utils/mathUtils.js ***!
  \********************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {

__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
    normalizeVector(vector) {
        const magnitudeSquared = vector.x * vector.x + vector.y * vector.y + vector.z * vector.z;
        if (magnitudeSquared > 0) {
            const reciprocalMagnitude = 1 / Math.sqrt(magnitudeSquared);
            return [vector.x * reciprocalMagnitude, vector.y * reciprocalMagnitude, vector.z * reciprocalMagnitude];
        }
        return vector;
    },

    distanceBetween(point1, point2) {
        const xDifference = point2.x - point1.x;
        const yDifference = point2.y - point1.y;
        const zDifference = point2.z - point1.z;
        return xDifference * xDifference + yDifference * yDifference + zDifference * zDifference;
    },

    distanceBetweenSqrt(pointA, pointB) {
        return Math.sqrt(this.distanceBetween(pointA, pointB));
    },
});

/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			id: moduleId,
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/compat get default export */
/******/ 	(() => {
/******/ 		// getDefaultExport function for compatibility with non-harmony modules
/******/ 		__webpack_require__.n = (module) => {
/******/ 			var getter = module && module.__esModule ?
/******/ 				() => (module['default']) :
/******/ 				() => (module);
/******/ 			__webpack_require__.d(getter, { a: getter });
/******/ 			return getter;
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/define property getters */
/******/ 	(() => {
/******/ 		// define getter functions for harmony exports
/******/ 		__webpack_require__.d = (exports, definition) => {
/******/ 			for(var key in definition) {
/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ 				}
/******/ 			}
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
/******/ 	(() => {
/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/make namespace object */
/******/ 	(() => {
/******/ 		// define __esModule on exports
/******/ 		__webpack_require__.r = (exports) => {
/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 			}
/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/nonce */
/******/ 	(() => {
/******/ 		__webpack_require__.nc = undefined;
/******/ 	})();
/******/ 	
/************************************************************************/
var __webpack_exports__ = {};
// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.
(() => {
/*!*********************!*\
  !*** ./src/main.js ***!
  \*********************/
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _module_moduleManager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./module/moduleManager */ "./src/module/moduleManager.js");
/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./events */ "./src/events.js");
/* harmony import */ var _hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hooks */ "./src/hooks.js");
/* harmony import */ var _utils_gameUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/gameUtils */ "./src/utils/gameUtils.js");





class Fentify {
    constructor() {
        this.version = "1.0.0";
        this.init();
    }

    init () {
            
        setInterval(() => {
            _events__WEBPACK_IMPORTED_MODULE_1__["default"].emit("render");
        }, (1000 / 60));

        document.addEventListener("keydown", (e) => {
            _events__WEBPACK_IMPORTED_MODULE_1__["default"].emit("keydown", e.code);
        });

        _hooks__WEBPACK_IMPORTED_MODULE_2__["default"].init();
        _module_moduleManager__WEBPACK_IMPORTED_MODULE_0__["default"].init();
    }

    disable () {

    }
};

/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (new Fentify());
})();

/******/ })()
;