InfoCommand.java

1
package sh.okx.rankup.commands;
2
3
import java.util.ArrayList;
4
import java.util.Collections;
5
import java.util.HashSet;
6
import java.util.List;
7
import java.util.Set;
8
import org.bukkit.Bukkit;
9
import org.bukkit.ChatColor;
10
import org.bukkit.Statistic;
11
import org.bukkit.command.Command;
12
import org.bukkit.command.CommandSender;
13
import org.bukkit.command.TabExecutor;
14
import org.bukkit.entity.Player;
15
import org.bukkit.plugin.PluginDescriptionFile;
16
import org.bukkit.util.StringUtil;
17
import org.jetbrains.annotations.NotNull;
18
import org.jetbrains.annotations.Nullable;
19
import sh.okx.rankup.RankupPlugin;
20
import sh.okx.rankup.prestige.Prestige;
21
import sh.okx.rankup.prestige.Prestiges;
22
import sh.okx.rankup.ranks.Rank;
23
import sh.okx.rankup.ranks.RankElement;
24
import sh.okx.rankup.ranks.Rankups;
25
import sh.okx.rankup.util.UpdateNotifier;
26
27
public class InfoCommand implements TabExecutor {
28
  private final RankupPlugin plugin;
29
30
  private final UpdateNotifier notifier;
31
32
  public InfoCommand(RankupPlugin plugin, UpdateNotifier notifier) {
33
    this.plugin = plugin;
34
    this.notifier = notifier;
35
  }
36
37
  @Override
38
  public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
39 2 1. onCommand : changed conditional boundary → SURVIVED
2. onCommand : negated conditional → KILLED
    if (args.length > 0) {
40 2 1. onCommand : negated conditional → SURVIVED
2. onCommand : negated conditional → NO_COVERAGE
      if (args[0].equalsIgnoreCase("reload") && sender.hasPermission("rankup.reload")) {
41 1 1. onCommand : removed call to sh/okx/rankup/RankupPlugin::reload → NO_COVERAGE
        plugin.reload(false);
42 1 1. onCommand : negated conditional → NO_COVERAGE
        if (!plugin.error(sender)) {
43 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(ChatColor.GREEN + "" + ChatColor.BOLD + "Rankup " + ChatColor.YELLOW + "Reloaded configuration files.");
44
        }
45 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
        return true;
46 2 1. onCommand : negated conditional → KILLED
2. onCommand : negated conditional → KILLED
      } else if (args[0].equalsIgnoreCase("forcerankup") && sender.hasPermission("rankup.force")) {
47 2 1. onCommand : changed conditional boundary → KILLED
2. onCommand : negated conditional → KILLED
        if (args.length < 2) {
48 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(ChatColor.YELLOW + "Usage: /" + label + " forcerankup <player>");
49 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
          return true;
50
        }
51
52
        Player player = Bukkit.getPlayer(args[1]);
53 1 1. onCommand : negated conditional → KILLED
        if (player == null) {
54 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(ChatColor.YELLOW + "Player not found.");
55 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
          return true;
56
        }
57
58
        Rankups rankups = plugin.getRankups();
59
        RankElement<Rank> rankElement = rankups.getByPlayer(player);
60 1 1. onCommand : negated conditional → KILLED
        if (rankElement == null) {
61 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(ChatColor.YELLOW + "That player is not in any rankup groups.");
62 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
          return true;
63 1 1. onCommand : negated conditional → KILLED
        } else if (!rankElement.hasNext()) {
64 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(ChatColor.YELLOW + "That player is at the last rank.");
65 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
          return true;
66
        }
67
68
        Rank rank = rankElement.getRank();
69
70 1 1. onCommand : removed call to sh/okx/rankup/RankupHelper::doRankup → KILLED
        plugin.getHelper().doRankup(player, rankElement);
71 1 1. onCommand : removed call to sh/okx/rankup/RankupHelper::sendRankupMessages → SURVIVED
        plugin.getHelper().sendRankupMessages(player, rankElement);
72 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → SURVIVED
        sender.sendMessage(ChatColor.GREEN + "Successfully forced "
73
            + ChatColor.GOLD + player.getName()
74
            + ChatColor.GREEN + " to rankup from " + ChatColor.GOLD + rank.getRank()
75
            + ChatColor.GREEN + " to " + ChatColor.GOLD + rank.getNext());
76 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → SURVIVED
        return true;
77 2 1. onCommand : negated conditional → SURVIVED
2. onCommand : negated conditional → NO_COVERAGE
      } else if (args[0].equalsIgnoreCase("forceprestige") && sender.hasPermission("rankup.force")) {
78 1 1. onCommand : negated conditional → NO_COVERAGE
        if (plugin.getPrestiges() == null) {
79 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(ChatColor.RED + "Prestige is disabled.");
80 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
          return true;
81
        }
82
83 2 1. onCommand : changed conditional boundary → NO_COVERAGE
2. onCommand : negated conditional → NO_COVERAGE
        if (args.length < 2) {
84 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(ChatColor.YELLOW + "Usage: /" + label + " forceprestige <player>");
85 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
          return true;
86
        }
87
88
        Player player = Bukkit.getPlayer(args[1]);
89 1 1. onCommand : negated conditional → NO_COVERAGE
        if (player == null) {
90 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(ChatColor.YELLOW + "Player not found.");
91 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
          return true;
92
        }
93
94
        Prestiges prestiges = plugin.getPrestiges();
95
        RankElement<Prestige> rankElement = prestiges.getByPlayer(player);
96 1 1. onCommand : negated conditional → NO_COVERAGE
        if (!rankElement.hasNext()) {
97 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(ChatColor.YELLOW + "That player is at the last prestige.");
98 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
          return true;
99
        }
100
101
        Prestige prestige = rankElement.getRank();
102 1 1. onCommand : negated conditional → NO_COVERAGE
        if (prestige == null) {
103 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(ChatColor.YELLOW + "That player is not in any prestige groups.");
104 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
          return true;
105
        }
106
107 1 1. onCommand : removed call to sh/okx/rankup/RankupHelper::doPrestige → NO_COVERAGE
        plugin.getHelper().doPrestige(player, rankElement);
108 1 1. onCommand : removed call to sh/okx/rankup/RankupHelper::sendPrestigeMessages → NO_COVERAGE
        plugin.getHelper().sendPrestigeMessages(player, rankElement);
109 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
        sender.sendMessage(ChatColor.GREEN + "Successfully forced "
110
            + ChatColor.GOLD + player.getName()
111
            + ChatColor.GREEN + " to prestige "
112
            + ChatColor.GOLD + prestige.getRank()
113
            + ChatColor.GREEN + " from " + ChatColor.GOLD + prestige.getFrom()
114
            + ChatColor.GREEN + " to " + ChatColor.GOLD + prestige.getTo());
115 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
        return true;
116 2 1. onCommand : negated conditional → SURVIVED
2. onCommand : negated conditional → NO_COVERAGE
      } else if(args[0].equalsIgnoreCase("rankdown") && sender.hasPermission("rankup.force")) {
117 2 1. onCommand : changed conditional boundary → NO_COVERAGE
2. onCommand : negated conditional → NO_COVERAGE
        if (args.length < 2) {
118 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(ChatColor.YELLOW + "Usage: /" + label + " rankdown <player>");
119 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
          return true;
120
        }
121
122
        Player player = Bukkit.getPlayer(args[1]);
123 1 1. onCommand : negated conditional → NO_COVERAGE
        if (player == null) {
124 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(ChatColor.YELLOW + "Player not found.");
125 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
          return true;
126
        }
127
128
        RankElement<Rank> currentRankElement = plugin.getRankups().getByPlayer(player);
129 1 1. onCommand : negated conditional → NO_COVERAGE
        if (currentRankElement == null) {
130 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(ChatColor.YELLOW + "That player is not in any rankup groups.");
131 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
          return true;
132
        }
133
        Rank currentRank = currentRankElement.getRank();
134
135 1 1. onCommand : negated conditional → NO_COVERAGE
        if (currentRankElement.isRootNode()) {
136 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(ChatColor.YELLOW + "That player is in the first rank and cannot be ranked down.");
137 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
          return true;
138
        }
139
140
        RankElement<Rank> prevRankElement = plugin.getRankups().getTree().getFirst();
141 2 1. onCommand : negated conditional → NO_COVERAGE
2. onCommand : negated conditional → NO_COVERAGE
        while(prevRankElement.hasNext() && !prevRankElement.getNext().getRank().equals(currentRank)) {
142
          prevRankElement = prevRankElement.getNext();
143
        }
144
145 1 1. onCommand : negated conditional → NO_COVERAGE
        if (!prevRankElement.hasNext()) {
146 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(ChatColor.YELLOW + "Could not match previous rank.");
147 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
          return true;
148
        }
149
        Rank prevRank = prevRankElement.getRank();
150
151 1 1. onCommand : negated conditional → NO_COVERAGE
        if (prevRankElement.getRank() != null) {
152 1 1. onCommand : removed call to sh/okx/rankup/hook/GroupProvider::removeGroup → NO_COVERAGE
          plugin.getPermissions().removeGroup(player.getUniqueId(), currentRank.getRank());
153
        }
154 1 1. onCommand : removed call to sh/okx/rankup/hook/GroupProvider::addGroup → NO_COVERAGE
        plugin.getPermissions().addGroup(player.getUniqueId(), prevRank.getRank());
155
156 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
        sender.sendMessage(ChatColor.GREEN + "Successfully forced "
157
                + ChatColor.GOLD + player.getName()
158
                + ChatColor.GREEN + " to rank down from " + ChatColor.GOLD + currentRank.getRank()
159
                + ChatColor.GREEN + " to " + ChatColor.GOLD + prevRank.getRank());
160 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
        return true;
161 2 1. onCommand : negated conditional → KILLED
2. onCommand : negated conditional → KILLED
      } else if (args[0].equalsIgnoreCase("placeholders") && sender.hasPermission("rankup.admin")) {
162 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → KILLED
        sender.sendMessage("--- Rankup placeholders ---");
163 3 1. onCommand : negated conditional → NO_COVERAGE
2. onCommand : changed conditional boundary → KILLED
3. onCommand : negated conditional → KILLED
        if (args.length > 1 && args[1].equalsIgnoreCase("status")) {
164
          for (Rank rank : plugin.getRankups().getTree()) {
165
            String placeholder = "status_" + rank.getRank();
166 2 1. onCommand : negated conditional → NO_COVERAGE
2. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
            sender.sendMessage(placeholder + ": " + plugin.getPlaceholders().getExpansion().placeholder(sender instanceof Player ? (Player) sender : null, placeholder));
167
          }
168 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
          return true;
169
        }
170
171
        String[] placeholders = new String[] {
172
                "prestige_money_formatted",
173
                "prestige_percent_left_formatted",
174
                "prestige_percent_done_formatted",
175
                "money_formatted",
176
                "money_left_formatted",
177
                "percent_left_formatted",
178
                "percent_done_formatted",
179
                "current_prestige",
180
                "next_prestige",
181
                "current_rank",
182
                "next_rank",
183
        };
184
        for (String placeholder : placeholders) {
185
          String result;
186
          try {
187 1 1. onCommand : negated conditional → SURVIVED
            result = plugin.getPlaceholders().getExpansion().placeholder(sender instanceof Player ? (Player) sender : null, placeholder);
188
          } catch (Exception e) {
189
            result = e.getClass().getSimpleName() + ", " + e.getMessage();
190
          }
191 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → SURVIVED
          sender.sendMessage(placeholder + ": " + result);
192
        }
193 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → SURVIVED
        return true;
194 2 1. onCommand : negated conditional → SURVIVED
2. onCommand : negated conditional → NO_COVERAGE
      } else if (args[0].equalsIgnoreCase("tree") && sender.hasPermission("rankup.admin")) {
195
        RankElement<Rank> element = plugin.getRankups().getTree().getFirst();
196 1 1. onCommand : negated conditional → NO_COVERAGE
        while (element.hasNext()) {
197
          Rank rank = element.getRank();
198
          RankElement<Rank> next = element.getNext();
199
          Rank nextRank = next.getRank();
200 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(rank.getRank() + " (" + rank.getNext() + ") -> " + nextRank.getRank() + " (" + nextRank.getNext() + ")");
201
          element = next;
202
        }
203 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
        return true;
204 3 1. onCommand : negated conditional → KILLED
2. onCommand : negated conditional → KILLED
3. onCommand : negated conditional → KILLED
      } else if (args[0].equalsIgnoreCase("playtime") && (sender.hasPermission("rankup.playtime.get") || sender.hasPermission("rankup.playtime"))) {
205
        Statistic playOneTick;
206
        try {
207
          playOneTick = Statistic.valueOf("PLAY_ONE_MINUTE");
208
        } catch (IllegalArgumentException e) {
209
          // statistic was changed in 1.13.
210
          playOneTick = Statistic.valueOf("PLAY_ONE_TICK");
211
        }
212
213 2 1. onCommand : changed conditional boundary → SURVIVED
2. onCommand : negated conditional → KILLED
        if (args.length > 1) {
214 2 1. onCommand : negated conditional → KILLED
2. onCommand : negated conditional → KILLED
          if (args[1].equalsIgnoreCase("get") && sender.hasPermission("rankup.playtime.get")) {
215
            Player player;
216 2 1. onCommand : changed conditional boundary → SURVIVED
2. onCommand : negated conditional → SURVIVED
            if (args.length > 2) {
217
              // pru playtime get Okx
218
              player = Bukkit.getPlayer(args[2]);
219 1 1. onCommand : negated conditional → KILLED
              if (player == null) {
220 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
                sender.sendMessage(ChatColor.GRAY + "Player not found");
221 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
                return true;
222
              }
223
            } else {
224 1 1. onCommand : negated conditional → NO_COVERAGE
              if (sender instanceof Player) {
225
                player = (Player) sender;
226
              } else {
227 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
                sender.sendMessage(ChatColor.GREEN + "/" + label + " " + args[0] + " get [player] " + ChatColor.YELLOW
228
                    + " Get amount of minutes played");
229 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
                return true;
230
              }
231
            }
232
233
            int ticks = player.getStatistic(playOneTick);
234 2 1. onCommand : Replaced double division with multiplication → KILLED
2. onCommand : Replaced double division with multiplication → KILLED
            long minutes = (long) (ticks / 20D / 60);
235
236
            String who;
237 1 1. onCommand : negated conditional → KILLED
            if (player == sender) {
238
              who = "You have";
239
            } else {
240
              who = player.getName() + " has";
241
            }
242 1 1. onCommand : removed call to org/bukkit/entity/Player::sendMessage → KILLED
            player.sendMessage(ChatColor.LIGHT_PURPLE + who + " played for " + minutes + " minutes.");
243 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → SURVIVED
            return true;
244 2 1. onCommand : negated conditional → KILLED
2. onCommand : negated conditional → KILLED
          } else if (args[1].equalsIgnoreCase("set") && sender.hasPermission("rankup.playtime")) {
245 2 1. onCommand : changed conditional boundary → KILLED
2. onCommand : negated conditional → KILLED
            if (args.length < 4) {
246 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
              sender.sendMessage(ChatColor.GREEN + "/" + label + " " + args[0] + " set <player> <minutes>" + ChatColor.YELLOW + " Update the playtime statistic for a player");
247 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
              return true;
248
            }
249
250
            Player player = Bukkit.getPlayer(args[2]);
251 1 1. onCommand : negated conditional → KILLED
            if (player == null) {
252 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
              sender.sendMessage(ChatColor.GRAY + "Player not found");
253 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
              return true;
254
            }
255
256
            int minutes;
257
            try {
258
              minutes = Integer.parseInt(args[3]);
259
            } catch (NumberFormatException e) {
260 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
              sender.sendMessage(ChatColor.GRAY + "Invalid number: " + args[3]);
261 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
              return true;
262
            }
263
264 3 1. onCommand : Replaced integer multiplication with division → KILLED
2. onCommand : Replaced integer multiplication with division → KILLED
3. onCommand : removed call to org/bukkit/entity/Player::setStatistic → KILLED
            player.setStatistic(playOneTick, minutes * 20 * 60);
265 1 1. onCommand : removed call to org/bukkit/entity/Player::sendMessage → SURVIVED
            player.sendMessage(ChatColor.LIGHT_PURPLE + "Updated playtime for " + player.getName() + " to " + minutes + " minutes");
266 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → SURVIVED
            return true;
267 2 1. onCommand : negated conditional → KILLED
2. onCommand : negated conditional → KILLED
          } else if (args[1].equalsIgnoreCase("add") && sender.hasPermission("rankup.playtime")) {
268 2 1. onCommand : changed conditional boundary → KILLED
2. onCommand : negated conditional → KILLED
            if (args.length < 4) {
269 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
              sender.sendMessage(ChatColor.GREEN + "/" + label + " " + args[0] + " add <player> <minutes>" + ChatColor.YELLOW + " Increase the playtime statistic for a player");
270 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
              return true;
271
            }
272
273
            Player player = Bukkit.getPlayer(args[2]);
274 1 1. onCommand : negated conditional → KILLED
            if (player == null) {
275 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
              sender.sendMessage(ChatColor.GRAY + "Player not found");
276 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
              return true;
277
            }
278
279
            int minutes;
280
            try {
281
              minutes = Integer.parseInt(args[3]);
282
            } catch (NumberFormatException e) {
283 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
              sender.sendMessage(ChatColor.GRAY + "Invalid number: " + args[3]);
284 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
              return true;
285
            }
286
287 2 1. onCommand : Replaced integer division with multiplication → SURVIVED
2. onCommand : Replaced integer division with multiplication → SURVIVED
            int oldMinutes = player.getStatistic(playOneTick) / 20 / 60;
288 2 1. onCommand : changed conditional boundary → SURVIVED
2. onCommand : negated conditional → KILLED
            if (minutes > 0) {
289 3 1. onCommand : Replaced integer multiplication with division → KILLED
2. onCommand : Replaced integer multiplication with division → KILLED
3. onCommand : removed call to org/bukkit/entity/Player::incrementStatistic → KILLED
              player.incrementStatistic(playOneTick, minutes * 20 * 60);
290 2 1. onCommand : changed conditional boundary → NO_COVERAGE
2. onCommand : negated conditional → NO_COVERAGE
            } else if (minutes < 0) {
291 3 1. onCommand : changed conditional boundary → NO_COVERAGE
2. onCommand : Replaced integer addition with subtraction → NO_COVERAGE
3. onCommand : negated conditional → NO_COVERAGE
              if (oldMinutes + minutes < 0) {
292 1 1. onCommand : removed call to org/bukkit/entity/Player::sendMessage → NO_COVERAGE
                player.sendMessage(ChatColor.GRAY + "Playtime cannot be negative");
293 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
                return true;
294
              }
295 4 1. onCommand : removed negation → NO_COVERAGE
2. onCommand : Replaced integer multiplication with division → NO_COVERAGE
3. onCommand : Replaced integer multiplication with division → NO_COVERAGE
4. onCommand : removed call to org/bukkit/entity/Player::decrementStatistic → NO_COVERAGE
              player.decrementStatistic(playOneTick, -minutes * 20 * 60);
296
            }
297 1 1. onCommand : Replaced integer addition with subtraction → SURVIVED
            int newMinutes = oldMinutes + minutes;
298 3 1. onCommand : changed conditional boundary → SURVIVED
2. onCommand : negated conditional → SURVIVED
3. onCommand : removed call to org/bukkit/entity/Player::sendMessage → SURVIVED
            player.sendMessage(ChatColor.LIGHT_PURPLE + "Increased playtime for " + player.getName() + " to " + oldMinutes + (minutes >= 0 ? "+" : "") + minutes + "=" + newMinutes + " minutes");
299 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → SURVIVED
            return true;
300
          }
301
        }
302 1 1. onCommand : negated conditional → NO_COVERAGE
        if (sender.hasPermission("rankup.playtime.get")) {
303 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(
304
              ChatColor.GREEN + "/" + label + " " + args[0] + " get [player] " + ChatColor.YELLOW
305
                  + " Get amount of minutes played");
306
        }
307 1 1. onCommand : negated conditional → NO_COVERAGE
        if (sender.hasPermission("rankup.playtime")) {
308 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(
309
              ChatColor.GREEN + "/" + label + " " + args[0] + " set <player> <minutes>"
310
                  + ChatColor.YELLOW + " Update the playtime statistic for a player");
311 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
          sender.sendMessage(
312
              ChatColor.GREEN + "/" + label + " " + args[0] + " add <player> <minutes>"
313
                  + ChatColor.YELLOW + " Increase the playtime statistic for a player");
314
        }
315 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
        return true;
316
      }
317
    }
318
319
    PluginDescriptionFile description = plugin.getDescription();
320
    String version = description.getVersion();
321 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
    sender.sendMessage(
322
        ChatColor.GREEN + "" + ChatColor.BOLD + description.getName() + " " + version +
323
            ChatColor.YELLOW + " by " + ChatColor.BLUE + ChatColor.BOLD + String.join(", ", description.getAuthors()));
324 1 1. onCommand : negated conditional → NO_COVERAGE
    if (sender.hasPermission("rankup.reload")) {
325 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
      sender.sendMessage(ChatColor.GREEN + "/" + label + " reload " + ChatColor.YELLOW + "Reloads configuration files.");
326
    }
327 1 1. onCommand : negated conditional → NO_COVERAGE
    if (sender.hasPermission("rankup.force")) {
328 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
      sender.sendMessage(ChatColor.GREEN + "/" + label + " forcerankup <player> " + ChatColor.YELLOW + "Force a player to rankup, bypassing requirements.");
329 1 1. onCommand : negated conditional → NO_COVERAGE
      if (plugin.getPrestiges() != null) {
330 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
        sender.sendMessage(
331
            ChatColor.GREEN + "/" + label + " forceprestige <player> " + ChatColor.YELLOW
332
                + "Force a player to prestige, bypassing requirements.");
333
      }
334 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
      sender.sendMessage(ChatColor.GREEN + "/" + label + " rankdown <player> " + ChatColor.YELLOW + "Force a player to move down one rank.");
335
    }
336 1 1. onCommand : negated conditional → NO_COVERAGE
    if (sender.hasPermission("rankup.playtime")) {
337 1 1. onCommand : removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE
      sender.sendMessage(ChatColor.GREEN + "/" + label + " playtime " + ChatColor.YELLOW + "View your playtime");
338
    }
339
340 1 1. onCommand : negated conditional → NO_COVERAGE
    if (sender.hasPermission("rankup.checkversion")) {
341 1 1. onCommand : removed call to sh/okx/rankup/util/UpdateNotifier::notify → NO_COVERAGE
      notifier.notify(sender, false);
342
    }
343
344 1 1. onCommand : replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE
    return true;
345
  }
