diff --git a/src/main/java/com/alttd/playershops/config/ShopTypeConfig.java b/src/main/java/com/alttd/playershops/config/ShopTypeConfig.java index 3a61fd7..f5a4855 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/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(); diff --git a/src/main/java/com/alttd/playershops/gui/ShopManagementGui.java b/src/main/java/com/alttd/playershops/gui/ShopManagementGui.java index c793129..8211270 100644 --- a/src/main/java/com/alttd/playershops/gui/ShopManagementGui.java +++ b/src/main/java/com/alttd/playershops/gui/ShopManagementGui.java @@ -4,9 +4,12 @@ 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; +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; @@ -35,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); @@ -65,7 +75,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); diff --git a/src/main/java/com/alttd/playershops/listener/TransactionListener.java b/src/main/java/com/alttd/playershops/listener/TransactionListener.java index ecb2b1c..a53a94d 100644 --- a/src/main/java/com/alttd/playershops/listener/TransactionListener.java +++ b/src/main/java/com/alttd/playershops/listener/TransactionListener.java @@ -106,7 +106,7 @@ public class TransactionListener extends EventListener { Placeholder.unparsed("ownername", shop.getOwnerName()), Placeholder.unparsed("price", shop.getPrice() + ""), Placeholder.unparsed("amount", shop.getAmount() + ""), - Placeholder.unparsed("item", Util.capitalize(shop.getItemStack().getType().toString())), + Placeholder.component("item", ShopUtil.itemNameComponent(shop.getItemStack())), Placeholder.unparsed("location", formatLocation(shop.getShopLocation())) ); if (transactionError != TransactionError.NONE) {