Hack client

FLY, NOCLIP, KILLAURA GUYS THIS IS A BLATANT HACK

Fra 27.02.2026. Se den seneste versjonen.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Hack client
// @namespace    Hackudek client
// @version      0.5
// @description  FLY, NOCLIP, KILLAURA GUYS THIS IS A BLATANT HACK
// @author       JamjestAdolf
// @match        https://bloxd.io/*
// @license      MIT
// ==/UserScript==

(() => {
  // src/utils.js
  var keys = (obj) => Object.keys(obj ?? {}), values = (obj) => keys(obj).map((key) => obj[key]), entries = (obj) => Object.entries(obj ?? {}), attempt = (fn, fallback = null) => {
    try {
      return fn();
    } catch {
      return fallback;
    }
  }, clone = typeof structuredClone == "function" ? structuredClone : (obj) => obj && JSON.parse(JSON.stringify(obj)), style = (el3, props) => Object.assign(el3.style, props), el = (tag) => document.createElement(tag), floor = Math.floor;

  // src/config.js
  var config = {
    keyMap: {},
    killaura: { delay: 120, range: 6.8, jitterRatio: 0.4 },
    scaffold: { interval: 20 },
    slowSwing: { duration: 2e3 }
  }, moduleNames = [
    "Killaura",
    "Scaffold",
    "SlowSwing",
    "CoordsList",
    "ESP",
    "Bhop"
  ], defaults = {
    Killaura: "KeyK",
    ESP: "KeyE",
    CoordsList: "KeyL",
    Scaffold: "KeyG",
    SlowSwing: "KeyH",
    Bhop: "KeyB"
  }, binds = {}, cookieTag = (name) => `poop_${name}_keybind`, readCookie = (name) => document.cookie.split("; ").find((row) => row.startsWith(cookieTag(name) + "="))?.split("=")[1] ?? null, writeCookie = (name, code) => {
    document.cookie = `${cookieTag(name)}=${code}; path=/; max-age=31536000`;
  }, clearKey = (code) => {
    let mod = config.keyMap[code];
    mod && (delete config.keyMap[code], binds[mod] = null);
  }, setBind = (name, code) => {
    let trimmed = (code ?? "").trim();
    if (binds[name] && delete config.keyMap[binds[name]], !trimmed) {
      binds[name] = null, writeCookie(name, "");
      return;
    }
    clearKey(trimmed), binds[name] = trimmed, config.keyMap[trimmed] = name, writeCookie(name, trimmed);
  }, initBinds = () => {
    moduleNames.forEach(
      (name) => setBind(name, readCookie(name) || defaults[name])
    );
  };
  var getBindsSnapshot = () => {
    let snapshot = {};
    return moduleNames.forEach((name) => {
      snapshot[name] = binds[name] ?? "";
    }), snapshot;
  };

  // src/bloxd.js
  var B = {
    wpRequire: null,
    _noa: null,
    bloxdProps: null,
    get noa() {
      return !this._noa && this.bloxdProps && (this._noa = values(this.bloxdProps).find((p) => p?.entities)), this._noa;
    },
    clear() {
      this.wpRequire = null, this._noa = null, this.bloxdProps = null;
    },
    init(force = !1) {
      if (this.wpRequire && !force) return;
      this.clear();
      let descriptors = Object.getOwnPropertyDescriptors(window), chunkKey = Object.keys(descriptors).find((key) => {
        let setter = descriptors[key]?.set;
        return setter && setter.toString().includes("++");
      });
      if (chunkKey || (chunkKey = Object.keys(window).find((key) => {
        let value = window[key];
        return Array.isArray(value) && typeof value.push == "function";
      })), !chunkKey) throw new Error("Unable to locate webpack chunk");
      let chunk = window[chunkKey], randomID = Math.floor(Math.random() * 9999999) + 1;
      chunk.push([[randomID], {}, (req) => this.wpRequire = req]), this.bloxdProps = values(this.findModule("nonBlocksClient:")).find(
        (o) => typeof o == "object"
      ), this._noa = null;
    },
    findModule(str) {
      if (!this.wpRequire) return null;
      let mods = this.wpRequire.m;
      for (let id in mods) {
        let modFn = mods[id];
        if (modFn && modFn.toString().includes(str))
          return this.wpRequire(id);
      }
      return null;
    }
  }, getImpKey = () => attempt(() => {
    let entities = B.noa.entities, target = values(entities)[2];
    return entries(entities).find(([, val]) => val === target)?.[0] ?? null;
  }), getInventoryContext = () => {
    let noa = B.noa;
    if (!noa) return null;
    let entities = noa.entities, impKey = getImpKey();
    if (!impKey) return null;
    let entity = entities[impKey];
    if (!entity) return null;
    let inventoryWrapper = values(entity).find(
      (value) => value?.list?.[0]?._blockItem
    );
    if (!inventoryWrapper?.list?.length) return null;
    let listItem = inventoryWrapper.list[0];
    return { impKey, entity, inventoryWrapper, listItem };
  }, getHeldBlockContext = () => {
    let ctx = getInventoryContext();
    if (!ctx) return null;
    let heldBlock = ctx.listItem?._blockItem;
    if (!heldBlock) return null;
    let playerEntity = values(ctx.listItem).find(
      (value) => typeof value?.checkTargetedBlockCanBePlacedOver == "function"
    );
    if (!playerEntity) return null;
    let worldInstanceKey, worldInstance;
    if (keys(heldBlock).some((key) => {
      let value = heldBlock[key];
      return value && typeof value == "object" ? (worldInstanceKey = key, worldInstance = value, !0) : !1;
    }), !worldInstanceKey || !worldInstance) return null;
    let targetedBlockKey = null, targetedBlock = null;
    return keys(worldInstance).some((key) => {
      let value = worldInstance[key];
      return value && typeof value == "object" && (value.normal || value.position) ? (targetedBlockKey = key, targetedBlock = value, !0) : !1;
    }), {
      heldBlock,
      worldInstanceKey,
      worldInstance,
      targetedBlockKey,
      targetedBlock,
      playerEntity
    };
  }, createSpoofedContext = (context, position) => {
    let {
      heldBlock,
      worldInstanceKey,
      worldInstance,
      targetedBlockKey,
      targetedBlock
    } = context, safeTarget = clone(targetedBlock) || {
      normal: [0, 1, 0],
      position: [...position],
      blockPosition: position.map(floor),
      hitPoint: [...position]
    };
    return safeTarget.position = [...position], safeTarget.blockPosition = safeTarget.blockPosition ?? position.map(floor), safeTarget.normal = safeTarget.normal ?? [0, 1, 0], safeTarget.hitPoint = safeTarget.hitPoint ?? [...position], new Proxy(
      {},
      {
        get(_target, prop) {
          if (prop === worldInstanceKey)
            return new Proxy(worldInstance, {
              get(inner, key) {
                return key === targetedBlockKey ? safeTarget : inner[key];
              }
            });
          if (prop === "checkTargetedBlockCanBePlacedOver") return () => !0;
          let value = heldBlock[prop];
          return typeof value == "function" ? value.bind(heldBlock) : value;
        }
      }
    );
  }, placeSpoofedBlock = (position, context) => {
    let ctx = context ?? getHeldBlockContext();
    return ctx?.heldBlock?.placeBlock ? attempt(() => {
      let spoofed = createSpoofedContext(ctx, position);
      return ctx.heldBlock.placeBlock.call(spoofed), !0;
    }, !1) : !1;
  };

  // src/modules/base.js
  var Module = class {
    constructor(name) {
      this.name = name, this.enabled = !1;
    }
    onEnable() {
    }
    onDisable() {
    }
    onRender() {
    }
    toggle() {
      this.enabled ? this.disable() : this.enable();
    }
    enable() {
      this.enabled || (this.enabled = !0, this.onEnable());
    }
    disable() {
      this.enabled && (this.enabled = !1, this.onDisable());
    }
  }, base_default = Module;

  // src/game.js
  var game = {
    getPosition: (id) => attempt(() => B.noa.entities.getState(id, "position").position),
    getMoveState: (id) => attempt(() => B.noa.entities.getState(id, "movement")),
    get registry() {
      return attempt(() => values(B.noa)[17], {});
    },
    get getSolidity() {
      return values(this.registry)[5];
    },
    get getBlockID() {
      return attempt(
        () => {
          let names = Object.getOwnPropertyNames(
            B.noa.bloxd.constructor.prototype
          );
          return B.noa.bloxd[names[3]].bind(B.noa.bloxd);
        },
        () => 0
      );
    },
    getHeldItemGetter() {
      return attempt(
        () => values(B.noa.entities).find((fn) => {
          if (typeof fn != "function" || fn.length !== 1) return !1;
          let body = fn.toString();
          return body.length < 80 && body.includes(").") && !body.includes("opWrapper");
        })
      );
    },
    safeHeld(id) {
      let getter = this.getHeldItemGetter();
      return getter ? attempt(() => getter(id)) : null;
    },
    get playerList() {
      return attempt(() => {
        let ids = B.noa?.bloxd?.getPlayerIds?.();
        return ids ? Object.values(ids).map(Number).filter((id) => id && id !== 1 && this.safeHeld(id)) : [];
      }, []);
    },
    get doAttack() {
      let held = this.safeHeld(1);
      if (!held) return () => {
      };
      let attack = held.doAttack || held.breakingItem?.doAttack;
      return attack ? attack.bind(held) : () => {
      };
    },
    touchingWall() {
      let pos = this.getPosition(1);
      if (!pos) return !1;
      let r = 0.35, offsets = [
        [0, 0],
        [r, 0],
        [-r, 0],
        [0, r],
        [0, -r],
        [r, r],
        [r, -r],
        [-r, r],
        [-r, -r]
      ], heights = [0, 1, 2], getId = this.getBlockID;
      for (let [ox, oz] of offsets)
        for (let h of heights) {
          let id = attempt(
            () => getId(floor(pos[0] + ox), floor(pos[1]) + h, floor(pos[2] + oz)),
            null
          );
          if (id !== null && this.getSolidity(id)) return !0;
        }
      return !1;
    },
    getHeldItemState() {
      return getHeldBlockContext()?.playerEntity?.heldItemState || null;
    }
  };

  // src/math.js
  var math = {
    norm(v) {
      let s = v[0] * v[0] + v[1] * v[1] + v[2] * v[2];
      if (!s) return v;
      let i = 1 / Math.sqrt(s);
      return [v[0] * i, v[1] * i, v[2] * i];
    },
    dist(a, b) {
      let dx = b[0] - a[0], dy = b[1] - a[1], dz = b[2] - a[2];
      return Math.sqrt(dx * dx + dy * dy + dz * dz);
    },
    distSq(a, b) {
      let dx = b[0] - a[0], dy = b[1] - a[1], dz = b[2] - a[2];
      return dx * dx + dy * dy + dz * dz;
    }
  };

  // src/modules/killaura.js
  var Killaura = class extends base_default {
    constructor() {
      super("Killaura"), this.lastSwing = 0;
    }
    onEnable() {
      this.lastSwing = 0;
    }
    onRender() {
      let now = Date.now(), baseDelay = config.killaura.delay, jitter = baseDelay * config.killaura.jitterRatio * (Math.random() - 0.5), effectiveDelay = Math.max(25, baseDelay + jitter);
      if (now - this.lastSwing < effectiveDelay)
        return;
      this.lastSwing = now;
      let playerPosition = game.getPosition(1);
      if (!playerPosition)
        return;
      let killRadius = config.killaura.range, killRadiusSq = killRadius * killRadius;
      game.playerList.forEach((playerId, index) => {
        let enemyPos = game.getPosition(playerId);
        if (!enemyPos || math.distSq(playerPosition, enemyPos) > killRadiusSq)
          return;
        let vector = math.norm([
          enemyPos[0] - playerPosition[0],
          enemyPos[1] - playerPosition[1],
          enemyPos[2] - playerPosition[2]
        ]);
        try {
          game.doAttack(vector, playerId.toString(), "BodyMesh");
          let safeHeld = game.safeHeld(1);
          safeHeld?.trySwingBlock && safeHeld.trySwingBlock();
          let moveState2 = game.getMoveState(1);
          moveState2?.setArmsAreSwinging && moveState2.setArmsAreSwinging();
        } catch (error) {
          console.debug("[KILLAURA] Killaura attack failed:", error), console.error("[KILLAURA] Error details:", error.message, error.stack);
        }
      });
    }
  }, killaura_default = Killaura;

  // src/modules/scaffold.js
  var Scaffold = class extends base_default {
    constructor() {
      super("Scaffold"), this.interval = null;
    }
    onEnable() {
      this.startInterval();
    }
    onDisable() {
      clearInterval(this.interval), this.interval = null;
    }
    startInterval() {
      clearInterval(this.interval);
      let delay = Math.max(5, config.scaffold?.interval ?? 20);
      this.interval = setInterval(() => this.enabled && this.tryPlace(), delay), this.tryPlace();
    }
    tryPlace() {
      let context = getHeldBlockContext();
      if (!context?.playerEntity || context.playerEntity.heldItemState?.heldType !== "CubeBlock") return;
      let pos = game.getPosition(1);
      if (!pos) return;
      let blockX = floor(pos[0]), blockY = floor(pos[1]), blockZ = floor(pos[2]), checkPlace = (x, y, z) => attempt(
        () => context.playerEntity.checkTargetedBlockCanBePlacedOver?.([x, y, z]),
        !1
      ) ? !0 : attempt(() => !game.getSolidity(game.getBlockID(x, y, z)), !1), target = [blockX, blockY - 1, blockZ];
      if (placeSpoofedBlock(target, context) || checkPlace(...target) && placeSpoofedBlock(target, context)) return;
      let dx = pos[0] - blockX, dz = pos[2] - blockZ, offsets = [];
      dx < 0.3 && offsets.push([-1, 0]), dx > 0.7 && offsets.push([1, 0]), dz < 0.3 && offsets.push([0, -1]), dz > 0.7 && offsets.push([0, 1]), offsets.some(([ox, oz]) => {
        let coords = [blockX + ox, blockY - 1, blockZ + oz];
        return checkPlace(...coords) && placeSpoofedBlock(coords, context);
      });
    }
  }, scaffold_default = Scaffold;

  // src/modules/slowswing.js
  var SlowSwing = class extends base_default {
    constructor() {
      super("SlowSwing"), this.slowDuration = config.slowSwing.duration || 2e3, this.normalDuration = 200;
    }
    setSwing(duration) {
      let heldState = game.getHeldItemState();
      heldState && (heldState.swingDuration = duration);
    }
    onEnable() {
      this.setSwing(this.slowDuration);
    }
    onDisable() {
      this.setSwing(this.normalDuration);
    }
  }, slowswing_default = SlowSwing;

  // src/modules/coordsList.js
  var CoordsList = class extends base_default {
    constructor() {
      super("CoordsList"), this.disabled = !0, this.ondisabled = !1;
    }
    onEnable() {
      this.disabled = !1, this.ondisabled = !1;
    }
    onDisable() {
      this.disabled = !0, this.ondisabled = !1;
    }
    onRender() {
      if (!(this.disabled && this.ondisabled) && B?.noa.bloxd?.entityNames)
        try {
          for (let entityId in B.noa.bloxd.entityNames) {
            if (entityId === "1")
              continue;
            let entityData = B.noa.bloxd.entityNames[entityId], positionData = B.noa.entities?.getState?.(entityId, "position");
            if (!positionData || !positionData.position)
              continue;
            let position = positionData.position, x = Math.round(position[0]), y = Math.round(position[1]), z = Math.round(position[2]), baseName = entityData.entityName.replace(/\s*\(\-?\d+,\s*\-?\d+,\s*\-?\d+\)$/, "");
            if (!this.ondisabled && this.disabled) {
              entityData.entityName = baseName, this.ondisabled = !0;
              continue;
            }
            entityData.entityName = `${baseName} (${x}, ${y}, ${z})`;
          }
        } catch (error) {
          console.error("Error updating player coords:", error);
        }
    }
  }, coordsList_default = CoordsList;

  // src/modules/esp.js
  var ESP = class extends base_default {
    constructor() {
      super("ESP"), this.interval = null;
    }
    update(state) {
      if (!B.noa) return;
      let rendering = values(B.noa)[12];
      if (!rendering) return;
      let thinMeshes = values(rendering).find(
        (value) => value?.thinMeshes
      )?.thinMeshes;
      if (!Array.isArray(thinMeshes)) return;
      let renderingGroupId = state ? 2 : 0;
      for (let item of thinMeshes) {
        let mesh = item?.meshVariations?.__DEFAULT__?.mesh;
        mesh && typeof mesh.renderingGroupId == "number" && (mesh.renderingGroupId = renderingGroupId);
      }
    }
    onEnable() {
      this.update(!0), this.interval = setInterval(() => this.update(!0), 300);
    }
    onDisable() {
      clearInterval(this.interval), this.interval = null, this.update(!1);
    }
    onRender() {
      this.enabled && this.update(!0);
    }
  }, esp_default = ESP;

  // src/modules/bhop.js
  var bhopInterval = null, moveState = null, movement = null, bunnyhopping = !1;
  function initBhop() {
    moveState = game.getMoveState(1), moveState && (movement = attempt(() => B.noa.entities.getState(1, "movement")));
  }
  function bhopTick() {
    if (!moveState) return;
    let touchScreen = !1;
    moveState._isAlive ? moveState.crouching || moveState.speed < 0.05 || movement?._flying ? bunnyhopping && (touchScreen ? moveState.jumping = !1 : B.noa?.inputs?.state && (B.noa.inputs.state.jump = !1), bunnyhopping = !1) : (bunnyhopping || (bunnyhopping = !0), movement?.isOnGround?.() ? touchScreen ? moveState.jumping = !0 : B.noa?.inputs?.state && (B.noa.inputs.state.jump = !0) : touchScreen ? moveState.jumping = !1 : B.noa?.inputs?.state && (B.noa.inputs.state.jump = !1)) : moveState.speedMultiplier?.multipliers && (moveState.speedMultiplier.multipliers.bhop = 1);
  }
  function startBhop() {
    bhopInterval || (initBhop(), bhopInterval = setInterval(() => {
      moveState || initBhop(), bhopTick();
    }, 1));
  }
  function stopBhop() {
    bhopInterval && (clearInterval(bhopInterval), bhopInterval = null), moveState?.speedMultiplier?.multipliers && (moveState.speedMultiplier.multipliers.bhop = 1), bunnyhopping = !1, moveState = null, movement = null;
  }
  var Bhop = class extends base_default {
    constructor() {
      super("Bhop");
    }
    onEnable() {
      startBhop();
    }
    onDisable() {
      stopBhop();
    }
  };

  // src/modules/index.js
  var modules = [
    new killaura_default(),
    new scaffold_default(),
    new slowswing_default(),
    new coordsList_default(),
    new esp_default(),
    new Bhop()
  ];

  // src/ui.js
  var setupUI = (modules2, reinject2) => {
    let listBox = el("div");
    style(listBox, {
      position: "fixed",
      top: "10px",
      left: "40px",
      background: "rgba(0,0,0,.6)",
      color: "#fff",
      padding: "6px 8px",
      borderRadius: "4px",
      font: "12px sans-serif",
      zIndex: 999999
    }), document.body.appendChild(listBox);
    let toggleBtn = el("button");
    toggleBtn.textContent = "\u2261", style(toggleBtn, {
      position: "fixed",
      top: "10px",
      left: "10px",
      width: "24px",
      height: "24px",
      cursor: "pointer",
      zIndex: 1e6
    }), document.body.appendChild(toggleBtn), toggleBtn.onclick = () => {
      listBox.style.display = listBox.style.display === "none" ? "block" : "none";
    };
    let gear = el("button");
    gear.textContent = "\u2699\uFE0F", style(gear, {
      position: "fixed",
      top: "10px",
      right: "10px",
      cursor: "pointer",
      zIndex: 1e6
    }), document.body.appendChild(gear);
    let panel2 = el("div");
    style(panel2, {
      position: "fixed",
      top: "45px",
      right: "10px",
      background: "rgba(0,0,0,.8)",
      color: "#fff",
      padding: "10px",
      borderRadius: "5px",
      font: "12px sans-serif",
      zIndex: 1e6,
      display: "none",
      overflow: "scroll"
    }), panel2.innerHTML = `
    <h2><strong>Generic Skid Clientâ‚‚</strong></h2>
<details>
    <summary><strong>Keybinds</strong></summary>
    <div id="kb"></div>
</details>
    <hr>
<details>
  <summary>
<strong>Killaura</strong>
</summary>
<br>
Delay <input id="ka-d" type="number" style="width:60px"> ms<br>
Range <input id="ka-r" type="number" style="width:60px"><br>
Jitter Ratio <input id="ka-j" type="number" step="0.05" style="width:60px">
</details>

    <hr>
<details>
<summary>
<strong>Scaffold</strong></summary><br>
Delay <input id="sc-i" type="number" style="width:60px"> ms<br>
</details>
    <hr>
<summary><strong>SlowSwing</strong></<ummary><br>
Duration <input id="ss-d" type="number" style="width:60px"> ms<br>
<hr>
<button id="manual-reinject">Re-Inject Client</button>
  `, document.body.appendChild(panel2), gear.onclick = () => {
      panel2.style.display = panel2.style.display === "none" ? "block" : "none";
    };
    let refreshList2 = () => {
      listBox.innerHTML = "", modules2.forEach((module) => {
        let row = el("div");
        row.textContent = module.name, row.style.cursor = "pointer", row.style.font="18px sans-serif", row.style.color = module.enabled ? "#0f0" : "#f00", row.onclick = () => {
          module.toggle(), refreshList2();
        }, listBox.appendChild(row);
      });
    }, drawKeyInputs2 = () => {
      let kb = panel2.querySelector("#kb");
      kb.innerHTML = "";
      let snapshot = getBindsSnapshot();
      moduleNames.forEach((name) => {
        let row = el("div");
        row.innerHTML = `${name}: <input data-mod="${name}" value="${snapshot[name]}" style="width:80px">`, kb.appendChild(row);
      }), kb.querySelectorAll("input").forEach((input) => {
        input.onchange = (e) => {
          let mod = e.target.dataset.mod;
          setBind(mod, e.target.value), drawKeyInputs2();
        };
      });
    };
    return panel2.querySelector("#manual-reinject").onclick = () => reinject2(refreshList2), {
      panel: panel2,
      refreshList: refreshList2,
      drawKeyInputs: drawKeyInputs2
    };
  };

  // src/listeners.js
  var setupKeyListener = (modules2, refreshList2) => {
    window.addEventListener(
      "keydown",
      (e) => {
        if (["INPUT", "TEXTAREA"].includes(e.target.tagName)) return;
        let modName = config.keyMap[e.code];
        if (!modName) return;
        e.preventDefault();
        let module = modules2.find((m) => m.name === modName);
        module && (module.toggle(), refreshList2());
      },
      !0
    );
  };

  // src/loop.js
  var startLoop = (modules2) => {
    let loop = () => {
      modules2.forEach((module) => module.enabled && module.onRender()), requestAnimationFrame(loop);
    };
    loop();
  };

  // src/index.js
  initBinds();
  attempt(() => B.init());
  window.gensc = { B, modules };
  var reinject = (refreshList2) => {
    try {
      B.init(!0);
    } catch (error) {
      console.warn("Re-inject init failed", error);
    }
    modules.forEach((module) => {
      if (module.enabled)
        try {
          module.onDisable?.();
        } catch (error) {
          console.debug(`Disable ${module.name} failed`, error);
        }
    }), modules.forEach((module) => {
      if (module.enabled)
        try {
          module.onEnable?.();
        } catch (error) {
          console.debug(`Enable ${module.name} failed`, error);
        }
    }), refreshList2();
  }, { panel, refreshList, drawKeyInputs } = setupUI(modules, reinject), delayInput = panel.querySelector("#ka-d"), rangeInput = panel.querySelector("#ka-r"), jitterInput = panel.querySelector("#ka-j"), scaffoldDelayInput = panel.querySelector("#sc-i"), slowSwingDurationInput = panel.querySelector("#ss-d");
  delayInput && (delayInput.value = config.killaura.delay, delayInput.onchange = (e) => config.killaura.delay = +e.target.value);
  rangeInput && (rangeInput.value = config.killaura.range, rangeInput.onchange = (e) => config.killaura.range = +e.target.value);
  jitterInput && (jitterInput.value = config.killaura.jitterRatio, jitterInput.onchange = (e) => config.killaura.jitterRatio = +e.target.value);
  scaffoldDelayInput && (scaffoldDelayInput.value = config.scaffold.interval, scaffoldDelayInput.onchange = (e) => config.scaffold.interval = +e.target.value);
  slowSwingDurationInput && (slowSwingDurationInput.value = config.slowSwing.duration, slowSwingDurationInput.onchange = (e) => config.slowSwing.duration = +e.target.value);
  refreshList();
  drawKeyInputs();
  setupKeyListener(modules, refreshList);
  startLoop(modules);
})();