瀏覽代碼

Moved commands to specialized classes

lennartVH01 9 年之前
父節點
當前提交
b386624e10
共有 5 個文件被更改,包括 509 次插入530 次删除
  1. 18 40
      plugin.yml
  2. 306 0
      src/me/lennartVH01/AbbaAdminCommand.java
  3. 169 0
      src/me/lennartVH01/AbbaCommand.java
  4. 11 490
      src/me/lennartVH01/Main.java
  5. 5 0
      src/me/lennartVH01/Messages.java

+ 18 - 40
plugin.yml

@@ -5,50 +5,28 @@ description: Abba Caving Management Plugin
 author: lennartVH01
 commands:
   abba:
+    aliases: [ab, abbacaving]
     description: Abba hub command
+    permission: AbbaCaving.player
+    permission-message: You don't have permission to use this command!
+  abbaadmin:
+    aliases: [aba, abbaa]
+    description: Abba Admin Command
+    permission: AbbaCaving.admin
+    permission-message: You don't have permission to use this command!
 permissions:
-  AbbaCaving.player.*:
-    description: Gives access to all commands for players
-    children:
-      AbbaCaving.join: true
-      AbbaCaving.leave: true
-      AbbaCaving.info: true
-      AbbaCaving.list: true
-      AbbaCaving.calc: true
-  AbbaCaving.admin.*:
-    AbbaCaving.create: true
-    AbbaCaving.remove: true
-    AbbaCaving.reload: true
-    AbbaCaving.open: true
-    AbbaCaving.close: true
-    AbbaCaving.start: true
-  AbbaCaving.join:
+  AbbaCaving.player:
+    description: Gives access to basic commands
     default: true
-  AbbaCaving.leave:
-    default: true
-  AbbaCaving.info:
-    default: true
-  AbbaCaving.list:
-    default: true
-  AbbaCaving.calc:
-    default: true
-  AbbaCaving.joinFull:
-    default: op
-  AbbaCaving.create:
-    default: op
-  AbbaCaving.remove:
+  AbbaCaving.admin:
+    description: Gives access to admin commands
     default: op
-  AbbaCaving.open:
-    default: op
-  AbbaCaving.close:
-    default: op
-  AbbaCaving.tp:
-    default: op
-  AbbaCaving.start:
-    default: op
-  AbbaCaving.reload:
-    default: op
-  AbbaCaving.config:
+  AbbaCaving.joinFull:
+    description: Allows to join full games
     default: op
   AbbaCaving.registerChest:
+    description: Allows registering of chests to an Abba Game
+    default: op
+  AbbaCaving.allowContraband:
+    description: Users with this permission will not be scanned for contraband
     default: op

+ 306 - 0
src/me/lennartVH01/AbbaAdminCommand.java

