Update from Git Manager GUI
This commit is contained in:
79
src/main/java/com/taxes/commands/TaxesTabCompleter.java
Normal file
79
src/main/java/com/taxes/commands/TaxesTabCompleter.java
Normal file
@@ -0,0 +1,79 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user