Most Advanced Cheat Client for Vectaria.io
当前为
// ==UserScript==
// @name Fentify
// @namespace fentify
// @version 0.0.1
// @description Most Advanced Cheat Client for Vectaria.io
// @author You
// @match https://vectaria.io/*
// @license MIT
// ==/UserScript==
(() => {
"use strict";
var __webpack_modules__ = {
679: (e, t, n) => {
n.d(t, {
A: () => r
});
var o = n(601),
i = n.n(o),
a = n(314),
s = n.n(a)()(i());
s.push([e.id, "@font-face {\n font-family: \"Product Sans\";\n src: url(https://fonts.gstatic.com/s/productsans/v19/pxiDypQkot1TnFhsFMOfGShVF9eO.woff2);\n}\n\n:root {\n --Fentify-accent-color: linear-gradient(90deg, rgb(64, 190, 255) 0%, rgb(129, 225, 255) 100%);\n --button-color: rgb(40, 40, 40, 0.9);\n --hover-color: rgb(50, 50, 50, 0.9);\n --panel-bg: rgb(34, 34, 34, 0.85);\n --panel-bg: rgb(10, 10, 10, 0.85);\n --text-color: #ffffff;\n --header-text-size: 25px;\n --button-text-size: 20px;\n --setting-text-size: 15px;\n}\n\n.gui-panel {\n position: fixed;\n z-index: 1000;\n width: 200px;\n border-radius: 8px;\n background-color: var(--panel-bg);\n box-shadow: 0 4px 8px rgba(0,0,0,0.3);\n font-family: 'Product Sans', sans-serif;\n color: var(--text-color);\n overflow: hidden;\n}\n\n.gui-header {\n background-color: var(--header-bg);\n height: 40px;\n font-weight: 900;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--header-text-size);\n cursor: grab;\n}\n\n.gui-header:active {\n cursor: grabbing;\n}\n\n.gui-button {\n height: 35px;\n display: flex;\n align-items: center;\n padding-left: 10px;\n box-sizing: border-box;\n cursor: pointer;\n border-radius: 0;\n transition: all 0.3s;\n font-size: var(--button-text-size);\n font-weight: 200;\n outline: none;\n background: var(--button-color);\n color: var(--text-color);\n}\n\n.gui-button.enabled {\n background: var(--Fentify-accent-color);\n}\n\n.gui-button:not(.enabled):hover {\n background: var(--hover-color);\n}\n\n.gui-background {\n position: absolute;\n left: 0;\n top: 0;\n z-index: 999;\n height: 100%;\n width: 100%;\n backdrop-filter: blur(15px);\n background: rgba(0, 0, 0, 0.3);\n}\n\n.gui-setting-container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n background-color: var(--panel-bg);\n padding: 2px;\n}\n\n.gui-setting-label {\n font-size: var(--setting-text-size);\n margin-left: 10px;\n font-weight: 300;\n color: var(--text-color);\n}\n\n.gui-checkbox {\n width: 15px;\n height: 15px;\n border-radius: 4px;\n background: var(--button-color);\n position: relative;\n margin: 8px;\n cursor: pointer;\n transition: background 0.3s;\n}\n\n.gui-checkbox.enabled {\n background: var(--Fentify-accent-color);\n}\n\n.gui-color-picker {\n width: 15px;\n height: 15px;\n border-radius: 4px;\n position: relative;\n margin: 8px;\n cursor: pointer;\n}\n\n.gui-color-input {\n width: 20px;\n height: 20px;\n opacity: 0;\n cursor: pointer;\n}\n\n.gui-button-container {\n background-color: var(--panel-bg);\n display: flex;\n flex-direction: column;\n}\n\n.gui-text-input {\n background: var(--button-color);\n border: none;\n color: var(--text-color);\n font-family: 'Product Sans', sans-serif;\n font-size: var(--setting-text-size);\n width: 40px;\n border-radius: 4px;\n outline: none;\n transition: background 0.3s;\n text-align: center;\n margin: 5px;\n margin-right: 10px;\n}\n\n.gui-text-input:hover {\n background: var(--hover-color);\n}\n\n.gui-text-input:focus {\n background: var(--hover-color);\n}\n\n.with-animations .gui-panel {\n animation: fadeInScale 0.3s ease-out;\n}\n\n@keyframes fadeInScale {\n from {\n opacity: 0;\n transform: scale(0.9);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n\n.with-animations .gui-background {\n animation: fadeIn 0.3s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.with-animations .gui-button {\n transition: transform 0.2s ease, background 0.2s ease;\n}\n\n.with-animations .gui-button:hover {\n transform: scale(1.01);\n}\n\n.with-animations .gui-setting-container {\n will-change: transform, opacity;\n transform-origin: top;\n animation: slideDown 0.25s ease-out forwards;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: scaleY(0.8);\n }\n to {\n opacity: 1;\n transform: scaleY(1);\n }\n}\n\n.blockSelector {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 500px;\n height: 500px;\n overflow-y: auto;\n background-color: rgba(40, 40, 40);\n border-radius: 10px;\n padding: 20px;\n z-index: 9999;\n}\n\n.blockSelector::-webkit-scrollbar {\n display: none;\n}", ""]);
const r = s
},
314: e => {
e.exports = function(e) {
var t = [];
return t.toString = function() {
return this.map((function(t) {
var n = "",
o = void 0 !== t[5];
return t[4] && (n += "@supports (".concat(t[4], ") {")), t[2] && (n += "@media ".concat(t[2], " {")), o && (n += "@layer".concat(t[5].length > 0 ? " ".concat(t[5]) : "", " {")), n += e(t), o && (n += "}"), t[2] && (n += "}"), t[4] && (n += "}"), n
})).join("")
}, t.i = function(e, n, o, i, a) {
"string" == typeof e && (e = [
[null, e, void 0]
]);
var s = {};
if (o)
for (var r = 0; r < this.length; r++) {
var l = this[r][0];
null != l && (s[l] = !0)
}
for (var d = 0; d < e.length; d++) {
var c = [].concat(e[d]);
o && s[c[0]] || (void 0 !== a && (void 0 === c[5] || (c[1] = "@layer".concat(c[5].length > 0 ? " ".concat(c[5]) : "", " {").concat(c[1], "}")), c[5] = a), n && (c[2] ? (c[1] = "@media ".concat(c[2], " {").concat(c[1], "}"), c[2] = n) : c[2] = n), i && (c[4] ? (c[1] = "@supports (".concat(c[4], ") {").concat(c[1], "}"), c[4] = i) : c[4] = "".concat(i)), t.push(c))
}
}, t
}
},
601: e => {
e.exports = function(e) {
return e[1]
}
},
72: e => {
var t = [];
function n(e) {
for (var n = -1, o = 0; o < t.length; o++)
if (t[o].identifier === e) {
n = o;
break
} return n
}
function o(e, o) {
for (var a = {}, s = [], r = 0; r < e.length; r++) {
var l = e[r],
d = o.base ? l[0] + o.base : l[0],
c = a[d] || 0,
m = "".concat(d, " ").concat(c);
a[d] = c + 1;
var u = n(m),
p = {
css: l[1],
media: l[2],
sourceMap: l[3],
supports: l[4],
layer: l[5]
};
if (-1 !== u) t[u].references++, t[u].updater(p);
else {
var h = i(p, o);
o.byIndex = r, t.splice(r, 0, {
identifier: m,
updater: h,
references: 1
})
}
s.push(m)
}
return s
}
function i(e, t) {
var n = t.domAPI(t);
return n.update(e),
function(t) {
if (t) {
if (t.css === e.css && t.media === e.media && t.sourceMap === e.sourceMap && t.supports === e.supports && t.layer === e.layer) return;
n.update(e = t)
} else n.remove()
}
}
e.exports = function(e, i) {
var a = o(e = e || [], i = i || {});
return function(e) {
e = e || [];
for (var s = 0; s < a.length; s++) {
var r = n(a[s]);
t[r].references--
}
for (var l = o(e, i), d = 0; d < a.length; d++) {
var c = n(a[d]);
0 === t[c].references && (t[c].updater(), t.splice(c, 1))
}
a = l
}
}
},
659: e => {
var t = {};
e.exports = function(e, n) {
var o = function(e) {
if (void 0 === t[e]) {
var n = document.querySelector(e);
if (window.HTMLIFrameElement && n instanceof window.HTMLIFrameElement) try {
n = n.contentDocument.head
} catch (e) {
n = null
}
t[e] = n
}
return t[e]
}(e);
if (!o) throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
o.appendChild(n)
}
},
540: e => {
e.exports = function(e) {
var t = document.createElement("style");
return e.setAttributes(t, e.attributes), e.insert(t, e.options), t
}
},
56: (e, t, n) => {
e.exports = function(e) {
var t = n.nc;
t && e.setAttribute("nonce", t)
}
},
825: e => {
e.exports = function(e) {
if ("undefined" == typeof document) return {
update: function() {},
remove: function() {}
};
var t = e.insertStyleElement(e);
return {
update: function(n) {
! function(e, t, n) {
var o = "";
n.supports && (o += "@supports (".concat(n.supports, ") {")), n.media && (o += "@media ".concat(n.media, " {"));
var i = void 0 !== n.layer;
i && (o += "@layer".concat(n.layer.length > 0 ? " ".concat(n.layer) : "", " {")), o += n.css, i && (o += "}"), n.media && (o += "}"), n.supports && (o += "}");
var a = n.sourceMap;
a && "undefined" != typeof btoa && (o += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a)))), " */")), t.styleTagTransform(o, e, t.options)
}(t, e, n)
},
remove: function() {
! function(e) {
if (null === e.parentNode) return !1;
e.parentNode.removeChild(e)
}(t)
}
}
}
},
113: e => {
e.exports = function(e, t) {
if (t.styleSheet) t.styleSheet.cssText = e;
else {
for (; t.firstChild;) t.removeChild(t.firstChild);
t.appendChild(document.createTextNode(e))
}
}
},
399: (e, t, n) => {
n.d(t, {
A: () => o
});
const o = {
listeners: {},
activeKeys: new Set,
on: function(e, t) {
this.listeners[e] || (this.listeners[e] = []), this.listeners[e].push(t)
},
remove: function(e, t) {
this.listeners[e] && (this.listeners[e] = this.listeners[e].filter((e => e !== t)))
},
emit: function(e, t) {
this.listeners[e] && this.listeners[e].forEach((e => e(t)))
},
trackKey: function(e, t, n) {
"keydown" === e && moduleManager.handleKeyPress(n), "keydown" !== e || this.activeKeys.has(t) || (this.activeKeys.add(t), this.emit("keyPress", {
key: t,
code: n
})), "keyup" === e && this.activeKeys.has(t) && (this.activeKeys.delete(t), this.emit("keyRelease", {
key: t,
code: n
}))
}
}
},
548: (__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
__webpack_require__.d(__webpack_exports__, {
A: () => __WEBPACK_DEFAULT_EXPORT__
});
var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(399);
const __WEBPACK_DEFAULT_EXPORT__ = {
init() {
this.appendHook = (e, t) => this[e] = t;
let fnString = document.querySelector("#app").__vue_app__._context.config.globalProperties.$router.options.routes[0].children[0].component.toString();
this.chunks = eval("[" + fnString.split("[")[1].replace(")", "").split(",")).filter((e => e.includes(".js")));
let userImport = Object.values(document.scripts).find((e => e?.src?.includes("index"))).src.replace("https://vectaria.io/", "");
this.importedModules = [], this.chunks.push(userImport), Function('\n async function initHooks() {\n await Promise.all(this.chunks.map(async (src) => {\n const module = await import("https://vectaria.io/" + src);\n Object.values(module).forEach((mod) => {\n this.importedModules.push(mod);\n });\n }));\n let targetClass = this.importedModules.find(m => m?.prototype?.execute);\n let _execute = targetClass.prototype.execute;\n let appendHook = this.appendHook;\n targetClass.prototype.execute = function () {\n appendHook("gameWorld", this.gameWorld);\n return _execute.apply(this, arguments);\n };\n }\n initHooks.appendHook = this.appendHook;\n initHooks.chunks = this.chunks;\n initHooks.importedModules = this.importedModules;\n return initHooks;\n ')().bind(this)()
}
}
}
},
__webpack_module_cache__ = {};
function __webpack_require__(e) {
var t = __webpack_module_cache__[e];
if (void 0 !== t) return t.exports;
var n = __webpack_module_cache__[e] = {
id: e,
exports: {}
};
return __webpack_modules__[e](n, n.exports, __webpack_require__), n.exports
}
__webpack_require__.n = e => {
var t = e && e.__esModule ? () => e.default : () => e;
return __webpack_require__.d(t, {
a: t
}), t
}, __webpack_require__.d = (e, t) => {
for (var n in t) __webpack_require__.o(t, n) && !__webpack_require__.o(e, n) && Object.defineProperty(e, n, {
enumerable: !0,
get: t[n]
})
}, __webpack_require__.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), __webpack_require__.nc = void 0;
var __webpack_exports__ = {},
main_events = __webpack_require__(399);
class main_Module {
constructor(e, t, n, o) {
this.name = e, this.category = t, this.options = n, this.keybind = o, this.waitingForBind = !1, this.isEnabled = !1, this.toggle = this.toggle.bind(this)
}
onEnable() {}
onDisable() {}
onRender() {}
onSettingUpdate() {}
enable() {
this.isEnabled = !0, main_events.A.emit("module.update", this), this.onEnable()
}
disable() {
this.isEnabled = !1, main_events.A.emit("module.update", this), this.onDisable()
}
toggle() {
this.isEnabled ? this.disable() : this.enable()
}
}
class main_ArrayList extends main_Module {
constructor() {
super("Arraylist", "Visual"), this.namesMap = {}, this.arraylistContainer = null, this.initialized = !1
}
update(e, t) {
if (t) {
if (!this.namesMap[e]) {
let t = document.createElement("div");
t.style.backgroundColor = "rgba(10, 10, 10, 0.7)", t.style.color = "white", t.style.padding = "2px 10px 2px 10px", t.style.display = "flex", t.style.alignItems = "center", t.style.boxSizing = "border-box", t.style.margin = "0", t.style.fontFamily = "'Product Sans', sans-serif", t.style.boxShadow = "rgb(0, 0, 0, 0.05) -5px 1px", t.style.transition = "max-height 0.2s ease-in-out, opacity 0.2s ease-in-out", t.style.overflow = "hidden", t.style.maxHeight = "0", t.style.opacity = "0";
let n = document.createElement("span");
n.style.fontWeight = "800", n.style.fontSize = "16px", n.style.backgroundImage = "var(--Fentify-accent-color)", n.style.color = "transparent", n.style.backgroundClip = "text", n.innerHTML = e, t.appendChild(n), this.arraylistContainer.appendChild(t), setTimeout((() => {
t.style.maxHeight = "50px", t.style.opacity = "1"
}), 1), this.namesMap[e] = t
}
} else if (this.namesMap[e]) {
const t = this.namesMap[e];
t.style.maxHeight = "0", t.style.opacity = "0", setTimeout((() => {
this.arraylistContainer.removeChild(t), delete this.namesMap[e]
}), 5)
}
const n = Object.values(this.namesMap).sort(((e, t) => this.measureElementWidth(t) - this.measureElementWidth(e)));
this.arraylistContainer.innerHTML = "", n.forEach((e => {
this.arraylistContainer.appendChild(e)
}))
}
onEnable() {
this.initialized ? this.arraylistContainer.style.opacity = "1" : (this.arraylistContainer = document.createElement("div"), this.arraylistContainer.style.flexDirection = "column", this.arraylistContainer.style.position = "absolute", this.arraylistContainer.style.zIndex = "1000", this.arraylistContainer.style.display = "flex", this.arraylistContainer.style.right = "5px", this.arraylistContainer.style.top = "5px", this.arraylistContainer.style.alignItems = "flex-end", this.arraylistContainer.style.pointerEvents = "none", this.arraylistContainer.style.textTransform = "lowercase", this.arraylistContainer.style.border = "2px solid transparent", this.arraylistContainer.style.borderImage = "var(--Fentify-accent-color)", this.arraylistContainer.style.borderImageSlice = "1", this.arraylistContainer.style.borderBottom = "0", this.arraylistContainer.style.borderLeft = "0", document.body.appendChild(this.arraylistContainer), main_events.A.on("module.update", (e => {
this.update(e.name, e.isEnabled)
})), this.initialized = !0)
}
measureElementWidth(e) {
return e.getBoundingClientRect().width
}
onDisable() {
this.arraylistContainer.style.opacity = "0"
}
}
var main_hooks = __webpack_require__(548);
class main_Watermark extends main_Module {
constructor() {
super("Watermark", "Visual", {
Text: "Fentify"
})
}
onSettingUpdate() {
let e = document.querySelector(".Fentify-overlay-title");
e && (e.textContent = this.options.Text)
}
onEnable() {
let e = document.querySelector(".Fentify-overlay-title");
e || (e = document.createElement("div"), e.className = "Fentify-overlay-title", e.textContent = this.options.Text, e.style.position = "absolute", e.style.top = "0", e.style.left = "0", e.style.padding = "0.5em", e.style.userSelect = "none", e.style.display = "none", e.style.zIndex = "1000", e.style.textShadow = "var(--Fentify-accent-color) 0px 0px 10px", e.style.fontFamily = "'Product Sans', sans-serif", e.style.fontSize = "24px", e.style.background = "var(--Fentify-accent-color)", e.style.backgroundClip = "text", e.style.webkitFontSmoothing = "antialiased", e.style.webkitTextFillColor = "transparent", document.body.appendChild(e)), document.querySelector(".Fentify-overlay-title").style.display = "flex"
}
onDisable() {
document.querySelector(".Fentify-overlay-title").style.display = "none"
}
}
class main_ModuleSettings {
constructor(e, t) {
this.module = e, this.container = t, this.components = [], this.initialized = !1, this.isOpen = !1
}
initialize() {
!this.initialized && this.module?.options && (Object.keys(this.module.options).forEach((e => {
const t = this.module.options[e],
n = typeof t;
e.toLowerCase().includes("color") ? this.addColorPicker(e) : "boolean" === n || "true" === t || "false" === t ? this.addCheckbox(e) : "string" === n ? this.addStringInput(e) : this.addNumberInput(e)
})), this.components.forEach((e => e.style.display = "none")), this.initialized = !0)
}
toggle() {
this.isOpen = !this.isOpen, this.components.forEach((e => {
e.style.display = this.isOpen ? "flex" : "none", this.isOpen ? this.container.style.marginBottom = "5px" : this.container.style.marginBottom = "0px"
}))
}
addNumberInput(e) {
const t = document.createElement("div");
t.className = "gui-setting-container";
const n = document.createElement("span");
n.className = "gui-setting-label", n.textContent = e;
const o = document.createElement("input");
o.type = "text", o.className = "gui-text-input", o.value = this.module.options[e];
let i = o.value;
o.addEventListener("input", (() => {
const t = o.value.trim();
isNaN(t) || "" === t || (i = t, this.module.options[e] = t, main_events.A.emit("setting.update", this.module))
})), o.addEventListener("blur", (() => {
(isNaN(o.value) || "" === o.value.trim()) && (o.value = i)
})), o.addEventListener("keydown", (e => {
"Enter" === e.key && o.blur()
})), t.appendChild(n), t.appendChild(o), this.container.appendChild(t), this.components.push(t)
}
addStringInput(e) {
const t = document.createElement("div");
t.className = "gui-setting-container";
const n = document.createElement("span");
n.className = "gui-setting-label", n.textContent = e;
const o = document.createElement("input");
o.type = "text", o.className = "gui-text-input", o.value = this.module.options[e], o.addEventListener("input", (() => {
const t = o.value.trim();
this.module.options[e] = t, main_events.A.emit("setting.update", this.module)
})), t.appendChild(n), t.appendChild(o), this.container.appendChild(t), this.components.push(t)
}
addCheckbox(e) {
const t = document.createElement("div");
t.className = "gui-setting-container";
const n = document.createElement("span");
n.className = "gui-setting-label", n.textContent = e;
const o = document.createElement("div");
o.className = "gui-checkbox", o.classList.toggle("enabled", !0 === this.module.options[e] || "true" === this.module.options[e]), o.addEventListener("click", (() => {
const t = o.classList.contains("enabled");
o.classList.toggle("enabled"), this.module.options[e] = (!t).toString(), main_events.A.emit("setting.update", this.module)
})), t.appendChild(n), t.appendChild(o), this.container.appendChild(t), this.components.push(t)
}
addColorPicker(e) {
const t = document.createElement("div");
t.className = "gui-setting-container";
const n = document.createElement("span");
n.className = "gui-setting-label", n.textContent = e;
const o = document.createElement("div");
o.className = "gui-color-picker", o.style.background = this.module.options[e];
const i = document.createElement("input");
i.type = "color", i.className = "gui-color-input", o.appendChild(i), i.addEventListener("input", (t => {
o.style.background = t.target.value, this.module.options[e] = t.target.value, main_events.A.emit("setting.update", this.module)
})), t.appendChild(n), t.appendChild(o), this.container.appendChild(t), this.components.push(t)
}
}
class main_Panel {
constructor(e, t = {
top: "200px",
left: "200px"
}) {
this.panel = document.createElement("div"), this.panel.className = "gui-panel", this.panel.style.top = t.top, this.panel.style.left = t.left, this.header = document.createElement("div"), this.header.className = "gui-header", this.header.textContent = e, this.panel.appendChild(this.header), document.body.appendChild(this.panel), this.buttons = [], this.setupDragHandling()
}
setupDragHandling() {
let e = !1,
t = {
x: 0,
y: 0
};
this.header.addEventListener("mousedown", (n => {
e = !0, t.x = n.clientX - this.panel.offsetLeft, t.y = n.clientY - this.panel.offsetTop
})), document.addEventListener("mousemove", (n => {
e && (this.panel.style.left = n.clientX - t.x + "px", this.panel.style.top = n.clientY - t.y + "px")
})), document.addEventListener("mouseup", (() => e = !1))
}
addButton(e) {
const t = document.createElement("div");
t.className = "gui-button-container";
const n = document.createElement("div");
n.className = "gui-button " + (e.isEnabled ? "enabled" : ""), n.textContent = e.name;
const o = new main_ModuleSettings(e, t);
return n.addEventListener("mousedown", (t => {
0 === t.button && (e.toggle(), n.classList.toggle("enabled", e.isEnabled)), 1 === t.button && (n.textContent = "waiting for bind..", e.waitingForBind = !0)
})), n.addEventListener("contextmenu", (e => {
e.preventDefault(), o.initialize(), o.toggle()
})), n.setAttribute("tabindex", -1), n.addEventListener("keydown", (t => {
n.textContent = e.name, e.waitingForBind && (t.preventDefault(), t.stopPropagation(), t.stopImmediatePropagation(), "Escape" === t.key ? e.keybind = null : e.keybind = String(t.code), e.waitingForBind = !1)
})), t.appendChild(n), this.panel.appendChild(t), this.buttons.push(n), n
}
show() {
this.panel.style.display = "block"
}
hide() {
this.panel.style.display = "none"
}
}
var main_injectStylesIntoStyleTag = __webpack_require__(72),
main_injectStylesIntoStyleTag_default = __webpack_require__.n(main_injectStylesIntoStyleTag),
main_styleDomAPI = __webpack_require__(825),
main_styleDomAPI_default = __webpack_require__.n(main_styleDomAPI),
main_insertBySelector = __webpack_require__(659),
main_insertBySelector_default = __webpack_require__.n(main_insertBySelector),
main_setAttributesWithoutAttributes = __webpack_require__(56),
main_setAttributesWithoutAttributes_default = __webpack_require__.n(main_setAttributesWithoutAttributes),
main_insertStyleElement = __webpack_require__(540),
main_insertStyleElement_default = __webpack_require__.n(main_insertStyleElement),
main_styleTagTransform = __webpack_require__(113),
main_styleTagTransform_default = __webpack_require__.n(main_styleTagTransform),
main_clickgui = __webpack_require__(679),
main_options = {};
main_options.styleTagTransform = main_styleTagTransform_default(), main_options.setAttributes = main_setAttributesWithoutAttributes_default(), main_options.insert = main_insertBySelector_default().bind(null, "head"), main_options.domAPI = main_styleDomAPI_default(), main_options.insertStyleElement = main_insertStyleElement_default();
var main_update = main_injectStylesIntoStyleTag_default()(main_clickgui.A, main_options);
const main_styles_clickgui = main_clickgui.A && main_clickgui.A.locals ? main_clickgui.A.locals : void 0;
class main_ClickGUI extends main_Module {
constructor() {
super("ClickGUI", "Visual", {
"Accent Color 1": "rgb(64, 190, 255)",
"Accent Color 2": "rgb(129, 225, 255)",
"Button Color": "rgb(40, 40, 40, 0.9)",
"Hover Color": "rgb(50, 50, 50, 0.9)",
"Header Color": "rgb(0, 0, 0, 0.85)",
"Panel Color": "rgb(18 18 18)",
"Text Color": "#ffffff",
"Enable Animations": !0
}, "ShiftRight"), this.GUILoaded = !1, this.panels = [], this.blurredBackground = null, this.updateColors()
}
updateAnimations() {
this.options["Enable Animations"] ? document.body.classList.add("with-animations") : document.body.classList.remove("with-animations")
}
updateColors() {
document.body.style.setProperty("--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(), this.GUILoaded ? (this.showGUI(), this.updateAnimations()) : (this.setupBackground(), this.createPanels(), this.setupEventListeners(), this.GUILoaded = !0, this.updateAnimations())
}
setupBackground() {
this.blurredBackground = document.createElement("div"), this.blurredBackground.className = "gui-background", document.body.appendChild(this.blurredBackground)
}
createPanels() {
this.panels.forEach((e => {
e.panel && e.panel.parentNode && e.panel.parentNode.removeChild(e.panel)
})), this.panels = [], [{
title: "Combat",
position: {
top: "100px",
left: "100px"
}
}, {
title: "Movement",
position: {
top: "100px",
left: "320px"
}
}, {
title: "Visual",
position: {
top: "100px",
left: "540px"
}
}, {
title: "Misc",
position: {
top: "100px",
left: "760px"
}
}].forEach((e => {
const t = new main_Panel(e.title, e.position);
this.panels.push(t)
}));
const e = {};
Object.values(main_moduleManager.modules).forEach((t => {
e[t.category] || (e[t.category] = []), e[t.category].push(t)
})), Object.entries(e).forEach((([e, t]) => {
const n = this.panels.find((t => t.header.textContent === e));
n && (t.sort(((e, t) => t.name.length - e.name.length)), t.forEach((e => n.addButton(e))))
}))
}
setupEventListeners() {
main_events.A.on("module.update", (e => {
const t = this.panels.find((t => t.header.textContent === e.category));
if (!t) return;
const n = t.buttons.find((t => t.textContent === e.name));
n && n.classList.toggle("enabled", e.isEnabled)
}))
}
showGUI() {
this.panels.forEach((e => e.show())), this.blurredBackground.style.display = "block"
}
onDisable() {
this.panels.forEach((e => e.hide())), this.blurredBackground.style.display = "none"
}
onSettingUpdate() {
this.updateColors(), this.updateAnimations()
}
}
class main_Airjump extends main_Module {
constructor() {
super("Airjump", "Movement", null)
}
onEnable() {
main_hooks.A.gameWorld.player.collision.__defineGetter__("isGrounded", (() => !0)), main_hooks.A.gameWorld.player.collision.__defineSetter__("isGrounded", (() => !0))
}
onDisable() {
delete main_hooks.A.gameWorld.player.collision.isGrounded, main_hooks.A.gameWorld.player.collision.isGrounded = !0
}
}
class main_Instabreak extends main_Module {
constructor() {
super("Instabreak", "Misc", null), this.originalHardness = new Map
}
onEnable() {
Object.values(main_hooks.A.gameWorld.allItems).forEach((e => {
e?.destruction && (this.originalHardness.has(e) || this.originalHardness.set(e, e.destruction.durability), e.destruction.durability = 0)
}))
}
onDisable() {
Object.values(main_hooks.A.gameWorld.allItems).forEach((e => {
e?.destruction && this.originalHardness.has(e) && (e.destruction.durability = this.originalHardness.get(e))
}))
}
}
const main_stores = {
get userStore() {
return main_hooks.A.importedModules.find((e => "user" == e?.$id))()
},
get itemMgrStore() {
return main_hooks.A.importedModules.find((e => "itemsManager" == e?.$id))()
},
get roomMgrStore() {
return main_hooks.A.importedModules.find((e => "roomManager" == e?.$id))()
}
};
class main_SpoofBlock extends main_Module {
constructor() {
super("SpoofBlock", "Misc"), this.blockID = 0
}
onRender() {
main_stores.itemMgrStore[1][main_stores.itemMgrStore.selectedItem][0] = this.blockID, main_hooks.A.gameWorld.player.currentHandItemId = this.blockID
}
onEnable() {
let e = this,
t = document.createElement("div");
t.className = "blockSelector", document.body.appendChild(t);
let n = document.createElement("div");
Object.assign(n.style, {
display: "flex",
flexWrap: "wrap",
justifyContent: "center"
}), t.appendChild(n), Object.keys(main_hooks.A.gameWorld.allItems).forEach((o => function(o) {
let i = document.createElement("button");
Object.assign(i.style, {
border: "none",
background: "none",
margin: "10px"
});
let a = document.createElement("img");
Object.assign(a.style, {
width: "40px",
height: "40px",
objectFit: "cover"
}), a.src = $assetsUrls["defaultSurvival/renderItems/" + o + ".png"], i.appendChild(a), i.addEventListener("click", (() => {
main_stores.itemMgrStore[1][main_stores.itemMgrStore.selectedItem][0] = o, main_hooks.A.gameWorld.player.currentHandItemId = o, e.blockID = o, t.remove()
})), n.appendChild(i)
}(o)))
}
}
class main_Nuker extends main_Module {
constructor() {
super("Nuker", "Misc", {
Radius: 4,
Delay: 120,
"Target Selected Block": !1,
"Auto Disable": !1
}), this.blockIndex = 0
}
get selectedBlock() {
return main_hooks.A.gameWorld?.systemsManager.activeExecuteSystems.find((e => void 0 !== e?.currBlockPos)) || void 0
}
onEnable() {
this.blockIndex = 0;
let e = this.options.Radius,
t = Object.values(main_hooks.A.gameWorld.player.position).map(Math.floor);
t[1]--, this.options["Target Selected Block"] && (t = [...this.selectedBlock.currBlockPos]);
let n = -e,
o = -e,
i = -e,
a = [];
for (; n <= e;) {
for (; o <= e;) {
for (; i <= e;) {
if (Math.sqrt(n * n + o * o + i * i) <= e) {
let e = [t[0] + n, t[1] + o, t[2] + i];
0 !== main_hooks.A.gameWorld.chunkManager.getBlock(...e) && a.push(e)
}
i++
}
i = -e, o++
}
o = -e, n++
}
let s = this,
r = this.options;
! function e() {
if (s.blockIndex < a.length) {
const [t, n, o] = a[s.blockIndex];
setTimeout((() => {
main_hooks.A.gameWorld.chunkManager.placeBlockWithMsgSending(t, n, o, 0), s.blockIndex++, e()
}), r.Delay)
} else s.blockIndex = 0, r["Auto Disable"] ? main_moduleManager.modules.Nuker.disable() : s.onEnable()
}()
}
}
class main_SpoofLevel extends main_Module {
constructor() {
super("SpoofLevel", "Misc", {
Level: 999
}), this.ogLevel
}
onEnable() {
main_stores.userStore?.user?.lvl && (this.ogLevel = main_stores.userStore.user.lvl), main_stores.userStore.user = main_stores.userStore.user || {}, main_stores.userStore.user.lvl = this.options.Level
}
onDisable() {
main_stores.userStore.user = main_stores.userStore.user || {}, main_stores.userStore.user.lvl = this.ogLevel
}
}
class main_Emote extends main_Module {
constructor() {
super("Emote", "Misc", {
"Emote name": "No",
Infinity: !1
})
}
onEnable() {
main_stores.roomMgrStore.ws.sendData(77, {
name: this.options["Emote name"],
infinity: this.options[1 / 0]
})
}
}
class main_AdBypass extends main_Module {
constructor() {
super("AdBypass", "Misc")
}
onEnable() {
this._reward = this._reward || main_stores.userStore.rewardCommercialVideoWrapper, main_stores.userStore.rewardCommercialVideoWrapper = () => !0
}
onDisable() {
main_stores.userStore.rewardCommercialVideoWrapper = () => this._reward
}
}
class main_Velocity extends main_Module {
constructor() {
super("Velocity", "Movement", null)
}
get serverPacketHandlers() {
return main_hooks.A.gameWorld.server.msgsListeners
}
get velocityPacket() {
return Object.keys(this.serverPacketHandlers).find((e => this.serverPacketHandlers[e].toString().includes("velocity")))
}
onEnable() {
this.velocityHandler = this.velocityHandler || this.serverPacketHandlers[this.velocityPacket], this.serverPacketHandlers[this.velocityPacket] = () => {}
}
onDisable() {
this.serverPacketHandlers[this.velocityPacket] = this.velocityHandler
}
}
class main_NoHitDelay extends main_Module {
constructor() {
super("NoHitDelay", "Combat")
}
get hitSystem() {
return main_hooks.A.gameWorld.systemsManager.activeExecuteSystems.find((e => void 0 !== e?.lastAttackTimeMs))
}
onEnable() {
this.hitSystem.__defineGetter__("attackTimeDelayMs", (() => 0)), this.hitSystem.__defineSetter__("attackTimeDelayMs", (() => 0))
}
onDisable() {
delete this.hitSystem.attackTimeDelayMs, this.hitSystem.attackTimeDelayMs = 750
}
}
class main_Fly extends main_Module {
constructor() {
super("Fly", "Movement", {
"Vertical Speed": 5
})
}
onEnable() {
main_hooks.A.gameWorld.player.velocity.gravity = 0
}
onRender() {
main_hooks.A.gameWorld.player.inputs.jump ? main_hooks.A.gameWorld.player.velocity.velVec3.y = this.options["Vertical Speed"] : main_hooks.A.gameWorld.player.inputs.crouch ? main_hooks.A.gameWorld.player.velocity.velVec3.y = -this.options["Vertical Speed"] : main_hooks.A.gameWorld.player.velocity.velVec3.y = 0
}
onDisable() {
main_hooks.A.gameWorld.player.velocity.gravity = 23
}
}
class main_NoFall extends main_Module {
constructor() {
super("NoFall", "Movement")
}
onRender() {
let e = main_hooks.A.gameWorld.player.position.clone().floor();
e.y--;
let t = !!main_hooks.A.gameWorld.chunkManager.getBlock(...e);
e.y -= 2, main_hooks.A.gameWorld.chunkManager.getBlock(...e) && main_hooks.A.gameWorld.player.velocity.velVec3.y < -6 && !t && (main_hooks.A.gameWorld.player.position.y = e.y + 1.5, main_hooks.A.gameWorld.player.velocity.velVec3.y = .1)
}
}
class main_Speed extends main_Module {
constructor() {
super("Speed", "Movement", {
Speed: 15
})
}
onEnable() {
main_hooks.A.gameWorld.player.velocity.__defineGetter__("moveSpeed", (() => this.options.Speed)), main_hooks.A.gameWorld.player.velocity.__defineSetter__("moveSpeed", (() => this.options.Speed)), main_hooks.A.gameWorld.player.velocity.__defineGetter__("fastMoveSpeed", (() => this.options.Speed)), main_hooks.A.gameWorld.player.velocity.__defineSetter__("fastMoveSpeed", (() => this.options.Speed))
}
onDisable() {
delete main_hooks.A.gameWorld.player.velocity.moveSpeed, delete main_hooks.A.gameWorld.player.velocity.fastMoveSpeed, main_hooks.A.gameWorld.player.velocity.moveSpeed = 4.5, main_hooks.A.gameWorld.player.velocity.fastMoveSpeed = 6.4
}
}
class main_FreeCoupons extends main_Module {
constructor() {
super("FreeCoupons", "Misc")
}
onEnable() {
fetch("https://api.vectaria.io/v2/users/getAdCoupons", {
credentials: "include"
}).then((e => {
e.ok ? main_stores.userStore.user.coupons += 10 : alert("Reached Daily limit")
})), main_moduleManager.modules.FreeCoupons.disable()
}
}
class main_Chams extends main_Module {
constructor() {
super("Chams", "Visual", null)
}
onRender() {
main_hooks.A.gameWorld.server.playerIdToData.forEach((e => {
e.headObj3D.material.depthTest = !1, e.headObj3D.material.wireframe = !0
}))
}
onDisable() {
main_hooks.A.gameWorld.server.playerIdToData.forEach((e => {
e.headObj3D.material.depthTest = !0, e.headObj3D.material.wireframe = !1
}))
}
}
class main_Triggerbot extends main_Module {
constructor() {
super("Triggerbot", "Combat", {
Interval: 50
}), this.lastExecutionTime = 0
}
get hitSystem() {
return main_hooks.A.gameWorld.systemsManager.activeExecuteSystems.find((e => void 0 !== e?.lastAttackTimeMs))
}
onRender() {
const e = Date.now();
e - this.lastExecutionTime >= this.options.Interval && this.hitSystem?.hitPlayers && (this.lastExecutionTime = e, this.hitSystem.hitPlayers())
}
}
class main_Scaffold extends main_Module {
constructor() {
super("Scaffold", "Movement", null)
}
onRender() {
let e = Object.values(main_hooks.A.gameWorld.player.position).splice(0, 3).map(Math.floor);
e[1]--;
let t = main_hooks.A.gameWorld.player.currentHandItemId,
n = main_hooks.A.gameWorld.chunkManager.getBlock(...e),
o = main_hooks.A.gameWorld.allItems[n]?.replaceable || !1;
(0 == n || o) && t && main_hooks.A.gameWorld.chunkManager.placeBlockWithMsgSending(...e, t)
}
}
class main_Fill extends main_Module {
constructor() {
super("Fill", "Misc", {
Radius: 4,
Delay: 120
}), this.blockIndex = 0
}
onEnable() {
this.blockIndex = 0;
let e = this.options.Radius,
t = Object.values(main_hooks.A.gameWorld.player.position).map(Math.floor);
t[1]--;
let n = -e,
o = -e,
i = -e,
a = [];
for (; n <= e;) {
for (; o <= e;) {
for (; i <= e;) {
if (Math.sqrt(n * n + o * o + i * i) <= e) {
let e = [t[0] + n, t[1] + o, t[2] + i],
s = main_hooks.A.gameWorld.chunkManager.getBlock(...e);
(main_hooks.A.gameWorld.allItems[s]?.replaceable || 0 == s) && a.push(e)
}
i++
}
i = -e, o++
}
o = -e, n++
}
let s = this,
r = this.options.Delay;
! function e() {
let t = main_hooks.A.gameWorld.player.currentHandItemId;
if (s.blockIndex < a.length) {
const [n, o, i] = a[s.blockIndex];
setTimeout((() => {
main_hooks.A.gameWorld.chunkManager.placeBlockWithMsgSending(n, o, i, t), s.blockIndex++, e()
}), r)
} else s.blockIndex = 0, main_moduleManager.modules.Fill.disable()
}()
}
}
class main_NoClip extends main_Module {
constructor() {
super("NoClip", "Movement"), this.realGameMode = 0
}
onEnable() {
this.realGameMode = main_hooks.A.gameWorld.player.gameMode, main_hooks.A.gameWorld.server.switchGameMode(3)
}
onDisable() {
main_hooks.A.gameWorld.server.switchGameMode(this.realGameMode)
}
}
const main_mathUtils = {
normalizeVector(e) {
const t = e.x * e.x + e.y * e.y + e.z * e.z;
if (t > 0) {
const n = 1 / Math.sqrt(t);
return [e.x * n, e.y * n, e.z * n]
}
return e
},
distanceBetween(e, t) {
const n = t.x - e.x,
o = t.y - e.y,
i = t.z - e.z;
return n * n + o * o + i * i
},
distanceBetweenSqrt(e, t) {
return Math.sqrt(this.distanceBetween(e, t))
}
},
main_gameUtils = {
getClosestPlayer() {
let e = main_hooks.A.gameWorld.player.position,
t = main_hooks.A.gameWorld.server.playerIdToData,
n = [];
return t.forEach((function(t, o) {
let i = main_mathUtils.distanceBetween(e, {
x: t.position.x,
y: t.position.y,
z: t.position.z
});
t.id = o, n.push({
player: t,
distance: i
})
})), n.sort(((e, t) => e.distance - t.distance)), n.map((e => e.player))[0]
},
hexToRgb(e) {
var t = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);
return t ? {
r: parseInt(t[1], 16),
g: parseInt(t[2], 16),
b: parseInt(t[3], 16)
} : null
}
};
class main_Killaura extends main_Module {
constructor() {
super("Killaura", "Combat", {
"Y Offset": 1.62,
Reach: 5,
Delay: 100
}), this.lastExecutionTime = null
}
onRender() {
const e = Date.now();
e - this.lastExecutionTime >= this.options.Delay && (this.lastExecutionTime = e, this.tryKill())
}
tryKill() {
let e = this.options.Reach,
t = this.options["Y Offset"],
n = main_gameUtils.getClosestPlayer();
var o = {
x: main_hooks.A.gameWorld.player.position.x,
y: main_hooks.A.gameWorld.player.position.y + t,
z: main_hooks.A.gameWorld.player.position.z
},
i = n.position,
a = {
x: o.x - i.x,
y: o.y - i.y,
z: o.z - i.z
},
s = Math.sqrt(a.x * a.x + a.y * a.y + a.z * a.z);
0 !== s && (a.x /= s, a.y /= s, a.z /= s), a.x = -a.x, a.y = -a.y, a.z = -a.z, Math.sqrt(Math.pow(o.x - i.x, 2) + Math.pow(o.y - i.y, 2) + Math.pow(o.z - i.z, 2)) < e && main_hooks.A.gameWorld.server.sendData(61, [o.x, o.y, o.z, a.x, a.y, a.z, main_hooks.A.gameWorld.time.localServerTimeMs, n.id])
}
}
class main_BlockOutline extends main_Module {
constructor() {
super("Block Outline", "Movement", {
"Outline Color": "#81e1ff"
})
}
get selectedBlock() {
return main_hooks.A.gameWorld?.systemsManager.activeExecuteSystems.find((e => void 0 !== e?.currBlockPos)) || void 0
}
onRender() {
if (this?.selectedBlock?.mesh) {
let e = main_gameUtils.hexToRgb(this.options["Outline Color"]);
this.selectedBlock.mesh.material.color.r !== e.r && this.onEnable()
}
}
onEnable() {
let e = main_gameUtils.hexToRgb(this.options["Outline Color"]),
t = this.selectedBlock.mesh;
Object.keys(e).forEach((function(n) {
t.material.color[n] = e[n]
}))
}
onDisable() {
this.selectedBlock.mesh.material.color.r = 1, this.selectedBlock.mesh.material.color.g = 1, this.selectedBlock.mesh.material.color.b = 1
}
}
class main_TPAura extends main_Module {
constructor() {
super("TPAura", "Combat", {
"Y Offset": 1.62,
Radius: 1,
Delay: 100
}), this.lastExecutionTime = null
}
onRender() {
const e = Date.now();
e - this.lastExecutionTime >= this.options.Delay && (this.lastExecutionTime = e, this.tryKill())
}
tryKill() {
let e = this.options.Radius,
t = this.options["Y Offset"],
n = main_gameUtils.getClosestPlayer();
if (n?.position) {
var o = {
x: main_hooks.A.gameWorld.player.position.x,
y: main_hooks.A.gameWorld.player.position.y + t,
z: main_hooks.A.gameWorld.player.position.z
},
i = n.position,
a = {
x: o.x - i.x,
y: o.y - i.y,
z: o.z - i.z
},
s = Math.sqrt(a.x * a.x + a.y * a.y + a.z * a.z);
0 !== s && (a.x /= s, a.y /= s, a.z /= s), a.x = -a.x, a.y = -a.y, a.z = -a.z, Math.sqrt(Math.pow(o.x - i.x, 2) + Math.pow(o.y - i.y, 2) + Math.pow(o.z - i.z, 2)) > e && (main_hooks.A.gameWorld.player.position = n.position.clone()), main_hooks.A.gameWorld.server.sendData(61, [o.x, o.y, o.z, a.x, a.y, a.z, main_hooks.A.gameWorld.time.localServerTimeMs, n.id])
}
}
}
const main_moduleManager = {
modules: {},
addModules: function(...e) {
for (const t of e) this.modules[t.name] = t
},
addModule: function(e) {
this.modules[e.name] = e
},
handleKeyPress: function(e) {
for (let t in this.modules) {
let n = this.modules[t];
n.waitingForBind ? (n.keybind = e, n.waitingForBind = !1) : n.keybind == e && n.toggle()
}
},
init() {
this.addModules(new main_ArrayList, new main_Watermark, new main_ClickGUI, new main_Airjump, new main_Instabreak, new main_SpoofBlock, new main_Nuker, new main_SpoofLevel, new main_Emote, new main_AdBypass, new main_Velocity, new main_NoHitDelay, new main_Fly, new main_NoFall, new main_Speed, new main_FreeCoupons, new main_Chams, new main_Triggerbot, new main_Scaffold, new main_Fill, new main_NoClip, new main_Killaura, new main_BlockOutline, new main_TPAura), main_events.A.on("render", (() => {
for (let e in this.modules) this.modules[e].isEnabled && this.modules[e].onRender()
})), main_events.A.on("keydown", this.handleKeyPress.bind(this)), main_events.A.on("setting.update", (() => {
for (let e in this.modules) this.modules[e].isEnabled && this.modules[e].onSettingUpdate()
})), this.modules.Arraylist.enable(), this.modules.Watermark.enable()
}
};
class main_Fentify {
constructor() {
this.version = "1.0.0", this.init()
}
init() {
setInterval((() => {
main_events.A.emit("render")
}), 1e3 / 60), document.addEventListener("keydown", (e => {
main_events.A.emit("keydown", e.code)
})), main_hooks.A.init(), main_moduleManager.init(), window.hooks = main_hooks.A, window.stores = main_stores, window.gameUtils = main_gameUtils
}
disable() {}
}
const main_main = new main_Fentify
})();