346
347
  @Override
348
  public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
349 1 1. onTabComplete : negated conditional → NO_COVERAGE
    if (args.length == 1) {
350
      List<String> list = new ArrayList<>();
351 1 1. onTabComplete : negated conditional → NO_COVERAGE
      if (sender.hasPermission("rankup.reload")) {
352
        list.add("reload");
353
      }
354 1 1. onTabComplete : negated conditional → NO_COVERAGE
      if (sender.hasPermission("rankup.force")) {
355
        list.add("forcerankup");
356
        list.add("forceprestige");
357
        list.add("rankdown");
358
      }
359 2 1. onTabComplete : negated conditional → NO_COVERAGE
2. onTabComplete : negated conditional → NO_COVERAGE
      if (sender.hasPermission("rankup.playtime.get") || sender.hasPermission("rankup.playtime")) {
360
        list.add("playtime");
361
      }
362 1 1. onTabComplete : replaced return value with Collections.emptyList for sh/okx/rankup/commands/InfoCommand::onTabComplete → NO_COVERAGE
      return StringUtil.copyPartialMatches(args[0], list, new ArrayList<>());
363 1 1. onTabComplete : negated conditional → NO_COVERAGE
    } else if (args.length == 2) {
364 2 1. onTabComplete : negated conditional → NO_COVERAGE
2. onTabComplete : negated conditional → NO_COVERAGE
      if (args[0].equalsIgnoreCase("forcerankup") && sender.hasPermission("rankup.force")) {
365 1 1. onTabComplete : replaced return value with Collections.emptyList for sh/okx/rankup/commands/InfoCommand::onTabComplete → NO_COVERAGE
        return StringUtil.copyPartialMatches(args[1], players(), new ArrayList<>());
366 3 1. onTabComplete : negated conditional → NO_COVERAGE
2. onTabComplete : negated conditional → NO_COVERAGE
3. onTabComplete : negated conditional → NO_COVERAGE
      } else if (args[0].equalsIgnoreCase("forceprestige") && sender.hasPermission("rankup.force") && plugin.getPrestiges() != null) {
367 1 1. onTabComplete : replaced return value with Collections.emptyList for sh/okx/rankup/commands/InfoCommand::onTabComplete → NO_COVERAGE
        return StringUtil.copyPartialMatches(args[1], players(), new ArrayList<>());
368 2 1. onTabComplete : negated conditional → NO_COVERAGE
2. onTabComplete : negated conditional → NO_COVERAGE
      } else if (args[0].equalsIgnoreCase("rankdown") && sender.hasPermission("rankup.force")) {
369 1 1. onTabComplete : replaced return value with Collections.emptyList for sh/okx/rankup/commands/InfoCommand::onTabComplete → NO_COVERAGE
        return StringUtil.copyPartialMatches(args[1], players(), new ArrayList<>());
370 1 1. onTabComplete : negated conditional → NO_COVERAGE
      } else if (args[0].equalsIgnoreCase("playtime")) {
371
        List<String> options = new ArrayList<>();
372 1 1. onTabComplete : negated conditional → NO_COVERAGE
        if (sender.hasPermission("rankup.playtime.get")) {
373
          options.add("get");
374
        }
375 1 1. onTabComplete : negated conditional → NO_COVERAGE
        if (sender.hasPermission("rankup.playtime")) {
376
          options.add("set");
377
          options.add("add");
378
        }
379 1 1. onTabComplete : replaced return value with Collections.emptyList for sh/okx/rankup/commands/InfoCommand::onTabComplete → NO_COVERAGE
        return StringUtil.copyPartialMatches(args[1], options, new ArrayList<>());
380
      }
381
    }
