diff --git a/src/main/java/com/Acrobot/Breeze/Utils/MaterialUtil.java b/src/main/java/com/Acrobot/Breeze/Utils/MaterialUtil.java index 792670d..2266c83 100644 --- a/src/main/java/com/Acrobot/Breeze/Utils/MaterialUtil.java +++ b/src/main/java/com/Acrobot/Breeze/Utils/MaterialUtil.java @@ -118,6 +118,24 @@ public class MaterialUtil { return material; } + /** + * Get a list with item information + * + * @param items The items to get the information from + * @return The list, including the amount and names of the items + */ + public static String getItemList(ItemStack[] items) { + ItemStack[] mergedItems = InventoryUtil.mergeSimilarStacks(items); + + List itemText = new ArrayList<>(); + + for (ItemStack item : mergedItems) { + itemText.add(item.getAmount() + " " + getName(item)); + } + + return String.join(", ", itemText); + } + /** * Returns item's name * @@ -612,7 +630,7 @@ public class MaterialUtil { List itemJson = new ArrayList<>(); for (ItemStack item : InventoryUtil.mergeSimilarStacks(stock)) { try { - itemJson.add(showItem.getItemConverter().createComponent(item, Level.OFF).toJsonString(player)); + itemJson.add(showItem.getItemConverter().createComponent(item, Level.FINE).toJsonString(player)); } catch (Exception e) { ChestShop.getPlugin().getLogger().log(Level.WARNING, "Error while trying to send message '" + message + "' to player " + player.getName() + ": " + e.getMessage()); return false; diff --git a/src/main/java/com/Acrobot/ChestShop/Configuration/Messages.java b/src/main/java/com/Acrobot/ChestShop/Configuration/Messages.java index 9544a9c..3160f01 100644 --- a/src/main/java/com/Acrobot/ChestShop/Configuration/Messages.java +++ b/src/main/java/com/Acrobot/ChestShop/Configuration/Messages.java @@ -30,19 +30,19 @@ public class Messages { public static String NOT_ENOUGH_SPACE_IN_INVENTORY = "You haven't got enough space in inventory!"; public static String NOT_ENOUGH_SPACE_IN_CHEST = "There isn't enough space in chest!"; public static String NOT_ENOUGH_ITEMS_TO_SELL = "You don't have enough items to sell!"; - public static String NOT_ENOUGH_SPACE_IN_YOUR_SHOP = "%material&7 shop at &r%world/%x/%y/%z&7 is full! (%seller tried to sell)"; + public static String NOT_ENOUGH_SPACE_IN_YOUR_SHOP = "%price %item&7 shop at &r%world/%x/%y/%z&7 is full! (%seller tried to sell)"; @PrecededBySpace public static String NOT_ENOUGH_STOCK = "This shop is out of stock."; - public static String NOT_ENOUGH_STOCK_IN_YOUR_SHOP = "%material&7 shop at &r%world/%x/%y/%z&7 is out of stock! (%buyer tried to buy)"; + public static String NOT_ENOUGH_STOCK_IN_YOUR_SHOP = "%price %item&7 shop at &r%world/%x/%y/%z&7 is out of stock! (%buyer tried to buy)"; @PrecededBySpace public static String YOU_BOUGHT_FROM_SHOP = "You bought %item from %owner for %price."; - public static String SOMEBODY_BOUGHT_FROM_YOUR_SHOP = "%buyer bought %item for %price from you."; + public static String SOMEBODY_BOUGHT_FROM_YOUR_SHOP = "%buyer bought %item for %price from your shop at %world/%x/%y/%z."; @PrecededBySpace public static String YOU_SOLD_TO_SHOP = "You sold %item to %buyer for %price."; - public static String SOMEBODY_SOLD_TO_YOUR_SHOP = "%seller sold %item for %price to you."; + public static String SOMEBODY_SOLD_TO_YOUR_SHOP = "%seller sold %item for %price to your shop at %world/%x/%y/%z."; @PrecededBySpace public static String YOU_CANNOT_CREATE_SHOP = "You can't create this type of shop!"; diff --git a/src/main/java/com/Acrobot/ChestShop/Listeners/PostTransaction/TransactionMessageSender.java b/src/main/java/com/Acrobot/ChestShop/Listeners/PostTransaction/TransactionMessageSender.java index 939c58a..ebfa36d 100644 --- a/src/main/java/com/Acrobot/ChestShop/Listeners/PostTransaction/TransactionMessageSender.java +++ b/src/main/java/com/Acrobot/ChestShop/Listeners/PostTransaction/TransactionMessageSender.java @@ -1,24 +1,17 @@ package com.Acrobot.ChestShop.Listeners.PostTransaction; -import com.Acrobot.Breeze.Utils.InventoryUtil; import com.Acrobot.Breeze.Utils.MaterialUtil; -import com.Acrobot.Breeze.Utils.StringUtil; import com.Acrobot.ChestShop.Commands.Toggle; import com.Acrobot.ChestShop.Configuration.Messages; import com.Acrobot.ChestShop.Configuration.Properties; import com.Acrobot.ChestShop.Economy.Economy; import com.Acrobot.ChestShop.Events.TransactionEvent; -import com.Acrobot.ChestShop.UUIDs.NameManager; import org.bukkit.Bukkit; +import org.bukkit.Location; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.inventory.ItemStack; - -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; /** * @author Acrobot @@ -68,8 +61,13 @@ public class TransactionMessageSender implements Listener { } private static void sendMessage(Player player, String rawMessage, TransactionEvent event, String... replacements) { + Location loc = event.getSign().getLocation(); String message = Messages.prefix(rawMessage) - .replace("%price", Economy.formatBalance(event.getPrice())); + .replace("%price", Economy.formatBalance(event.getPrice())) + .replace("%world", loc.getWorld().getName()) + .replace("%x", String.valueOf(loc.getBlockX())) + .replace("%y", String.valueOf(loc.getBlockY())) + .replace("%z", String.valueOf(loc.getBlockZ())); for (int i = 0; i + 1 < replacements.length; i+=2) { message = message.replace("%" + replacements[i], replacements[i + 1]); @@ -78,18 +76,7 @@ public class TransactionMessageSender implements Listener { if (Properties.SHOWITEM_MESSAGE && MaterialUtil.Show.sendMessage(player, message, event.getStock())) { return; } - player.sendMessage(message.replace("%item", parseItemInformation(event.getStock()))); + player.sendMessage(message.replace("%item", MaterialUtil.getItemList(event.getStock()))); } - private static String parseItemInformation(ItemStack[] items) { - ItemStack[] stock = InventoryUtil.mergeSimilarStacks(items); - - List itemText = new ArrayList<>(); - - for (ItemStack item : stock) { - itemText.add(item.getAmount() + " " + MaterialUtil.getName(item)); - } - - return StringUtil.joinArray(itemText); - } } diff --git a/src/main/java/com/Acrobot/ChestShop/Listeners/PreTransaction/ErrorMessageSender.java b/src/main/java/com/Acrobot/ChestShop/Listeners/PreTransaction/ErrorMessageSender.java index b8fcc0d..8a94ec4 100644 --- a/src/main/java/com/Acrobot/ChestShop/Listeners/PreTransaction/ErrorMessageSender.java +++ b/src/main/java/com/Acrobot/ChestShop/Listeners/PreTransaction/ErrorMessageSender.java @@ -1,11 +1,11 @@ package com.Acrobot.ChestShop.Listeners.PreTransaction; -import com.Acrobot.Breeze.Utils.InventoryUtil; import com.Acrobot.Breeze.Utils.MaterialUtil; import com.Acrobot.ChestShop.Commands.Toggle; import com.Acrobot.ChestShop.Configuration.Messages; import com.Acrobot.ChestShop.Configuration.Properties; import com.Acrobot.ChestShop.Database.Account; +import com.Acrobot.ChestShop.Economy.Economy; import com.Acrobot.ChestShop.Events.PreTransactionEvent; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -51,13 +51,13 @@ public class ErrorMessageSender implements Listener { if (Properties.SHOW_MESSAGE_FULL_SHOP && !Properties.CSTOGGLE_TOGGLES_FULL_SHOP || !Toggle.isIgnoring(event.getOwnerAccount().getName())) { Location loc = event.getSign().getLocation(); String messageNotEnoughSpace = Messages.prefix(NOT_ENOUGH_SPACE_IN_YOUR_SHOP) - .replace("%material", getItemNames(event.getStock())) + .replace("%price", Economy.formatBalance(event.getPrice())) .replace("%seller", event.getClient().getName()) .replace("%world", loc.getWorld().getName()) .replace("%x", String.valueOf(loc.getBlockX())) .replace("%y", String.valueOf(loc.getBlockY())) .replace("%z", String.valueOf(loc.getBlockZ())); - sendMessageToOwner(event.getOwnerAccount(), messageNotEnoughSpace); + sendMessageToOwner(event.getOwnerAccount(), messageNotEnoughSpace, event.getStock()); } message = Messages.NOT_ENOUGH_SPACE_IN_CHEST; break; @@ -71,13 +71,13 @@ public class ErrorMessageSender implements Listener { if (Properties.SHOW_MESSAGE_OUT_OF_STOCK && !Properties.CSTOGGLE_TOGGLES_OUT_OF_STOCK || !Toggle.isIgnoring(event.getOwnerAccount().getName())) { Location loc = event.getSign().getLocation(); String messageOutOfStock = Messages.prefix(NOT_ENOUGH_STOCK_IN_YOUR_SHOP) - .replace("%material", getItemNames(event.getStock())) + .replace("%price", Economy.formatBalance(event.getPrice())) .replace("%buyer", event.getClient().getName()) .replace("%world", loc.getWorld().getName()) .replace("%x", String.valueOf(loc.getBlockX())) .replace("%y", String.valueOf(loc.getBlockY())) .replace("%z", String.valueOf(loc.getBlockZ())); - sendMessageToOwner(event.getOwnerAccount(), messageOutOfStock); + sendMessageToOwner(event.getOwnerAccount(), messageOutOfStock, event.getStock()); } message = Messages.NOT_ENOUGH_STOCK; break; @@ -104,22 +104,14 @@ public class ErrorMessageSender implements Listener { } } - private static String getItemNames(ItemStack[] stock) { - ItemStack[] items = InventoryUtil.mergeSimilarStacks(stock); - - StringBuilder names = new StringBuilder(MaterialUtil.getName(items[0])); - - for (int i = 1; i < items.length; i++) { - names.append(MaterialUtil.getName(items[i])).append(',').append(' '); - } - - return names.toString(); - } - - private static void sendMessageToOwner(Account ownerAccount, String message) { + private static void sendMessageToOwner(Account ownerAccount, String message, ItemStack... stock) { Player player = Bukkit.getPlayer(ownerAccount.getUuid()); if (player != null) { - player.sendMessage(message); + message = message.replace("%material", "%item"); + if (Properties.SHOWITEM_MESSAGE && MaterialUtil.Show.sendMessage(player, message, stock)) { + return; + } + player.sendMessage(message.replace("%item", MaterialUtil.getItemList(stock))); } } }