From 8a3a52cee6126cf47156a5701fa9dd97d30033fb Mon Sep 17 00:00:00 2001 From: /home/neo <158327205+neoapps-dev@users.noreply.github.com> Date: Mon, 22 Jun 2026 19:40:41 +0300 Subject: [PATCH] init --- .00plugins/lce-clicker/main.js | 348 +++++++++++++++++++++++++++++++++ 1 file changed, 348 insertions(+) create mode 100644 .00plugins/lce-clicker/main.js diff --git a/.00plugins/lce-clicker/main.js b/.00plugins/lce-clicker/main.js new file mode 100644 index 0000000..5a6ec77 --- /dev/null +++ b/.00plugins/lce-clicker/main.js @@ -0,0 +1,348 @@ +(function () { + var STORAGE_KEY = "lceclicker_blocks"; + + function loadData() { + try { + var data = api.storage.get(STORAGE_KEY); + if (!data) return null; + return JSON.parse(data); + } catch (e) { + return null; + } + } + + function saveData(data) { + api.storage.set(STORAGE_KEY, JSON.stringify(data)); + } + + api.views.register( + "lceclicker", + function (api) { + var h = api.React.createElement; + var useState = api.React.useState; + var useEffect = api.React.useEffect; + + return function LCEClickerView() { + + var save = loadData(); + + // ===================== + // CORE VALUES + // ===================== + var blocksState = useState(save ? save.blocks : 0); + var blocks = blocksState[0]; + var setBlocks = blocksState[1]; + + var clickPowerState = useState(save ? save.clickPower : 1); + var clickPower = clickPowerState[0]; + var setClickPower = clickPowerState[1]; + + var tabState = useState("shop"); + var tab = tabState[0]; + var setTab = tabState[1]; + + // ===================== + // ORE UPGRADES + // ===================== + var woodLevelState = useState(save ? save.woodLevel : 0); + var woodLevel = woodLevelState[0]; + var setWoodLevel = woodLevelState[1]; + + var stoneLevelState = useState(save ? save.stoneLevel : 0); + var stoneLevel = stoneLevelState[0]; + var setStoneLevel = stoneLevelState[1]; + + var ironLevelState = useState(save ? save.ironLevel : 0); + var ironLevel = ironLevelState[0]; + var setIronLevel = ironLevelState[1]; + + var goldLevelState = useState(save ? save.goldLevel : 0); + var goldLevel = goldLevelState[0]; + var setGoldLevel = goldLevelState[1]; + + var diamondLevelState = useState(save ? save.diamondLevel : 0); + var diamondLevel = diamondLevelState[0]; + var setDiamondLevel = diamondLevelState[1]; + + // ===================== + // CPS BUILDINGS + // ===================== + var villagerLevelState = useState(save ? save.villagerLevel : 0); + var villagerLevel = villagerLevelState[0]; + var setVillagerLevel = villagerLevelState[1]; + + var ravineLevelState = useState(save ? save.ravineLevel : 0); + var ravineLevel = ravineLevelState[0]; + var setRavineLevel = ravineLevelState[1]; + + var smelterLevelState = useState(save ? save.smelterLevel : 0); + var smelterLevel = smelterLevelState[0]; + var setSmelterLevel = smelterLevelState[1]; + + var excavatorLevelState = useState(save ? save.excavatorLevel : 0); + var excavatorLevel = excavatorLevelState[0]; + var setExcavatorLevel = excavatorLevelState[1]; + + var mainframeLevelState = useState(save ? save.mainframeLevel : 0); + var mainframeLevel = mainframeLevelState[0]; + var setMainframeLevel = mainframeLevelState[1]; + + // ===================== + // SAVE SYSTEM + // ===================== + function saveAll(data) { + saveData(data); + } + + function buildSave() { + return { + blocks, + clickPower, + + woodLevel, + stoneLevel, + ironLevel, + goldLevel, + diamondLevel, + + villagerLevel, + ravineLevel, + smelterLevel, + excavatorLevel, + mainframeLevel + }; + } + + // ===================== + // CLICK + // ===================== + function clickBlock() { + var newBlocks = blocks + clickPower; + setBlocks(newBlocks); + + saveAll({ + ...buildSave(), + blocks: newBlocks + }); + } + + // ===================== + // COSTS (ORE) + // ===================== + var woodCost = Math.floor(10 * Math.pow(1.15, woodLevel)); + var stoneCost = Math.floor(25 * Math.pow(1.18, stoneLevel)); + var ironCost = Math.floor(50 * Math.pow(1.2, ironLevel)); + var goldCost = Math.floor(150 * Math.pow(1.22, goldLevel)); + var diamondCost = Math.floor(500 * Math.pow(1.28, diamondLevel)); + + // ===================== + // COSTS (CPS) + // ===================== + var villagerCost = Math.floor(50 * Math.pow(1.15, villagerLevel)); + var ravineCost = Math.floor(250 * Math.pow(1.17, ravineLevel)); + var smelterCost = Math.floor(1000 * Math.pow(1.2, smelterLevel)); + var excavatorCost = Math.floor(5000 * Math.pow(1.25, excavatorLevel)); + var mainframeCost = Math.floor(25000 * Math.pow(1.3, mainframeLevel)); + + // ===================== + // BUY ORES + // ===================== + function buyWood() { + if (blocks < woodCost) return; + var b = blocks - woodCost; + setBlocks(b); + setClickPower(clickPower + 1); + setWoodLevel(woodLevel + 1); + + saveAll({ ...buildSave(), blocks: b }); + } + + function buyStone() { + if (blocks < stoneCost) return; + var b = blocks - stoneCost; + setBlocks(b); + setClickPower(clickPower + 2); + setStoneLevel(stoneLevel + 1); + + saveAll({ ...buildSave(), blocks: b }); + } + + function buyIron() { + if (blocks < ironCost) return; + var b = blocks - ironCost; + setBlocks(b); + setClickPower(clickPower + 3); + setIronLevel(ironLevel + 1); + + saveAll({ ...buildSave(), blocks: b }); + } + + function buyGold() { + if (blocks < goldCost) return; + var b = blocks - goldCost; + setBlocks(b); + setClickPower(clickPower + 5); + setGoldLevel(goldLevel + 1); + + saveAll({ ...buildSave(), blocks: b }); + } + + function buyDiamond() { + if (blocks < diamondCost) return; + var b = blocks - diamondCost; + setBlocks(b); + setClickPower(clickPower + 10); + setDiamondLevel(diamondLevel + 1); + + saveAll({ ...buildSave(), blocks: b }); + } + + // ===================== + // BUY CPS + // ===================== + function buyVillager() { + if (blocks < villagerCost) return; + var b = blocks - villagerCost; + setBlocks(b); + setVillagerLevel(villagerLevel + 1); + saveAll({ ...buildSave(), blocks: b }); + } + + function buyRavine() { + if (blocks < ravineCost) return; + var b = blocks - ravineCost; + setBlocks(b); + setRavineLevel(ravineLevel + 1); + saveAll({ ...buildSave(), blocks: b }); + } + + function buySmelter() { + if (blocks < smelterCost) return; + var b = blocks - smelterCost; + setBlocks(b); + setSmelterLevel(smelterLevel + 1); + saveAll({ ...buildSave(), blocks: b }); + } + + function buyExcavator() { + if (blocks < excavatorCost) return; + var b = blocks - excavatorCost; + setBlocks(b); + setExcavatorLevel(excavatorLevel + 1); + saveAll({ ...buildSave(), blocks: b }); + } + + function buyMainframe() { + if (blocks < mainframeCost) return; + var b = blocks - mainframeCost; + setBlocks(b); + setMainframeLevel(mainframeLevel + 1); + saveAll({ ...buildSave(), blocks: b }); + } + + // ===================== + // CPS CALC + // ===================== + var cps = + villagerLevel * 1 + + ravineLevel * 5 + + smelterLevel * 20 + + excavatorLevel * 100 + + mainframeLevel * 500; + + // ===================== + // TICK + // ===================== + useEffect(function () { + var interval = setInterval(function () { + if (cps > 0) { + setBlocks(function (prev) { + var newVal = prev + cps; + setBlocks(newVal); + + saveAll({ + ...buildSave(), + blocks: newVal + }); + + return newVal; + }); + } + }, 1000); + + return function () { + clearInterval(interval); + }; + }, [cps]); + + // ===================== + // UI + // ===================== + return h( + "div", + { className: "w-full max-w-5xl mx-auto p-4 flex flex-col gap-4" }, + + h("button", { + onClick: function () { + api.views.navigate("settings"); + } + }, "← Back"), + + h("div", { className: "text-2xl font-bold" }, "LCE Block Clicker"), + + h( + "div", + { className: "flex gap-4" }, + + // LEFT + h( + "div", + { className: "flex-1 flex flex-col gap-4" }, + + h("div", {}, "Blocks: " + blocks.toLocaleString()), + h("div", {}, "Click: " + clickPower), + h("div", {}, "CPS: " + cps), + + h( + "button", + { onClick: clickBlock }, + "⛏ Mine Block" + ) + ), + + // RIGHT + h( + "div", + { className: "w-64 flex flex-col gap-2" }, + + h("div", {}, "SHOP"), + + h("button", { onClick: buyWood }, "Wood " + woodCost), + h("button", { onClick: buyStone }, "Stone " + stoneCost), + h("button", { onClick: buyIron }, "Iron " + ironCost), + h("button", { onClick: buyGold }, "Gold " + goldCost), + h("button", { onClick: buyDiamond }, "Diamond " + diamondCost), + + h("div", {}, "CPS"), + + h("button", { onClick: buyVillager }, "Villager " + villagerCost), + h("button", { onClick: buyRavine }, "Ravine " + ravineCost), + h("button", { onClick: buySmelter }, "Super Smelter " + smelterCost), + h("button", { onClick: buyExcavator }, "LCE Excavator " + excavatorCost), + h("button", { onClick: buyMainframe }, "LCE Mainframe " + mainframeCost) + ) + ) + ); + }; + }, + { label: "LCE Block Clicker" } + ); + + api.actions.register("settings-tab", { + id: "lceclicker", + label: "LCE Clicker", + onClick: function () { + api.views.navigate("lceclicker"); + } + }); +})();