Search in sources :

Example 21 with MinigamePlayer

use of au.com.mineauz.minigames.MinigamePlayer in project Minigames by AddstarMC.

the class ScoreCommand method onCommand.

@Override
public boolean onCommand(CommandSender sender, Minigame minigame, String label, String[] args) {
    if (args != null && args.length >= 2) {
        MinigamePlayer ply = null;
        TeamColor color = TeamColor.matchColor(args[1]);
        if (color == null) {
            List<Player> plys = plugin.getServer().matchPlayer(args[1]);
            if (!plys.isEmpty()) {
                ply = plugin.pdata.getMinigamePlayer(plys.get(0));
            } else {
                sender.sendMessage(ChatColor.RED + "No player or team found by the name " + args[1]);
                return true;
            }
        }
        if (args[0].equalsIgnoreCase("get") && args.length >= 2) {
            if (ply != null) {
                if (ply.isInMinigame()) {
                    sender.sendMessage(ChatColor.GRAY + ply.getName() + "'s Score: " + ChatColor.GREEN + ply.getScore());
                } else {
                    sender.sendMessage(ChatColor.RED + ply.getName() + " is not playing a Minigame!");
                }
            } else if (color != null) {
                if (args.length >= 3) {
                    Minigame mg = null;
                    if (plugin.mdata.hasMinigame(args[2])) {
                        mg = plugin.mdata.getMinigame(args[2]);
                    } else {
                        sender.sendMessage(ChatColor.RED + "No Minigame found by the name " + args[2]);
                        return true;
                    }
                    TeamsModule tmod = TeamsModule.getMinigameModule(mg);
                    if (mg.isTeamGame()) {
                        if (tmod.hasTeam(color)) {
                            Team t = tmod.getTeam(color);
                            sender.sendMessage(color.getColor() + t.getDisplayName() + ChatColor.GRAY + " score in " + mg.getName(false) + ": " + ChatColor.GREEN + t.getScore());
                        } else {
                            sender.sendMessage(ChatColor.RED + mg.getName(false) + " does not have a " + color.toString().toLowerCase() + " team.");
                        }
                    } else {
                        sender.sendMessage(ChatColor.RED + mg.getName(false) + " is not a team Minigame!");
                        return true;
                    }
                } else {
                    sender.sendMessage(ChatColor.RED + "This command requires a Minigame name as the last argument!");
                }
            }
            return true;
        } else if (args[0].equalsIgnoreCase("set") && args.length >= 3) {
            int score = 0;
            if (args[2].matches("-?[0-9]+")) {
                score = Integer.parseInt(args[2]);
            } else {
                sender.sendMessage(ChatColor.RED + args[2] + " is not a valid number!");
                return true;
            }
            if (ply != null) {
                if (ply.isInMinigame()) {
                    ply.setScore(score);
                    ply.getMinigame().setScore(ply, ply.getScore());
                    sender.sendMessage(ChatColor.GRAY + ply.getName() + "'s score has been set to " + score);
                    if (ply.getMinigame().getMaxScore() != 0 && score >= ply.getMinigame().getMaxScorePerPlayer()) {
                        plugin.pdata.endMinigame(ply);
                    }
                } else {
                    sender.sendMessage(ChatColor.RED + ply.getName() + " is not playing a Minigame!");
                }
            } else if (color != null) {
                if (args.length >= 4) {
                    Minigame mg = null;
                    if (plugin.mdata.hasMinigame(args[3])) {
                        mg = plugin.mdata.getMinigame(args[3]);
                    } else {
                        sender.sendMessage(ChatColor.RED + "No Minigame found by the name " + args[2]);
                        return true;
                    }
                    TeamsModule tmod = TeamsModule.getMinigameModule(mg);
                    if (mg.isTeamGame() && mg.hasPlayers()) {
                        Team t = null;
                        if (tmod.hasTeam(color)) {
                            t = tmod.getTeam(color);
                            t.setScore(score);
                            sender.sendMessage(t.getChatColor() + t.getDisplayName() + ChatColor.GRAY + " score has been set to " + score);
                        } else {
                            sender.sendMessage(ChatColor.RED + mg.getName(false) + " does not have a " + color.toString().toLowerCase() + " team.");
                            return true;
                        }
                        if (mg.getMaxScore() != 0 && score >= mg.getMaxScorePerPlayer()) {
                            List<MinigamePlayer> w = new ArrayList<MinigamePlayer>(t.getPlayers());
                            List<MinigamePlayer> l = new ArrayList<MinigamePlayer>(mg.getPlayers().size() - t.getPlayers().size());
                            for (Team te : tmod.getTeams()) {
                                if (te != t) {
                                    l.addAll(te.getPlayers());
                                }
                            }
                            plugin.pdata.endMinigame(mg, w, l);
                        }
                    } else if (!mg.hasPlayers()) {
                        sender.sendMessage(ChatColor.RED + mg.getName(false) + " has no players playing!");
                    } else {
                        sender.sendMessage(ChatColor.RED + mg.getName(false) + " is not a team Minigame!");
                    }
                } else {
                    sender.sendMessage(ChatColor.RED + "This command requires a Minigame name as the last argument!");
                }
            }
            return true;
        } else if (args[0].equalsIgnoreCase("add") && args.length >= 3) {
            int score = 0;
            if (args[2].matches("-?[0-9]+")) {
                score = Integer.parseInt(args[2]);
            } else {
                score = 1;
            }
            if (ply != null) {
                if (ply.isInMinigame()) {
                    ply.addScore(score);
                    ply.getMinigame().setScore(ply, ply.getScore());
                    sender.sendMessage(ChatColor.GRAY + "Added " + score + " to " + ply.getName() + "'s score, new score: " + ply.getScore());
                    if (ply.getMinigame().getMaxScore() != 0 && ply.getScore() >= ply.getMinigame().getMaxScorePerPlayer()) {
                        plugin.pdata.endMinigame(ply);
                    }
                } else {
                    sender.sendMessage(ChatColor.RED + ply.getName() + " is not playing a Minigame!");
                }
            } else if (color != null) {
                Minigame mg = null;
                String mgName = null;
                if (args.length == 4) {
                    mgName = args[3];
                } else {
                    mgName = args[2];
                }
                if (plugin.mdata.hasMinigame(mgName)) {
                    mg = plugin.mdata.getMinigame(mgName);
                } else {
                    sender.sendMessage(ChatColor.RED + "No Minigame found by the name " + mgName);
                    return true;
                }
                TeamsModule tmod = TeamsModule.getMinigameModule(mg);
                if (mg.isTeamGame() && mg.hasPlayers()) {
                    Team team = null;
                    if (tmod.hasTeam(color)) {
                        team = tmod.getTeam(color);
                        team.addScore(score);
                        sender.sendMessage(ChatColor.GRAY + "Added " + score + " to " + team.getChatColor() + team.getDisplayName() + ChatColor.GRAY + " score, new score: " + team.getScore());
                    } else {
                        sender.sendMessage(ChatColor.RED + mg.getName(false) + " does not have a " + color.toString().toLowerCase() + " team.");
                        return true;
                    }
                    if (mg.getMaxScore() != 0 && team.getScore() >= mg.getMaxScorePerPlayer()) {
                        List<MinigamePlayer> w = new ArrayList<MinigamePlayer>(team.getPlayers());
                        List<MinigamePlayer> l = new ArrayList<MinigamePlayer>(mg.getPlayers().size() - team.getPlayers().size());
                        for (Team te : tmod.getTeams()) {
                            if (te != team) {
                                l.addAll(te.getPlayers());
                            }
                        }
                        plugin.pdata.endMinigame(mg, w, l);
                    }
                } else if (!mg.hasPlayers()) {
                    sender.sendMessage(ChatColor.RED + mg.getName(false) + " has no players playing!");
                } else {
                    sender.sendMessage(ChatColor.RED + mg.getName(false) + " is not a team Minigame!");
                }
            }
            return true;
        }
    }
    return false;
}
Also used : Player(org.bukkit.entity.Player) MinigamePlayer(au.com.mineauz.minigames.MinigamePlayer) MinigamePlayer(au.com.mineauz.minigames.MinigamePlayer) ArrayList(java.util.ArrayList) TeamColor(au.com.mineauz.minigames.minigame.TeamColor) TeamsModule(au.com.mineauz.minigames.minigame.modules.TeamsModule) Team(au.com.mineauz.minigames.minigame.Team) List(java.util.List) ArrayList(java.util.ArrayList) Minigame(au.com.mineauz.minigames.minigame.Minigame)

