diff --git a/pom.xml b/pom.xml index 573a4f9..4a7e9b8 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.minster586 ServerDevMode - 1.0.2 + 1.0.3 jar ServerDevMode Development mode plugin for Minecraft servers—tracing events and debugging logs diff --git a/src/main/java/com/minster586/devmode/CommandHandler.java b/src/main/java/com/minster586/devmode/CommandHandler.java index 89cbe6c..a39da03 100644 --- a/src/main/java/com/minster586/devmode/CommandHandler.java +++ b/src/main/java/com/minster586/devmode/CommandHandler.java @@ -5,7 +5,30 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -public class CommandHandler implements CommandExecutor { +import org.bukkit.command.TabCompleter; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +public class CommandHandler implements CommandExecutor, TabCompleter { + private static final List SUBCOMMANDS = Arrays.asList("on", "off", "level", "zip"); + private static final List LEVELS = Arrays.asList("minimal", "verbose", "full"); + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + if (!sender.hasPermission("serverdevmode.use")) return Collections.emptyList(); + + if (args.length == 1) { + return SUBCOMMANDS.stream() + .filter(s -> s.startsWith(args[0].toLowerCase())) + .toList(); + } + if (args.length == 2 && args[0].equalsIgnoreCase("level")) { + return LEVELS.stream() + .filter(l -> l.startsWith(args[1].toLowerCase())) + .toList(); + } + return Collections.emptyList(); + } private final DevModeManager manager; diff --git a/src/main/java/com/minster586/devmode/ServerDevMode.java b/src/main/java/com/minster586/devmode/ServerDevMode.java index ad56ed8..04b1711 100644 --- a/src/main/java/com/minster586/devmode/ServerDevMode.java +++ b/src/main/java/com/minster586/devmode/ServerDevMode.java @@ -21,8 +21,11 @@ public class ServerDevMode extends JavaPlugin { // Initialize dev mode manager with logger devModeManager = new DevModeManager(this, logWriter); - // Register command handler - getCommand("devmode").setExecutor(new CommandHandler(devModeManager)); + + // Register command handler and tab completer + CommandHandler handler = new CommandHandler(devModeManager); + getCommand("devmode").setExecutor(handler); + getCommand("devmode").setTabCompleter(handler); // Register listeners getServer().getPluginManager().registerEvents(new ChatEventListener(devModeManager), this); diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 09b3413..a5cd6e3 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,5 +1,5 @@ name: ServerDevMode -version: 1.0.2 +version: 1.0.3 main: com.minster586.devmode.ServerDevMode api-version: 1.16 description: Server-wide development mode plugin for event tracing, chat logging, and debugging support.