diff --git a/src/main/java/com/alttd/playershops/listener/TransactionListener.java b/src/main/java/com/alttd/playershops/listener/TransactionListener.java index 5de9de9..172ae49 100644 --- a/src/main/java/com/alttd/playershops/listener/TransactionListener.java +++ b/src/main/java/com/alttd/playershops/listener/TransactionListener.java @@ -119,7 +119,7 @@ public class TransactionListener extends EventListener { } TagResolver placeholders = TagResolver.resolver(action, Placeholder.parsed("amount", "" + playerShop.getAmount()), - Placeholder.component("item", itemComponent(playerShop.getItemStack())), + Placeholder.component("item", ShopUtil.itemNameComponent(playerShop.getItemStack())), Placeholder.parsed("material", Util.capitalize(playerShop.getItemStack().getType().name())), Placeholder.parsed("price", "" + playerShop.getPrice()) ); @@ -127,44 +127,6 @@ public class TransactionListener extends EventListener { player.sendMiniMessage(MessageConfig.SHOP_INFO, placeholders); } - private Component itemComponent(ItemStack item) { - Component component; - MiniMessage miniMessage = MiniMessage.miniMessage(); - if (item.getType().equals(Material.AIR)) - return miniMessage.deserialize("NONE"); - boolean dname = item.hasItemMeta() && item.getItemMeta().hasDisplayName(); - if (dname) { - component = item.getItemMeta().displayName(); - } else { - component = Component.text(materialToName(item.getType()), NamedTextColor.WHITE); - } - component = component.hoverEvent(item.asHoverEvent()); - return component; - } - - private String materialToName(Material m) { - if (m.equals(Material.TNT)) { - return "TNT"; - } - String orig = m.toString().toLowerCase(); - String[] splits = orig.split("_"); - StringBuilder sb = new StringBuilder(orig.length()); - int pos = 0; - for (String split : splits) { - sb.append(split); - int loc = sb.lastIndexOf(split); - char charLoc = sb.charAt(loc); - if (!(split.equalsIgnoreCase("of") || split.equalsIgnoreCase("and") || - split.equalsIgnoreCase("with") || split.equalsIgnoreCase("on"))) - sb.setCharAt(loc, Character.toUpperCase(charLoc)); - if (pos != splits.length - 1) - sb.append(' '); - ++pos; - } - - return sb.toString(); - } - private void executeTransaction(Player player, PlayerShop shop) { if (shop == null || shop.getItemStack() == null) return; diff --git a/src/main/java/com/alttd/playershops/shop/PlayerShop.java b/src/main/java/com/alttd/playershops/shop/PlayerShop.java index 3285486..ab08747 100644 --- a/src/main/java/com/alttd/playershops/shop/PlayerShop.java +++ b/src/main/java/com/alttd/playershops/shop/PlayerShop.java @@ -152,9 +152,9 @@ public class PlayerShop { MiniMessage miniMessage = MiniMessage.miniMessage(); TagResolver tagResolver = TagResolver.resolver( Placeholder.unparsed("ownername", getOwnerName()), - Placeholder.unparsed("price", String.valueOf(getPrice())), + Placeholder.unparsed("price", trimPrice(String.valueOf(getPrice()))), Placeholder.unparsed("amount", String.valueOf(getAmount())), - Placeholder.component("itemname", ShopUtil.itemNameComponent(getItemStack())) + Placeholder.component("itemname", ShopUtil.trimmedItemNameComponent(getItemStack())) ); for (int i = 0; i < 4; i++) { signBlock.line(i, miniMessage.deserialize(signLines.get(i), tagResolver)); @@ -164,6 +164,13 @@ public class PlayerShop { }.runTaskLater(PlayerShops.getInstance(), 2L); } + private String trimPrice(String price) { + if (price.length() > 15) { + return price.substring(0, 13) + "!"; + } + return price; + } + public double getPricePerItem() { return this.getPrice() / this.getAmount(); } diff --git a/src/main/java/com/alttd/playershops/utils/ShopUtil.java b/src/main/java/com/alttd/playershops/utils/ShopUtil.java index 5ccb5ae..b6eb86c 100644 --- a/src/main/java/com/alttd/playershops/utils/ShopUtil.java +++ b/src/main/java/com/alttd/playershops/utils/ShopUtil.java @@ -3,6 +3,7 @@ package com.alttd.playershops.utils; import com.alttd.playershops.shop.PlayerShop; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -156,17 +157,49 @@ public class ShopUtil { return false; } - public static Component itemNameComponent(ItemStack item) { - Component component = Component.empty(); + public static Component trimmedItemNameComponent(ItemStack item) { if(item == null || item.getType().equals(Material.AIR)) return Component.text("Nothing"); - boolean dname = item.hasItemMeta() && item.getItemMeta().hasDisplayName(); - if(dname) { - component = component.append(item.getItemMeta().displayName()); - } else { - component = component.append(Component.text(materialToName(item.getType()), NamedTextColor.WHITE)); + return materialToTrimmedName(item.getType()); + } + + private static Component materialToTrimmedName(Material m) { + if (m.equals(Material.TNT)) { + return Component.text("TNT", NamedTextColor.WHITE); + } + String orig = m.name().toLowerCase(); + String[] splits = orig.split("_"); + StringBuilder sb = new StringBuilder(orig.length()); + int pos = 0; + for (String split : splits) { + sb.append(split); + int loc = sb.lastIndexOf(split); + char charLoc = sb.charAt(loc); + if (!(split.equalsIgnoreCase("of") || split.equalsIgnoreCase("and") || + split.equalsIgnoreCase("with") || split.equalsIgnoreCase("on"))) + sb.setCharAt(loc, Character.toUpperCase(charLoc)); + if (pos != splits.length - 1) + sb.append(' '); + ++pos; } + if (sb.length() > 10) + return Component.text(sb.substring(0, 8), NamedTextColor.WHITE).append(Component.text("!", NamedTextColor.RED)); + return Component.text(sb.toString(), NamedTextColor.WHITE); + } + + public static Component itemNameComponent(ItemStack item) { + Component component; + MiniMessage miniMessage = MiniMessage.miniMessage(); + if (item.getType().equals(Material.AIR)) + return miniMessage.deserialize("NONE"); + boolean dname = item.hasItemMeta() && item.getItemMeta().hasDisplayName(); + if (dname) { + component = item.getItemMeta().displayName(); + } else { + component = Component.text(materialToName(item.getType()), NamedTextColor.WHITE); + } + component = component.hoverEvent(item.asHoverEvent()); return component; } @@ -174,7 +207,7 @@ public class ShopUtil { if (m.equals(Material.TNT)) { return "TNT"; } - String orig = m.name().toLowerCase(); + String orig = m.toString().toLowerCase(); String[] splits = orig.split("_"); StringBuilder sb = new StringBuilder(orig.length()); int pos = 0;