From 6461f94865a18f75da0e7d550aaa5757ad40ca4b Mon Sep 17 00:00:00 2001 From: Gioth8281 Date: Mon, 30 Jun 2025 13:14:45 +0200 Subject: [PATCH] WIP Shop Edit - Issue #9 --- .../xyz/soukup/ecoCraftCore/EcoCraftCore.java | 6 +- .../commands/ShopEditCommand.java | 95 +++++++++++++++++++ src/main/resources/messages.yml | 5 + 3 files changed, 102 insertions(+), 4 deletions(-) create mode 100644 src/main/java/xyz/soukup/ecoCraftCore/commands/ShopEditCommand.java diff --git a/src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java b/src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java index 20a6fa8..aec9593 100644 --- a/src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java +++ b/src/main/java/xyz/soukup/ecoCraftCore/EcoCraftCore.java @@ -9,10 +9,7 @@ import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; -import xyz.soukup.ecoCraftCore.commands.GuiCommand; -import xyz.soukup.ecoCraftCore.commands.MoneyCommand; -import xyz.soukup.ecoCraftCore.commands.RulerCommand; -import xyz.soukup.ecoCraftCore.commands.ShopCommand; +import xyz.soukup.ecoCraftCore.commands.*; import xyz.soukup.ecoCraftCore.events.*; import xyz.soukup.ecoCraftCore.objects.Account; import xyz.soukup.ecoCraftCore.objects.Shop; @@ -97,6 +94,7 @@ public final class EcoCraftCore extends JavaPlugin { lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(RulerCommand.createCommand().build())); lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(MoneyCommand.createCommand().build())); lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(GuiCommand.createCommand().build())); + lm.registerEventHandler(LifecycleEvents.COMMANDS, event -> event.registrar().register(ShopEditCommand.createCommand().build())); } private void registerEvents(){ diff --git a/src/main/java/xyz/soukup/ecoCraftCore/commands/ShopEditCommand.java b/src/main/java/xyz/soukup/ecoCraftCore/commands/ShopEditCommand.java new file mode 100644 index 0000000..c019819 --- /dev/null +++ b/src/main/java/xyz/soukup/ecoCraftCore/commands/ShopEditCommand.java @@ -0,0 +1,95 @@ +package xyz.soukup.ecoCraftCore.commands; + +import com.mojang.brigadier.arguments.IntegerArgumentType; +import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import com.mojang.brigadier.context.CommandContext; +import io.papermc.paper.command.brigadier.CommandSourceStack; +import com.mojang.brigadier.builder.RequiredArgumentBuilder; +import io.papermc.paper.command.brigadier.Commands; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import xyz.soukup.ecoCraftCore.objects.Shop; +import xyz.soukup.ecoCraftCore.utilities.Messages; + +public class ShopEditCommand { + public static LiteralArgumentBuilder createCommand() { + + RequiredArgumentBuilder shopId = Commands.argument("shop-id", IntegerArgumentType.integer()); + RequiredArgumentBuilder amount = Commands.argument("amount", IntegerArgumentType.integer()); + RequiredArgumentBuilder price = Commands.argument("price", IntegerArgumentType.integer()); + LiteralArgumentBuilder changePriceSell = Commands.literal("change-price-sell"); + LiteralArgumentBuilder changePriceBuy = Commands.literal("change-price-buy"); + LiteralArgumentBuilder changeItemAmount = Commands.literal("change-item-amount"); + + + return Commands.literal("shop-edit") + .then(shopId + .then(changePriceSell.then(price.executes(ShopEditCommand::changePriceSell))) + .then(changePriceBuy.then(price.executes(ShopEditCommand::changePriceBuy))) + .then(changeItemAmount.then(amount.executes(ShopEditCommand::changeItemAmount)))); + } + + private static int changePriceSell(CommandContext context) { + CommandSender commandSender = context.getSource().getSender(); + Integer shopId = context.getArgument("shop-id", Integer.class); + Integer price = context.getArgument("price", Integer.class); + + if (!(commandSender instanceof Player)){ + Messages.send(commandSender, "generic.error.not-player"); + return 0; + } + + Shop shop = Shop.findById(shopId); + if (shop == null){ + Messages.send(commandSender, "shop.error.not-found"); + return 0; + } + + shop.setPriceSell(price); + Messages.send(commandSender, "shop.edit.price-sell-changed"); + return 1; + } + + private static int changePriceBuy(CommandContext context) { + CommandSender commandSender = context.getSource().getSender(); + Integer shopId = context.getArgument("shop-id", Integer.class); + Integer price = context.getArgument("price", Integer.class); + + if (!(commandSender instanceof Player)){ + Messages.send(commandSender, "generic.error.not-player"); + return 0; + } + + Shop shop = Shop.findById(shopId); + if (shop == null){ + Messages.send(commandSender, "shop.error.not-found"); + return 0; + } + + shop.setPriceBuy(price); + Messages.send(commandSender, "shop.edit.price-buy-changed"); + return 1; + } + + private static int changeItemAmount(CommandContext context) { + CommandSender commandSender = context.getSource().getSender(); + Integer shopId = context.getArgument("shop-id", Integer.class); + Integer amount = context.getArgument("amount", Integer.class); + + if (!(commandSender instanceof Player)){ + Messages.send(commandSender, "generic.error.not-player"); + return 0; + } + + Shop shop = Shop.findById(shopId); + if (shop == null){ + Messages.send(commandSender, "shop.error.not-found"); + return 0; + } + + shop.setAmount(amount); + Messages.send(commandSender, "shop.edit.item-amount-changed"); + return 1; + } + +} \ No newline at end of file diff --git a/src/main/resources/messages.yml b/src/main/resources/messages.yml index 2651e95..163d1f2 100644 --- a/src/main/resources/messages.yml +++ b/src/main/resources/messages.yml @@ -16,6 +16,11 @@ shop: not-marked: "Musíš označit ceduly a chestku, aby jsi mohl vytvořit obchod" empty-hand: "Nedržíš v ruce žádný item" chest-open: "Nelze obchodovat, když je chestka obchodu otevřena." + not-found: "Obchod nenalezen." + edit: + price-sell-changed: "Změnil jsi prodávající cenu v obchodě." + price-buy-changed: "Změnil jsi kupující cenu v obchodě." + item-amount-changed: "Změnil jsi množství itemu v obchodě." buy: "Koupil jsi x za $" sell: "Prodal jsi x za $" created: "Obchod vytvořen."