This commit is contained in:
/home/neo 2026-06-24 19:29:05 +03:00 committed by GitHub
parent 2eaa2e68c2
commit d9c5dc71d3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1,3 +1,5 @@
//Hi there! it appears someone likes looking at source code OwO
(function () {
var STORAGE_KEY = "lceclicker_blocks";
@ -26,6 +28,9 @@
var save = loadData();
// =========================
// CORE
// =========================
var blocksState = useState(save ? save.blocks : 0);
var blocks = blocksState[0];
var setBlocks = blocksState[1];
@ -34,6 +39,13 @@
var clickPower = clickPowerState[0];
var setClickPower = clickPowerState[1];
var tabState = useState("shop");
var tab = tabState[0];
var setTab = tabState[1];
// =========================
// ORES
// =========================
var woodLevelState = useState(save ? save.woodLevel : 0);
var woodLevel = woodLevelState[0];
var setWoodLevel = woodLevelState[1];
@ -54,6 +66,9 @@
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];
@ -74,10 +89,9 @@
var mainframeLevel = mainframeLevelState[0];
var setMainframeLevel = mainframeLevelState[1];
function saveAll(data) {
saveData(data);
}
// =========================
// SAVE HELPERS
// =========================
function buildSave() {
return {
blocks,
@ -97,6 +111,13 @@
};
}
function saveAll(extra) {
saveData(extra || buildSave());
}
// =========================
// CLICK
// =========================
function clickBlock() {
var newBlocks = blocks + clickPower;
setBlocks(newBlocks);
@ -107,18 +128,115 @@
});
}
// =========================
// COSTS
// =========================
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 ironCost = Math.floor(50 * Math.pow(1.20, ironLevel));
var goldCost = Math.floor(150 * Math.pow(1.22, goldLevel));
var diamondCost = Math.floor(500 * Math.pow(1.28, diamondLevel));
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 smelterCost = Math.floor(1000 * Math.pow(1.20, smelterLevel));
var excavatorCost = Math.floor(5000 * Math.pow(1.25, excavatorLevel));
var mainframeCost = Math.floor(25000 * Math.pow(1.3, mainframeLevel));
var mainframeCost = Math.floor(25000 * Math.pow(1.30, 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 +
@ -126,6 +244,9 @@
excavatorLevel * 100 +
mainframeLevel * 500;
// =========================
// TICK
// =========================
useEffect(function () {
var interval = setInterval(function () {
if (cps > 0) {
@ -147,34 +268,39 @@
};
}, [cps]);
function btn(text, onClick, disabled) {
return h(
"button",
{
onClick: onClick,
disabled: disabled,
className:
"w-full px-2 py-1 text-white mc-text-shadow cursor-pointer border border-[#555] bg-black/40 hover:bg-black/60"
},
text
);
}
// =========================
// UI
// =========================
return h(
"div",
{ className: "w-full max-w-5xl mx-auto p-4 flex flex-col gap-4" },
// BACK BUTTON
h(
"button",
{
className:
"text-sm text-[#A0A0A0] hover:text-[#FFFF55] mc-text-shadow cursor-pointer",
onClick: function () {
api.views.navigate("settings");
}
},
"← Back"
),
// TITLE
h(
"div",
{ className: "text-2xl font-bold mc-text-shadow" },
"LCE Block Clicker"
),
// MAIN LAYOUT
h(
"div",
{ className: "flex gap-4" },
// LEFT PANEL
// LEFT
h(
"div",
{ className: "flex-1 flex flex-col gap-4" },
@ -183,18 +309,18 @@
"div",
{ className: "border border-[#555] bg-black/40 p-3 text-center" },
h("div", { className: "text-xs text-[#888]" }, "Blocks"),
h("div", { className: "text-2xl font-bold mc-text-shadow" }, blocks.toLocaleString())
h("div", { className: "text-2xl font-bold" }, blocks.toLocaleString())
),
h("div", { className: "text-sm text-[#aaa]" }, "Click Power: " + clickPower),
h("div", { className: "text-sm text-[#aaa]" }, "CPS: " + cps),
h("div", {}, "Click Power: " + clickPower),
h("div", {}, "CPS: " + cps),
h(
"button",
{
onClick: clickBlock,
className:
"px-2 py-2 text-white mc-text-shadow cursor-pointer border border-[#555] bg-black/40 hover:bg-black/60",
onClick: clickBlock,
style: {
backgroundImage: "url('/images/Button_Background.png')",
backgroundSize: "100% 100%",
@ -206,29 +332,78 @@
)
),
// RIGHT PANEL
// RIGHT
h(
"div",
{ className: "w-64 border border-[#555] bg-black/40 p-3 flex flex-col gap-2" },
h("div", { className: "text-xs text-[#888] uppercase tracking-widest" }, "Shop"),
h(
"div",
{ className: "flex gap-2 mb-2" },
btn("Wood - " + woodCost, function () {}),
btn("Stone - " + stoneCost),
btn("Iron - " + ironCost),
btn("Gold - " + goldCost),
btn("Diamond - " + diamondCost),
h(
"button",
{
className: "flex-1 px-2 py-1 border border-[#555] bg-black/40",
onClick: function () {
setTab("shop");
}
},
"Shop"
),
h("div", { className: "text-xs text-[#888] uppercase tracking-widest mt-2" }, "CPS"),
h(
"button",
{
className: "flex-1 px-2 py-1 border border-[#555] bg-black/40",
onClick: function () {
setTab("stats");
}
},
"Stats"
)
),
btn("Villager - " + villagerCost),
btn("Ravine - " + ravineCost),
btn("Super Smelter - " + smelterCost),
btn("LCE Excavator - " + excavatorCost),
btn("LCE Mainframe - " + mainframeCost)
tab === "shop"
? h(
"div",
{},
h("div", {}, "ORES"),
btn("Wood - " + woodCost, buyWood),
btn("Stone - " + stoneCost, buyStone),
btn("Iron - " + ironCost, buyIron),
btn("Gold - " + goldCost, buyGold),
btn("Diamond - " + diamondCost, buyDiamond),
h("div", { className: "mt-2" }, "CPS"),
btn("Villager - " + villagerCost, buyVillager),
btn("Ravine - " + ravineCost, buyRavine),
btn("Super Smelter - " + smelterCost, buySmelter),
btn("LCE Excavator - " + excavatorCost, buyExcavator),
btn("LCE Mainframe - " + mainframeCost, buyMainframe)
)
: h(
"div",
{},
h("div", {}, "Blocks: " + blocks.toLocaleString()),
h("div", {}, "Click: " + clickPower),
h("div", {}, "CPS: " + cps)
)
)
)
);
function btn(text, fn) {
return h(
"button",
{
onClick: fn,
className:
"w-full px-2 py-1 border border-[#555] bg-black/40 text-white hover:bg-black/60 mc-text-shadow"
},
text
);
}
};
},
{ label: "LCE Block Clicker" }