Example 22 with MinigamePlayer

use of au.com.mineauz.minigames.MinigamePlayer in project Minigames by AddstarMC.

the class SpectateCommand method onCommand.

@Override
public boolean onCommand(CommandSender sender, Minigame minigame, String label, String[] args) {
    if (args != null) {
        if (plugin.mdata.hasMinigame(args[0])) {
            MinigamePlayer ply = plugin.pdata.getMinigamePlayer((Player) sender);
            Minigame mgm = plugin.mdata.getMinigame(args[0]);
            plugin.pdata.spectateMinigame(ply, mgm);
        } else {
            sender.sendMessage(ChatColor.RED + "No Minigame found by the name: " + args[0]);
        }
        return true;
    }
    return false;
}
Also used : MinigamePlayer(au.com.mineauz.minigames.MinigamePlayer) Minigame(au.com.mineauz.minigames.minigame.Minigame)

Example 23 with MinigamePlayer

use of au.com.mineauz.minigames.MinigamePlayer in project Minigames by AddstarMC.

the class StartCommand method onCommand.

@Override
public boolean onCommand(CommandSender sender, Minigame minigame, String label, String[] args) {
    if (args != null) {
        Minigame mgm = plugin.mdata.getMinigame(args[0]);
        if (mgm != null) {
            if (!mgm.isEnabled() && mgm.getType() == MinigameType.GLOBAL) {
                MinigamePlayer caller = null;
                if (sender instanceof Player)
                    caller = plugin.pdata.getMinigamePlayer((Player) sender);
                plugin.mdata.startGlobalMinigame(mgm, caller);
            } else if (mgm.getType() != MinigameType.GLOBAL && mgm.getType() != MinigameType.SINGLEPLAYER && mgm.hasPlayers()) {
                if (mgm.getMpTimer() == null || mgm.getMpTimer().getPlayerWaitTimeLeft() != 0) {
                    if (mgm.getMpTimer() == null) {
                        mgm.setMpTimer(new MultiplayerTimer(mgm));
                    }
                    mgm.getMpTimer().setPlayerWaitTime(0);
                    mgm.getMpTimer().startTimer();
                } else
                    sender.sendMessage(ChatColor.RED + mgm.getName(false) + " has already started.");
            } else if (mgm.isEnabled() && mgm.getType() == MinigameType.GLOBAL) {
                sender.sendMessage(ChatColor.RED + mgm.getName(false) + " is already running!");
            }
        } else {
            sender.sendMessage(ChatColor.RED + "No Global or Multiplayer Minigame found by the name " + args[0]);
        }
        return true;
    }
    return false;
}
Also used : Player(org.bukkit.entity.Player) MinigamePlayer(au.com.mineauz.minigames.MinigamePlayer) MultiplayerTimer(au.com.mineauz.minigames.MultiplayerTimer) MinigamePlayer(au.com.mineauz.minigames.MinigamePlayer) Minigame(au.com.mineauz.minigames.minigame.Minigame)

