From 09c334904861d606e2d2d77df0e594fd986d878d Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sun, 28 Aug 2022 20:50:29 +0200 Subject: [PATCH] Added messages/placeholders for failed transactions --- .../playershops/config/ShopTypeConfig.java | 4 ++++ .../listener/TransactionListener.java | 17 +++++++++++++---- 2 files changed, 17 insertions(+), 4 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..3a61fd7 100644 --- a/src/main/java/com/alttd/playershops/config/ShopTypeConfig.java +++ b/src/main/java/com/alttd/playershops/config/ShopTypeConfig.java @@ -59,11 +59,15 @@ public class ShopTypeConfig { 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."; + public String yourShopNoFunds = "Your shop at is out of funds"; + public String yourShopNoStock = "Your shop at is out of stock"; private void transactionMessages() { playerInventoryFull = getString("transaction.player-inventory-full", playerInventoryFull); playerNoFunds = getString("transaction.player-no-funds", playerNoFunds); shopInventoryFull = getString("transaction.shop-inventory-full", shopInventoryFull); shopNoStock = getString("transaction.shop-no-stock", shopNoStock); + yourShopNoFunds = getString("transaction.your-shop-no-funds", yourShopNoFunds); + yourShopNoStock = getString("transaction.your-shop-no-stock", yourShopNoStock); } } diff --git a/src/main/java/com/alttd/playershops/listener/TransactionListener.java b/src/main/java/com/alttd/playershops/listener/TransactionListener.java index 55b812e..ecb2b1c 100644 --- a/src/main/java/com/alttd/playershops/listener/TransactionListener.java +++ b/src/main/java/com/alttd/playershops/listener/TransactionListener.java @@ -6,14 +6,13 @@ import com.alttd.playershops.handler.ShopHandler; import com.alttd.playershops.hook.WorldGuardHook; import com.alttd.playershops.shop.PlayerShop; import com.alttd.playershops.shop.TransactionError; -import com.alttd.playershops.storage.database.DatabaseHelper; import com.alttd.playershops.utils.Logger; import com.alttd.playershops.utils.ShopUtil; import com.alttd.playershops.utils.Util; 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.OfflinePlayer; +import org.bukkit.Location; import org.bukkit.Tag; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -106,7 +105,9 @@ 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.unparsed("item", Util.capitalize(shop.getItemStack().getType().toString())), + Placeholder.unparsed("location", formatLocation(shop.getShopLocation())) ); if (transactionError != TransactionError.NONE) { switch (transactionError) { @@ -114,7 +115,7 @@ public class TransactionListener extends EventListener { Player shopOwner = Bukkit.getPlayer(shop.getOwnerUUID()); if (shopOwner != null && notifyOwner(shop)) { // TODO notify shopowner in game if not on cooldown and once per day on discord if linked and enabled - shopOwner.sendActionBar(Util.parseMiniMessage(shop.getType().getShopTypeConfig().shopSold, null)); + shopOwner.sendActionBar(Util.parseMiniMessage(shop.getType().getShopTypeConfig().yourShopNoFunds, placeholders)); } player.sendMiniMessage(shop.getType().getShopTypeConfig().shopNoStock, placeholders); } @@ -124,6 +125,7 @@ public class TransactionListener extends EventListener { case INVENTORY_FULL_SHOP -> { Player shopOwner = Bukkit.getPlayer(shop.getOwnerUUID()); if (shopOwner != null && notifyOwner(shop)) { + shopOwner.sendActionBar(Util.parseMiniMessage(shop.getType().getShopTypeConfig().yourShopNoStock, placeholders)); // TODO notify shopowner in game if not on cooldown and once per day on discord if linked and enabled } player.sendMiniMessage(shop.getType().getShopTypeConfig().shopInventoryFull, placeholders); @@ -138,6 +140,13 @@ public class TransactionListener extends EventListener { plugin.getDatabaseHelper().logTransaction(player, shop, orders); } + private String formatLocation(Location location) { + return Util.capitalize(location.getWorld().getName()) + ": " + + " " + (int) location.getX() + + ", " + (int) location.getY() + + ", " + (int) location.getZ(); + } + private boolean notifyOwner(PlayerShop playerShop) { // TODO notify shopowner in game if not on cooldown and once per day on discord if linked and enabled return playerShop.isNotifiedOwner();