diff --git a/src/main/java/com/user404_/infinitehomes/InfiniteHomes.java b/src/main/java/com/user404_/infinitehomes/InfiniteHomes.java index 8368aac..b118c92 100644 --- a/src/main/java/com/user404_/infinitehomes/InfiniteHomes.java +++ b/src/main/java/com/user404_/infinitehomes/InfiniteHomes.java @@ -4,6 +4,7 @@ import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; @@ -14,13 +15,15 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.logging.Level; -public class InfiniteHomes extends JavaPlugin { +public class InfiniteHomes extends JavaPlugin implements TabCompleter { private Map> homes; private Map cooldowns; @@ -45,6 +48,10 @@ public class InfiniteHomes extends JavaPlugin { getConfig().options().copyDefaults(true); saveConfig(); + // TabCompleter registrieren + getCommand("home").setTabCompleter(this); + getCommand("delhome").setTabCompleter(this); + getLogger().info("InfiniteHomes plugin enabled!"); } @@ -54,6 +61,43 @@ public class InfiniteHomes extends JavaPlugin { getLogger().info("InfiniteHomes plugin disabled!"); } + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + List completions = new ArrayList<>(); + + // Nur für Spieler und für die Befehle home und delhome + if (!(sender instanceof Player) || (!command.getName().equalsIgnoreCase("home") && + !command.getName().equalsIgnoreCase("delhome"))) { + return completions; + } + + Player player = (Player) sender; + UUID playerUuid = player.getUniqueId(); + + // Wenn der Spieler keine Homes hat, leere Liste zurückgeben + if (!homes.containsKey(playerUuid) || homes.get(playerUuid).isEmpty()) { + return completions; + } + + // Home-Namen des Spielers holen + Set homeNames = homes.get(playerUuid).keySet(); + + // Wenn kein Argument vorhanden ist, alle Home-Namen zurückgeben + if (args.length == 0 || args[0].isEmpty()) { + completions.addAll(homeNames); + } else { + // Home-Namen filtern, die mit dem eingegebenen Text beginnen + String input = args[0].toLowerCase(); + for (String home : homeNames) { + if (home.toLowerCase().startsWith(input)) { + completions.add(home); + } + } + } + + return completions; + } + private void setupHomesConfig() { if (!getDataFolder().exists()) { getDataFolder().mkdirs(); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 6ec735d..a661655 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -10,15 +10,18 @@ commands: delhome: description: Delete a home with the given name. usage: /delhome + aliases: [deletehome] home: description: Teleport to a home with the given name. usage: /home + aliases: [h] homes: description: List all your homes. usage: /homes + aliases: [listhomes] homecount: description: Set the global home limit (OP only). usage: /homecount homecooldown: description: Set the global home cooldown (OP only). - usage: /homecooldown \ No newline at end of file + usage: /homecooldown