Example 24 with MinigamePlayer

use of au.com.mineauz.minigames.MinigamePlayer in project Minigames by AddstarMC.

the class MultiplayerType method endMinigame.

@Override
public void endMinigame(List<MinigamePlayer> winners, List<MinigamePlayer> losers, Minigame mgm) {
    if (mgm.isTeamGame()) {
        for (MinigamePlayer player : winners) {
            player.removeTeam();
        }
        for (MinigamePlayer player : losers) {
            player.removeTeam();
        }
        for (Team t : TeamsModule.getMinigameModule(mgm).getTeams()) {
            t.resetScore();
        }
    }
    if (mgm.getMpTimer() == null)
        return;
    mgm.getMpTimer().setStartWaitTime(0);
    mgm.setMpTimer(null);
}
Also used : MinigamePlayer(au.com.mineauz.minigames.MinigamePlayer) Team(au.com.mineauz.minigames.minigame.Team)

Example 25 with MinigamePlayer

use of au.com.mineauz.minigames.MinigamePlayer in project Minigames by AddstarMC.

the class MultiplayerType method joinMinigame.

@Override
public boolean joinMinigame(MinigamePlayer player, Minigame mgm) {
    if (!LobbySettingsModule.getMinigameModule(mgm).canInteractPlayerWait())
        player.setCanInteract(false);
    if (!LobbySettingsModule.getMinigameModule(mgm).canMovePlayerWait())
        player.setFrozen(true);
    if (!mgm.isWaitingForPlayers() && !mgm.hasStarted()) {
        if (mgm.getMpTimer() == null && mgm.getPlayers().size() == mgm.getMinPlayers()) {
            mgm.setMpTimer(new MultiplayerTimer(mgm));
            mgm.getMpTimer().startTimer();
            if (mgm.getPlayers().size() == mgm.getMaxPlayers()) {
                mgm.getMpTimer().setPlayerWaitTime(0);
                mdata.sendMinigameMessage(mgm, MinigameUtils.getLang("minigame.skipWaitTime"), "info", null);
            }
        } else if (mgm.getMpTimer() != null && mgm.getPlayers().size() == mgm.getMaxPlayers()) {
            mgm.getMpTimer().setPlayerWaitTime(0);
            mdata.sendMinigameMessage(mgm, MinigameUtils.getLang("minigame.skipWaitTime"), "info", null);
        } else if (mgm.getMpTimer() == null) {
            int neededPlayers = mgm.getMinPlayers() - mgm.getPlayers().size();
            mdata.sendMinigameMessage(mgm, MinigameUtils.formStr("minigame.waitingForPlayers", neededPlayers), null, null);
        }
    } else if (mgm.hasStarted()) {
        player.setLatejoining(true);
        //TODO: Late join delay variable
        player.sendMessage(MinigameUtils.formStr("minigame.lateJoin", 5));
        final MinigamePlayer fply = player;
        final Minigame fmgm = mgm;
        if (mgm.isTeamGame()) {
            Team smTeam = null;
            for (Team team : TeamsModule.getMinigameModule(mgm).getTeams()) {
                if (smTeam == null || team.getPlayers().size() < smTeam.getPlayers().size()) {
                    smTeam = team;
                }
            }
            smTeam.addPlayer(player);
            player.sendMessage(String.format(smTeam.getAssignMessage(), smTeam.getChatColor() + smTeam.getDisplayName()), null);
            final Team fteam = smTeam;
            player.setLateJoinTimer(Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {

                @Override
                public void run() {
                    if (fply.isInMinigame()) {
                        List<Location> locs = new ArrayList<Location>();
                        if (TeamsModule.getMinigameModule(fmgm).hasTeamStartLocations()) {
                            locs.addAll(fteam.getStartLocations());
                        } else {
                            locs.addAll(fmgm.getStartLocations());
                        }
                        Collections.shuffle(locs);
                        fply.teleport(locs.get(0));
                        fply.getLoadout().equiptLoadout(fply);
                        fply.setLatejoining(false);
                        fply.setFrozen(false);
                        fply.setCanInteract(true);
                        fply.setLateJoinTimer(-1);
                    }
                }
            }, //TODO: Latejoin variable
            5 * 20));
        } else {
            player.setLateJoinTimer(Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {

                @Override
                public void run() {
                    if (fply.isInMinigame()) {
                        List<Location> locs = new ArrayList<Location>(fmgm.getStartLocations());
                        Collections.shuffle(locs);
                        fply.teleport(locs.get(0));
                        fply.getLoadout().equiptLoadout(fply);
                        fply.setLatejoining(false);
                        fply.setFrozen(false);
                        fply.setCanInteract(true);
                        fply.setLateJoinTimer(-1);
                    }
                }
            }, //TODO: Latejoin variable
            5 * 20));
        }
        player.getPlayer().setScoreboard(mgm.getScoreboardManager());
        mgm.setScore(player, 1);
        mgm.setScore(player, 0);
    }
    return true;
}
Also used : MultiplayerTimer(au.com.mineauz.minigames.MultiplayerTimer) MinigamePlayer(au.com.mineauz.minigames.MinigamePlayer) Team(au.com.mineauz.minigames.minigame.Team) ArrayList(java.util.ArrayList) List(java.util.List) Minigame(au.com.mineauz.minigames.minigame.Minigame) Location(org.bukkit.Location)

