diff --git a/src/main/java/network/palace/show/ShowPlugin.java b/src/main/java/network/palace/show/ShowPlugin.java index 46e7012..67ff8b6 100644 --- a/src/main/java/network/palace/show/ShowPlugin.java +++ b/src/main/java/network/palace/show/ShowPlugin.java @@ -6,6 +6,8 @@ import com.craftmend.openaudiomc.spigot.OpenAudioMcSpigot; import lombok.Getter; import network.palace.show.commands.*; +import network.palace.show.commands.show.ShowTabComplete; +import network.palace.show.commands.showgen.ShowGenTabComplete; import network.palace.show.generator.ShowGenerator; import network.palace.show.listeners.ChunkListener; import network.palace.show.listeners.PlayerInteract; @@ -83,6 +85,8 @@ public void onEnable() { openAudioMcSpigot = OpenAudioMcSpigot.getInstance(); FileUtil.setupFiles(); this.getCommand("show").setExecutor(new ShowCommand()); + this.getCommand("show").setTabCompleter(new ShowTabComplete()); + this.getCommand("showdebug").setExecutor(new ShowDebugCommand()); FileConfiguration config = this.getConfig(); @@ -90,6 +94,7 @@ public void onEnable() { if (config.getString("github.token") != null) { githubToken = config.getString("github.token"); this.getCommand("showgen").setExecutor(new ShowgenCommand()); + this.getCommand("showgen").setTabCompleter(new ShowGenTabComplete()); Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "[Show] Showgen has been enabled in show!"); } else { Bukkit.getConsoleSender().sendMessage(ChatColor.RED + "[Show] Showgen will not be running in Show! To enable it, add a github token to the config!"); diff --git a/src/main/java/network/palace/show/commands/ShowCommand.java b/src/main/java/network/palace/show/commands/ShowCommand.java index 06b94a1..61854a4 100644 --- a/src/main/java/network/palace/show/commands/ShowCommand.java +++ b/src/main/java/network/palace/show/commands/ShowCommand.java @@ -21,10 +21,8 @@ public class ShowCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (args.length == 0) { - sender.sendMessage(ChatColor.GREEN + "Show Commands:"); - sender.sendMessage(ChatColor.AQUA + "/show list " + ChatColor.GREEN + "- List all running shows"); - sender.sendMessage(ChatColor.AQUA + "/show start [Show Name] " + ChatColor.GREEN + "- Start a show"); - sender.sendMessage(ChatColor.AQUA + "/show stop [Show Name] " + ChatColor.GREEN + "- Stop a show"); + sendHelpMsg(sender); + return true; } else { switch (args[0]) { case "list": @@ -32,8 +30,16 @@ public boolean onCommand(CommandSender sender, Command command, String label, St break; case "start": if (sender instanceof Player) { + if (args.length < 2) { + sender.sendMessage(ChatColor.RED + "/show start "); + return true; + } new StartCommand().handle(sender, args[1], ((Player) sender).getWorld()); } else if (sender instanceof BlockCommandSender) { + if (args.length < 2) { + sender.sendMessage(ChatColor.RED + "/show start "); + return true; + } new StartCommand().handle(sender, args[1], ((BlockCommandSender) sender).getBlock().getWorld()); } else { sender.sendMessage(ChatColor.RED + "You cannot run this from the console!"); @@ -41,18 +47,38 @@ public boolean onCommand(CommandSender sender, Command command, String label, St break; case "stop": if (sender instanceof Player) { + if (args.length < 2) { + sender.sendMessage(ChatColor.RED + "/show stop "); + return true; + } new StopCommand().handle(sender, args[1]); } else if (sender instanceof CommandBlock) { + if (args.length < 2) { + sender.sendMessage(ChatColor.RED + "/show stop "); + return true; + } new StopCommand().handle(sender, args[1]); } else { sender.sendMessage(ChatColor.RED + "You cannot run this from the console!"); } break; default: + sendHelpMsg(sender); break; } } return true; } + + /** + * Sends a help message to the player. + * @param sender Who to send it to. + */ + private void sendHelpMsg(CommandSender sender) { + sender.sendMessage(ChatColor.GREEN + "Show Commands:"); + sender.sendMessage(ChatColor.AQUA + "/show list " + ChatColor.GREEN + "- List all running shows"); + sender.sendMessage(ChatColor.AQUA + "/show start [Show Name] " + ChatColor.GREEN + "- Start a show"); + sender.sendMessage(ChatColor.AQUA + "/show stop [Show Name] " + ChatColor.GREEN + "- Stop a show"); + } } diff --git a/src/main/java/network/palace/show/commands/ShowgenCommand.java b/src/main/java/network/palace/show/commands/ShowgenCommand.java index 852797a..26d3a08 100644 --- a/src/main/java/network/palace/show/commands/ShowgenCommand.java +++ b/src/main/java/network/palace/show/commands/ShowgenCommand.java @@ -17,10 +17,7 @@ public class ShowgenCommand implements CommandExecutor { @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (args.length == 0) { - sender.sendMessage(ChatColor.GREEN + "ShowGen Commands:"); - sender.sendMessage(ChatColor.AQUA + "/showgen generate [action] [bottom/top] [delay per layer] [timestamp]" + ChatColor.GREEN + "- Generate blocks of show actions with one command"); - sender.sendMessage(ChatColor.AQUA + "/showgen setcorner x,y,z" + ChatColor.GREEN + "- Set the location of the final north-west-bottom corner to help give real coordinate values"); - sender.sendMessage(ChatColor.AQUA + "/showgen setinitialscene " + ChatColor.GREEN + "- Set the initial scene for a generator session"); + sendHelpMsg(sender); return true; } @@ -40,12 +37,20 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command new SetInitialCommand().handle(sender); break; default: - sender.sendMessage(ChatColor.GREEN + "ShowGen Commands:"); - sender.sendMessage(ChatColor.AQUA + "/showgen generate [action] [bottom/top] [delay per layer] [timestamp]" + ChatColor.GREEN + "- Generate blocks of show actions with one command"); - sender.sendMessage(ChatColor.AQUA + "/showgen setcorner x,y,z" + ChatColor.GREEN + "- Set the location of the final north-west-bottom corner to help give real coordinate values"); - sender.sendMessage(ChatColor.AQUA + "/showgen setinitialscene " + ChatColor.GREEN + "- Set the initial scene for a generator session"); + sendHelpMsg(sender); break; } return true; } + + /** + * Sends a help message to the player. + * @param sender Who to send it to. + */ + private void sendHelpMsg(CommandSender sender) { + sender.sendMessage(ChatColor.GREEN + "ShowGen Commands:"); + sender.sendMessage(ChatColor.AQUA + "/showgen generate [action] [bottom/top] [delay per layer] [timestamp]" + ChatColor.GREEN + "- Generate blocks of show actions with one command"); + sender.sendMessage(ChatColor.AQUA + "/showgen setcorner x,y,z" + ChatColor.GREEN + "- Set the location of the final north-west-bottom corner to help give real coordinate values"); + sender.sendMessage(ChatColor.AQUA + "/showgen setinitialscene " + ChatColor.GREEN + "- Set the initial scene for a generator session"); + } } diff --git a/src/main/java/network/palace/show/commands/show/ShowTabComplete.java b/src/main/java/network/palace/show/commands/show/ShowTabComplete.java new file mode 100644 index 0000000..835a08c --- /dev/null +++ b/src/main/java/network/palace/show/commands/show/ShowTabComplete.java @@ -0,0 +1,110 @@ +package network.palace.show.commands.show; + +import network.palace.show.ShowPlugin; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; +import org.bukkit.util.StringUtil; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class ShowTabComplete implements TabCompleter { + + List shows; + public ShowTabComplete() { + shows = getShows(); + } + + /* + Commands: + + /show start + /show stop + /show list + + /showgen generate