382
    return Collections.emptyList();
383
  }
384
385
  private Iterable<String> players() {
386
    Set<String> players = new HashSet<>();
387
    for (Player player : Bukkit.getOnlinePlayers()) {
388
      players.add(player.getName());
389
    }
390 1 1. players : replaced return value with null for sh/okx/rankup/commands/InfoCommand::players → NO_COVERAGE
    return players;
391
  }
392
}

Mutations

39

1.1
Location : onCommand
Killed by : none
changed conditional boundary → SURVIVED

2.2
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testAdd()]
negated conditional → KILLED

40

1.1
Location : onCommand
Killed by : none
negated conditional → SURVIVED

2.2
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

41

1.1
Location : onCommand
Killed by : none
removed call to sh/okx/rankup/RankupPlugin::reload → NO_COVERAGE

42

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

43

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

45

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

46

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.CommandInfoTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.CommandInfoTest]/[method:testForce()]
negated conditional → KILLED

2.2
Location : onCommand
Killed by : sh.okx.rankup.commands.CommandInfoTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.CommandInfoTest]/[method:testForce()]
negated conditional → KILLED

47

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.CommandInfoTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.CommandInfoTest]/[method:testForce()]
changed conditional boundary → KILLED

2.2
Location : onCommand
Killed by : sh.okx.rankup.commands.CommandInfoTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.CommandInfoTest]/[method:testForce()]
negated conditional → KILLED