@@ -0,0 +1,306 @@
+package me.lennartVH01;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+import org.bukkit.Location;
+import org.bukkit.Material;
+import org.bukkit.World;
+import org.bukkit.block.Block;
+import org.bukkit.block.Chest;
+import org.bukkit.block.Sign;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.TabCompleter;
+import org.bukkit.entity.Player;
+
+public class AbbaAdminCommand implements CommandExecutor, TabCompleter{
+	public final String[] abbaSubCommands = new String[]{"calcscores", "close", "config", "create", "open", "reload", "remove", "start"};
+	
+	public Main plugin;
+	
+	public AbbaAdminCommand(Main plugin){
+		this.plugin = plugin;
+	}
+	
+	@Override
+	public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args){
+		if(args.length == 0){
+			sender.sendMessage(Messages.adminHelpMessage);
+			return false;
+		}
+		switch(args[0].toLowerCase()){
+		case "create":
+			if(args.length <= 5 && !(sender instanceof Player)){
+				System.out.println("Must be ingame or specify world and coordinates");
+				return false;
+			}
+			String gameName;
+			Location gameSpawn = null;
+			
+			// set gameName
+			if(args.length >= 2){
+				gameName = args[1];
+			}else{
+				DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+				gameName = "Abba" + dateFormat.format(new Date());
+				
+			}
+			
+			// set gameSpawn
+			if(args.length >= 5){
+				double spawnX, spawnY, spawnZ;
+				try{
+					spawnX = Double.parseDouble(args[2]);
+					spawnY = Double.parseDouble(args[3]);
+					spawnZ = Double.parseDouble(args[4]);
+				}catch(NumberFormatException e){
+					return false;
+				}
+				if(args.length >= 6){
+					World w = plugin.getServer().getWorld(args[5]);
+					if(w != null){
+						
+						gameSpawn = new Location(w, spawnX, spawnY, spawnZ);
+						
+					}else{
+						sender.sendMessage("§4Unknown world: \"" + args[5] + "\"");
+						return false;
+					}
+				}
+			}else{
+				if(sender instanceof Player){
+					gameSpawn = ((Player) sender).getLocation();
+				}else{
+					return false;
+				}
+			}
+			
+			
+			
+			while(AbbaTools.getAbbaGame(gameName) != null){
+				gameName += "_";
+			}
+			//create game
+			AbbaTools.create(gameName, gameSpawn);
+			sender.sendMessage("Successfully created game \"" + gameName + "\"");
+			return true;
+			
+			
+			
+		case "remove":
+			if(args.length >= 2){
+				if(AbbaTools.removeAbbaGame(args[1])){
+					sender.sendMessage("Successfully removed game \"" + args[1] + "\"");
+					return true;
+				}else{
+					sender.sendMessage(String.format(Messages.gameNotFoundError, args[1]));
+					return false;
+				}
+			}else{
+				sender.sendMessage("Usage: /abba remove <game>");
+				return false;
+			}
+			
+		case "open":
+			AbbaGame game;
+			if(args.length >= 2){
+				game = AbbaTools.getAbbaGame(args[1]);
+				if(game == null){
+					sender.sendMessage(String.format(Messages.gameNotFoundError, args[1]));
+					return false;
+				}
+			}else{
+				game = AbbaTools.getAbbaGame();
+				if(game == null){
+					sender.sendMessage("§cNo game found");
+					return false;
+				}
+			}
+			game.setOpen(true);
+			sender.sendMessage("Opened game \"" + args[1] + "\"");
+			return true;
+		case "close":
+			AbbaGame aGame;
+			if(args.length >= 2){
+				aGame = AbbaTools.getAbbaGame(args[1]);
+				if(aGame == null){
+					sender.sendMessage(String.format(Messages.gameNotFoundError, args[1]));
+					return false;
+				}
+			}else{
+				aGame = AbbaTools.getAbbaGame();
+				if(aGame == null){
+					sender.sendMessage("§cNo game found");
+					return false;
+				}
+			}
+			aGame.setOpen(false);
+			sender.sendMessage("Closed game \"" + args[1] + "\"");
+			return true;
+			
+		case "start":
+			AbbaGame abbaGame;
+			if(args.length >= 2){
+				abbaGame = AbbaTools.getAbbaGame(args[1]);
+				if(abbaGame == null){
+					sender.sendMessage(String.format(Messages.gameNotFoundError, args[1]));
+					return false;
+				}
+			}else{
+				abbaGame = AbbaTools.getAbbaGame();
+				if(abbaGame == null){
+					sender.sendMessage("§cNo games found");
+					return false;
+				}
+			}
+			switch(abbaGame.getState()){
+			case WAITING:
+				abbaGame.start();
+				return true;
+			case PAUSED:
+				sender.sendMessage("§cGame paused!");
+				return false;
+			case COUNTDOWN:  //countdown and running both do the same
+			case RUNNING:
+				sender.sendMessage("§cGame already running!");
+				return false;
+			case FINISHED:
+			case CONCLUDED:
+				sender.sendMessage("§cGame finished!");
+				return false;
+			}
+			return false;
+		case "calcscores":
+			AbbaGame abaGame;
+			if(args.length >= 2){
+				abaGame = AbbaTools.getAbbaGame(args[1]);
+			}else{
+				abaGame = AbbaTools.getAbbaGame();
+			}
+			if(abaGame.getState() == AbbaGame.GameState.FINISHED){
+				abaGame.calcScores();
+				
+			}else{
+				sender.sendMessage("§cGame not finished yet!");
+				return false;
+			}
+			
+		case "reload":
+			sender.sendMessage("Reloading config...");
+			plugin.reloadConfig();
+			sender.sendMessage("Reload Complete.");
+			return true;
+			
+			
+			
+		case "config":
+			if(args.length >= 2){
+				if(args.length >= 3){
+					AbbaGame abGame = AbbaTools.getAbbaGame(args[1]);
+					if(abGame == null){
+						sender.sendMessage(Messages.gameNotFoundError);
+					}
+					switch(args[2].toLowerCase()){
+					case "timer":
+						
+						if(args.length >= 4){
+							int newTime;
+						
+							try{
+								newTime = Integer.parseInt(args[3]);
+							}catch(NumberFormatException e){
+								sender.sendMessage("§cPlease specify a number when you use this command");
+								return false;
+							}
+							if(newTime <= 0){
+								sender.sendMessage("§cPlease specify a stricktly positive number");
+								return false;
+							}
+							if(abGame.getState() == AbbaGame.GameState.RUNNING || abGame.getState() == AbbaGame.GameState.PAUSED){
+								abGame.setEndTime(System.currentTimeMillis() + newTime * 1000);
+							}else{
+								abGame.setDuration(newTime);
+							}
+							sender.sendMessage("Time has been updated!");
+							return true;
+							
+						}else{
+							sender.sendMessage("§cPlease specify new time");
+							return false;
+						}
+					case "addchest":
+						if(sender instanceof Player){
+							Block blockInFront = ((Player) sender).getTargetBlock((Set<Material>) null, 5);
+							if(BlockUtils.isSign(blockInFront)){
+								Block blockNextTo = BlockUtils.getAttachedBlock(blockInFront);
+								if(BlockUtils.isChest(blockNextTo)){
+									if(AbbaTools.getAbbaGame(args[1]).addChest((Chest) blockNextTo.getState(), (Sign) blockInFront.getState())){
+										sender.sendMessage("Chest created");
+										return true;
+									}else{
+										sender.sendMessage("§cChest already in a game!");
+										return false;
+									}
+								}
+								
+								
+								sender.sendMessage("§cPut a sign next to the chest!");
+								return false;
+							}else{
+								sender.sendMessage("§cYou must look at a chest to register it!");
+								return false;
+							}
+						}else{
+							sender.sendMessage("§cMust be ingame to register chests!");
+							return false;
+						}
+					default:
+						sender.sendMessage("§cChoose an option!");
+						return false;
+					}
+				}else{
+					sender.sendMessage("§cChoose an option!");
+					return false;
+				}
+			}else{
+				sender.sendMessage(Messages.mustSpecifyGameError);
+				return false;
+			}
+			
+			
+			
+		default:
+			sender.sendMessage(Messages.adminHelpMessage);
+			return false;
+		}
+	}
+	
+	@Override
+	public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args){
+		List<String> cmds = new ArrayList<String>();
+		switch(args.length){
+		case 1:
+			for(String s:abbaSubCommands){
+				if(s.startsWith(args[0])){
+					cmds.add(s);
+				}
+			}
+			break;
+		case 2:
+			for(AbbaGame game:AbbaTools.getGames()){
+				if(game.getName().toLowerCase().startsWith(args[1].toLowerCase())){
+					cmds.add(game.getName());
+				}
+			}
+		}
+		return cmds;
+	}
+	
+	
+}

