The player to calculate the cost for
+ * @returnThe string representation of this action cost
+ */ @NotNull - public String displayCost() { + public String displayCost(@NotNull Player player) { StringBuilder builder = new StringBuilder(); if (monetaryCost > 0) { - builder.append(EconomyManager.format(monetaryCost)).append(", "); + builder.append(EconomyManager.format(monetaryCost)).append(", ").append("\n"); } if (expCost > 0) { - builder.append(expCost).append("exp, "); + builder.append(expCost).append("exp, ").append("\n"); } if (itemCost != null) { - // TODO: Present name, amount and name + lore - builder.append(itemCost); + NamespacedKey itemName = itemCost.getType().getKeyOrNull(); + if (itemName != null) { + builder.append(itemCost.getAmount()).append(" x ").append(itemName); + ItemMeta itemMeta = itemCost.getItemMeta(); + if (itemMeta != null && itemMeta.hasDisplayName()) { + builder.append("(").append(itemMeta.getDisplayName()).append(")"); + } + if (itemMeta != null && itemMeta.hasLore() && itemMeta.getLore() != null) { + for (String lore : itemMeta.getLore()) { + builder.append("\n").append(lore); + } + } + builder.append("\n"); + } + } + if (!requiredPermissions().isEmpty()) { + for (String permission : requiredPermissions()) { + if (player.hasPermission(permission)) { + builder.append(ChatColor.DARK_GREEN).append("O ").append(permission).append("\n"); + } else { + builder.append(ChatColor.DARK_RED).append("X ").append(permission).append("\n"); + } + } } - // TODO: Display required permissions if the player doesn't have them? return builder.toString(); } diff --git a/src/main/java/net/knarcraft/blacksmith/command/CostCommand.java b/src/main/java/net/knarcraft/blacksmith/util/CostHelper.java similarity index 80% rename from src/main/java/net/knarcraft/blacksmith/command/CostCommand.java rename to src/main/java/net/knarcraft/blacksmith/util/CostHelper.java index a372483..2078115 100644 --- a/src/main/java/net/knarcraft/blacksmith/command/CostCommand.java +++ b/src/main/java/net/knarcraft/blacksmith/util/CostHelper.java @@ -1,13 +1,11 @@ -package net.knarcraft.blacksmith.command; +package net.knarcraft.blacksmith.util; import net.knarcraft.blacksmith.BlacksmithPlugin; import net.knarcraft.blacksmith.container.ActionCost; import net.knarcraft.blacksmith.formatting.BlacksmithTranslatableMessage; import net.knarcraft.blacksmith.property.CostType; import org.bukkit.Bukkit; -import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.bukkit.command.TabExecutor; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.permissions.Permission; @@ -23,49 +21,48 @@ import java.util.Map; import java.util.Set; import java.util.StringJoiner; -public class CostCommand implements TabExecutor { +/** + * A helper class for setting action costs + */ +public final class CostHelper { private static List