From e86c6a342f4777c0cbcccab1c280b5b9cea9998b Mon Sep 17 00:00:00 2001 From: Brianna Date: Tue, 8 Sep 2020 15:51:41 -0500 Subject: [PATCH] Grab the heads for the main gui in Async. --- .../ultimatemoderation/gui/MainGui.java | 87 ++++++++++--------- 1 file changed, 45 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/songoda/ultimatemoderation/gui/MainGui.java b/src/main/java/com/songoda/ultimatemoderation/gui/MainGui.java index 9ce8a83..648918a 100644 --- a/src/main/java/com/songoda/ultimatemoderation/gui/MainGui.java +++ b/src/main/java/com/songoda/ultimatemoderation/gui/MainGui.java @@ -29,7 +29,7 @@ public class MainGui extends Gui { private Online currentOnline = Online.ONLINE; - private List players = new ArrayList<>(); + private final List players = new ArrayList<>(); private final Player viewer; public MainGui(UltimateModeration plugin, Player viewer) { @@ -83,7 +83,8 @@ public class MainGui extends Gui { List found = players.stream().filter(uuid -> Bukkit.getOfflinePlayer(uuid).getName().toLowerCase().contains(gui.getInputText().toLowerCase())).collect(Collectors.toList()); if (found.size() >= 1) { - this.players = found; + this.players.clear(); + this.players.addAll(found); showPage(); } else { plugin.getLocale().getMessage("gui.players.nonefound").sendMessage(event.player); @@ -126,52 +127,54 @@ public class MainGui extends Gui { this.pages = (int) Math.max(1, Math.ceil(toUse.size() / ((double) 28))); - toUse = toUse.stream().skip((page - 1) * 28).limit(28).collect(Collectors.toList()); + final List toUseFinal = toUse.stream().skip((page - 1) * 28).limit(28).collect(Collectors.toList()); - int num = 11; - for (UUID uuid : toUse) { - if (num == 16 || num == 36) - num = num + 2; - OfflinePlayer pl = Bukkit.getOfflinePlayer(uuid); - ItemStack skull = ItemUtils.getPlayerSkull(pl); - setItem(num, skull); + Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> { + int num = 11; + for (UUID uuid : toUseFinal) { + if (num == 16 || num == 36) + num = num + 2; + OfflinePlayer pl = Bukkit.getOfflinePlayer(uuid); + ItemStack skull = ItemUtils.getPlayerSkull(pl); + setItem(num, skull); - PlayerPunishData playerPunishData = plugin.getPunishmentManager().getPlayer(pl); + PlayerPunishData playerPunishData = plugin.getPunishmentManager().getPlayer(pl); - ArrayList lore = new ArrayList<>(); - lore.add(plugin.getLocale().getMessage("gui.players.click").getMessage()); - lore.add(""); + ArrayList lore = new ArrayList<>(); + lore.add(plugin.getLocale().getMessage("gui.players.click").getMessage()); + lore.add(""); - int ticketAmt = (int) plugin.getTicketManager().getTicketsAbout(pl).stream() - .filter(t -> t.getStatus() == TicketStatus.OPEN).count(); + int ticketAmt = (int) plugin.getTicketManager().getTicketsAbout(pl).stream() + .filter(t -> t.getStatus() == TicketStatus.OPEN).count(); - if (ticketAmt == 0) - lore.add(plugin.getLocale().getMessage("gui.players.notickets").getMessage()); - else { - if (ticketAmt == 1) - lore.add(plugin.getLocale().getMessage("gui.players.ticketsone").getMessage()); - else - lore.add(plugin.getLocale().getMessage("gui.players.tickets") - .processPlaceholder("amount", ticketAmt).getMessage()); + if (ticketAmt == 0) + lore.add(plugin.getLocale().getMessage("gui.players.notickets").getMessage()); + else { + if (ticketAmt == 1) + lore.add(plugin.getLocale().getMessage("gui.players.ticketsone").getMessage()); + else + lore.add(plugin.getLocale().getMessage("gui.players.tickets") + .processPlaceholder("amount", ticketAmt).getMessage()); + } + + int warningAmt = playerPunishData.getActivePunishments(PunishmentType.WARNING).size(); + + if (warningAmt == 0) + lore.add(plugin.getLocale().getMessage("gui.players.nowarnings").getMessage()); + else { + if (warningAmt == 1) + lore.add(plugin.getLocale().getMessage("gui.players.warningsone").getMessage()); + else + lore.add(plugin.getLocale().getMessage("gui.players.warnings") + .processPlaceholder("amount", warningAmt).getMessage()); + } + + setButton(num, GuiUtils.createButtonItem(skull, TextUtils.formatText("&7&l" + pl.getName()), lore), + (event) -> guiManager.showGUI(event.player, new PlayerGui(plugin, pl, viewer))); + + num++; } - - int warningAmt = playerPunishData.getActivePunishments(PunishmentType.WARNING).size(); - - if (warningAmt == 0) - lore.add(plugin.getLocale().getMessage("gui.players.nowarnings").getMessage()); - else { - if (warningAmt == 1) - lore.add(plugin.getLocale().getMessage("gui.players.warningsone").getMessage()); - else - lore.add(plugin.getLocale().getMessage("gui.players.warnings") - .processPlaceholder("amount", warningAmt).getMessage()); - } - - setButton(num, GuiUtils.createButtonItem(skull, TextUtils.formatText("&7&l" + pl.getName()), lore), - (event) -> guiManager.showGUI(event.player, new PlayerGui(plugin, pl, viewer))); - - num++; - } + }); // enable page events setNextPage(4, 7, GuiUtils.createButtonItem(CompatibleMaterial.ARROW, plugin.getLocale().getMessage("gui.general.next").getMessage()));