+ 169 - 0
src/me/lennartVH01/AbbaCommand.java

@@ -0,0 +1,169 @@
+package me.lennartVH01;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.bukkit.GameMode;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.TabCompleter;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
+
+public class AbbaCommand implements CommandExecutor, TabCompleter{
+	public final String[] abbaSubCommands = new String[]{"calc", "info", "join", "leave", "list"};
+	
+	
+	@Override
+	public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args){
+		if(args.length == 0){
+			sender.sendMessage(Messages.basicHelpMessage);
+			return false;
+		}
+		
+		switch(args[0].toLowerCase()){
+		case "join":
+			if(sender instanceof Player){
+				Player p = (Player) sender;
+				AbbaGame game;
+				
+				if(args.length >= 2){
+					game = AbbaTools.getAbbaGame(args[1]);
+				}else{
+					game = AbbaTools.getAbbaGame();
+				}
+				if(game == null){
+					sender.sendMessage("§cGame not found!");
+					return false;
+				}
+				if(!(game.isOpen() || p.hasPermission("AbbaCaving.joinClosed"))){
+					p.sendMessage("§cThis game is closed!");
+					return false;
+				}
+				if(!(game.hasRoom() || p.hasPermission("AbbaCaving.joinFull"))){
+					p.sendMessage("§cThis game is full!");
+					return false;
+				}
+				
+				if(!p.hasPermission("AbbaCaving.allowContraband")){
+					ItemStack[] contraband = AbbaTools.getContraband(p.getInventory());
+					if(contraband != null && contraband.length >= 1){
+						p.sendMessage("§cYou cannot carry " + contraband[0].getType().toString() + " with you on an abba game!");
+						return false;
+					}
+				}
+				
+				AbbaGame oldGame = AbbaTools.getAbbaGame(p);
+				if(oldGame != null){
+					p.sendMessage("Left game \"" + oldGame.getName() + "\"");
+					
+				}
+				
+				AbbaTools.join(p, game);
+				p.sendMessage("Joined game \"" + game.getName() + "\"");
+				
+				p.teleport(game.getSpawn());
+				p.setGameMode(GameMode.SURVIVAL);
+				return true;
+			}else{
+				sender.sendMessage(Messages.mustBeInGameError);
+				return false;
+			}
+			
+			
+			
+		case "leave":
+			if(sender instanceof Player){
+				Player p = (Player) sender;
+				AbbaGame game = AbbaTools.leave(p.getUniqueId());
+				if(game != null){
+					p.sendMessage("Left game \"" + game.getName() + "\"");
+					return true;
+				}else{
+					p.sendMessage("§cYou aren't in a game right now!");
+					return false;
+				}
+			}else{
+				sender.sendMessage(Messages.mustBeInGameError);
+				return false;
+			}
+			
+		case "list":
+			sender.sendMessage("Games:");
+			for(AbbaGame g:AbbaTools.getGames()){
+				if(g.isOpen()){
+					sender.sendMessage("- §a" + g.getName() + " (" + g.getPlayerCount() + "/" + g.getMaxPlayers() + ")");
+				}else{
+					sender.sendMessage("- §7§o" + g.getName() + " (" + g.getPlayerCount() + "/" + g.getMaxPlayers() + ")");
+				}
+			}
+			return true;
+		case "info":
+			AbbaGame game = null;
+			if(args.length >= 2){
+				game = AbbaTools.getAbbaGame(args[1]);
+				if(game == null){
+					sender.sendMessage(String.format(Messages.gameNotFoundError, args[1]));
+					return false;
+				}
+			}else{
+				if(sender instanceof Player){
+					game = AbbaTools.getAbbaGame((Player) sender);
+				}
+				if(game == null){
+					game = AbbaTools.getAbbaGame();
+				}
+				if(game == null){
+					sender.sendMessage("§cNo Games found!");
+					return false;
+				}
+			}
+			sender.sendMessage("Game \"" + game.getName() + "\" " + (game.isOpen() ? "§aOpen":"§cClosed"));
+			return true;
+		case "calc":
+			Player calcPlayer;
+			
+			if(sender instanceof Player){
+				calcPlayer = (Player) sender;
+			}else{
+				sender.sendMessage("usage: /abba calc");
+				return false;
+			}
+			
+			CalculatedScore score = AbbaTools.calcScore(calcPlayer.getInventory());
+			for(int i = 0; i < score.size(); i++){
+				if(score.getItemCount(i) != 0)
+					sender.sendMessage(score.getItemCount(i) + "x" + score.getItemStack(i).getType().toString() + ": " + score.getItemPoints(i));
+			}
+			sender.sendMessage("§aTotal Score: " + score.total);
+			return true;
+		default:
+			sender.sendMessage(Messages.basicHelpMessage);
+			return false;
+		}
+	}
+	
+	@Override
+	public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args){
+		List<String> cmds = new ArrayList<String>();
+		switch(args.length){
+		case 1:
+			for(String s:abbaSubCommands){
+				if(s.startsWith(args[0])){
+					cmds.add(s);
+				}
+			}
+			break;
+		case 2:
+			for(AbbaGame game:AbbaTools.getGames()){
+				if(game.getName().toLowerCase().startsWith(args[1].toLowerCase())){
+					cmds.add(game.getName());
+				}
+			}
+		}
+		return cmds;
+	}
+	
+	
+}

