Search in sources :

Example 46 with OfflinePlayer

use of org.bukkit.OfflinePlayer in project AuthMeReloaded by AuthMe.

the class PurgeServiceTest method shouldNotRunPurgeIfProcessIsAlreadyRunning.

@Test
public void shouldNotRunPurgeIfProcessIsAlreadyRunning() {
    // given
    purgeService.setPurging(true);
    CommandSender sender = mock(CommandSender.class);
    OfflinePlayer[] offlinePlayers = new OfflinePlayer[] { mock(OfflinePlayer.class), mock(OfflinePlayer.class) };
    // when
    purgeService.purgePlayers(sender, newHashSet("test", "names"), offlinePlayers);
    // then
    verify(sender).sendMessage(argThat(containsString("Purge is already in progress")));
    verifyZeroInteractions(bukkitService, dataSource, permissionsManager);
}
Also used : OfflinePlayer(org.bukkit.OfflinePlayer) CommandSender(org.bukkit.command.CommandSender) Test(org.junit.Test)

Example 47 with OfflinePlayer

use of org.bukkit.OfflinePlayer in project AuthMeReloaded by AuthMe.

the class PurgeTaskTest method mockOfflinePlayer.

private OfflinePlayer mockOfflinePlayer(String name, boolean hasBypassPermission) {
    OfflinePlayer player = mock(OfflinePlayer.class);
    given(player.getName()).willReturn(name);
    playerBypassAssignments.put(player, hasBypassPermission);
    return player;
}
Also used : OfflinePlayer(org.bukkit.OfflinePlayer)

Example 48 with OfflinePlayer

use of org.bukkit.OfflinePlayer in project AuthMeReloaded by AuthMe.

the class PurgeTaskTest method shouldStopTaskAndInformSenderUponCompletion.

@Test
public void shouldStopTaskAndInformSenderUponCompletion() {
    // given
    Set<String> names = newHashSet("name1", "name2");
    Player sender = mock(Player.class);
    UUID uuid = UUID.randomUUID();
    given(sender.getUniqueId()).willReturn(uuid);
    PurgeTask task = new PurgeTask(purgeService, permissionsManager, sender, names, new OfflinePlayer[0]);
    ReflectionTestUtils.setField(BukkitRunnable.class, task, "taskId", 10049);
    Server server = mock(Server.class);
    BukkitScheduler scheduler = mock(BukkitScheduler.class);
    given(server.getScheduler()).willReturn(scheduler);
    ReflectionTestUtils.setField(Bukkit.class, null, "server", server);
    given(server.getPlayer(uuid)).willReturn(sender);
    // Run for the first time -> results in empty names list
    task.run();
    // when
    task.run();
    // then
    verify(scheduler).cancelTask(task.getTaskId());
    verify(sender).sendMessage(argThat(containsString("Database has been purged successfully")));
}
Also used : Player(org.bukkit.entity.Player) OfflinePlayer(org.bukkit.OfflinePlayer) Server(org.bukkit.Server) BukkitScheduler(org.bukkit.scheduler.BukkitScheduler) Matchers.containsString(org.hamcrest.Matchers.containsString) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) UUID(java.util.UUID) Test(org.junit.Test)

Example 49 with OfflinePlayer

use of org.bukkit.OfflinePlayer in project Bukkit by Bukkit.

the class ScoreboardCommand method execute.