48

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

49

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

53

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.CommandInfoTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.CommandInfoTest]/[method:testForce()]
negated conditional → KILLED

54

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

55

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

60

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.CommandInfoTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.CommandInfoTest]/[method:testForce()]
negated conditional → KILLED

61

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

62

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

63

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.CommandInfoTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.CommandInfoTest]/[method:testForce()]
negated conditional → KILLED

64

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

65

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

70

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.CommandInfoTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.CommandInfoTest]/[method:testForce()]
removed call to sh/okx/rankup/RankupHelper::doRankup → KILLED

71

1.1
Location : onCommand
Killed by : none
removed call to sh/okx/rankup/RankupHelper::sendRankupMessages → SURVIVED

72

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → SURVIVED

76

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → SURVIVED

77

1.1
Location : onCommand
Killed by : none
negated conditional → SURVIVED

2.2
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

78

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

79

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

80

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

83

1.1
Location : onCommand
Killed by : none
changed conditional boundary → NO_COVERAGE

2.2
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

84

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

85

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

89

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

90

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

91

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

96

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

97

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

98

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

102

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

103

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

104

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

107

1.1
Location : onCommand
Killed by : none
removed call to sh/okx/rankup/RankupHelper::doPrestige → NO_COVERAGE

108

1.1
Location : onCommand
Killed by : none
removed call to sh/okx/rankup/RankupHelper::sendPrestigeMessages → NO_COVERAGE

