80 lines
2.9 KiB
Java
80 lines
2.9 KiB
Java
package com.taxes.commands;
|
|
|
|
import com.taxes.TaxesPlugin;
|
|
import com.taxes.tax.Tax;
|
|
import org.bukkit.command.Command;
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.command.TabCompleter;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.util.StringUtil;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
|
|
public class TaxesTabCompleter implements TabCompleter {
|
|
private final TaxesPlugin plugin;
|
|
|
|
public TaxesTabCompleter(TaxesPlugin plugin) {
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
@Override
|
|
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
|
|
List<String> completions = new ArrayList<>();
|
|
|
|
if (args.length == 1) {
|
|
String cmdName = command.getName().toLowerCase();
|
|
|
|
if (cmdName.equals("taxes-collect") || cmdName.equals("tax-collect")) {
|
|
return getAvailableTaxes(sender, args[0], false);
|
|
} else if (cmdName.equals("taxes-info") || cmdName.equals("tax-info")) {
|
|
return getAvailableTaxes(sender, args[0], false);
|
|
} else if (cmdName.equals("taxes-infoall") || cmdName.equals("tax-infoall")) {
|
|
return getAvailableTaxes(sender, args[0], true);
|
|
} else if (cmdName.equals("taxes-list") || cmdName.equals("tax-list")) {
|
|
return Collections.emptyList();
|
|
} else if (cmdName.equals("taxes-listall") || cmdName.equals("tax-listall")) {
|
|
return Collections.emptyList();
|
|
} else if (cmdName.equals("taxes-collectall") || cmdName.equals("tax-collectall")) {
|
|
return Collections.emptyList();
|
|
} else if (cmdName.equals("taxes-reload") || cmdName.equals("tax-reload")) {
|
|
return Collections.emptyList();
|
|
} else if (cmdName.equals("taxes") || cmdName.equals("tax")) {
|
|
return Collections.emptyList();
|
|
}
|
|
}
|
|
|
|
return completions;
|
|
}
|
|
|
|
/**
|
|
* Gibt alle verfügbaren Steuern für Tab-Completion zurück
|
|
* @param sender Der Command-Sender (Player oder Console)
|
|
* @param input Das aktuelle Input-String für Partial Matching
|
|
* @param showAll Alle Steuern zeigen (true) oder nur aktivierte (false)
|
|
* @return Liste der Steuernamen zum Completen
|
|
*/
|
|
private List<String> getAvailableTaxes(CommandSender sender, String input, boolean showAll) {
|
|
List<String> completions = new ArrayList<>();
|
|
|
|
for (Tax tax : this.plugin.getTaxConfigData().getTaxes()) {
|
|
// Wenn showAll=false, nur aktivierte Steuern zeigen
|
|
if (!showAll && !tax.getTaxData().isEnabled()) {
|
|
continue;
|
|
}
|
|
|
|
String taxName = tax.getTaxData().getName().getConfigTag();
|
|
|
|
// StringUtil.copyPartialMatches für Partial String Matching
|
|
if (StringUtil.startsWithIgnoreCase(taxName, input)) {
|
|
completions.add(taxName);
|
|
}
|
|
}
|
|
|
|
// Alphabetisch sortieren für bessere UX
|
|
Collections.sort(completions);
|
|
return completions;
|
|
}
|
|
}
|