package net.knarcraft.paidsigns.command; import net.knarcraft.paidsigns.PaidSigns; import net.knarcraft.paidsigns.container.PaidSign; import net.knarcraft.paidsigns.formatting.StringFormatter; import net.knarcraft.paidsigns.formatting.TranslatableMessage; import net.knarcraft.paidsigns.utility.Tokenizer; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * A representation of the command for removing a paid sign */ public class RemoveTabCommand implements TabExecutor { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { List arguments = Tokenizer.tokenize(String.join(" ", args)); if (arguments.size() < 1) { return false; } String name = arguments.get(0); try { if (PaidSigns.getInstance().getSignManager().removePaidSign(name)) { sender.sendMessage(StringFormatter.getTranslatedInfoMessage( TranslatableMessage.SUCCESS_REMOVED_PAID_SIGN)); } else { sender.sendMessage(StringFormatter.getTranslatedErrorMessage( TranslatableMessage.ERROR_PAID_SIGN_NOT_FOUND)); } return true; } catch (IOException e) { sender.sendMessage(StringFormatter.getTranslatedErrorMessage(TranslatableMessage.ERROR_EXCEPTION_OCCURRED)); } return false; } @Nullable @Override public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { List arguments = Tokenizer.tokenize(String.join(" ", args)); int argumentSize = args[args.length - 1].isEmpty() ? arguments.size() : arguments.size() - 1; if (argumentSize < 1) { Map allPaidSigns = PaidSigns.getInstance().getSignManager().getAllPaidSigns(); List signNames = new ArrayList<>(); for (String name : allPaidSigns.keySet()) { signNames.add("\"" + name + "\""); } return signNames; } else { return new ArrayList<>(); } } }