109

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

115

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

116

1.1
Location : onCommand
Killed by : none
negated conditional → SURVIVED

2.2
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

117

1.1
Location : onCommand
Killed by : none
changed conditional boundary → NO_COVERAGE

2.2
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

118

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

119

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

123

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

124

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

125

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

129

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

130

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

131

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

135

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

136

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

137

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

141

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

145

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

146

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

147

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

151

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

152

1.1
Location : onCommand
Killed by : none
removed call to sh/okx/rankup/hook/GroupProvider::removeGroup → NO_COVERAGE

154

1.1
Location : onCommand
Killed by : none
removed call to sh/okx/rankup/hook/GroupProvider::addGroup → NO_COVERAGE

156

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

160

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

161

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.CommandInfoTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.CommandInfoTest]/[method:testPlaceholders()]
negated conditional → KILLED

2.2
Location : onCommand
Killed by : sh.okx.rankup.commands.CommandInfoTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.CommandInfoTest]/[method:testPlaceholders()]
negated conditional → KILLED

162

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.CommandInfoTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.CommandInfoTest]/[method:testPlaceholders()]
removed call to org/bukkit/command/CommandSender::sendMessage → KILLED

163

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.CommandInfoTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.CommandInfoTest]/[method:testPlaceholders()]
changed conditional boundary → KILLED

