From 777a2407570fd55418679317602c1480f1af1db4 Mon Sep 17 00:00:00 2001 From: Len <40720638+destro174@users.noreply.github.com> Date: Sun, 28 Aug 2022 19:44:48 +0200 Subject: [PATCH 1/4] Prevent stacking Conversations --- .../com/alttd/playershops/conversation/ConversationManager.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/alttd/playershops/conversation/ConversationManager.java b/src/main/java/com/alttd/playershops/conversation/ConversationManager.java index 015c2b9..166669c 100644 --- a/src/main/java/com/alttd/playershops/conversation/ConversationManager.java +++ b/src/main/java/com/alttd/playershops/conversation/ConversationManager.java @@ -17,11 +17,13 @@ public class ConversationManager implements ConversationAbandonedListener { Conversation conversation; public ConversationManager(JavaPlugin plugin, Player player, ConversationType conversationType, PlayerShop playerShop) { + if (player.isConversing()) return; this.player = player; this.playerShop = playerShop; ConversationFactory conversationFactory = new ConversationFactory(plugin) .withModality(true) .withFirstPrompt(getPrompt(conversationType)) + .addConversationAbandonedListener(this) .withEscapeSequence("cancel"); conversation = conversationFactory.buildConversation(player); conversation.begin(); From 176e997b9e90000f2a89145bb3da34a8939e7768 Mon Sep 17 00:00:00 2001 From: Len <40720638+destro174@users.noreply.github.com> Date: Sun, 28 Aug 2022 19:46:34 +0200 Subject: [PATCH 2/4] Check if player has balance before trying to add money to shop --- .../java/com/alttd/playershops/gui/ShopManagementGui.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/alttd/playershops/gui/ShopManagementGui.java b/src/main/java/com/alttd/playershops/gui/ShopManagementGui.java index c793129..13a29b5 100644 --- a/src/main/java/com/alttd/playershops/gui/ShopManagementGui.java +++ b/src/main/java/com/alttd/playershops/gui/ShopManagementGui.java @@ -4,6 +4,7 @@ import com.alttd.playershops.PlayerShops; import com.alttd.playershops.conversation.ConversationManager; import com.alttd.playershops.conversation.ConversationType; import com.alttd.playershops.shop.PlayerShop; +import com.alttd.playershops.utils.EconomyUtils; import com.alttd.playershops.utils.ShopUtil; import com.alttd.playershops.utils.Util; import net.kyori.adventure.text.Component; @@ -65,7 +66,11 @@ public class ShopManagementGui extends AbstractGui { if (slot == GuiIcon.MANAGE_SHOP.getSlot() && GuiIcon.MANAGE_SHOP.getItemStack().equals(item)) { } else if (slot == GuiIcon.MANAGE_SHOP_BALANCE_ADD.getSlot() && GuiIcon.MANAGE_SHOP_BALANCE_ADD.getItemStack().equals(item)) { - openChangePrompt(ConversationType.ADD_BALANCE); + if (EconomyUtils.getFunds(getPlayer()) > 0) { + openChangePrompt(ConversationType.ADD_BALANCE); + } else { + getPlayer().sendMiniMessage("You do not have money to add to this shop", null); + } } else if (slot == GuiIcon.MANAGE_SHOP_BALANCE_REMOVE.getSlot() && GuiIcon.MANAGE_SHOP_BALANCE_REMOVE.getItemStack().equals(item)) { if (shop.getBalance() > 0) { openChangePrompt(ConversationType.WITHDRAW_BALANCE); From 789a4e0e3b1bc4d926df647728a2e4d04a23cb28 Mon Sep 17 00:00:00 2001 From: Len <40720638+destro174@users.noreply.github.com> Date: Sun, 28 Aug 2022 19:50:33 +0200 Subject: [PATCH 3/4] Add placeholds to ShopManagementGui.java --- .../playershops/gui/ShopManagementGui.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/alttd/playershops/gui/ShopManagementGui.java b/src/main/java/com/alttd/playershops/gui/ShopManagementGui.java index 13a29b5..8211270 100644 --- a/src/main/java/com/alttd/playershops/gui/ShopManagementGui.java +++ b/src/main/java/com/alttd/playershops/gui/ShopManagementGui.java @@ -8,6 +8,8 @@ import com.alttd.playershops.utils.EconomyUtils; import com.alttd.playershops.utils.ShopUtil; import com.alttd.playershops.utils.Util; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; +import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -36,11 +38,18 @@ public class ShopManagementGui extends AbstractGui { ItemStack shopIcon = GuiIcon.MANAGE_SHOP.getItemStack(); ItemMeta meta = shopIcon.getItemMeta(); List lore = new ArrayList<>(); - lore.add(Util.parseMiniMessage("Balance: " + shop.getBalance(), null)); - lore.add(Util.parseMiniMessage("item: " + ShopUtil.itemNameComponent(shop.getItemStack()), null)); - lore.add(Util.parseMiniMessage("amount: " + shop.getAmount(), null)); - lore.add(Util.parseMiniMessage("Type: " + shop.getType(), null)); - lore.add(Util.parseMiniMessage("Price: " + shop.getPrice(), null)); + TagResolver placeholders = TagResolver.resolver( + Placeholder.unparsed("balance", shop.getBalance() + ""), + Placeholder.unparsed("price", shop.getPrice() + ""), + Placeholder.unparsed("amount", shop.getAmount() + ""), + Placeholder.unparsed("shoptype", shop.getType().toString()), + Placeholder.component("itemname", ShopUtil.itemNameComponent(shop.getItemStack())) + ); + lore.add(Util.parseMiniMessage("Balance: ", placeholders)); + lore.add(Util.parseMiniMessage("item: ", placeholders)); + lore.add(Util.parseMiniMessage("amount: ", placeholders)); + lore.add(Util.parseMiniMessage("Type: ", placeholders)); + lore.add(Util.parseMiniMessage("Price: ", placeholders)); meta.lore(lore); shopIcon.setItemMeta(meta); From f646d1283bc53d7fe54e6dcafe56ade91136868e Mon Sep 17 00:00:00 2001 From: Len <40720638+destro174@users.noreply.github.com> Date: Sun, 28 Aug 2022 20:47:05 +0200 Subject: [PATCH 4/4] Add placeholds to TransactionListener.java --- src/main/java/com/alttd/playershops/config/ShopTypeConfig.java | 2 +- .../com/alttd/playershops/listener/TransactionListener.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/alttd/playershops/config/ShopTypeConfig.java b/src/main/java/com/alttd/playershops/config/ShopTypeConfig.java index 0691c63..172f547 100644 --- a/src/main/java/com/alttd/playershops/config/ShopTypeConfig.java +++ b/src/main/java/com/alttd/playershops/config/ShopTypeConfig.java @@ -55,7 +55,7 @@ public class ShopTypeConfig { public String playerInventoryFull = "You do not have enough space in your inventory to buy from this shop."; public String playerNoFunds = "You do not have sufficient funds to trade with this shop."; - public String playerBought = "You bought (s) from for ."; + public String playerBought = "You bought (s) from for ."; public String shopSold = " bought (s) from you for ."; public String shopInventoryFull = "This shop does not have enough space in its inventory."; public String shopNoStock = "This shop is out of stock."; diff --git a/src/main/java/com/alttd/playershops/listener/TransactionListener.java b/src/main/java/com/alttd/playershops/listener/TransactionListener.java index 55b812e..4bb56ac 100644 --- a/src/main/java/com/alttd/playershops/listener/TransactionListener.java +++ b/src/main/java/com/alttd/playershops/listener/TransactionListener.java @@ -106,7 +106,8 @@ public class TransactionListener extends EventListener { TagResolver placeholders = TagResolver.resolver( Placeholder.unparsed("ownername", shop.getOwnerName()), Placeholder.unparsed("price", shop.getPrice() + ""), - Placeholder.unparsed("amount", shop.getAmount() + "") + Placeholder.unparsed("amount", shop.getAmount() + ""), + Placeholder.component("item", ShopUtil.itemNameComponent(shop.getItemStack())) ); if (transactionError != TransactionError.NONE) { switch (transactionError) {