+ 11 - 490
src/me/lennartVH01/Main.java

@@ -19,7 +19,9 @@ import org.bukkit.block.Block;
 import org.bukkit.block.Chest;
 import org.bukkit.block.Sign;
 import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
 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.configuration.serialization.ConfigurationSerialization;
@@ -41,7 +43,6 @@ public class Main extends JavaPlugin{
 	
 	public List<AbbaGame> ongoingGames = new ArrayList<AbbaGame>();
 	
-	public final String[] abbaSubCommands = new String[]{"calc", "close", "config", "create", "info", "join", "leave", "list", "open", "reload", "remove", "start"};
 	
 	public static Main plugin;
 	
@@ -53,6 +54,14 @@ public class Main extends JavaPlugin{
 	
 	@Override
 	public void onEnable(){
+		AbbaCommand abbaCmd = new AbbaCommand();
+		this.getCommand("abba").setExecutor((CommandExecutor) abbaCmd);
+		this.getCommand("abba").setTabCompleter((TabCompleter) abbaCmd);
+		AbbaAdminCommand abbaAdminCmd = new AbbaAdminCommand(this);
+		this.getCommand("abbaadmin").setExecutor((CommandExecutor) abbaAdminCmd);
+		this.getCommand("abbaadmin").setTabCompleter((TabCompleter) abbaAdminCmd);
+		
+		
 		evtListener.initialize(this);
 		AbbaGame.initialize(this);
 		ConfigurationSerialization.registerClass(AbbaGame.class);
@@ -110,493 +119,5 @@ public class Main extends JavaPlugin{
 		}
 	}
 	
-	public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args){
-		if(cmdLabel.equalsIgnoreCase("abba")){
-			if(args.length == 0){
-				args = new String[]{"help"};
-			}
-			switch(args[0].toLowerCase()){
-			case "join":
-				if(sender instanceof Player){
-					if(sender.hasPermission("AbbaCaving.join")){
-						Player p = (Player) sender;
-						AbbaGame game;
-						
-						if(args.length >= 2){
-							game = AbbaTools.getAbbaGame(args[1]);
-						}else{
-							game = AbbaTools.getAbbaGame();
-						}
-						if(game == null){
-							sender.sendMessage("§cGame not found!");
-							return false;
-						}
-						if(!(game.isOpen() || p.hasPermission("AbbaCaving.joinClosed"))){
-							p.sendMessage("§cThis game is closed!");
-							return false;
-						}
-						if(!(game.hasRoom() || p.hasPermission("AbbaCaving.joinFull"))){
-							p.sendMessage("§cThis game is full!");
-							return false;
-						}
-						
-						if(!p.hasPermission("AbbaCaving.canCarryContraband")){
-							ItemStack[] contraband = AbbaTools.getContraband(p.getInventory());
-							if(contraband != null && contraband.length >= 1){
-								p.sendMessage("§cYou cannot carry " + contraband[0].getType().toString() + " with you on an abba game!");
-								return false;
-							}
-						}
-						
-						AbbaGame oldGame = AbbaTools.getAbbaGame(p);
-						if(oldGame != null){
-							
-							p.sendMessage("Left game \"" + oldGame.getName() + "\"");
-							
-						}
-						
-						AbbaTools.join(p, game);
-						p.sendMessage("Joined game \"" + game.getName() + "\"");
-						
-						p.teleport(game.getSpawn());
-						p.setGameMode(GameMode.SURVIVAL);
-						return true;
-					}else{
-						sender.sendMessage(Messages.noPermissionError);
-						return false;
-					}
-				}else{
-					sender.sendMessage(Messages.mustBeInGameError);
-					return false;
-				}
-				
-				
-				
-			case "leave":
-				if(sender instanceof Player){
-					if(sender.hasPermission("AbbaCaving.leave")){
-						Player p = (Player) sender;
-						AbbaGame game = AbbaTools.leave(p.getUniqueId());
-						if(game != null){
-							p.sendMessage("Left game \"" + game.getName() + "\"");
-							return true;
-						}else{
-							p.sendMessage("§cYou aren't in a game right now!");
-							return false;
-						}
-					}else{
-						sender.sendMessage(Messages.noPermissionError);
-						return false;
-					}
-					
-				}else{
-					sender.sendMessage(Messages.mustBeInGameError);
-					return false;
-				}
-				
-				
-				
-			case "info":
-				if(sender.hasPermission("AbbaCaving.info")){
-					AbbaGame game;
-					if(args.length >= 2){
-						game = AbbaTools.getAbbaGame(args[1]);
-						if(game == null){
-							sender.sendMessage(String.format(Messages.gameNotFoundError, args[1]));
-							return false;
-						}
-					}else{
-						game = AbbaTools.getAbbaGame();
-						if(game == null){
-							sender.sendMessage("§cNo Games found!");
-							return false;
-						}
-					}
-					sender.sendMessage("Game \"" + game.getName() + "\" " + (game.isOpen() ? "§aOpen":"§cClosed"));
-				}else{
-					sender.sendMessage(Messages.noPermissionError);
-					return false;
-				}
-				break;
-				
-				
-				
-			case "list":
-				if(sender.hasPermission("AbbaCaving.list")){
-					sender.sendMessage("Games:");
-					for(AbbaGame g:AbbaTools.getGames()){
-						if(g.isOpen()){
-							sender.sendMessage("- §a" + g.getName() + " (" + g.getPlayerCount() + "/" + g.getMaxPlayers() + ")");
-						}else{
-							sender.sendMessage("- §7§o" + g.getName() + " (" + g.getPlayerCount() + "/" + g.getMaxPlayers() + ")");
-						}
-					}
-					return true;
-				}else{
-					sender.sendMessage(Messages.noPermissionError);
-					return false;
-				}
-				
-				
-				
-			case "calc":
-				if(sender.hasPermission("AbbaCaving.calc")){
-					Player calcPlayer;
-					if(args.length >= 2){
-						calcPlayer = getServer().getPlayer(args[1]);
-						if(calcPlayer == null){
-							sender.sendMessage("§cUnable to find player \"" + args[1] + "\"");
-							return false;
-						}
-					}else{
-						if(sender instanceof Player){
-							calcPlayer = (Player) sender;
-						}else{
-							sender.sendMessage("usage: /abba calc <Player>");
-							return false;
-						}
-					}
-					
-					CalculatedScore score = AbbaTools.calcScore(calcPlayer.getInventory());
-					for(int i = 0; i < score.size(); i++){
-						if(score.getItemCount(i) != 0)
-							sender.sendMessage(score.getItemCount(i) + "x" + score.getItemStack(i).getType().toString() + ": " + score.getItemPoints(i));
-					}
-					sender.sendMessage("§aTotal Score: " + score.total);
-					
-					
-				}else{
-					sender.sendMessage(Messages.noPermissionError);
-					return false;
-				}
-				
-				
-				
-				break;
-				
-				
-			//Admin commands
-			case "calcscores":
-				if(sender.hasPermission("AbbaCaving.calcScores")){
-					AbbaGame game;
-					if(args.length >= 2){
-						game = AbbaTools.getAbbaGame(args[1]);
-					}else{
-						game = AbbaTools.getAbbaGame();
-					}
-					if(game.getState() == AbbaGame.GameState.FINISHED){
-						game.calcScores();
-						
-					}else{
-						sender.sendMessage("§cGame not finished yet!");
-						return false;
-					}
-				}else{
-					sender.sendMessage(Messages.noPermissionError);
-					return false;
-				}
-				break;
-			case "create":
-				if(args.length <= 5 && !(sender instanceof Player)){
-					System.out.println("Must be ingame or specify world and coordinates");
-					return false;
-				}
-				if(sender.hasPermission("AbbaCaving.create")){
-					String gameName;
-					Location gameSpawn = null;
-					
-					// set gameName
-					if(args.length >= 2){
-						gameName = args[1];
-					}else{
-						DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
-						gameName = "Abba" + dateFormat.format(new Date());
-						
-					}
-					
-					// set gameSpawn
-					if(args.length >= 5){
-						double spawnX, spawnY, spawnZ;
-						try{
-							spawnX = Double.parseDouble(args[2]);
-							spawnY = Double.parseDouble(args[3]);
-							spawnZ = Double.parseDouble(args[4]);
-						}catch(NumberFormatException e){
-							return false;
-						}
-						if(args.length >= 6){
-							World w = getServer().getWorld(args[5]);
-							if(w != null){
-								
-								gameSpawn = new Location(w, spawnX, spawnY, spawnZ);
-								
-							}else{
-								sender.sendMessage("§4Unknown world: \"" + args[5] + "\"");
-								return false;
-							}
-						}
-					}else{
-						if(sender instanceof Player){
-							gameSpawn = ((Player) sender).getLocation();
-						}else{
-							return false;
-						}
-					}
-					
-					
-					
-					while(AbbaTools.getAbbaGame(gameName) != null){
-						gameName += "_";
-					}
-					//create game
-					AbbaTools.create(gameName, gameSpawn);
-					sender.sendMessage("Successfully created game \"" + gameName + "\"");
-					return true;
-					
-				}else{
-					sender.sendMessage(Messages.noPermissionError);
-				}
-				break;
-				
-				
-				
-			case "remove":
-				if(sender.hasPermission("AbbaCaving.remove")){
-					if(args.length >= 2){
-						if(AbbaTools.removeAbbaGame(args[1])){
-							sender.sendMessage("Successfully removed game \"" + args[1] + "\"");
-							return true;
-						}else{
-							sender.sendMessage(String.format(Messages.gameNotFoundError, args[1]));
-							return false;
-						}
-					}else{
-						sender.sendMessage("Usage: /abba remove <game>");
-						return false;
-					}
-				}else{
-					sender.sendMessage(Messages.noPermissionError);
-					return false;
-				}
-				
-				
-				
-			case "open":
-				if(sender.hasPermission("AbbaCaving.open")){
-					AbbaGame game;
-					if(args.length >= 2){
-						game = AbbaTools.getAbbaGame(args[1]);
-						if(game == null){
-							sender.sendMessage(String.format(Messages.gameNotFoundError, args[1]));
-							return false;
-						}
-					}else{
-						game = AbbaTools.getAbbaGame();
-						if(game == null){
-							sender.sendMessage("§cNo game found");
-							return false;
-						}
-					}
-					game.setOpen(true);
-					sender.sendMessage("Opened game \"" + args[1] + "\"");
-					return true;
-				}else{
-					sender.sendMessage(Messages.noPermissionError);
-					return false;
-				}
-				
-				
-				
-			case "close":
-				if(sender.hasPermission("AbbaCaving.open")){
-					AbbaGame game;
-					if(args.length >= 2){
-						game = AbbaTools.getAbbaGame(args[1]);
-						if(game == null){
-							sender.sendMessage(String.format(Messages.gameNotFoundError, args[1]));
-							return false;
-						}
-					}else{
-						game = AbbaTools.getAbbaGame();
-						if(game == null){
-							sender.sendMessage("§cNo game found");
-							return false;
-						}
-					}
-					game.setOpen(false);
-					sender.sendMessage("Closed game \"" + args[1] + "\"");
-					return true;
-				}else{
-					sender.sendMessage(Messages.noPermissionError);
-					return false;
-				}
-			
-			
-			
-			//Abba help
-			case "reload":
-				if(sender.hasPermission("AbbaCaving.reload")){
-					sender.sendMessage("Reloading config...");
-					this.reloadConfig();
-					sender.sendMessage("Reload Complete.");
-				}else{
-					sender.sendMessage(Messages.noPermissionError);
-					return false;
-				}
-				break;
-				
-				
-				
-			case "start":
-				if(sender.hasPermission("AbbaCaving.start")){
-					AbbaGame game;
-					if(args.length >= 2){
-						game = AbbaTools.getAbbaGame(args[1]);
-						if(game == null){
-							sender.sendMessage(String.format(Messages.gameNotFoundError, args[1]));
-							return false;
-						}
-					}else{
-						game = AbbaTools.getAbbaGame();
-						if(game == null){
-							sender.sendMessage("§cNo games found");
-							return false;
-						}
-					}
-					switch(game.getState()){
-					case WAITING:
-						game.start();
-						return true;
-					case PAUSED:
-						break;
-					case COUNTDOWN:  //countdown and running both do the same
-					case RUNNING:
-						sender.sendMessage("§cGame already running!");
-						return false;
-					case FINISHED:
-					case CONCLUDED:
-						break;
-					}
-					
-				}else{
-					sender.sendMessage(Messages.noPermissionError);
-					return false;
-				}
-				
-				
-				
-			case "config":
-				if(sender.hasPermission("AbbaCaving.config")){
-					if(args.length >= 2){
-						if(args.length >= 3){
-							AbbaGame game = AbbaTools.getAbbaGame(args[1]);
-							if(game == null){
-								sender.sendMessage(Messages.gameNotFoundError);
-							}
-							switch(args[2].toLowerCase()){
-							case "timer":
-								
-								if(args.length >= 4){
-									int newTime;
-								
-									try{
-										newTime = Integer.parseInt(args[3]);
-									}catch(NumberFormatException e){
-										sender.sendMessage("§cPlease specify a number when you use this command");
-										return false;
-									}
-									if(newTime <= 0){
-										sender.sendMessage("§cPlease specify a stricktly positive number");
-										return false;
-									}
-									if(game.getState() == AbbaGame.GameState.RUNNING || game.getState() == AbbaGame.GameState.PAUSED){
-										game.setEndTime(System.currentTimeMillis() + newTime * 1000);
-									}else{
-										game.setDuration(newTime);
-									}
-									sender.sendMessage("Time has been updated!");
-									return true;
-									
-								}else{
-									sender.sendMessage("§cPlease specify new time");
-									return false;
-								}
-							case "addchest":
-								if(sender instanceof Player){
-									Block blockInFront = ((Player) sender).getTargetBlock((Set<Material>) null, 5);
-									if(BlockUtils.isSign(blockInFront)){
-										Block blockNextTo = BlockUtils.getAttachedBlock(blockInFront);
-										if(BlockUtils.isChest(blockNextTo)){
-											if(AbbaTools.getAbbaGame(args[1]).addChest((Chest) blockNextTo.getState(), (Sign) blockInFront.getState())){
-												sender.sendMessage("Chest created");
-												return true;
-											}else{
-												sender.sendMessage("§cChest already in a game!");
-												return false;
-											}
-										}
-										
-										
-										sender.sendMessage("§cPut a sign next to the chest!");
-										return false;
-									}else{
-										sender.sendMessage("§cYou must look at a chest to register it!");
-										return false;
-									}
-								}else{
-									sender.sendMessage("§cMust be ingame to register chests!");
-									return false;
-								}
-							}
-						}else{
-							sender.sendMessage("§cChoose an option!");
-							return false;
-						}
-					}else{
-						sender.sendMessage(Messages.mustSpecifyGameError);
-						return false;
-					}
-				}else{
-					sender.sendMessage(Messages.noPermissionError);
-					return false;
-				}
-				
-				
-				
-				break;
-			default:
-				sender.sendMessage("Usage:\n - §aabba join§r: Joins the Abba Match\n - §aabba leave§f: Leaves current Abba Game\n - §aabba info§f: Displays info about an Abba Match\n - §aabba create§f: Creates an Abba Game at current location\n - §aabba remove§f: Stops game\n - §aabba open§f: Allows players to join the game\n - §aabba close§f: Prevents players from joining");
-				return false;
-			}
-			
-		}
-		
-		
-		
-		
-		return false;
-	}
-	@Override
-	public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args){
-		List<String> cmds = new ArrayList<String>();
-		if(command.getName().equalsIgnoreCase("abba")){
-			switch(args.length){
-			case 1:
-				for(String s:abbaSubCommands){
-					if(sender.hasPermission("AbbaCaving." + s) && s.startsWith(args[0])){
-						cmds.add(s);
-					}
-				}
-				break;
-			case 2:
-				for(AbbaGame game:AbbaTools.getGames()){
-					if(game.getName().toLowerCase().startsWith(args[1].toLowerCase())){
-						cmds.add(game.getName());
-					}
-				}
-			}
-			
-		}
-		return cmds;
-	}
+	
 }

