| 1 | package sh.okx.rankup.gui; | |
| 2 | ||
| 3 | import java.util.Arrays; | |
| 4 | import java.util.Objects; | |
| 5 | import java.util.stream.Collectors; | |
| 6 | import lombok.AccessLevel; | |
| 7 | import lombok.Getter; | |
| 8 | import lombok.RequiredArgsConstructor; | |
| 9 | import org.bukkit.Bukkit; | |
| 10 | import org.bukkit.ChatColor; | |
| 11 | import org.bukkit.Material; | |
| 12 | import org.bukkit.configuration.ConfigurationSection; | |
| 13 | import org.bukkit.entity.Player; | |
| 14 | import org.bukkit.inventory.Inventory; | |
| 15 | import org.bukkit.inventory.InventoryHolder; | |
| 16 | import org.bukkit.inventory.ItemStack; | |
| 17 | import org.bukkit.inventory.meta.ItemMeta; | |
| 18 | import sh.okx.rankup.RankupPlugin; | |
| 19 | import sh.okx.rankup.messages.Message; | |
| 20 | import sh.okx.rankup.messages.MessageBuilder; | |
| 21 | import sh.okx.rankup.prestige.Prestige; | |
| 22 | import sh.okx.rankup.ranks.Rank; | |
| 23 | import sh.okx.rankup.ranks.RankElement; | |
| 24 | import sh.okx.rankup.util.Colour; | |
| 25 | import sh.okx.rankup.util.ItemUtil; | |
| 26 | ||
| 27 | @RequiredArgsConstructor(access = AccessLevel.PRIVATE) | |
| 28 | public class Gui implements InventoryHolder { | |
| 29 | ||
| 30 |
2
1. isReturnToRanksGui : replaced boolean return with false for sh/okx/rankup/gui/Gui::isReturnToRanksGui → NO_COVERAGE 2. isReturnToRanksGui : replaced boolean return with true for sh/okx/rankup/gui/Gui::isReturnToRanksGui → NO_COVERAGE |
@Getter |
| 31 | private final boolean returnToRanksGui; | |
| 32 |
1
1. getInventory : replaced return value with null for sh/okx/rankup/gui/Gui::getInventory → NO_COVERAGE |
@Getter |
| 33 | private Inventory inventory; | |
| 34 |
1
1. getRankup : replaced return value with null for sh/okx/rankup/gui/Gui::getRankup → NO_COVERAGE |
@Getter |
| 35 | private ItemStack rankup; | |
| 36 |
1
1. getCancel : replaced return value with null for sh/okx/rankup/gui/Gui::getCancel → NO_COVERAGE |
@Getter |
| 37 | private ItemStack cancel; | |
| 38 |
2
1. isPrestige : replaced boolean return with false for sh/okx/rankup/gui/Gui::isPrestige → NO_COVERAGE 2. isPrestige : replaced boolean return with true for sh/okx/rankup/gui/Gui::isPrestige → NO_COVERAGE |
@Getter |
| 39 | private boolean prestige; | |
| 40 | ||
| 41 | public static Gui of(Player player, Rank oldRank, Rank rank, RankupPlugin plugin, | |
| 42 | boolean returnToRanksGui) { | |
| 43 | Gui gui = new Gui(returnToRanksGui); | |
| 44 | gui.prestige = oldRank instanceof Prestige; | |
| 45 | ||
| 46 |
1
1. of : negated conditional → NO_COVERAGE |
String type = gui.prestige ? "prestige" : "rankup"; |
| 47 | String basePath = type + ".gui"; | |
| 48 | ConfigurationSection config = plugin.getSection(oldRank, basePath); | |
| 49 |
1
1. of : negated conditional → NO_COVERAGE |
if (config == null) { |
| 50 | plugin.getLogger().severe( | |
| 51 | "You must update your config.yml and locale/en.yml to be able to use the GUI! Your configuration files are outdated."); | |
| 52 | return null; | |
| 53 | } | |
| 54 | ||
| 55 | Integer rows = Gui.getInt(config, "rows"); | |
| 56 |
2
1. of : Replaced integer multiplication with division → NO_COVERAGE 2. of : negated conditional → NO_COVERAGE |
ItemStack[] items = new ItemStack[(rows == null ? 1 : rows) * 9]; |
| 57 | ||
| 58 | ItemStack fill = getItem(plugin, plugin.getSection(oldRank, basePath + ".fill"), player, | |
| 59 | oldRank, rank); | |
| 60 | ItemStack cancel = getItem(plugin, plugin.getSection(oldRank, basePath + ".cancel"), player, | |
| 61 | oldRank, rank); | |
| 62 | ItemStack rankup = getItem(plugin, plugin.getSection(oldRank, basePath + ".rankup"), player, | |
| 63 | oldRank, rank); | |
| 64 | ||
| 65 |
1
1. of : removed call to sh/okx/rankup/gui/Gui::addItem → NO_COVERAGE |
addItem(items, plugin.getSection(oldRank, basePath + ".rankup"), rankup); |
| 66 |
1
1. of : removed call to sh/okx/rankup/gui/Gui::addItem → NO_COVERAGE |
addItem(items, plugin.getSection(oldRank, basePath + ".cancel"), cancel); |
| 67 |
1
1. of : removed call to sh/okx/rankup/gui/Gui::addItem → NO_COVERAGE |
addItem(items, plugin.getSection(oldRank, basePath + ".fill"), fill); |
| 68 | ||
| 69 | gui.rankup = rankup; | |
| 70 | gui.cancel = cancel; | |
| 71 | ||
| 72 | Inventory inventory = Bukkit.createInventory(gui, items.length, | |
| 73 | Colour.translate( | |
| 74 |
1
1. of : negated conditional → NO_COVERAGE |
plugin.getMessage(oldRank, gui.prestige ? Message.PRESTIGE_TITLE : Message.TITLE) |
| 75 | .replacePlayer(player) | |
| 76 | .replaceOldRank(oldRank) | |
| 77 | .replaceRank(rank).toString(player))); | |
| 78 |
1
1. of : removed call to org/bukkit/inventory/Inventory::setContents → NO_COVERAGE |
inventory.setContents(items); |
| 79 | gui.inventory = inventory; | |
| 80 |
1
1. of : replaced return value with null for sh/okx/rankup/gui/Gui::of → NO_COVERAGE |
return gui; |
| 81 | } | |
| 82 | ||
| 83 | public static ItemStack getItem(RankupPlugin plugin, ConfigurationSection section, Player player, | |
| 84 | RankElement<Rank> element) { | |
| 85 |
1
1. getItem : negated conditional → KILLED |
if (element == null) { |
| 86 |
1
1. getItem : replaced return value with null for sh/okx/rankup/gui/Gui::getItem → SURVIVED |
return getItem(plugin, section, player, null, null); |
| 87 | } else { | |
| 88 | RankElement<Rank> next = element.getNext(); | |
| 89 |
1
1. getItem : replaced return value with null for sh/okx/rankup/gui/Gui::getItem → SURVIVED |
return getItem(plugin, section, player, element.getRank(), |
| 90 |
1
1. getItem : negated conditional → SURVIVED |
(next == null ? element : next).getRank()); |
| 91 | } | |
| 92 | } | |
| 93 | ||
| 94 | @SuppressWarnings("deprecation") | |
| 95 | public static ItemStack getItem(RankupPlugin plugin, ConfigurationSection section, Player player, | |
| 96 | Rank oldRank, Rank rank) { | |
| 97 |
1
1. getItem : negated conditional → KILLED |
if (section == null) { |
| 98 | return null; | |
| 99 | } | |
| 100 | String materialName = section.getString("material").toUpperCase(); | |
| 101 | ||
| 102 | ItemStack item; | |
| 103 |
1
1. getItem : negated conditional → KILLED |
if (ItemUtil.isServerFlattened()) { |
| 104 | Material material = Material.valueOf(materialName); | |
| 105 | item = new ItemStack(material); | |
| 106 | } else { | |
| 107 | // handle default material correctly on older versions | |
| 108 |
1
1. getItem : negated conditional → NO_COVERAGE |
if (materialName.equals("BLACK_STAINED_GLASS_PANE")) { |
| 109 | materialName = "STAINED_GLASS_PANE:15"; | |
| 110 | } | |
| 111 | ||
| 112 | String[] parts = materialName.split(":"); | |
| 113 | Material material = Material.valueOf(parts[0]); | |
| 114 | ||
| 115 |
2
1. getItem : changed conditional boundary → NO_COVERAGE 2. getItem : negated conditional → NO_COVERAGE |
short type = parts.length > 1 ? Short.parseShort(parts[1]) : 0; |
| 116 | item = new ItemStack(material, 1, type); | |
| 117 | } | |
| 118 | ||
| 119 |
2
1. getItem : negated conditional → SURVIVED 2. getItem : negated conditional → NO_COVERAGE |
if (item.getType() == Material.AIR && section.getName().equalsIgnoreCase("fill")) { |
| 120 |
1
1. getItem : replaced return value with null for sh/okx/rankup/gui/Gui::getItem → NO_COVERAGE |
return item; |
| 121 | } | |
| 122 | ||
| 123 | ItemMeta meta = item.getItemMeta(); | |
| 124 |
1
1. getItem : negated conditional → KILLED |
if (section.contains("lore")) { |
| 125 |
1
1. getItem : removed call to org/bukkit/inventory/meta/ItemMeta::setLore → NO_COVERAGE |
meta.setLore(Arrays |
| 126 | .stream(format(plugin, section.getString("lore"), player, oldRank, rank).split("\n")) | |
| 127 |
1
1. lambda$getItem$0 : replaced return value with "" for sh/okx/rankup/gui/Gui::lambda$getItem$0 → NO_COVERAGE |
.map(string -> ChatColor.RESET + string) |
| 128 | .collect(Collectors.toList())); | |
| 129 | } | |
| 130 |
1
1. getItem : negated conditional → SURVIVED |
if (section.contains("name")) { |
| 131 |
1
1. getItem : removed call to org/bukkit/inventory/meta/ItemMeta::setDisplayName → SURVIVED |
meta.setDisplayName( |
| 132 | ChatColor.RESET + format(plugin, section.getString("name"), player, oldRank, rank)); | |
| 133 | } | |
| 134 | item.setItemMeta(meta); | |
| 135 |
1
1. getItem : replaced return value with null for sh/okx/rankup/gui/Gui::getItem → SURVIVED |
return item; |
| 136 | } | |
| 137 | ||
| 138 | private static String format(RankupPlugin plugin, String message, Player player, Rank oldRank, | |
| 139 | Rank rank) { | |
| 140 | MessageBuilder builder = plugin.newMessageBuilder(message); | |
| 141 |
2
1. format : negated conditional → SURVIVED 2. format : negated conditional → SURVIVED |
if (oldRank != null && rank != null) { |
| 142 | builder = builder.replacePlayer(player).replaceOldRank(oldRank).replaceRank(rank); | |
| 143 | } | |
| 144 |
1
1. format : replaced return value with "" for sh/okx/rankup/gui/Gui::format → SURVIVED |
return builder.toString(player); |
| 145 | } | |
| 146 | ||
| 147 | private static void addItem(ItemStack[] items, ConfigurationSection section, ItemStack item) { | |
| 148 | Objects.requireNonNull(section, "GUI configuration section not found"); | |
| 149 |
1
1. addItem : negated conditional → NO_COVERAGE |
if (section.getName().equalsIgnoreCase("fill")) { |
| 150 |
2
1. addItem : changed conditional boundary → NO_COVERAGE 2. addItem : negated conditional → NO_COVERAGE |
for (int i = 0; i < items.length; i++) { |
| 151 |
1
1. addItem : negated conditional → NO_COVERAGE |
if (items[i] == null) { |
| 152 | items[i] = item; | |
| 153 | } | |
| 154 | } | |
| 155 | return; | |
| 156 | } | |
| 157 | ||
| 158 | String[] locations = section.getString("index").split(" "); | |
| 159 | for (String location : locations) { | |
| 160 | String[] parts = location.split("-"); | |
| 161 |
1
1. addItem : negated conditional → NO_COVERAGE |
if (parts.length == 1) { |
| 162 | items[Integer.parseInt(parts[0])] = item; | |
| 163 | } else { | |
| 164 |
3
1. addItem : changed conditional boundary → NO_COVERAGE 2. addItem : Changed increment from 1 to -1 → NO_COVERAGE 3. addItem : negated conditional → NO_COVERAGE |
for (int i = Integer.parseInt(parts[0]); i <= Integer.parseInt(parts[1]); i++) { |
| 165 | items[i] = item; | |
| 166 | } | |
| 167 | } | |
| 168 | } | |
| 169 | } | |
| 170 | ||
| 171 | public static Integer getInt(ConfigurationSection section, String key) { | |
| 172 | String string = section.getString(key); | |
| 173 |
1
1. getInt : negated conditional → KILLED |
if (string == null) { |
| 174 |
1
1. getInt : replaced Integer return value with 0 for sh/okx/rankup/gui/Gui::getInt → SURVIVED |
return null; |
| 175 | } else { | |
| 176 | try { | |
| 177 |
1
1. getInt : replaced Integer return value with 0 for sh/okx/rankup/gui/Gui::getInt → KILLED |
return Integer.parseInt(string); |
| 178 | } catch (IllegalArgumentException ex) { | |
| 179 |
1
1. getInt : replaced Integer return value with 0 for sh/okx/rankup/gui/Gui::getInt → NO_COVERAGE |
return null; |
| 180 | } | |
| 181 | } | |
| 182 | } | |
| 183 | ||
| 184 | public void open(Player player) { | |
| 185 | player.openInventory(inventory); | |
| 186 | } | |
| 187 | } | |
Mutations | ||
| 30 |
1.1 2.2 |
|
| 32 |
1.1 |
|
| 34 |
1.1 |
|
| 36 |
1.1 |
|
| 38 |
1.1 2.2 |
|
| 46 |
1.1 |
|
| 49 |
1.1 |
|
| 56 |
1.1 2.2 |
|
| 65 |
1.1 |
|
| 66 |
1.1 |
|
| 67 |
1.1 |
|
| 74 |
1.1 |
|
| 78 |
1.1 |
|
| 80 |
1.1 |
|
| 85 |
1.1 |
|
| 86 |
1.1 |
|
| 89 |
1.1 |
|
| 90 |
1.1 |
|
| 97 |
1.1 |
|
| 103 |
1.1 |
|
| 108 |
1.1 |
|
| 115 |
1.1 2.2 |
|
| 119 |
1.1 2.2 |
|
| 120 |
1.1 |
|
| 124 |
1.1 |
|
| 125 |
1.1 |
|
| 127 |
1.1 |
|
| 130 |
1.1 |
|
| 131 |
1.1 |
|
| 135 |
1.1 |
|
| 141 |
1.1 2.2 |
|
| 144 |
1.1 |
|
| 149 |
1.1 |
|
| 150 |
1.1 2.2 |
|
| 151 |
1.1 |
|
| 161 |
1.1 |
|
| 164 |
1.1 2.2 3.3 |
|
| 173 |
1.1 |
|
| 174 |
1.1 |
|
| 177 |
1.1 |
|
| 179 |
1.1 |