2.2
Location : onCommand
Killed by : sh.okx.rankup.commands.CommandInfoTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.CommandInfoTest]/[method:testPlaceholders()]
negated conditional → KILLED

3.3
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

166

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

168

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

187

1.1
Location : onCommand
Killed by : none
negated conditional → SURVIVED

191

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → SURVIVED

193

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → SURVIVED

194

1.1
Location : onCommand
Killed by : none
negated conditional → SURVIVED

2.2
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

196

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

200

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

203

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

204

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testAdd()]
negated conditional → KILLED

2.2
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testGetSelf()]
negated conditional → KILLED

3.3
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testAdd()]
negated conditional → KILLED

213

1.1
Location : onCommand
Killed by : none
changed conditional boundary → SURVIVED

2.2
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testAdd()]
negated conditional → KILLED

214

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testGetSelf()]
negated conditional → KILLED

2.2
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testGetSelf()]
negated conditional → KILLED

216

1.1
Location : onCommand
Killed by : none
changed conditional boundary → SURVIVED

2.2
Location : onCommand
Killed by : none
negated conditional → SURVIVED

219

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testGetSelf()]
negated conditional → KILLED

220

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

221

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

224

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

227

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

229

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

234

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testGetSelf()]
Replaced double division with multiplication → KILLED

