UNPKG

@bdsx/economy-shop

Version:
409 lines 35.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ShopForm = exports.ShopMain = void 0; const form_1 = require("bdsx/bds/form"); const inventory_1 = require("bdsx/bds/inventory"); const economy_x_1 = require("@bdsx/economy-x"); const translate_1 = require("./utils/translate"); const path = require("path"); const fs = require("fs"); const filePath = path.join(__dirname, "..", "shop.json"); let shop = { shopui: { title: "§l§2ShopUI", description: "", buy_content: [ "Money: §e%money%", "Item: §a%item%", "Price: §e%price%", ], buttons: { category: "§l%name%§r\n§8Click for more", item: "§a%name%§r\n§7Price: §e%price%", }, }, category: { blocks: { icon: "textures/blocks/cobblestone", path: "path", name: "§l§aBlocks", category: {}, }, foods: { icon: "textures/items/beef_cooked", path: "path", name: "§l§6Foods", category: {}, }, tools: { icon: "textures/items/diamond_sword", path: "path", name: "§l§dTools", category: {}, }, }, items: { blocks: [ { icon: "textures/blocks/grass_side_carried", path: "path", item: "minecraft:grass", price: 1.5, }, { icon: "textures/blocks/dirt", path: "path", item: "minecraft:dirt", price: 0.7, }, { icon: "textures/blocks/stone", path: "path", item: "minecraft:stone", price: 2, }, { icon: "textures/blocks/cobblestone", path: "path", item: "minecraft:cobblestone", price: 1.3, }, ], foods: [ { icon: "textures/items/beef_cooked", path: "path", item: "minecraft:cooked_beef", price: 1.8, }, { icon: "textures/items/beef_raw", path: "path", item: "minecraft:beef", price: 1.2, }, ], tools: [ { icon: "textures/items/iron_sword", path: "path", item: "minecraft:iron_sword", price: 8, }, { icon: "textures/items/iron_axe", path: "path", item: "minecraft:iron_axe", price: 8.7, }, { icon: "textures/items/iron_pickaxe", path: "path", item: "minecraft:iron_pickaxe", price: 8.7, }, ], }, }; //Why are there so few items? Because i have very little time and you can customize it try { shop = require(filePath); } catch (err) { } var ShopMain; (function (ShopMain) { function buy(shopItem, amount, player) { const xuid = player.getXuid(); if (xuid === "") { player.sendMessage(translate_1.send.text(`player.xuid.notfound`)); return false; } if (amount < 1) { player.sendMessage(translate_1.send.text(`player.invalid.amount`)); return false; } const item = inventory_1.ItemStack.constructWith(shopItem.item, amount, shopItem.data); if (shopItem.price < 0 || shopItem.price === 0) { player.sendMessage(translate_1.send.text(`success.buy.freeitem`).replace(/%name%/g, item.getCustomName()).replace(/%amount%/g, `${amount}`)); player.addItem(item); player.sendInventory(); return true; } const total = amount * shopItem.price; if (economy_x_1.EconomyX.getMoney(player) - total < 0) { player.sendMessage(translate_1.send.text(`player.money.notenough`)); return false; } player.sendMessage(translate_1.send.text(`success.buy.item`).replace(/%name%/g, item.getCustomName()).replace(/%amount%/g, `${amount}`).replace(/%total%/g, `${economy_x_1.EconomyX.currency() + total}`)); economy_x_1.EconomyX.removeMoney(player, total); player.addItem(item); player.sendInventory(); return true; } ShopMain.buy = buy; function getCategories() { return Object.keys(shop.category); } ShopMain.getCategories = getCategories; function getCompound(category) { if (!shop.category.hasOwnProperty(category)) return null; return shop.category[category]; } ShopMain.getCompound = getCompound; /**@deprecated */ function getCategoryFromPath(path) { return []; } ShopMain.getCategoryFromPath = getCategoryFromPath; ; /**@deprecated */ function getCompoundFromPath(path) { return null; } ShopMain.getCompoundFromPath = getCompoundFromPath; ; function getItemCategories() { return Object.keys(shop.items); } ShopMain.getItemCategories = getItemCategories; function hasItemCategory(category) { return shop.items.hasOwnProperty(category); } ShopMain.hasItemCategory = hasItemCategory; function getItems(category) { if (!shop.items.hasOwnProperty(category)) return undefined; else return shop.items[category]; } ShopMain.getItems = getItems; function getItem(category, item) { if (!shop.items.hasOwnProperty(category)) return null; const shopItem = shop.items[category].find((v) => item === v.item); if (!shopItem) return null; return shopItem; } ShopMain.getItem = getItem; function createItemCategory(category, items = [], message = false, actor) { const sendT = new translate_1.sendTranslate(actor, message); if (shop.items.hasOwnProperty(category)) { sendT.error(`category.already`); return false; } else { sendT.success(translate_1.send.text(`category.created`).replace(/%category%/g, category)); shop.items[category] = items; return true; } } ShopMain.createItemCategory = createItemCategory; function deleteCategory(category, message = false, actor) { const sendT = new translate_1.sendTranslate(actor, message); if (!shop.items.hasOwnProperty(category)) { sendT.error(`category.notfound`); return false; } else { sendT.success(translate_1.send.text(`category.deleted`).replace(/%category%/g, category)); delete shop.items[category]; return true; } } ShopMain.deleteCategory = deleteCategory; function addItem(category, item, data = 0, price, description, iconPath, icon, message = false, actor) { const sendT = new translate_1.sendTranslate(actor, message); if (!shop.items.hasOwnProperty(category)) { sendT.error(`category.notfound`); return false; } if (shop.items[category].find((v) => item === v.item)) { sendT.error(`item.already`); return false; } if (price < 0) { sendT.error(`item.invalid.price`); return false; } sendT.success(translate_1.send.text(`item.added`).replace(/%item%/g, item).replace(/%category%/g, category).replace(/%price%/g, `${economy_x_1.EconomyX.currency()}${price}`)); shop.items[category].push({ icon: icon, path: iconPath, description: description, item: item, data: data, price: price, }); return true; } ShopMain.addItem = addItem; function removeItem(category, item, message = false, actor) { const sendT = new translate_1.sendTranslate(actor, message); if (!shop.items.hasOwnProperty(category)) { sendT.error(`category.notfound`); return false; } if (!shop.items[category].find((v) => item === v.item)) { sendT.error(`item.notfound`); return false; } sendT.success(translate_1.send.text(`item.removed`).replace(/%item%/g, item).replace(/%category%/g, category)); shop.items[category] = shop.items[category].filter((v) => item !== v.item); return true; } ShopMain.removeItem = removeItem; function setItem(category, item, newItem, data, message = false, actor) { var _a; if (!shop.items.hasOwnProperty(category)) { translate_1.send.error(`category.notfound`); return false; } const shopItem = shop.items[category].find((v) => item === v.item); if (!shopItem) { translate_1.send.error(`item.notfound`); return false; } if (item === newItem && shopItem.data === data) { translate_1.send.error(`item.same`); return false; } translate_1.send.success(translate_1.send.text(`item.seted`).replace(/%olditem%/g, item).replace(/%olddata%/g, `${(_a = shopItem.data) !== null && _a !== void 0 ? _a : 0}`).replace(/%item%/g, newItem).replace(/%data%/g, `${data !== null && data !== void 0 ? data : 0}`).replace(/%category%/g, category)); const index = shop.items[category].indexOf(shopItem); shop.items[category][index] = { icon: shopItem.icon, path: shopItem.path, description: shopItem.description, item: newItem, data: data !== null && data !== void 0 ? data : shopItem.data, price: shopItem.price, }; return true; } ShopMain.setItem = setItem; function getPrice(category, item) { if (!shop.items.hasOwnProperty(category)) return null; const shopItem = shop.items[category].find((v) => item === v.item); if (!shopItem) return null; if (shopItem.price < 0) return 0; return shopItem.price; } ShopMain.getPrice = getPrice; function setPrice(category, item, price, message = false, actor) { const sendT = new translate_1.sendTranslate(actor, message); if (shop.items.hasOwnProperty(category)) { sendT.error(`category.notfound`); return false; } if (price < 0) { sendT.error(`item.invalid.price`); return false; } let shopItem = shop.items[category].find((v) => item === v.item); if (!shopItem) { sendT.error(`item.notfound`); return false; } sendT.success(translate_1.send.text(`item.setprice`).replace(/%item%/g, item).replace(/%price%/g, `${economy_x_1.EconomyX.currency()}${price}`)); shopItem.price = price; return true; } ShopMain.setPrice = setPrice; function save(message = false) { fs.writeFile(filePath, JSON.stringify(shop, null, 2), "utf8", (err) => { if (message) { if (err) { translate_1.send.error(`shop.json ${err}`); throw err; } else translate_1.send.success(`shop.json Saved!`); } }); } ShopMain.save = save; })(ShopMain = exports.ShopMain || (exports.ShopMain = {})); var ShopForm; (function (ShopForm) { function getItemButtons(items) { let buttons = []; for (const [i, button] of items.entries()) { const item = inventory_1.ItemStack.constructWith(button.item, undefined, button.data); const _button = new form_1.FormButton(shop.shopui.buttons.item.replace("%name%", item.getCustomName()).replace("%price%", `${economy_x_1.EconomyX.currency()}${button.price}`), button.path, button.icon); buttons.push(_button); } return buttons; } ShopForm.getItemButtons = getItemButtons; function getCategoryButtons(categories) { let buttons = []; for (const [i, category] of categories.entries()) { const button = new form_1.FormButton(shop.shopui.buttons.category.replace("%name%", category.name), category.path, category.icon); buttons.push(button); } return buttons; } ShopForm.getCategoryButtons = getCategoryButtons; function main(player) { let categories = []; ShopMain.getCategories().forEach((v) => { const category = ShopMain.getCompound(v); if (!category) return; categories.push(category); }); const buttons = getCategoryButtons(categories); const form = new form_1.SimpleForm(shop.shopui.title, shop.shopui.description, buttons); form.sendTo(player.getNetworkIdentifier(), (f) => { const r = f.response; if (r === null) return; categoriesForm(ShopMain.getCategories()[r], categories[r], player); }); } ShopForm.main = main; function categoriesForm(category, compound, player) { let compounds = []; let buttons = []; const categories = Object.entries(compound.category); const items = ShopMain.getItems(category); if (!items) return; categories.forEach((v) => { compounds.push(v[1]); }); const formCategories = getCategoryButtons(compounds); const formItems = getItemButtons(items); formCategories.forEach((v) => { buttons.push(v); }); formItems.forEach((v) => { buttons.push(v); }); const form = new form_1.SimpleForm(compound.name, compound.description, buttons); form.sendTo(player.getNetworkIdentifier(), (f) => { const r = f.response; if (r === null) return; if (r < formCategories.length) { categoriesForm(categories[r][0], categories[r][1], player); return; } if (r > (formCategories.length - 1)) { const i = r - formCategories.length; buyForm(items[i], player); return; } }); } ShopForm.categoriesForm = categoriesForm; function buyForm(shopItem, player) { const display = inventory_1.ItemStack.constructWith(shopItem.item, undefined, shopItem.data); const form = new form_1.CustomForm(display.getCustomName()); let content = shop.shopui.buy_content.map((v) => v + "\n").toString().replace(/,/g, "§r").replace(/%player%/g, player.getName()).replace(/%money%/g, economy_x_1.EconomyX.currency() + economy_x_1.EconomyX.getMoney(player)).replace(/%item%/g, display.getCustomName()).replace(/%price%/g, economy_x_1.EconomyX.currency() + shopItem.price); form.addComponent(new form_1.FormLabel(content)); form.addComponent(new form_1.FormSlider(`Amount`, 1, 64)); form.sendTo(player.getNetworkIdentifier(), (f) => { const r = f.response; if (r === null) return; ShopMain.buy(shopItem, r[1], player); }); } ShopForm.buyForm = buyForm; })(ShopForm = exports.ShopForm || (exports.ShopForm = {})); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx3Q0FBMEY7QUFFMUYsa0RBQStDO0FBQy9DLCtDQUEyQztBQUMzQyxpREFBd0Q7QUFDeEQsNkJBQTZCO0FBQzdCLHlCQUF5QjtBQW1CekIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQ3pELElBQUksSUFBSSxHQVlKO0lBQ0EsTUFBTSxFQUFFO1FBQ0osS0FBSyxFQUFFLFlBQVk7UUFDbkIsV0FBVyxFQUFFLEVBQUU7UUFDZixXQUFXLEVBQUU7WUFDVCxrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLGtCQUFrQjtTQUNyQjtRQUNELE9BQU8sRUFBRTtZQUNMLFFBQVEsRUFBRSw4QkFBOEI7WUFDeEMsSUFBSSxFQUFFLGdDQUFnQztTQUN6QztLQUNKO0lBQ0QsUUFBUSxFQUFFO1FBQ04sTUFBTSxFQUFFO1lBQ0osSUFBSSxFQUFFLDZCQUE2QjtZQUNuQyxJQUFJLEVBQUUsTUFBTTtZQUNaLElBQUksRUFBRSxZQUFZO1lBQ2xCLFFBQVEsRUFBRSxFQUFFO1NBQ2Y7UUFDRCxLQUFLLEVBQUU7WUFDSCxJQUFJLEVBQUUsNEJBQTRCO1lBQ2xDLElBQUksRUFBRSxNQUFNO1lBQ1osSUFBSSxFQUFFLFdBQVc7WUFDakIsUUFBUSxFQUFFLEVBQUU7U0FDZjtRQUNELEtBQUssRUFBRTtZQUNILElBQUksRUFBRSw4QkFBOEI7WUFDcEMsSUFBSSxFQUFFLE1BQU07WUFDWixJQUFJLEVBQUUsV0FBVztZQUNqQixRQUFRLEVBQUUsRUFBRTtTQUNmO0tBQ0o7SUFDRCxLQUFLLEVBQUU7UUFDSCxNQUFNLEVBQUU7WUFDSjtnQkFDSSxJQUFJLEVBQUUsb0NBQW9DO2dCQUMxQyxJQUFJLEVBQUUsTUFBTTtnQkFDWixJQUFJLEVBQUUsaUJBQWlCO2dCQUN2QixL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