Untitled
unknown
plain_text
a year ago
9.3 kB
6
Indexable
import { world, Player } from "@minecraft/server"; import { ModalFormData, ActionFormData, MessageFormData } from "@minecraft/server-ui"; // Store example data for shops and incomes const shopIncomes = {}; const marketplaceItems = []; // Main menu form export async function showMarketplaceInterface(player) { try { let mainMenuForm = new ActionFormData() .title("Market System") .body("Choose an option:") .button("Marketplace") .button("Sell Items") .button("Settings"); let response = await mainMenuForm.show(player); if (response.selection === 0) { showMarketplaceForm(player); } else if (response.selection === 1) { showSellItemsForm(player); } else if (response.selection === 2) { showSettingsForm(player); } } catch (error) { console.error("Error showing marketplace interface:", error); } } // Marketplace form async function showMarketplaceForm(player) { try { let marketForm = new ActionFormData() .title("Marketplace") .body("Available items:"); marketplaceItems.forEach(item => { marketForm.button(`${item.name}\n${item.price} money`); }); let response = await marketForm.show(player); if (response.selection !== undefined) { let selectedItem = marketplaceItems[response.selection]; confirmPurchaseForm(player, selectedItem); } } catch (error) { console.error("Error showing marketplace form:", error); } } async function confirmPurchaseForm(player, item) { try { let purchaseForm = new MessageFormData() .title(item.name) .body(`Description: ${item.description}\nPrice: ${item.price} money\n\nDo you want to buy this item?`) .button1("Yes") .button2("No"); let response = await purchaseForm.show(player); if (response.selection === 0) { // Check if "Yes" button was clicked let playerMoney = player.getScore("money"); if (playerMoney >= item.price) { player.setScore("money", playerMoney - item.price); // Simulate giving item to player (adjust based on actual item handling) player.runCommand(`give @s ${item.id} 1`); player.sendMessage("Purchase successful!"); } else { player.sendMessage("Not enough money!"); } } } catch (error) { console.error("Error confirming purchase:", error); } } // Sell items form async function showSellItemsForm(player) { try { let sellItemsForm = new ActionFormData() .title("Sell Items") .body("Choose an option:") .button("Create Shop") .button("Sell Items") .button("Edit Items") .button("See Income"); let response = await sellItemsForm.show(player); if (response.selection === 0) { createShopForm(player); } else if (response.selection === 1) { listSellItemsForm(player); } else if (response.selection === 2) { editItemsForm(player); } else if (response.selection === 3) { seeIncomeForm(player); } } catch (error) { console.error("Error showing sell items form:", error); } } function createShopForm(player) { let shopId = Math.floor(100000 + Math.random() * 900000).toString(); // Generate random 6-digit shop ID player.sendMessage(`Your shop ID: ${shopId}`); // Store shop ID and initialize income shopIncomes[shopId] = 0; } async function listSellItemsForm(player) { try { // Get items from player's inventory let inventory = player.getComponent("minecraft:inventory").container; let items = []; for (let i = 0; i < inventory.size; i++) { let itemStack = inventory.getItem(i); if (itemStack) { items.push({ name: itemStack.nameTag || itemStack.id, id: itemStack.id, amount: itemStack.amount }); } } let sellForm = new ActionFormData() .title("Sell Items") .body("Select an item to sell:"); items.forEach(item => { sellForm.button(`${item.name} x${item.amount}`); }); let response = await sellForm.show(player); if (response.selection !== undefined) { let selectedItem = items[response.selection]; sellItemForm(player, selectedItem); } } catch (error) { console.error("Error listing sell items:", error); } } async function sellItemForm(player, item) { try { let sellItemForm = new ModalFormData() .title(`Sell ${item.name}`) .textField("Price per item:", "0") .textField("Number of items:", "1") .textField("Description:", ""); let response = await sellItemForm.show(player); if (response.canceled) return; let price = parseInt(response.formValues[0]); let quantity = parseInt(response.formValues[1]); let description = response.formValues[2]; if (quantity > item.amount) { player.sendMessage(`You don't have enough ${item.name} to sell.`); return; } // Deduct 20% listing fee let fee = Math.floor(price * quantity * 0.20); let playerMoney = player.getScore("money"); player.setScore("money", playerMoney - fee); // Clear items from inventory player.runCommand(`clear @s ${item.id} ${quantity}`); // Add item to marketplace marketplaceItems.push({ name: item.name, price: price, quantity: quantity, description: description }); player.sendMessage(`${quantity} x ${item.name} listed for ${price} money each. Listing fee: ${fee}`); } catch (error) { console.error("Error selling item:", error); } } function editItemsForm(player) { // Implementation for editing items } async function seeIncomeForm(player) { try { let incomeForm = new ModalFormData() .title("See Income") .textField("Enter your shop ID:", ""); let response = await incomeForm.show(player); if (response.canceled) return; let shopId = response.formValues[0]; // Fetch and display income let income = getIncome(shopId); if (income !== null) { player.sendMessage(`Total income for shop ${shopId}: ${income} money`); } else { player.sendMessage("Invalid shop ID or no income available."); } } catch (error) { console.error("Error seeing income:", error); } } function getIncome(shopId) { return shopIncomes[shopId] || null; } // Settings form async function showSettingsForm(player) { try { let settingsForm = new ActionFormData() .title("Settings") .body("Choose an option:") .button("Delete Shop") .button("See Income"); let response = await settingsForm.show(player); if (response.selection === 0) { deleteShopForm(player); } else if (response.selection === 1) { seeOverallIncomeForm(player); } } catch (error) { console.error("Error showing settings form:", error); } } async function deleteShopForm(player) { try { let deleteForm = new ModalFormData() .title("Delete Shop") .textField("Enter your shop ID:", ""); let response = await deleteForm.show(player); if (response.canceled) return; let shopId = response.formValues[0]; if (shopIncomes[shopId] !== undefined) { delete shopIncomes[shopId]; player.sendMessage(`Shop ${shopId} deleted successfully.`); } else { player.sendMessage("Invalid shop ID."); } } catch (error) { console.error("Error deleting shop:", error); } } async function seeOverallIncomeForm(player) { try { let incomeForm = new ModalFormData() .title("See Income") .textField("Enter your shop ID:", ""); let response = await incomeForm.show(player); if (response.canceled) return; let shopId = response.formValues[0]; // Fetch and display income let income = getIncome(shopId); if (income !== null) { player.sendMessage(`Total income for shop ${shopId}: ${income} money`); } else { player.sendMessage("Invalid shop ID or no income available."); } } catch (error) { console.error("Error seeing overall income:", error); } }
Editor is loading...
Leave a Comment