+ 5 - 0
src/me/lennartVH01/Messages.java

@@ -5,4 +5,9 @@ public class Messages {
 	public static final String mustBeInGameError = "§cYou must be ingame to use this command!";
 	public static final String gameNotFoundError = "§cGame %s not found!";
 	public static final String mustSpecifyGameError = "§cYou must specify a game!";
+	
+	
+	public static final String basicHelpMessage = "Usage:\n - §aabba join§f: Joins the Abba Match\n - §aabba leave§f: Leaves current Abba Game\n - §aabba info§f: Displays info about an Abba Match\n - §aabba list§f: Lists all Abba Matches\n - §aabba calc§f: Calculates the score of your current inventory";
+	public static final String adminHelpMessage = "Usage:\n - §aabbaadmin create [game]§f: Creates an Abba Game\n - §aabbaadmin remove <game>§f: Removes an Abba Game\n - §aabbaadmin open [game]§f: Allows players to join an Abba Game\n - §aabbaadmin close [game]§f: Prevents players from joining an Abba Game\n - §aabbaadmin start [game]§f: Starts an Abba Game\n - §aabbaadmin calcscores§f: Use to calculate the scores and determine a winner at the end of a Match\n - §aabbaadmin config <game> <timer|addchest> ...§f: Configures an Abba Game\n - §aabbaadmin reload§f: Reloads the config";
+	
 }