Aggregations

MinigamePlayer (au.com.mineauz.minigames.MinigamePlayer)96 Minigame (au.com.mineauz.minigames.minigame.Minigame)32 EventHandler (org.bukkit.event.EventHandler)30 Team (au.com.mineauz.minigames.minigame.Team)22 ArrayList (java.util.ArrayList)22 Menu (au.com.mineauz.minigames.menu.Menu)11 Player (org.bukkit.entity.Player)11 Location (org.bukkit.Location)9 MenuItemPage (au.com.mineauz.minigames.menu.MenuItemPage)7 InteractionInterface (au.com.mineauz.minigames.menu.InteractionInterface)6 MenuItemCustom (au.com.mineauz.minigames.menu.MenuItemCustom)6 MenuItemString (au.com.mineauz.minigames.menu.MenuItemString)6 List (java.util.List)6 Callback (au.com.mineauz.minigames.menu.Callback)5 MenuItemNewLine (au.com.mineauz.minigames.menu.MenuItemNewLine)5 TeamColor (au.com.mineauz.minigames.minigame.TeamColor)5 MinigameTool (au.com.mineauz.minigames.tool.MinigameTool)4 MenuItemBoolean (au.com.mineauz.minigames.menu.MenuItemBoolean)3 MenuItemInteger (au.com.mineauz.minigames.menu.MenuItemInteger)3 CTFFlag (au.com.mineauz.minigames.CTFFlag)2