package com.leontg77.uhc.cmds; import java.util.ArrayList; import java.util.List; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; import com.leontg77.uhc.Main; import com.leontg77.uhc.scenario.Scenario; import com.leontg77.uhc.scenario.ScenarioManager; import com.leontg77.uhc.utils.PlayerUtils; /** * Scenario command class. * * @author LeonTG77 */ public class ScenarioCommand implements CommandExecutor, TabCompleter { @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { ScenarioManager scen = ScenarioManager.getInstance(); if (args.length > 0) { if (args[0].equalsIgnoreCase("enable")) { if (sender.hasPermission("uhc.scenario")) { if (args.length == 1) { sender.sendMessage(Main.PREFIX + "Usage: /scen enable <scenario>"); return true; } Scenario scenario = scen.getScenario(args[1]); if (scenario == null) { sender.sendMessage(ChatColor.RED + args[1] + " is not a scenario."); return true; } if (scenario.isEnabled()) { sender.sendMessage(Main.PREFIX + ChatColor.GOLD + scenario.getName() + " �7is already enabled."); return true; } PlayerUtils.broadcast(Main.PREFIX + ChatColor.GOLD + scenario.getName() + " �7has been enabled."); scenario.enable(); return true; } } else if (args[0].equalsIgnoreCase("disable")) { if (sender.hasPermission("uhc.scenario")) { if (args.length == 1) { sender.sendMessage(Main.PREFIX + "Usage: /scen disable <scenario>"); return true; } Scenario scenario = scen.getScenario(args[1]); if (scenario == null) { sender.sendMessage(ChatColor.RED + args[1] + " is not a scenario."); return true; } if (!scenario.isEnabled()) { sender.sendMessage(Main.PREFIX + ChatColor.GOLD + scenario.getName() + " �7is not enabled."); return true; } PlayerUtils.broadcast(Main.PREFIX + ChatColor.GOLD + scenario.getName() + " �7has been disabled."); scenario.disable(); return true; } } else if (args[0].equalsIgnoreCase("list")) { if (args.length == 1) { StringBuilder list = new StringBuilder(""); for (Scenario scens : scen.getScenarios()) { if (list.length() > 0) { list.append("�8, �7"); } list.append((scens.isEnabled() ? "�a" : "�c") + scens.getName()); } sender.sendMessage(Main.PREFIX + "All available scenarios: �o(Green = enabled, Red = disabled)"); sender.sendMessage("�8� �7" + list.toString().trim()); return true; } Scenario scenario = scen.getScenario(args[1]); if (scenario == null) { sender.sendMessage(ChatColor.RED + args[1] + " is not a scenario."); return true; } sender.sendMessage(Main.PREFIX + "Info about �a" + scenario.getName() + "�7:"); sender.sendMessage("�8� �7" + scenario.getDescription()); return true; } } if (scen.getEnabledScenarios().size() <= 0) { sender.sendMessage(Main.PREFIX + "No scenarios are enabled."); return true; } sender.sendMessage(Main.PREFIX + "All enabled scenarios:"); for (Scenario s : ScenarioManager.getInstance().getEnabledScenarios()) { sender.sendMessage("�8� �7" + s.getName() + ": �f" + s.getDescription()); } return true; } @Override public List<String> onTabComplete(CommandSender sender, Command cmd, String label, String[] args) { ScenarioManager manager = ScenarioManager.getInstance(); ArrayList<String> toReturn = new ArrayList<String>(); if (args.length == 1) { ArrayList<String> types = new ArrayList<String>(); types.add("list"); if (sender.hasPermission("uhc.scenario")) { types.add("enable"); types.add("disable"); } if (args[0].equals("")) { for (String type : types) { toReturn.add(type); } } else { for (String type : types) { if (type.startsWith(args[0].toLowerCase())) { toReturn.add(type); } } } } if (args.length == 2) { if (!sender.hasPermission("uhc.scenario")) { return null; } if (args[0].equalsIgnoreCase("enable")) { if (args[1].equals("")) { for (Scenario scen : manager.getDisabledScenarios()) { toReturn.add(scen.getName()); } } else { for (Scenario scen : manager.getDisabledScenarios()) { if (scen.getName().toLowerCase().startsWith(args[1].toLowerCase())) { toReturn.add(scen.getName()); } } } } else if (args[0].equalsIgnoreCase("disable")) { if (args[1].equals("")) { for (Scenario scen : manager.getEnabledScenarios()) { toReturn.add(scen.getName()); } } else { for (Scenario scen : manager.getEnabledScenarios()) { if (scen.getName().toLowerCase().startsWith(args[1].toLowerCase())) { toReturn.add(scen.getName()); } } } } else if (args[0].equalsIgnoreCase("list")) { if (args[1].equals("")) { for (Scenario scen : manager.getScenarios()) { toReturn.add(scen.getName()); } } else { for (Scenario scen : manager.getScenarios()) { if (scen.getName().toLowerCase().startsWith(args[1].toLowerCase())) { toReturn.add(scen.getName()); } } } } } return toReturn; } }