@Override
public boolean execute(CommandSender sender, String currentAlias, String[] args) {
    if (!testPermission(sender))
        return true;
    if (args.length < 1 || args[0].length() == 0) {
        sender.sendMessage(ChatColor.RED + "Usage: /scoreboard <objectives|players|teams>");
        return false;
    }
    final Scoreboard mainScoreboard = Bukkit.getScoreboardManager().getMainScoreboard();
    if (args[0].equalsIgnoreCase("objectives")) {
        if (args.length == 1) {
            sender.sendMessage(ChatColor.RED + "Usage: /scoreboard objectives <list|add|remove|setdisplay>");
            return false;
        }
        if (args[1].equalsIgnoreCase("list")) {
            Set<Objective> objectives = mainScoreboard.getObjectives();
            if (objectives.isEmpty()) {
                sender.sendMessage(ChatColor.RED + "There are no objectives on the scoreboard");
                return false;
            }
            sender.sendMessage(ChatColor.DARK_GREEN + "Showing " + objectives.size() + " objective(s) on scoreboard");
            for (Objective objective : objectives) {
                sender.sendMessage("- " + objective.getName() + ": displays as '" + objective.getDisplayName() + "' and is type '" + objective.getCriteria() + "'");
            }
        } else if (args[1].equalsIgnoreCase("add")) {
            if (args.length < 4) {
                sender.sendMessage(ChatColor.RED + "/scoreboard objectives add <name> <criteriaType> [display name ...]");
                return false;
            }
            String name = args[2];
            String criteria = args[3];
            if (criteria == null) {
                sender.sendMessage(ChatColor.RED + "Invalid objective criteria type. Valid types are: " + stringCollectionToString(OBJECTIVES_CRITERIA));
            } else if (name.length() > 16) {
                sender.sendMessage(ChatColor.RED + "The name '" + name + "' is too long for an objective, it can be at most 16 characters long");
            } else if (mainScoreboard.getObjective(name) != null) {
                sender.sendMessage(ChatColor.RED + "An objective with the name '" + name + "' already exists");
            } else {
                String displayName = null;
                if (args.length > 4) {
                    displayName = StringUtils.join(ArrayUtils.subarray(args, 4, args.length), ' ');
                    if (displayName.length() > 32) {
                        sender.sendMessage(ChatColor.RED + "The name '" + displayName + "' is too long for an objective, it can be at most 32 characters long");
                        return false;
                    }
                }
                Objective objective = mainScoreboard.registerNewObjective(name, criteria);
                if (displayName != null && displayName.length() > 0) {
                    objective.setDisplayName(displayName);
                }
                sender.sendMessage("Added new objective '" + name + "' successfully");
            }
        } else if (args[1].equalsIgnoreCase("remove")) {
            if (args.length != 3) {
                sender.sendMessage(ChatColor.RED + "/scoreboard objectives remove <name>");
                return false;
            }
            String name = args[2];
            Objective objective = mainScoreboard.getObjective(name);
            if (objective == null) {
                sender.sendMessage(ChatColor.RED + "No objective was found by the name '" + name + "'");
            } else {
                objective.unregister();
                sender.sendMessage("Removed objective '" + name + "' successfully");
            }
        } else if (args[1].equalsIgnoreCase("setdisplay")) {
            if (args.length != 3 && args.length != 4) {
                sender.sendMessage(ChatColor.RED + "/scoreboard objectives setdisplay <slot> [objective]");
                return false;
            }
            String slotName = args[2];
            DisplaySlot slot = OBJECTIVES_DISPLAYSLOT.get(slotName);
            if (slot == null) {
                sender.sendMessage(ChatColor.RED + "No such display slot '" + slotName + "'");
            } else {
                if (args.length == 4) {
                    String objectiveName = args[3];
                    Objective objective = mainScoreboard.getObjective(objectiveName);
                    if (objective == null) {
                        sender.sendMessage(ChatColor.RED + "No objective was found by the name '" + objectiveName + "'");
                        return false;
                    }
                    objective.setDisplaySlot(slot);
                    sender.sendMessage("Set the display objective in slot '" + slotName + "' to '" + objective.getName() + "'");
                } else {
                    Objective objective = mainScoreboard.getObjective(slot);
                    if (objective != null) {
                        objective.setDisplaySlot(null);
                    }
                    sender.sendMessage("Cleared objective display slot '" + slotName + "'");
                }
            }
        }
    } else if (args[0].equalsIgnoreCase("players")) {
        if (args.length == 1) {
            sender.sendMessage(ChatColor.RED + "/scoreboard players <set|add|remove|reset|list>");
            return false;
        }
        if (args[1].equalsIgnoreCase("set") || args[1].equalsIgnoreCase("add") || args[1].equalsIgnoreCase("remove")) {
            if (args.length != 5) {
                if (args[1].equalsIgnoreCase("set")) {
                    sender.sendMessage(ChatColor.RED + "/scoreboard players set <player> <objective> <score>");
                } else if (args[1].equalsIgnoreCase("add")) {
                    sender.sendMessage(ChatColor.RED + "/scoreboard players add <player> <objective> <count>");
                } else {
                    sender.sendMessage(ChatColor.RED + "/scoreboard players remove <player> <objective> <count>");
                }
                return false;
            }
            String objectiveName = args[3];
            Objective objective = mainScoreboard.getObjective(objectiveName);
            if (objective == null) {
                sender.sendMessage(ChatColor.RED + "No objective was found by the name '" + objectiveName + "'");
                return false;
            } else if (!objective.isModifiable()) {
                sender.sendMessage(ChatColor.RED + "The objective '" + objectiveName + "' is read-only and cannot be set");
                return false;
            }
            String valueString = args[4];
            int value;
            try {
                value = Integer.parseInt(valueString);
            } catch (NumberFormatException e) {
                sender.sendMessage(ChatColor.RED + "'" + valueString + "' is not a valid number");
                return false;
            }
            if (value < 1 && !args[1].equalsIgnoreCase("set")) {
                sender.sendMessage(ChatColor.RED + "The number you have entered (" + value + ") is too small, it must be at least 1");
                return false;
            }
            String playerName = args[2];
            if (playerName.length() > 16) {
                sender.sendMessage(ChatColor.RED + "'" + playerName + "' is too long for a player name");
                return false;
            }
            Score score = objective.getScore(playerName);
            int newScore;
            if (args[1].equalsIgnoreCase("set")) {
                newScore = value;
            } else if (args[1].equalsIgnoreCase("add")) {
                newScore = score.getScore() + value;
            } else {
                newScore = score.getScore() - value;
            }
            score.setScore(newScore);
            sender.sendMessage("Set score of " + objectiveName + " for player " + playerName + " to " + newScore);
        } else if (args[1].equalsIgnoreCase("reset")) {
            if (args.length != 3) {
                sender.sendMessage(ChatColor.RED + "/scoreboard players reset <player>");
                return false;
            }
            String playerName = args[2];
            if (playerName.length() > 16) {
                sender.sendMessage(ChatColor.RED + "'" + playerName + "' is too long for a player name");
                return false;
            }
            mainScoreboard.resetScores(playerName);
            sender.sendMessage("Reset all scores of player " + playerName);
        } else if (args[1].equalsIgnoreCase("list")) {
            if (args.length > 3) {
                sender.sendMessage(ChatColor.RED + "/scoreboard players list <player>");
                return false;
            }
            if (args.length == 2) {
                Set<String> entries = mainScoreboard.getEntries();
                if (entries.isEmpty()) {
                    sender.sendMessage(ChatColor.RED + "There are no tracked players on the scoreboard");
                } else {
                    sender.sendMessage(ChatColor.DARK_GREEN + "Showing " + entries.size() + " tracked players on the scoreboard");
                    sender.sendMessage(stringCollectionToString(entries));
                }
            } else {
                String playerName = args[2];
                if (playerName.length() > 16) {
                    sender.sendMessage(ChatColor.RED + "'" + playerName + "' is too long for a player name");
                    return false;
                }
                Set<Score> scores = mainScoreboard.getScores(playerName);
                if (scores.isEmpty()) {
                    sender.sendMessage(ChatColor.RED + "Player " + playerName + " has no scores recorded");
                } else {
                    sender.sendMessage(ChatColor.DARK_GREEN + "Showing " + scores.size() + " tracked objective(s) for " + playerName);
                    for (Score score : scores) {
                        sender.sendMessage("- " + score.getObjective().getDisplayName() + ": " + score.getScore() + " (" + score.getObjective().getName() + ")");
                    }
                }
            }
        }
    } else if (args[0].equalsIgnoreCase("teams")) {
        if (args.length == 1) {
            sender.sendMessage(ChatColor.RED + "/scoreboard teams <list|add|remove|empty|join|leave|option>");
            return false;
        }
        if (args[1].equalsIgnoreCase("list")) {
            if (args.length == 2) {
                Set<Team> teams = mainScoreboard.getTeams();
                if (teams.isEmpty()) {
                    sender.sendMessage(ChatColor.RED + "There are no teams registered on the scoreboard");
                } else {
                    sender.sendMessage(ChatColor.DARK_GREEN + "Showing " + teams.size() + " teams on the scoreboard");
                    for (Team team : teams) {
                        sender.sendMessage("- " + team.getName() + ": '" + team.getDisplayName() + "' has " + team.getSize() + " players");
                    }
                }
            } else if (args.length == 3) {
                String teamName = args[2];
                Team team = mainScoreboard.getTeam(teamName);
                if (team == null) {
                    sender.sendMessage(ChatColor.RED + "No team was found by the name '" + teamName + "'");
                } else {
                    Set<OfflinePlayer> players = team.getPlayers();
                    if (players.isEmpty()) {
                        sender.sendMessage(ChatColor.RED + "Team " + team.getName() + " has no players");
                    } else {
                        sender.sendMessage(ChatColor.DARK_GREEN + "Showing " + players.size() + " player(s) in team " + team.getName());
                        sender.sendMessage(offlinePlayerSetToString(players));
                    }
                }
            } else {
                sender.sendMessage(ChatColor.RED + "/scoreboard teams list [name]");
                return false;
            }
        } else if (args[1].equalsIgnoreCase("add")) {
            if (args.length < 3) {
                sender.sendMessage(ChatColor.RED + "/scoreboard teams add <name> [display name ...]");
                return false;
            }
            String name = args[2];
            if (name.length() > 16) {
                sender.sendMessage(ChatColor.RED + "The name '" + name + "' is too long for a team, it can be at most 16 characters long");
            } else if (mainScoreboard.getTeam(name) != null) {
                sender.sendMessage(ChatColor.RED + "A team with the name '" + name + "' already exists");
            } else {
                String displayName = null;
                if (args.length > 3) {
                    displayName = StringUtils.join(ArrayUtils.subarray(args, 3, args.length), ' ');
                    if (displayName.length() > 32) {
                        sender.sendMessage(ChatColor.RED + "The display name '" + displayName + "' is too long for a team, it can be at most 32 characters long");
                        return false;
                    }
                }
                Team team = mainScoreboard.registerNewTeam(name);
                if (displayName != null && displayName.length() > 0) {
                    team.setDisplayName(displayName);
                }
                sender.sendMessage("Added new team '" + team.getName() + "' successfully");
            }
        } else if (args[1].equalsIgnoreCase("remove")) {
            if (args.length != 3) {
                sender.sendMessage(ChatColor.RED + "/scoreboard teams remove <name>");
                return false;
            }
            String name = args[2];
            Team team = mainScoreboard.getTeam(name);
            if (team == null) {
                sender.sendMessage(ChatColor.RED + "No team was found by the name '" + name + "'");
            } else {
                team.unregister();
                sender.sendMessage("Removed team " + name);
            }
        } else if (args[1].equalsIgnoreCase("empty")) {
            if (args.length != 3) {
                sender.sendMessage(ChatColor.RED + "/scoreboard teams clear <name>");
                return false;
            }
            String name = args[2];
            Team team = mainScoreboard.getTeam(name);
            if (team == null) {
                sender.sendMessage(ChatColor.RED + "No team was found by the name '" + name + "'");
            } else {
                Set<OfflinePlayer> players = team.getPlayers();
                if (players.isEmpty()) {
                    sender.sendMessage(ChatColor.RED + "Team " + team.getName() + " is already empty, cannot remove nonexistant players");
                } else {
                    for (OfflinePlayer player : players) {
                        team.removePlayer(player);
                    }
                    sender.sendMessage("Removed all " + players.size() + " player(s) from team " + team.getName());
                }
            }
        } else if (args[1].equalsIgnoreCase("join")) {
            if ((sender instanceof Player) ? args.length < 3 : args.length < 4) {
                sender.sendMessage(ChatColor.RED + "/scoreboard teams join <team> [player...]");
                return false;
            }
            String teamName = args[2];
            Team team = mainScoreboard.getTeam(teamName);
            if (team == null) {
                sender.sendMessage(ChatColor.RED + "No team was found by the name '" + teamName + "'");
            } else {
                Set<String> addedPlayers = new HashSet<String>();
                if ((sender instanceof Player) && args.length == 3) {
                    team.addPlayer((Player) sender);
                    addedPlayers.add(sender.getName());
                } else {
                    for (int i = 3; i < args.length; i++) {
                        String playerName = args[i];
                        OfflinePlayer offlinePlayer;
                        Player player = Bukkit.getPlayerExact(playerName);
                        if (player != null) {
                            offlinePlayer = player;
                        } else {
                            offlinePlayer = Bukkit.getOfflinePlayer(playerName);
                        }
                        team.addPlayer(offlinePlayer);
                        addedPlayers.add(offlinePlayer.getName());
                    }
                }
                sender.sendMessage("Added " + addedPlayers.size() + " player(s) to team " + team.getName() + ": " + stringCollectionToString(addedPlayers));
            }
        } else if (args[1].equalsIgnoreCase("leave")) {
            if (!(sender instanceof Player) && args.length < 3) {
                sender.sendMessage(ChatColor.RED + "/scoreboard teams leave [player...]");
                return false;
            }
            Set<String> left = new HashSet<String>();
            Set<String> noTeam = new HashSet<String>();
            if ((sender instanceof Player) && args.length == 2) {
                Team team = mainScoreboard.getPlayerTeam((Player) sender);
                if (team != null) {
                    team.removePlayer((Player) sender);
                    left.add(sender.getName());
                } else {
                    noTeam.add(sender.getName());
                }
            } else {
                for (int i = 2; i < args.length; i++) {
                    String playerName = args[i];
                    OfflinePlayer offlinePlayer;
                    Player player = Bukkit.getPlayerExact(playerName);
                    if (player != null) {
                        offlinePlayer = player;
                    } else {
                        offlinePlayer = Bukkit.getOfflinePlayer(playerName);
                    }
                    Team team = mainScoreboard.getPlayerTeam(offlinePlayer);
                    if (team != null) {
                        team.removePlayer(offlinePlayer);
                        left.add(offlinePlayer.getName());
                    } else {
                        noTeam.add(offlinePlayer.getName());
                    }
                }
            }
            if (!left.isEmpty()) {
                sender.sendMessage("Removed " + left.size() + " player(s) from their teams: " + stringCollectionToString(left));
            }
            if (!noTeam.isEmpty()) {
                sender.sendMessage("Could not remove " + noTeam.size() + " player(s) from their teams: " + stringCollectionToString(noTeam));
            }
        } else if (args[1].equalsIgnoreCase("option")) {
            if (args.length != 4 && args.length != 5) {
                sender.sendMessage(ChatColor.RED + "/scoreboard teams option <team> <friendlyfire|color|seefriendlyinvisibles> <value>");
                return false;
            }
            String teamName = args[2];
            Team team = mainScoreboard.getTeam(teamName);
            if (team == null) {
                sender.sendMessage(ChatColor.RED + "No team was found by the name '" + teamName + "'");
                return false;
            }
            String option = args[3].toLowerCase();
            if (!option.equals("friendlyfire") && !option.equals("color") && !option.equals("seefriendlyinvisibles")) {
                sender.sendMessage(ChatColor.RED + "/scoreboard teams option <team> <friendlyfire|color|seefriendlyinvisibles> <value>");
                return false;
            }
            if (args.length == 4) {
                if (option.equals("color")) {
                    sender.sendMessage(ChatColor.RED + "Valid values for option color are: " + stringCollectionToString(TEAMS_OPTION_COLOR.keySet()));
                } else {
                    sender.sendMessage(ChatColor.RED + "Valid values for option " + option + " are: true and false");
                }
            } else {
                String value = args[4].toLowerCase();
                if (option.equals("color")) {
                    ChatColor color = TEAMS_OPTION_COLOR.get(value);
                    if (color == null) {
                        sender.sendMessage(ChatColor.RED + "Valid values for option color are: " + stringCollectionToString(TEAMS_OPTION_COLOR.keySet()));
                        return false;
                    }
                    team.setPrefix(color.toString());
                    team.setSuffix(ChatColor.RESET.toString());
                } else {
                    if (!value.equals("true") && !value.equals("false")) {
                        sender.sendMessage(ChatColor.RED + "Valid values for option " + option + " are: true and false");
                        return false;
                    }
                    if (option.equals("friendlyfire")) {
                        team.setAllowFriendlyFire(value.equals("true"));
                    } else {
                        team.setCanSeeFriendlyInvisibles(value.equals("true"));
                    }
                }
                sender.sendMessage("Set option " + option + " for team " + team.getName() + " to " + value);
            }
        }
    } else {
        sender.sendMessage(ChatColor.RED + "Usage: /scoreboard <objectives|players|teams>");
        return false;
    }
    return true;
}
Also used : Player(org.bukkit.entity.Player) OfflinePlayer(org.bukkit.OfflinePlayer) Set(java.util.Set) HashSet(java.util.HashSet) Objective(org.bukkit.scoreboard.Objective) Score(org.bukkit.scoreboard.Score) Scoreboard(org.bukkit.scoreboard.Scoreboard) DisplaySlot(org.bukkit.scoreboard.DisplaySlot) OfflinePlayer(org.bukkit.OfflinePlayer) Team(org.bukkit.scoreboard.Team) ChatColor(org.bukkit.ChatColor) HashSet(java.util.HashSet)

