package me.avery246813579.hotpotato.commands; import java.util.ArrayList; import me.avery246813579.hotpotato.HotPotato; import me.avery246813579.hotpotato.game.GameManager; import me.avery246813579.hotpotato.game.GameState; import me.avery246813579.hotpotato.util.MessageUtil; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; public abstract class GameClass { protected boolean consoleCanUse = false; private ArrayList<GameState> whenAble; private String command; private String permissions; public GameClass(String commands, String permissions, ArrayList<GameState> whenAble) { this.command = commands; this.permissions = permissions; this.whenAble = whenAble; } public void run(CommandSender sender, Command cmd, String CommandLabel, String[] args){ if (sender instanceof ConsoleCommandSender && !consoleCanUse) { sender.sendMessage(ChatColor.GREEN + "Console >> " + ChatColor.RED + "The console can not use this command."); return; } if (sender instanceof Player) { if (!((Player) sender).hasPermission(permissions)) { MessageUtil.sendTextMessage((Player) sender, "noPermission", permissions); return; } } if (whenAble != null) { if(HotPotato.findGame((Player) sender) == null){ MessageUtil.sendTextMessage((Player) sender, "canNotUseAtTime"); return; } GameManager gameManager = HotPotato.findGame((Player) sender); if(!whenAble.contains(gameManager.getGameState())){ MessageUtil.sendTextMessage((Player) sender, "canNotUseAtTime"); return; } } runCommand(sender, args); } public abstract void runCommand(CommandSender sender, String[] args); public ArrayList<GameState> getWhenAble() { return whenAble; } public void setWhenAble(ArrayList<GameState> whenAble) { this.whenAble = whenAble; } public String getCommand() { return command; } public void setCommand(String command) { this.command = command; } public String getPermissions() { return permissions; } public void setPermissions(String permissions) { this.permissions = permissions; } public boolean isConsoleCanUse() { return consoleCanUse; } public void setConsoleCanUse(boolean consoleCanUse) { this.consoleCanUse = consoleCanUse; } }