|
@@ -17,8 +17,8 @@ import org.bukkit.command.CommandSender;
|
|
import org.bukkit.configuration.file.FileConfiguration;
|
|
import org.bukkit.configuration.file.FileConfiguration;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.bukkit.inventory.ItemStack;
|
|
-import org.bukkit.inventory.PlayerInventory;
|
|
|
|
import org.bukkit.plugin.java.JavaPlugin;
|
|
import org.bukkit.plugin.java.JavaPlugin;
|
|
|
|
+import org.bukkit.scheduler.BukkitRunnable;
|
|
|
|
|
|
public class Main extends JavaPlugin{
|
|
public class Main extends JavaPlugin{
|
|
|
|
|
|
@@ -34,22 +34,36 @@ public class Main extends JavaPlugin{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- public final Map<UUID, AbbaGame> playerMap = new HashMap<UUID, AbbaGame>();
|
|
|
|
|
|
+ public Map<UUID, AbbaGame> playerMap = new HashMap<UUID, AbbaGame>();
|
|
|
|
|
|
- public final String[] abbaSubCommands = new String[]{"calc", "close", "create", "info", "join", "leave", "list", "open", "reload", "remove"};
|
|
|
|
|
|
+ public List<AbbaGame> ongoingGames = new ArrayList<AbbaGame>();
|
|
|
|
|
|
|
|
+ public final String[] abbaSubCommands = new String[]{"calc", "close", "create", "info", "join", "leave", "list", "open", "reload", "remove"};
|
|
|
|
|
|
- public final FileConfiguration config = this.getConfig();
|
|
|
|
|
|
|
|
- public static Main plugin;
|
|
|
|
|
|
+ public FileConfiguration config = this.getConfig();
|
|
|
|
|
|
|
|
|
|
|
|
+ public EventListener evtListener = new EventListener();
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public void onEnable(){
|
|
public void onEnable(){
|
|
|
|
+ // Event handler
|
|
|
|
+ evtListener.initialize(this);
|
|
|
|
+ getServer().getPluginManager().registerEvents(evtListener, this);
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void run() {
|
|
|
|
+ for(AbbaGame game:AbbaTools.getGames()){
|
|
|
|
+ if(game.isRunning() && System.currentTimeMillis() > game.endTime){
|
|
|
|
+ game.finishGame();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ System.out.println("ding!");
|
|
|
|
+ }
|
|
|
|
+ }, 0, 20);
|
|
|
|
|
|
|
|
|
|
//Config
|
|
//Config
|
|
@@ -144,6 +158,9 @@ public class Main extends JavaPlugin{
|
|
sender.sendMessage(Messages.mustBeInGameError);
|
|
sender.sendMessage(Messages.mustBeInGameError);
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
case "leave":
|
|
case "leave":
|
|
if(sender instanceof Player){
|
|
if(sender instanceof Player){
|
|
if(sender.hasPermission("AbbaCaving.leave")){
|
|
if(sender.hasPermission("AbbaCaving.leave")){
|
|
@@ -162,13 +179,16 @@ public class Main extends JavaPlugin{
|
|
sender.sendMessage(Messages.mustBeInGameError);
|
|
sender.sendMessage(Messages.mustBeInGameError);
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
case "info":
|
|
case "info":
|
|
if(sender.hasPermission("AbbaCaving.info")){
|
|
if(sender.hasPermission("AbbaCaving.info")){
|
|
AbbaGame game;
|
|
AbbaGame game;
|
|
if(args.length >= 2){
|
|
if(args.length >= 2){
|
|
game = AbbaTools.getAbbaGame(args[1]);
|
|
game = AbbaTools.getAbbaGame(args[1]);
|
|
if(game == null){
|
|
if(game == null){
|
|
- sender.sendMessage("§cGame \"" + args[1] + "\" doesn't exist");
|
|
|
|
|
|
+ sender.sendMessage(String.format(Messages.gameNotFoundError, args[1]));
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
}else{
|
|
}else{
|
|
@@ -184,6 +204,9 @@ public class Main extends JavaPlugin{
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
case "list":
|
|
case "list":
|
|
if(sender.hasPermission("AbbaCaving.list")){
|
|
if(sender.hasPermission("AbbaCaving.list")){
|
|
sender.sendMessage("Games:");
|
|
sender.sendMessage("Games:");
|
|
@@ -199,6 +222,9 @@ public class Main extends JavaPlugin{
|
|
sender.sendMessage(Messages.noPermissionError);
|
|
sender.sendMessage(Messages.noPermissionError);
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
case "calc":
|
|
case "calc":
|
|
if(sender.hasPermission("AbbaCaving.calc")){
|
|
if(sender.hasPermission("AbbaCaving.calc")){
|
|
Player calcPlayer;
|
|
Player calcPlayer;
|
|
@@ -217,7 +243,7 @@ public class Main extends JavaPlugin{
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- calculatedScore score = AbbaTools.calcScore(calcPlayer.getInventory());
|
|
|
|
|
|
+ CalculatedScore score = AbbaTools.calcScore(calcPlayer.getInventory());
|
|
for(int i = 0; i < score.size(); i++){
|
|
for(int i = 0; i < score.size(); i++){
|
|
if(score.getItemCount(i) != 0)
|
|
if(score.getItemCount(i) != 0)
|
|
sender.sendMessage(score.getItemCount(i) + "x" + score.getItemStack(i).getType().toString() + ": " + score.getItemPoints(i));
|
|
sender.sendMessage(score.getItemCount(i) + "x" + score.getItemStack(i).getType().toString() + ": " + score.getItemPoints(i));
|
|
@@ -297,6 +323,9 @@ public class Main extends JavaPlugin{
|
|
sender.sendMessage(Messages.noPermissionError);
|
|
sender.sendMessage(Messages.noPermissionError);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
case "remove":
|
|
case "remove":
|
|
if(sender.hasPermission("AbbaCaving.remove")){
|
|
if(sender.hasPermission("AbbaCaving.remove")){
|
|
if(args.length >= 2){
|
|
if(args.length >= 2){
|
|
@@ -304,7 +333,7 @@ public class Main extends JavaPlugin{
|
|
sender.sendMessage("Successfully removed game \"" + args[1] + "\"");
|
|
sender.sendMessage("Successfully removed game \"" + args[1] + "\"");
|
|
return true;
|
|
return true;
|
|
}else{
|
|
}else{
|
|
- sender.sendMessage("§cNo such game \"" + args[1] + "\"");
|
|
|
|
|
|
+ sender.sendMessage(String.format(Messages.gameNotFoundError, args[1]));
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
}else{
|
|
}else{
|
|
@@ -316,13 +345,15 @@ public class Main extends JavaPlugin{
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
case "open":
|
|
case "open":
|
|
if(sender.hasPermission("AbbaCaving.open")){
|
|
if(sender.hasPermission("AbbaCaving.open")){
|
|
AbbaGame game;
|
|
AbbaGame game;
|
|
if(args.length >= 2){
|
|
if(args.length >= 2){
|
|
game = AbbaTools.getAbbaGame(args[1]);
|
|
game = AbbaTools.getAbbaGame(args[1]);
|
|
if(game == null){
|
|
if(game == null){
|
|
- sender.sendMessage("§cThere is no game named \"" + args[1] + "\"");
|
|
|
|
|
|
+ sender.sendMessage(String.format(Messages.gameNotFoundError, args[1]));
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
}else{
|
|
}else{
|
|
@@ -339,13 +370,16 @@ public class Main extends JavaPlugin{
|
|
sender.sendMessage(Messages.noPermissionError);
|
|
sender.sendMessage(Messages.noPermissionError);
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
case "close":
|
|
case "close":
|
|
if(sender.hasPermission("AbbaCaving.open")){
|
|
if(sender.hasPermission("AbbaCaving.open")){
|
|
AbbaGame game;
|
|
AbbaGame game;
|
|
if(args.length >= 2){
|
|
if(args.length >= 2){
|
|
game = AbbaTools.getAbbaGame(args[1]);
|
|
game = AbbaTools.getAbbaGame(args[1]);
|
|
if(game == null){
|
|
if(game == null){
|
|
- sender.sendMessage("§cThere is no game named \"" + args[1] + "\"");
|
|
|
|
|
|
+ sender.sendMessage(String.format(Messages.gameNotFoundError, args[1]));
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
}else{
|
|
}else{
|
|
@@ -376,6 +410,95 @@ public class Main extends JavaPlugin{
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
break;
|
|
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;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(game.isRunning()){
|
|
|
|
+ sender.sendMessage("§cGame already running!");
|
|
|
|
+ return false;
|
|
|
|
+ }else{
|
|
|
|
+ game.start();
|
|
|
|
+ sender.sendMessage("Game started, " + game.duration + " seconds left!");
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }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.isRunning()){
|
|
|
|
+ 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;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ sender.sendMessage("§cChoose an option!");
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ sender.sendMessage(Messages.mustSpecifyGameError);
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ sender.sendMessage(Messages.noPermissionError);
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ break;
|
|
default:
|
|
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");
|
|
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;
|