Example 50 with OfflinePlayer

use of org.bukkit.OfflinePlayer in project Bukkit by Bukkit.

the class OpCommand method execute.

@Override
public boolean execute(CommandSender sender, String currentAlias, String[] args) {
    if (!testPermission(sender))
        return true;
    if (args.length != 1 || args[0].length() == 0) {
        sender.sendMessage(ChatColor.RED + "Usage: " + usageMessage);
        return false;
    }
    OfflinePlayer player = Bukkit.getOfflinePlayer(args[0]);
    player.setOp(true);
    Command.broadcastCommandMessage(sender, "Opped " + args[0]);
    return true;
}
Also used : OfflinePlayer(org.bukkit.OfflinePlayer)

Aggregations

OfflinePlayer (org.bukkit.OfflinePlayer)55 Player (org.bukkit.entity.Player)21 JobsPlayer (com.gamingmesh.jobs.container.JobsPlayer)10 Job (com.gamingmesh.jobs.container.Job)8 InvocationTargetException (java.lang.reflect.InvocationTargetException)8 ArrayList (java.util.ArrayList)6 File (java.io.File)5 HashSet (java.util.HashSet)5 Test (org.junit.Test)5 IOException (java.io.IOException)4 World (org.bukkit.World)4 CommandSender (org.bukkit.command.CommandSender)4 Matchers.containsString (org.hamcrest.Matchers.containsString)4 UUID (java.util.UUID)3 Location (org.bukkit.Location)3 JobProgression (com.gamingmesh.jobs.container.JobProgression)2 Island (com.wasteofplastic.acidisland.Island)2 List (java.util.List)2 Set (java.util.Set)2 net.aufdemrand.denizen.objects.dWorld (net.aufdemrand.denizen.objects.dWorld)2