Diep.io Custom Points Upgrader. Beta

NEW! custom upgrade builds update! Your upgrade builds will save now! This is still in beta!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Diep.io Custom Points Upgrader. Beta
// @namespace    http://tampermonkey.net/
// @version      10.07
// @homepage     https://greasyfork.org/scripts/416440
// @description  NEW! custom upgrade builds update! Your upgrade builds will save now! This is still in beta!
// @author       -{Abyss⌬}-ora
// @match        https://diep.io/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function () {
    "use strict";

    function getScriptVersion() {
        const metadataBlock = `
// ==UserScript==
// @name         Diep.io Custom Points Upgrader. Beta
// @namespace    http://tampermonkey.net/
// @version      10.07
// @homepage     https://greasyfork.org/scripts/416440
// @description  NEW! custom upgrade builds update! Your upgrade builds will save now! This is still in beta!
// @author       -{Abyss⌬}-ora
// @match        https://diep.io/*
// @grant        none
// @license      MIT
// @downloadURL https://update.greasyfork.org/scripts/416440/Diepio%20Custom%20Points%20Upgrader%20Beta.user.js
// @updateURL https://update.greasyfork.org/scripts/416440/Diepio%20Custom%20Points%20Upgrader%20Beta.meta.js
// ==/UserScript==`;

        const versionMatch = metadataBlock.match(/@version\s+([\d.]+)/);
        return versionMatch ? versionMatch[1] : null;
    }

    function saveDataBeforeUpdate() {
        const dataToSave = {
            quickSpawnUsername: localStorage.getItem("quickSpawnUsername"),
            savedNames: localStorage.getItem("savedNames"),
            savedButtons: localStorage.getItem("savedButtons"),
            removedDefaults: localStorage.getItem("removedDefaults")
        };
        localStorage.setItem("backupData", JSON.stringify(dataToSave));
    }

    function retrieveDataAfterUpdate() {
        const backupData = JSON.parse(localStorage.getItem("backupData"));
        if (backupData) {
            localStorage.setItem("quickSpawnUsername", backupData.quickSpawnUsername);
            localStorage.setItem("savedNames", backupData.savedNames);
            localStorage.setItem("savedButtons", backupData.savedButtons);
            localStorage.setItem("removedDefaults", backupData.removedDefaults);
        }
    }

    function checkAndUpdateVersion() {
        const currentVersion = getScriptVersion();
        const savedVersion = localStorage.getItem("scriptVersion");

        if (!savedVersion || savedVersion < currentVersion) {
            retrieveDataAfterUpdate();
            localStorage.setItem("scriptVersion", currentVersion);
        }
    }

    saveDataBeforeUpdate();

    checkAndUpdateVersion();

    const hoverMenu = document.createElement("div");
    hoverMenu.id = "myhover";
    hoverMenu.className = "hover";

    const modMenu = document.createElement("a");
    modMenu.id = "modtab";

    const menuHeader = document.createElement("h1");
    const versionText = document.createElement("small");
    const smallerVersionText = document.createElement("small");
    smallerVersionText.textContent = `Version: ${getScriptVersion()}`;
    versionText.appendChild(smallerVersionText);
    menuHeader.appendChild(versionText);
    menuHeader.appendChild(document.createElement("br"));
    menuHeader.appendChild(document.createTextNode("-{Abyss⌬}-ora's Mod Menu beta"));
    modMenu.appendChild(menuHeader);

    const topRightButton = document.createElement("button");
    topRightButton.id = "topRightButton";
    topRightButton.textContent = "↻";

    const style = document.createElement("style");
    style.type = "text/css";
    style.textContent = `
        #myhover a {
            z-index: 999;
            position: absolute;
            top: 300px;
            right: -260px;
            transition: 0.3s;
            width: 250px;
            padding: 15px;
            background-image: url("https://media.tenor.com/images/f3f5354b7c304bc61882dbb1183885e7/tenor.gif");
            background-color: #555;
            text-decoration: none;
            font-size: 10px;
            font-family: 'Monoton', cursive;
            text-shadow: 1px 1px #000, 2px 2px #555;
            color: white;
            border: double thick white;
            border-radius: 20px;
        }
        #myhover a:hover {
            right: 0;
        }
        .button {
            display: block;
            margin: 5px auto;
            width: 90%;
            text-align: center;
            font-size: 18px;
            font-family: 'Jersey 10', sans-serif;
            color: black;
            background-color: white;
            border-radius: 5px;
            transition: 0.4s;
            cursor: pointer;
        }
        .button:hover {
            transform: translateX(-10px);
        }
        #userInput {
            margin: 5px auto;
            width: 90%;
            padding: 8px;
            font-family: 'Monoton', cursive;
            text-align: center;
        }
        #specialButton {
            display: block;
            margin: 5px auto;
            width: 90%;
            text-align: center;
            font-size: 18px;
            font-family: 'Jersey 10', sans-serif;
            color: white;
            background-color: black;
            border-radius: 5px;
            border-color: white;
            transition: 0.4s;
            cursor: pointer;
            opacity: 0.8;
        }
        #specialButton:hover {
            color: black;
            background-color: darkgray;
            transform: translateX(-10px);
        }
        .popup {
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            width: 300px;
            background-image: url("https://media.tenor.com/images/f3f5354b7c304bc61882dbb1183885e7/tenor.gif");
            background-color: white;
            border: double thick white;
            border-radius: 10px;
            padding: 20px;
            z-index: 1000;
            text-shadow: 1px 1px #000, 2px 2px #555;
        }
        .attribute {
            display: flex;
            align-items: center;
            margin-bottom: 10px;
        }
        .attribute div {
            width: 30px;
            height: 30px;
            border: 1px solid #000;
            margin: 0;
        }
        .attribute button {
            background-color: gray;
            border: none;
            color: black;
            font-size: 20px;
            cursor: pointer;
            width: 30px;
            height: 30px;
            margin: 0;
        }
        #pointsCounter {
            text-align: center;
            font-size: 16px;
            margin-bottom: 10px;
        }
        #createBuildButton {
            display: block;
            margin: 20px auto 0 auto;
            width: 80%;
            text-align: center;
            font-size: 18px;
            font-family: 'Jersey 10', sans-serif;
            color: black;
            background-color: white;
            border-radius: 5px;
            border: 2px solid black;
            cursor: pointer;
            padding: 10px;
        }
        #createBuildButton:hover {
            background-color: gray;
            color: white;
        }
        #codeString {
            text-align: center;
            font-size: 18px;
            margin: 10px 0;
        }
        .remove-button {
            background-color: gray;
            border: none;
            color: white;
            font-size: 18px;
            cursor: pointer;
            width: 30px;
            height: 30px;
            margin-right: 5px;
            transition: background-color 0.3s;
        }
        .remove-button:hover {
            background-color: red;
        }
        .edit-button {
            background-color: gray;
            border: none;
            color: white;
            font-size: 18px;
            cursor: pointer;
            width: 30px;
            height: 30px;
            margin-right: 5px;
            transition: background-color 0.3s;
        }
        .edit-button:hover {
            background-color: lightgray;
        }
        .close-btn {
            display: flex;
            justify-content: center;
            align-items: center;
            position: absolute;
            top: 1px;
            z-index: 10;
            right: 0px;
            width: 40px;
            height: 35px;
            color: white;
            cursor: pointer;
            font-size: 18px;
            line-height: 30px;
            text-align: center;
            transition: background-color 0.3s;
            text-shadow: 1px 1px #000, 2px 2px #555;
            border-radius: 10px;
            background-color: rgba(0, 0, 0, 0.8);
        }
        .close-btn:hover {
            background-color: red;
        }
        #topRightButton {
            position: absolute;
            top: 10px;
            right: 10px;
            width: 30px;
            height: 30px;
            background-color: black;
            color: white;
            border: none;
            border-radius: 10%;
            cursor: pointer;
            font-size: 18px;
            display: flex;
            justify-content: center;
            align-items: center;
            transition: background-color 0.3s;
            z-index: 1001;
            opacity: 0.8;
        }
        #topRightButton:hover {
            color: red;
        }
        #buildButtonsContainer {
            max-height: 400px;
            overflow-y: scroll;
            margin-left: 5px;
        }
        #buildButtonsContainer {
            -ms-overflow-style: none;
            scrollbar-width: none;
        }
        ::-webkit-scrollbar {
            width: 10px;
        }
        ::-webkit-scrollbar-track {
            background: #f1f1f1;
            border-radius: 10px;
        }
        ::-webkit-scrollbar-thumb {
            background: #888;
            border-radius: 10px;
        }
        ::-webkit-scrollbar-thumb:hover {
            background: #555;
        }
        .popup {
            position: fixed;
            z-index: 9;
            background-color: #f1f1f1;
            border: 1px solid #d3d3d3;
            text-align: center;
            padding-top: 40px;
        }
        .popup-header {
            display: flex;
            justify-content: center;
            align-items: center;
            position: absolute;
            top: 1px;
            left: 0px;
            right: 35px;
            height: 30px;
            cursor: grabbing;
            z-index: 10;
            background-color: rgba(5, 5,5, 0.8);
            color: #fff;
            font-size: 10px;
            font-family: 'Monoton', cursive;
            text-shadow: 1px 1px #000, 2px 2px #555;
            border-color:  white;
            border-radius: 10px;
        }
    `;
    document.head.appendChild(style);

    const inputContainer = document.createElement("div");
    inputContainer.style.position = "relative";
    inputContainer.style.width = "90%";
    inputContainer.style.margin = "5px auto";

    const heartIcon = document.createElement("span");
    heartIcon.textContent = "♥";
    heartIcon.style.position = "absolute";
    heartIcon.style.left = "10px";
    heartIcon.style.top = "50%";
    heartIcon.style.transform = "translateY(-50%)";
    heartIcon.style.cursor = "pointer";
    heartIcon.style.fontSize = "18px";
    heartIcon.style.color = "black";

    const userInput = document.createElement("input");
    userInput.id = "userInput";
    userInput.type = "text";
    userInput.placeholder = "Enter Username";
    userInput.value = localStorage.getItem("quickSpawnUsername") || "";
    userInput.style.width = "100%";
    userInput.style.padding = "8px 30px 8px 30px";
    userInput.style.border = "2px solid black";
    userInput.style.borderRadius = "5px";
    userInput.style.boxSizing = "border-box";
    userInput.style.fontFamily = "'Monoton', cursive";
    userInput.style.textAlign = "center";

    const dropdownArrow = document.createElement("span");
    dropdownArrow.textContent = "▼";
    dropdownArrow.style.position = "absolute";
    dropdownArrow.style.right = "10px";
    dropdownArrow.style.top = "50%";
    dropdownArrow.style.transform = "translateY(-50%)";
    dropdownArrow.style.cursor = "pointer";
    dropdownArrow.style.fontSize = "14px";
    dropdownArrow.style.color = "black";

    const dropdown = document.createElement("div");
    dropdown.id = "dropdownMenu";
    dropdown.style.position = "absolute";
    dropdown.style.width = "100%";
    dropdown.style.top = "100%";
    dropdown.style.left = "0";
    dropdown.style.backgroundImage = "url('https://media.tenor.com/images/f3f5354b7c304bc61882dbb1183885e7/tenor.gif')";
    dropdown.style.border = "4px double white";
    dropdown.style.borderTop = "none";
    dropdown.style.display = "none";
    dropdown.style.zIndex = "100";
    dropdown.style.maxHeight = "150px";
    dropdown.style.overflowY = "auto";

    dropdownArrow.addEventListener("click", () => {
        dropdown.style.display = dropdown.style.display === "block" ? "none" : "block";
    });

    document.addEventListener("click", (event) => {
        if (!inputContainer.contains(event.target)) {
            dropdown.style.display = "none";
        }
    });

    userInput.addEventListener("input", (event) => {
        localStorage.setItem("quickSpawnUsername", event.target.value);
        updateHeartIcon();
    });

    heartIcon.addEventListener("click", () => {
        const name = userInput.value.trim();
        if (name) {
            const savedNames = JSON.parse(localStorage.getItem("savedNames")) || [];
            const nameIndex = savedNames.indexOf(name);

            if (nameIndex === -1) {
                savedNames.push(name);
                heartIcon.style.color = "red";
            } else {
                savedNames.splice(nameIndex, 1);
                heartIcon.style.color = "black";
            }

            localStorage.setItem("savedNames", JSON.stringify(savedNames));
            updateDropdown(savedNames);
        }
    });

    function updateDropdown(names) {
        dropdown.innerHTML = "";
        names.forEach(name => {
            const optionContainer = document.createElement("div");
            optionContainer.style.display = "flex";
            optionContainer.style.alignItems = "center";
            optionContainer.style.justifyContent = "space-between";
            optionContainer.style.padding = "8px";
            optionContainer.style.cursor = "pointer";
            optionContainer.style.fontFamily = "'Monoton', cursive";
            optionContainer.style.textAlign = "center";
            optionContainer.style.fontSize = "18px";
            optionContainer.style.backgroundImage = "url('https://media.tenor.com/images/f3f5354b7c304bc61882dbb1183885e7/tenor.gif')";
            optionContainer.style.transition = "background 0.3s";

            const option = document.createElement("div");
            option.textContent = name;
            option.style.flexGrow = "1";
            option.style.textAlign = "left";

            option.addEventListener("mouseover", () => {
                optionContainer.style.backgroundColor = "rgba(169, 169, 169, 0.8)";
            });

            option.addEventListener("mouseout", () => {
                optionContainer.style.backgroundColor = "transparent";
            });

            option.addEventListener("click", () => {
                userInput.value = name;
                dropdown.style.display = "none";
                localStorage.setItem("quickSpawnUsername", name);
                updateHeartIcon();
            });

            optionContainer.appendChild(option);
            dropdown.appendChild(optionContainer);
        });
    }

    function updateHeartIcon() {
        const name = userInput.value.trim();
        const savedNames = JSON.parse(localStorage.getItem("savedNames")) || [];
        if (savedNames.includes(name)) {
            heartIcon.style.color = "red";
        } else {
            heartIcon.style.color = "black";
        }
    }

    const savedNames = JSON.parse(localStorage.getItem("savedNames")) || [];
    updateDropdown(savedNames);
    updateHeartIcon();

    inputContainer.appendChild(heartIcon);
    inputContainer.appendChild(userInput);
    inputContainer.appendChild(dropdownArrow);
    inputContainer.appendChild(dropdown);
    modMenu.appendChild(inputContainer);

    const buttons = [];

    buttons.forEach((buttonData) => {
        const buttonContainer = document.createElement("div");
        buttonContainer.style.display = "flex";
        buttonContainer.style.alignItems = "center";
        buttonContainer.style.justifyContent = "center";

        const button = document.createElement("button");
        button.className = "button";
        button.textContent = buttonData.name;
        button.style.backgroundColor = buttonData.color;
        button.onclick = () => {
            const spawnName = userInput.value.trim();
            window.input.execute(`game_spawn ${spawnName}`);
            window.input.execute(`game_stats_build ${buttonData.cmd}`);
            const hoverMenu = document.getElementById("myhover");
            if (hoverMenu) {
                hoverMenu.style.display = hoverMenu.style.display === "none" ? "block" : "none";
            }
        };
        buttonContainer.appendChild(button);

        modMenu.appendChild(buttonContainer);
    });

    const specialButton = document.createElement("button");
    specialButton.id = "specialButton";
    specialButton.textContent = "[+]";

    specialButton.onclick = () => {
        const popup = document.createElement("div");
        popup.className = "popup";
        popup.id = "resetPopup";
        popup.innerHTML = `<div class="popup-header" id="resetPopupHeader">Drag me</div> `;
        document.body.appendChild(popup);

        const closeButton = document.createElement("button");
        closeButton.className = "close-btn";
        closeButton.textContent = "X";
        closeButton.onclick = () => {
            document.body.removeChild(popup);
        };
        popup.appendChild(closeButton);

        const buildNameInput = document.createElement("input");
        buildNameInput.type = "text";
        buildNameInput.placeholder = "Build Name";
        buildNameInput.style.display = "block";
        buildNameInput.style.width = "80%";
        buildNameInput.style.margin = "0 auto 10px auto";
        popup.appendChild(buildNameInput);

        const pointsCounter = document.createElement("div");
        pointsCounter.id = "pointsCounter";
        pointsCounter.textContent = "Points: 33";
        popup.appendChild(pointsCounter);

        const codeString = document.createElement("input");
        codeString.id = "codeString";
        codeString.type = "text";
        codeString.value = "";
        codeString.style.display = "block";
        codeString.style.width = "80%";
        codeString.style.margin = "0 auto 10px auto";
        popup.appendChild(codeString);

        let totalPoints = 33;
        let code = "";

        const attributes = [
            { name: "Health Regen", color: "rgb(232, 188, 157)" },
            { name: "Max Health", color: "rgb(230, 128, 234)" },
            { name: "Body Damage", color: "rgb(165, 128, 234)" },
            { name: "Bullet Speed", color: "rgb(128, 162, 234)" },
            { name: "Bullet Penetration", color: "rgb(234, 215, 128)" },
            { name: "Bullet Damage", color: "rgb(234, 128, 128)" },
            { name: "Reload", color: "rgb(164, 234, 128)" },
            { name: "Movement Speed", color: "rgb(128, 234, 230)" },
        ];

        function updateAttributes() {
            totalPoints = 33;
            attributes.forEach((attribute, index) => {
                const attributeRow = document.getElementById(`attributeRow-${index}`);
                const attributeCount = Math.min((code.match(new RegExp(index + 1, "g")) || []).length, 7);
                for (let i = 0; i < 7; i++) {
                    const graySquare = attributeRow.children[i + 1];
                    if (i < attributeCount) {
                        graySquare.style.backgroundColor = attribute.color;
                        graySquare.style.border = "1px solid black";
                        totalPoints--;
                    } else {
                        graySquare.style.backgroundColor = "gray";
                        graySquare.style.border = "0";
                    }
                }
            });
            pointsCounter.textContent = `Points: ${totalPoints}`;
        }

        attributes.forEach((attribute, index) => {
            const attributeRow = document.createElement("div");
            attributeRow.className = "attribute";
            attributeRow.id = `attributeRow-${index}`;
            attributeRow.style.position = "relative";

            const minusButton = document.createElement("button");
            minusButton.style.padding = "0 5px";
            minusButton.style.border = "1px solid black";
            minusButton.style.borderTopLeftRadius = "50px";
            minusButton.style.borderBottomLeftRadius = "50px";
            minusButton.style.borderTopRightRadius = "0";
            minusButton.style.borderBottomRightRadius = "0";
            minusButton.style.width = "32px";
            minusButton.style.height = "32px";
            minusButton.textContent = "-";
            minusButton.onclick = () => {
                const coloredSquares = Array.from(attributeRow.children).filter(child => child !== plusButton && child.style.backgroundColor === attribute.color);
                if (coloredSquares.length > 0) {
                    const square = coloredSquares[coloredSquares.length - 1];
                    square.style.backgroundColor = "gray";
                    square.style.border = "0";
                    totalPoints++;
                    pointsCounter.textContent = `Points: ${totalPoints}`;
                    code = code.slice(0, -1);
                    codeString.value = code;
                    updateAttributes();
                }
            };
            attributeRow.appendChild(minusButton);

            for (let i = 0; i < 7; i++) {
                const colorDiv = document.createElement("div");
                colorDiv.style.border = "0";
                colorDiv.style.backgroundColor = "gray";
                colorDiv.style.width = "30px";
                colorDiv.style.height = "30px";
                colorDiv.style.display = "inline-block";
                colorDiv.style.position = "relative";
                colorDiv.style.padding = "0 5px";

                if (i === 3) {
                    const textSpan = document.createElement("span");
                    textSpan.textContent = attribute.name;
                    textSpan.style.position = "absolute";
                    textSpan.style.top = "50%";
                    textSpan.style.left = "50%";
                    textSpan.style.transform = "translate(-50%, -50%)";
                    textSpan.style.color = "white";
                    textSpan.style.pointerEvents = "none";
                    textSpan.style.whiteSpace = "nowrap";
                    textSpan.style.zIndex = "1";
                    textSpan.style.display = "inline-block";
                    textSpan.style.textShadow =
                        "1px 1px 1px black, -1px -1px 1px black, -1px 1px 1px black, 1px -1px 1px black";

                    colorDiv.appendChild(textSpan);
                }

                attributeRow.appendChild(colorDiv);
            }

            const plusButton = document.createElement("button");
            plusButton.style.padding = "0 5px";
            plusButton.style.border = "1px solid black";
            plusButton.style.borderTopLeftRadius = "0";
            plusButton.style.borderBottomLeftRadius = "0";
            plusButton.style.borderTopRightRadius = "50px";
            plusButton.style.borderBottomRightRadius = "50px";
            plusButton.style.width = "32px";
            plusButton.style.height = "32px";
            plusButton.style.color = "Black";
            plusButton.style.fontWeight = "bold";
            plusButton.textContent = "+";
            plusButton.style.backgroundColor = attribute.color;

            plusButton.onclick = () => {
                const graySquares = Array.from(attributeRow.children).filter(child => child.style.backgroundColor === "gray" && child !== plusButton);
                if (graySquares.length > 0) {
                    const square = graySquares[0];
                    square.style.backgroundColor = attribute.color;
                    square.style.border = "1px solid black";
                    totalPoints--;
                    pointsCounter.textContent = `Points: ${totalPoints}`;
                    code += (index + 1).toString();
                    codeString.value = code;
                    updateAttributes();
                }
            };
            attributeRow.appendChild(plusButton);

            popup.appendChild(attributeRow);
        });

        codeString.addEventListener("input", (event) => {
            code = event.target.value;
            updateAttributes();
        });

        const createBuildButton = document.createElement("button");
        createBuildButton.id = "createBuildButton";
        createBuildButton.textContent = "Create Build";
        createBuildButton.onclick = () => {
            const buildName = buildNameInput.value.trim();
            if (buildName === "") {
                alert("Please enter a build name.");
                return;
            }

            let savedButtons = JSON.parse(localStorage.getItem("savedButtons")) || [];
            const newButtonData = { name: buildName, color: "#C0C0C0", cmd: code };
            savedButtons.push(newButtonData);
            localStorage.setItem("savedButtons", JSON.stringify(savedButtons));

            const buttonContainer = document.createElement("div");
            buttonContainer.style.display = "flex";
            buttonContainer.style.alignItems = "center";
            buttonContainer.style.justifyContent = "center";

            const editButton = document.createElement("button");
            editButton.className = "edit-button";
            editButton.textContent = "🖉";
            editButton.style.width = "30px";
            editButton.style.height = "30px";
            editButton.onclick = () => {
                createEditPopup(buttonContainer, newButtonData);
            };
            buttonContainer.appendChild(editButton);

            const newButton = document.createElement("button");
            newButton.className = "button";
            newButton.textContent = buildName;
            newButton.style.backgroundColor = "#C0C0C0";
            newButton.style.width = "100px";
            newButton.style.height = "30px";
            newButton.onclick = () => {
                const spawnName = userInput.value.trim();
                window.input.execute(`game_spawn ${spawnName}`);
                window.input.execute(`game_stats_build ${code}`);
                const hoverMenu = document.getElementById("myhover");
                if (hoverMenu) {
                    hoverMenu.style.display = hoverMenu.style.display === "none" ? "block" : "none";
                }
            };
            buttonContainer.appendChild(newButton);

            buildButtonsContainer.appendChild(buttonContainer);

            document.body.removeChild(popup);
        };
        popup.appendChild(createBuildButton);

        document.body.appendChild(popup);
        dragElement(document.getElementById("resetPopup"));
    };

    modMenu.appendChild(specialButton);
    modMenu.appendChild(topRightButton);
    hoverMenu.appendChild(modMenu);
    document.body.appendChild(hoverMenu);

    document.addEventListener("keydown", (event) => {
        if ((event.key === "r" || event.key === "R") && !["INPUT", "TEXTAREA"].includes(event.target.tagName)) {
            const hoverMenu = document.getElementById("myhover");
            if (hoverMenu) {
                hoverMenu.style.display = hoverMenu.style.display === "none" ? "block" : "none";
            }
        }
    });

    window.onload = () => {
        const userInput = document.getElementById("userInput");
        const specialButton = document.getElementById("specialButton");
        const modMenu = document.getElementById("modtab");
        const topRightButton = document.getElementById("topRightButton");

        const savedButtons = JSON.parse(localStorage.getItem("savedButtons")) || [];

        const buildButtonsContainer = document.createElement("div");
        buildButtonsContainer.id = "buildButtonsContainer";
        buildButtonsContainer.style.maxHeight = "400px";
        buildButtonsContainer.style.overflowY = "scroll";
        buildButtonsContainer.style.color = "black";
        modMenu.insertBefore(buildButtonsContainer, specialButton);

        function createButton(buttonData) {
            const buttonContainer = document.createElement("div");
            buttonContainer.style.display = "flex";
            buttonContainer.style.alignItems = "center";
            buttonContainer.style.justifyContent = "center";

            const editButton = document.createElement("button");
            editButton.className = "edit-button";
            editButton.textContent = "🖉";
            editButton.onclick = () => {
                createEditPopup(buttonContainer, buttonData);
            };
            buttonContainer.appendChild(editButton);

            const button = document.createElement("button");
            button.className = "button";
            button.textContent = buttonData.name;
            button.style.backgroundColor = buttonData.color;
            button.onclick = () => {
                const spawnName = userInput.value.trim();
                window.input.execute(`game_spawn ${spawnName}`);
                window.input.execute(`game_stats_build ${buttonData.cmd}`);
                const hoverMenu = document.getElementById("myhover");
                if (hoverMenu) {
                    hoverMenu.style.display = hoverMenu.style.display === "none" ? "block" : "none";
                }
            };
            buttonContainer.appendChild(button);

            buildButtonsContainer.appendChild(buttonContainer);
        }

        savedButtons.forEach(buttonData => createButton(buttonData));

        const createBuildButton = document.getElementById("createBuildButton");
        createBuildButton.onclick = () => {
            const buildNameInput = document.getElementById("buildNameInput");
            const buildName = buildNameInput.value.trim();
            if (buildName === "") {
                alert("Please enter a build name.");
                return;
            }

            const code = "some_code_here";

            let savedButtons = JSON.parse(localStorage.getItem("savedButtons")) || [];
            savedButtons.push({ name: buildName, color: "#C0C0C0", cmd: code });
            localStorage.setItem("savedButtons", JSON.stringify(savedButtons));

            const buttonContainer = document.createElement("div");
            buttonContainer.style.display = "flex";
            buttonContainer.style.alignItems = "center";
            buttonContainer.style.justifyContent = "center";

            const editButton = document.createElement("button");
            editButton.className = "edit-button";
            editButton.textContent = "🖉";
            editButton.onclick = () => {
                createEditPopup(buttonContainer, { name: buildName, color: "#C0C0C0", cmd: code });
            };
            buttonContainer.appendChild(editButton);

            const newButton = document.createElement("button");
            newButton.className = "button";
            newButton.textContent = buildName;
            newButton.style.backgroundColor = "#C0C0C0";
            newButton.onclick = () => {
                const spawnName = userInput.value.trim();
                window.input.execute(`game_spawn ${spawnName}`);
                window.input.execute(`game_stats_build ${code}`);
                const hoverMenu = document.getElementById("myhover");
                if (hoverMenu) {
                    hoverMenu.style.display = hoverMenu.style.display === "none" ? "block" : "none";
                }
            };
            buttonContainer.appendChild(newButton);

            buildButtonsContainer.appendChild(buttonContainer);

            document.body.removeChild(popup);
        };
    };

    document.getElementById("userInput").addEventListener("input", (event) => {
        localStorage.setItem("quickSpawnUsername", event.target.value);
    });

    topRightButton.addEventListener("click", () => {
        const resetPopup = document.createElement("div");
        resetPopup.className = "popup";

        const closeButton = document.createElement("button");
        closeButton.className = "close-btn";
        closeButton.textContent = "X";
        closeButton.onclick = () => {
            document.body.removeChild(resetPopup);
        };
        resetPopup.appendChild(closeButton);

        const confirmationMessage = document.createElement("div");
        confirmationMessage.textContent = "Do you really want to reset to default builds?";
        confirmationMessage.style.textAlign = "center";
        confirmationMessage.style.marginBottom = "20px";
        resetPopup.appendChild(confirmationMessage);

        const buttonsContainer = document.createElement("div");
        buttonsContainer.style.display = "flex";
        buttonsContainer.style.justifyContent = "space-between";

        const noButton = document.createElement("button");
        noButton.className = "button";
        noButton.textContent = "NO";
        noButton.onclick = () => {
            document.body.removeChild(resetPopup);
        };
        buttonsContainer.appendChild(noButton);

        const yesButton = document.createElement("button");
        yesButton.className = "button";
        yesButton.textContent = "YES";
        yesButton.onclick = () => {
            localStorage.removeItem("savedButtons");
            localStorage.removeItem("removedDefaults");
            location.reload();
        };
        buttonsContainer.appendChild(yesButton);

        resetPopup.appendChild(buttonsContainer);
        document.body.appendChild(resetPopup);
        dragElement(document.getElementById("resetPopup"));
        dragElementVertical(document.getElementById("mainMenu"));
    });

    function dragElement(elmnt) {
        var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0;
        if (document.getElementById(elmnt.id + "Header")) {
            document.getElementById(elmnt.id + "Header").onmousedown = dragMouseDown;
        } else {
            elmnt.onmousedown = dragMouseDown;
        }

        function dragMouseDown(e) {
            e = e || window.event;
            e.preventDefault();
            pos3 = e.clientX;
            pos4 = e.clientY;
            document.onmouseup = closeDragElement;
            document.onmousemove = elementDrag;
        }

        function elementDrag(e) {
            e = e || window.event;
            e.preventDefault();
            pos1 = pos3 - e.clientX;
            pos2 = pos4 - e.clientY;
            pos3 = e.clientX;
            pos4 = e.clientY;
            elmnt.style.top = (elmnt.offsetTop - pos2) + "px";
            elmnt.style.left = (elmnt.offsetLeft - pos1) + "px";
        }

        function closeDragElement() {
            document.onmouseup = null;
            document.onmousemove = null;
        }
    }

    function dragElementVertical(elmnt) {
        var pos2 = 0, pos4 = 0;
        if (document.getElementById(elmnt.id + "Header")) {
            document.getElementById(elmnt.id + "Header").onmousedown = dragMouseDown;
        } else {
            elmnt.onmousedown = dragMouseDown;
        }

        function dragMouseDown(e) {
            e = e || window.event;
            e.preventDefault();
            pos4 = e.clientY;
            document.onmouseup = closeDragElement;
            document.onmousemove = elementDrag;
        }

        function elementDrag(e) {
            e = e || window.event;
            e.preventDefault();
            pos2 = pos4 - e.clientY;
            pos4 = e.clientY;
            elmnt.style.top = (elmnt.offsetTop - pos2) + "px";
        }

        function closeDragElement() {
            document.onmouseup = null;
            document.onmousemove = null;
        }
    }

    function createRemovePopup(buttonContainer, buttonData) {
        const popup = document.createElement("div");
        popup.className = "popup";
        popup.id = "removePopup";
        popup.innerHTML = `<div class="popup-header" id="removePopupHeader">Drag me</div> `;
        document.body.appendChild(popup);

        const closeButton = document.createElement("button");
        closeButton.className = "close-btn";
        closeButton.textContent = "X";
        closeButton.onclick = () => {
            document.body.removeChild(popup);
        };
        popup.appendChild(closeButton);

        const buildNameInput = document.createElement("input");
        buildNameInput.type = "text";
        buildNameInput.placeholder = "Build Name";
        buildNameInput.style.display = "block";
        buildNameInput.style.width = "80%";
        buildNameInput.style.margin = "0 auto 10px auto";
        buildNameInput.value = buttonData.name;
        popup.appendChild(buildNameInput);

        const pointsCounter = document.createElement("div");
        pointsCounter.id = "pointsCounter";
        pointsCounter.textContent = "Points: 33";
        popup.appendChild(pointsCounter);

        const codeString = document.createElement("input");
        codeString.id = "codeString";
        codeString.type = "text";
        codeString.value = buttonData.cmd;
        codeString.style.display = "block";
        codeString.style.width = "80%";
        codeString.style.margin = "0 auto 10px auto";
        popup.appendChild(codeString);

        let totalPoints = 33;
        let code = buttonData.cmd;

        const attributes = [
            { name: "Health Regen", color: "rgb(232, 188, 157)" },
            { name: "Max Health", color: "rgb(230, 128, 234)" },
            { name: "Body Damage", color: "rgb(165, 128, 234)" },
            { name: "Bullet Speed", color: "rgb(128, 162, 234)" },
            { name: "Bullet Penetration", color: "rgb(234, 215, 128)" },
            { name: "Bullet Damage", color: "rgb(234, 128, 128)" },
            { name: "Reload", color: "rgb(164, 234, 128)" },
            { name: "Movement Speed", color: "rgb(128, 234, 230)" },
        ];

        function updateAttributes() {
            totalPoints = 33;
            attributes.forEach((attribute, index) => {
                const attributeRow = document.getElementById(`attributeRow-${index}`);
                const attributeCount = Math.min((code.match(new RegExp(index + 1, "g")) || []).length, 7);
                for (let i = 0; i < 7; i++) {
                    const graySquare = attributeRow.children[i + 1];
                    if (i < attributeCount) {
                        graySquare.style.backgroundColor = attribute.color;
                        graySquare.style.border = "1px solid black";
                        totalPoints--;
                    } else {
                        graySquare.style.backgroundColor = "gray";
                        graySquare.style.border = "0";
                    }
                }
            });
            pointsCounter.textContent = `Points: ${totalPoints}`;
        }

        attributes.forEach((attribute, index) => {
            const attributeRow = document.createElement("div");
            attributeRow.className = "attribute";
            attributeRow.id = `attributeRow-${index}`;
            attributeRow.style.position = "relative";

            const minusButton = document.createElement("button");
            minusButton.style.padding = "0 5px";
            minusButton.style.border = "1px solid black";
            minusButton.style.borderTopLeftRadius = "50px";
            minusButton.style.borderBottomLeftRadius = "50px";
            minusButton.style.borderTopRightRadius = "0";
            minusButton.style.borderBottomRightRadius = "0";
            minusButton.style.width = "32px";
            minusButton.style.height = "32px";
            minusButton.textContent = "-";
            minusButton.onclick = () => {
                const coloredSquares = Array.from(attributeRow.children).filter(child => child !== plusButton && child.style.backgroundColor === attribute.color);
                if (coloredSquares.length > 0 && totalPoints < 33) {
                    const square = coloredSquares[coloredSquares.length - 1];
                    square.style.backgroundColor = "gray";
                    square.style.border = "0";
                    totalPoints++;
                    pointsCounter.textContent = `Points: ${totalPoints}`;
                    code = code.slice(0, -1);
                    codeString.value = code;
                    updateAttributes();
                }
            };
            attributeRow.appendChild(minusButton);

            for (let i = 0; i < 7; i++) {
                const colorDiv = document.createElement("div");
                colorDiv.style.border = "0";
                colorDiv.style.backgroundColor = "gray";
                colorDiv.style.width = "30px";
                colorDiv.style.height = "30px";
                colorDiv.style.display = "inline-block";
                colorDiv.style.position = "relative";
                colorDiv.style.padding = "0 5px";

                if (i === 3) {
                    const textSpan = document.createElement("span");
                    textSpan.textContent = attribute.name;
                    textSpan.style.position = "absolute";
                    textSpan.style.top = "50%";
                    textSpan.style.left = "50%";
                    textSpan.style.transform = "translate(-50%, -50%)";
                    textSpan.style.color = "white";
                    textSpan.style.pointerEvents = "none";
                    textSpan.style.whiteSpace = "nowrap";
                    textSpan.style.zIndex = "1";
                    textSpan.style.display = "inline-block";
                    textSpan.style.textShadow =
                        "1px 1px 1px black, -1px -1px 1px black, -1px 1px 1px black, 1px -1px 1px black";
                    textSpan.className = "attribute-text";

                    colorDiv.appendChild(textSpan);
                }

                attributeRow.appendChild(colorDiv);
            }

            const plusButton = document.createElement("button");
            plusButton.style.padding = "0 5px";
            plusButton.style.border = "1px solid black";
            plusButton.style.borderTopLeftRadius = "0";
            plusButton.style.borderBottomLeftRadius = "0";
            plusButton.style.borderTopRightRadius = "50px";
            plusButton.style.borderBottomRightRadius = "50px";
            plusButton.style.width = "32px";
            plusButton.style.height = "32px";
            plusButton.style.color = "Black";
            plusButton.style.fontWeight = "bold";
            plusButton.textContent = "+";
            plusButton.style.backgroundColor = attribute.color;

            plusButton.onclick = () => {
                const graySquares = Array.from(attributeRow.children).filter(child => child.style.backgroundColor === "gray" && child !== plusButton);
                if (graySquares.length > 0 && totalPoints > 0) {
                    const square = graySquares[0];
                    square.style.backgroundColor = attribute.color;
                    square.style.border = "1px solid black";
                    totalPoints--;
                    pointsCounter.textContent = `Points: ${totalPoints}`;
                    code += (index + 1).toString();
                    codeString.value = code;
                    updateAttributes();
                }
            };
            attributeRow.appendChild(plusButton);

            popup.appendChild(attributeRow);
        });

        codeString.addEventListener("input", (event) => {
            code = event.target.value;
            updateAttributes();
            adjustFontSize(codeString);
        });

        updateAttributes();
        adjustFontSize(codeString);

        const deleteButton = document.createElement("button");
        deleteButton.id = "deleteButton";
        deleteButton.textContent = "Delete Build";
        deleteButton.style.display = "block";
        deleteButton.style.margin = "10px auto";
        deleteButton.style.width = "80%";
        deleteButton.style.textAlign = "center";
        deleteButton.style.fontSize = "14px";
        deleteButton.style.color = "black";
        deleteButton.style.backgroundColor = "white";
        deleteButton.style.border = "2px solid black";
        deleteButton.style.borderRadius = "5px";
        deleteButton.style.cursor = "pointer";
        deleteButton.onclick = () => {
            const confirmationPopup = document.createElement("div");
            confirmationPopup.className = "popup";
            confirmationPopup.id = "confirmationPopup";
            confirmationPopup.innerHTML = `<div class="popup-header" id="confirmationPopupHeader">Drag Me</div> `;
            document.body.appendChild(confirmationPopup);

            const confirmationMessage = document.createElement("div");
            confirmationMessage.textContent = "Are you sure you want to delete this build?";
            confirmationMessage.style.textAlign = "center";
            confirmationMessage.style.marginBottom = "20px";
            confirmationPopup.appendChild(confirmationMessage);

            const buttonsContainer = document.createElement("div");
            buttonsContainer.style.display = "flex";
            buttonsContainer.style.justifyContent = "space-between";

            const noButton = document.createElement("button");
            noButton.className = "button";
            noButton.textContent = "NO";
            noButton.onclick = () => {
                document.body.removeChild(confirmationPopup);
            };
            buttonsContainer.appendChild(noButton);

            const yesButton = document.createElement("button");
            yesButton.className = "button";
            yesButton.textContent = "YES";
            yesButton.onclick = () => {
                buttonContainer.remove();
                const updatedButtons = JSON.parse(localStorage.getItem("savedButtons")) || [];
                const newSavedButtons = updatedButtons.filter(b => b.name !== buttonData.name);
                localStorage.setItem("savedButtons", JSON.stringify(newSavedButtons));
                document.body.removeChild(confirmationPopup);
                document.body.removeChild(popup);
            };
            buttonsContainer.appendChild(yesButton);

            confirmationPopup.appendChild(buttonsContainer);
            document.body.appendChild(confirmationPopup);
            dragElement(document.getElementById("confirmationPopup"));
        };
        popup.appendChild(deleteButton);

        const saveChangesButton = document.createElement("button");
        saveChangesButton.id = "saveChangesButton";
        saveChangesButton.textContent = "Save Changes";
        saveChangesButton.style.display = "block";
        saveChangesButton.style.margin = "10px auto";
        saveChangesButton.style.width = "80%";
        saveChangesButton.style.textAlign = "center";
        saveChangesButton.style.fontSize = "14px";
        saveChangesButton.style.color = "black";
        saveChangesButton.style.backgroundColor = "white";
        saveChangesButton.style.border = "2px solid black";
        saveChangesButton.style.borderRadius = "5px";
        saveChangesButton.style.cursor = "pointer";
        saveChangesButton.onclick = () => {
            const buildName = buildNameInput.value.trim();
            if (buildName === "") {
                alert("Please enter a build name.");
                return;
            }

            buttonData.name = buildName;
            buttonData.cmd = codeString.value;

            const button = buttonContainer.querySelector(".button");
            button.textContent = buildName;

            const savedButtons = JSON.parse(localStorage.getItem("savedButtons")) || [];
            const updatedButtons = savedButtons.map(b => b.name === buttonData.name ? buttonData : b);
            localStorage.setItem("savedButtons", JSON.stringify(updatedButtons));

            document.body.removeChild(popup);
        };
        popup.appendChild(saveChangesButton);

        document.body.appendChild(popup);
        dragElement(document.getElementById("removePopup"));
    }

    function adjustFontSize(element) {
        let fontSize = 16;
        element.style.fontSize = fontSize + "px";
        while (element.scrollWidth > element.clientWidth && fontSize > 6) {
            fontSize--;
            element.style.fontSize = fontSize + "px";
        }
    }

    function createEditPopup(buttonContainer, buttonData) {
        const popupId = `editPopup-${Date.now()}`;
        const popup = document.createElement("div");
        popup.className = "popup";
        popup.id = popupId;
        popup.innerHTML = `<div class="popup-header" id="${popupId}Header">Drag me</div> `;
        document.body.appendChild(popup);

        const closeButton = document.createElement("button");
        closeButton.className = "close-btn";
        closeButton.textContent = "X";
        closeButton.onclick = () => {
            document.body.removeChild(popup);
        };
        popup.appendChild(closeButton);

        const buildNameInput = document.createElement("input");
        buildNameInput.type = "text";
        buildNameInput.placeholder = "Build Name";
        buildNameInput.style.display = "block";
        buildNameInput.style.width = "80%";
        buildNameInput.style.margin = "0 auto 10px auto";
        buildNameInput.value = buttonData.name;
        popup.appendChild(buildNameInput);

        const pointsCounter = document.createElement("div");
        pointsCounter.id = `pointsCounter-${popupId}`;
        pointsCounter.textContent = "Points: 33";
        popup.appendChild(pointsCounter);

        const codeString = document.createElement("input");
        codeString.id = `codeString-${popupId}`;
        codeString.type = "text";
        codeString.value = buttonData.cmd;
        codeString.style.display = "block";
        codeString.style.width = "80%";
        codeString.style.margin = "0 auto 10px auto";
        popup.appendChild(codeString);

        let totalPoints = 33;
        let code = buttonData.cmd;

        const attributes = [
            { name: "Health Regen", color: "rgb(232, 188, 157)" },
            { name: "Max Health", color: "rgb(230, 128, 234)" },
            { name: "Body Damage", color: "rgb(165, 128, 234)" },
            { name: "Bullet Speed", color: "rgb(128, 162, 234)" },
            { name: "Bullet Penetration", color: "rgb(234, 215, 128)" },
            { name: "Bullet Damage", color: "rgb(234, 128, 128)" },
            { name: "Reload", color: "rgb(164, 234, 128)" },
            { name: "Movement Speed", color: "rgb(128, 234, 230)" },
        ];

        function updateAttributes() {
            totalPoints = 33;
            attributes.forEach((attribute, index) => {
                const attributeRow = document.getElementById(`attributeRow-${popupId}-${index}`);
                const attributeCount = Math.min((code.match(new RegExp(index + 1, "g")) || []).length, 7);
                for (let i = 0; i < 7; i++) {
                    const graySquare = attributeRow.children[i + 1];
                    if (i < attributeCount) {
                        graySquare.style.backgroundColor = attribute.color;
                        graySquare.style.border = "1px solid black";
                        totalPoints--;
                    } else {
                        graySquare.style.backgroundColor = "gray";
                        graySquare.style.border = "0";
                    }
                }
            });
            pointsCounter.textContent = `Points: ${totalPoints}`;
        }

        attributes.forEach((attribute, index) => {
            const attributeRow = document.createElement("div");
            attributeRow.className = "attribute";
            attributeRow.id = `attributeRow-${popupId}-${index}`;
            attributeRow.style.position = "relative";

            const minusButton = document.createElement("button");
            minusButton.style.padding = "0 5px";
            minusButton.style.border = "1px solid black";
            minusButton.style.borderTopLeftRadius = "50px";
            minusButton.style.borderBottomLeftRadius = "50px";
            minusButton.style.borderTopRightRadius = "0";
            minusButton.style.borderBottomRightRadius = "0";
            minusButton.style.width = "32px";
            minusButton.style.height = "32px";
            minusButton.textContent = "-";
            minusButton.onclick = () => {
                const coloredSquares = Array.from(attributeRow.children).filter(child => child !== plusButton && child.style.backgroundColor === attribute.color);
                if (coloredSquares.length > 0) {
                    const square = coloredSquares[coloredSquares.length - 1];
                    square.style.backgroundColor = "gray";
                    square.style.border = "0";
                    totalPoints++;
                    pointsCounter.textContent = `Points: ${totalPoints}`;
                    code = code.slice(0, -1);
                    codeString.value = code;
                    updateAttributes();
                }
            };
            attributeRow.appendChild(minusButton);

            for (let i = 0; i < 7; i++) {
                const colorDiv = document.createElement("div");
                colorDiv.style.border = "0";
                colorDiv.style.backgroundColor = "gray";
                colorDiv.style.width = "30px";
                colorDiv.style.height = "30px";
                colorDiv.style.display = "inline-block";
                colorDiv.style.position = "relative";
                colorDiv.style.padding = "0 5px";

                if (i === 3) {
                    const textSpan = document.createElement("span");
                    textSpan.textContent = attribute.name;
                    textSpan.style.position = "absolute";
                    textSpan.style.top = "50%";
                    textSpan.style.left = "50%";
                    textSpan.style.transform = "translate(-50%, -50%)";
                    textSpan.style.color = "white";
                    textSpan.style.pointerEvents = "none";
                    textSpan.style.whiteSpace = "nowrap";
                    textSpan.style.zIndex = "1";
                    textSpan.style.display = "inline-block";
                    textSpan.style.textShadow =
                        "1px 1px 1px black, -1px -1px 1px black, -1px 1px 1px black, 1px -1px 1px black";

                    colorDiv.appendChild(textSpan);
                }

                attributeRow.appendChild(colorDiv);
            }

            const plusButton = document.createElement("button");
            plusButton.style.padding = "0 5px";
            plusButton.style.border = "1px solid black";
            plusButton.style.borderTopLeftRadius = "0";
            plusButton.style.borderBottomLeftRadius = "0";
            plusButton.style.borderTopRightRadius = "50px";
            plusButton.style.borderBottomRightRadius = "50px";
            plusButton.style.width = "32px";
            plusButton.style.height = "32px";
            plusButton.style.color = "Black";
            plusButton.style.fontWeight = "bold";
            plusButton.textContent = "+";
            plusButton.style.backgroundColor = attribute.color;

            plusButton.onclick = () => {
                const graySquares = Array.from(attributeRow.children).filter(child => child.style.backgroundColor === "gray" && child !== plusButton);
                if (graySquares.length > 0) {
                    const square = graySquares[0];
                    square.style.backgroundColor = attribute.color;
                    square.style.border = "1px solid black";
                    totalPoints--;
                    pointsCounter.textContent = `Points: ${totalPoints}`;
                    code += (index + 1).toString();
                    codeString.value = code;
                    updateAttributes();
                }
            };
            attributeRow.appendChild(plusButton);

            popup.appendChild(attributeRow);
        });

        codeString.addEventListener("input", (event) => {
            code = event.target.value;
            updateAttributes();
        });

        updateAttributes();

        const saveChangesButton = document.createElement("button");
        saveChangesButton.id = `saveChangesButton-${popupId}`;
        saveChangesButton.textContent = "Save Changes";
        saveChangesButton.style.display = "block";
        saveChangesButton.style.margin = "10px auto";
        saveChangesButton.style.width = "80%";
        saveChangesButton.style.textAlign = "center";
        saveChangesButton.style.fontSize = "14px";
        saveChangesButton.style.color = "black";
        saveChangesButton.style.backgroundColor = "white";
        saveChangesButton.style.border = "2px solid black";
        saveChangesButton.style.borderRadius = "5px";
        saveChangesButton.style.cursor = "pointer";
        saveChangesButton.onclick = () => {
            const buildName = buildNameInput.value.trim();
            if (buildName === "") {
                alert("Please enter a build name.");
                return;
            }

            buttonData.name = buildName;
            buttonData.cmd = codeString.value;

            const button = buttonContainer.querySelector(".button");
            button.textContent = buildName;

            const savedButtons = JSON.parse(localStorage.getItem("savedButtons")) || [];
            const updatedButtons = savedButtons.map(b => b.name === buttonData.name ? buttonData : b);
            localStorage.setItem("savedButtons", JSON.stringify(updatedButtons));

            document.body.removeChild(popup);
        };
        popup.appendChild(saveChangesButton);

        const deleteButton = document.createElement("button");
        deleteButton.id = `deleteButton-${popupId}`;
        deleteButton.textContent = "Delete Build";
        deleteButton.style.display = "block";
        deleteButton.style.margin = "10px auto";
        deleteButton.style.width = "80%";
        deleteButton.style.textAlign = "center";
        deleteButton.style.fontSize = "14px";
        deleteButton.style.color = "black";
        deleteButton.style.backgroundColor = "white";
        deleteButton.style.border = "2px solid black";
        deleteButton.style.borderRadius = "5px";
        deleteButton.style.cursor = "pointer";
        deleteButton.onclick = () => {
            const confirmationPopup = document.createElement("div");
            confirmationPopup.className = "popup";
            confirmationPopup.id = `confirmationPopup-${popupId}`;
            confirmationPopup.innerHTML = `<div class="popup-header" id="confirmationPopupHeader-${popupId}">Drag Me</div> `;
            document.body.appendChild(confirmationPopup);

            const confirmationMessage = document.createElement("div");
            confirmationMessage.textContent = "Are you sure you want to delete this build?";
            confirmationMessage.style.textAlign = "center";
            confirmationMessage.style.marginBottom = "20px";
            confirmationPopup.appendChild(confirmationMessage);

            const buttonsContainer = document.createElement("div");
            buttonsContainer.style.display = "flex";
            buttonsContainer.style.justifyContent = "space-between";

            const noButton = document.createElement("button");
            noButton.className = "button";
            noButton.textContent = "NO";
            noButton.onclick = () => {
                document.body.removeChild(confirmationPopup);
            };
            buttonsContainer.appendChild(noButton);

            const yesButton = document.createElement("button");
            yesButton.className = "button";
            yesButton.textContent = "YES";
            yesButton.onclick = () => {
                buttonContainer.remove();
                const updatedButtons = JSON.parse(localStorage.getItem("savedButtons")) || [];
                const newSavedButtons = updatedButtons.filter(b => b.name !== buttonData.name);
                localStorage.setItem("savedButtons", JSON.stringify(newSavedButtons));
                document.body.removeChild(confirmationPopup);
                document.body.removeChild(popup);
            };
            buttonsContainer.appendChild(yesButton);

            confirmationPopup.appendChild(buttonsContainer);
            document.body.appendChild(confirmationPopup);
            dragElement(document.getElementById(`confirmationPopup-${popupId}`));
        };
        popup.appendChild(deleteButton);

        document.body.appendChild(popup);
        dragElement(document.getElementById(popupId));
    }

    function createButton(buttonData) {
        const buttonContainer = document.createElement("div");
        buttonContainer.style.display = "flex";
        buttonContainer.style.alignItems = "center";
        buttonContainer.style.justifyContent = "center";

        const editButton = document.createElement("button");
        editButton.className = "edit-button";
        editButton.textContent = "🖉";
        editButton.onclick = () => {
            createEditPopup(buttonContainer, buttonData);
        };
        buttonContainer.appendChild(editButton);

        const button = document.createElement("button");
        button.className = "button";
        button.textContent = buttonData.name;
        button.style.backgroundColor = buttonData.color;
        button.onclick = () => {
            const spawnName = userInput.value.trim();
            window.input.execute(`game_spawn ${spawnName}`);
            window.input.execute(`game_stats_build ${buttonData.cmd}`);
            const hoverMenu = document.getElementById("myhover");
            if (hoverMenu) {
                hoverMenu.style.display = hoverMenu.style.display === "none" ? "block" : "none";
            }
        };
        buttonContainer.appendChild(button);

        buildButtonsContainer.appendChild(buttonContainer);
    }
})();