2.2
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testGetSelf()]
Replaced double division with multiplication → KILLED

237

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testGetSelf()]
negated conditional → KILLED

242

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testGetSelf()]
removed call to org/bukkit/entity/Player::sendMessage → KILLED

243

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → SURVIVED

244

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testAdd()]
negated conditional → KILLED

2.2
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testSet()]
negated conditional → KILLED

245

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testSet()]
changed conditional boundary → KILLED

2.2
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testSet()]
negated conditional → KILLED

246

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

247

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

251

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testSet()]
negated conditional → KILLED

252

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

253

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

260

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

261

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

264

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testSet()]
Replaced integer multiplication with division → KILLED

2.2
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testSet()]
Replaced integer multiplication with division → KILLED

3.3
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testSet()]
removed call to org/bukkit/entity/Player::setStatistic → KILLED

265

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/entity/Player::sendMessage → SURVIVED

266

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → SURVIVED

267

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testAdd()]
negated conditional → KILLED

2.2
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testAdd()]
negated conditional → KILLED

268

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testAdd()]
changed conditional boundary → KILLED

2.2
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testAdd()]
negated conditional → KILLED

269

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

270

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

274

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testAdd()]
negated conditional → KILLED

275

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

276

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

283

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

284

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

287

1.1
Location : onCommand
Killed by : none
Replaced integer division with multiplication → SURVIVED

2.2
Location : onCommand
Killed by : none
Replaced integer division with multiplication → SURVIVED

288

1.1
Location : onCommand
Killed by : none
changed conditional boundary → SURVIVED

2.2
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testAdd()]
negated conditional → KILLED

289

1.1
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testAdd()]
Replaced integer multiplication with division → KILLED

2.2
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testAdd()]
Replaced integer multiplication with division → KILLED

3.3
Location : onCommand
Killed by : sh.okx.rankup.commands.ComandPlaytimeTest.[engine:junit-jupiter]/[class:sh.okx.rankup.commands.ComandPlaytimeTest]/[method:testAdd()]
removed call to org/bukkit/entity/Player::incrementStatistic → KILLED

290

1.1
Location : onCommand
Killed by : none
changed conditional boundary → NO_COVERAGE

2.2
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

291

1.1
Location : onCommand
Killed by : none
changed conditional boundary → NO_COVERAGE

2.2
Location : onCommand
Killed by : none
Replaced integer addition with subtraction → NO_COVERAGE

3.3
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

292

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/entity/Player::sendMessage → NO_COVERAGE

293

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

295

1.1
Location : onCommand
Killed by : none
removed negation → NO_COVERAGE

2.2
Location : onCommand
Killed by : none
Replaced integer multiplication with division → NO_COVERAGE

3.3
Location : onCommand
Killed by : none
Replaced integer multiplication with division → NO_COVERAGE

4.4
Location : onCommand
Killed by : none
removed call to org/bukkit/entity/Player::decrementStatistic → NO_COVERAGE

297

1.1
Location : onCommand
Killed by : none
Replaced integer addition with subtraction → SURVIVED

298

1.1
Location : onCommand
Killed by : none
changed conditional boundary → SURVIVED

2.2
Location : onCommand
Killed by : none
negated conditional → SURVIVED

3.3
Location : onCommand
Killed by : none
removed call to org/bukkit/entity/Player::sendMessage → SURVIVED

299

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → SURVIVED

302

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

303

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

307

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

308

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

311

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

315

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

321

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

324

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

325

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

327

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

328

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

329

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

330

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

334

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

336

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

337

1.1
Location : onCommand
Killed by : none
removed call to org/bukkit/command/CommandSender::sendMessage → NO_COVERAGE

340

1.1
Location : onCommand
Killed by : none
negated conditional → NO_COVERAGE

341

1.1
Location : onCommand
Killed by : none
removed call to sh/okx/rankup/util/UpdateNotifier::notify → NO_COVERAGE

344

1.1
Location : onCommand
Killed by : none
replaced boolean return with false for sh/okx/rankup/commands/InfoCommand::onCommand → NO_COVERAGE

349

1.1
Location : onTabComplete
Killed by : none
negated conditional → NO_COVERAGE

351

1.1
Location : onTabComplete
Killed by : none
negated conditional → NO_COVERAGE

354

1.1
Location : onTabComplete
Killed by : none
negated conditional → NO_COVERAGE

359

1.1
Location : onTabComplete
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : onTabComplete
Killed by : none
negated conditional → NO_COVERAGE

362

1.1
Location : onTabComplete
Killed by : none
replaced return value with Collections.emptyList for sh/okx/rankup/commands/InfoCommand::onTabComplete → NO_COVERAGE

363

1.1
Location : onTabComplete
Killed by : none
negated conditional → NO_COVERAGE

364

1.1
Location : onTabComplete
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : onTabComplete
Killed by : none
negated conditional → NO_COVERAGE

365

1.1
Location : onTabComplete
Killed by : none
replaced return value with Collections.emptyList for sh/okx/rankup/commands/InfoCommand::onTabComplete → NO_COVERAGE

366

1.1
Location : onTabComplete
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : onTabComplete
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : onTabComplete
Killed by : none
negated conditional → NO_COVERAGE

367

1.1
Location : onTabComplete
Killed by : none
replaced return value with Collections.emptyList for sh/okx/rankup/commands/InfoCommand::onTabComplete → NO_COVERAGE

368

1.1
Location : onTabComplete
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : onTabComplete
Killed by : none
negated conditional → NO_COVERAGE

369

1.1
Location : onTabComplete
Killed by : none
replaced return value with Collections.emptyList for sh/okx/rankup/commands/InfoCommand::onTabComplete → NO_COVERAGE

370

1.1
Location : onTabComplete
Killed by : none
negated conditional → NO_COVERAGE

372

1.1
Location : onTabComplete
Killed by : none
negated conditional → NO_COVERAGE

375

1.1
Location : onTabComplete
Killed by : none
negated conditional → NO_COVERAGE

379

1.1
Location : onTabComplete
Killed by : none
replaced return value with Collections.emptyList for sh/okx/rankup/commands/InfoCommand::onTabComplete → NO_COVERAGE

390

1.1
Location : players
Killed by : none
replaced return value with null for sh/okx/rankup/commands/InfoCommand::players → NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT 1.7.0