Added page system.
This commit is contained in:
parent
ed58562595
commit
fa2ded94b4
|
@ -16,6 +16,7 @@ import java.text.SimpleDateFormat;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class GUINotesManager extends AbstractGUI {
|
||||
|
||||
|
@ -23,6 +24,8 @@ public class GUINotesManager extends AbstractGUI {
|
|||
|
||||
private final OfflinePlayer toModerate;
|
||||
|
||||
private int page = 0;
|
||||
|
||||
public GUINotesManager(UltimateModeration plugin, OfflinePlayer toModerate, Player player) {
|
||||
super(player);
|
||||
this.plugin = plugin;
|
||||
|
@ -34,19 +37,37 @@ public class GUINotesManager extends AbstractGUI {
|
|||
@Override
|
||||
protected void constructGUI() {
|
||||
inventory.clear();
|
||||
|
||||
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
|
||||
|
||||
createButton(3, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
|
||||
|
||||
createButton(8, Material.OAK_DOOR, plugin.getLocale().getMessage("gui.general.back"));
|
||||
|
||||
createButton(6, Material.REDSTONE, plugin.getLocale().getMessage("gui.notes.create"));
|
||||
resetClickables();
|
||||
registerClickables();
|
||||
|
||||
for (int i = 0; i < 9; i++)
|
||||
createButton(9 + i, Material.GRAY_STAINED_GLASS_PANE, "&1");
|
||||
|
||||
List<PunishmentNote> notes = plugin.getPunishmentManager().getPlayer(toModerate).getNotes();
|
||||
int numNotes = plugin.getPunishmentManager().getPlayer(toModerate).getNotes().size();
|
||||
int maxPage = (int) Math.ceil(numNotes / 36.0);
|
||||
|
||||
List<PunishmentNote> notes = plugin.getPunishmentManager().getPlayer(toModerate).getNotes().stream()
|
||||
.skip(page * 36).limit(36).collect(Collectors.toList());
|
||||
|
||||
if (page != 0) {
|
||||
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
|
||||
registerClickable(1, ((player1, inventory1, cursor, slot, type) -> {
|
||||
page --;
|
||||
constructGUI();
|
||||
}));
|
||||
}
|
||||
|
||||
if (page != maxPage) {
|
||||
createButton(3, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
|
||||
registerClickable(3, ((player1, inventory1, cursor, slot, type) -> {
|
||||
page ++;
|
||||
constructGUI();
|
||||
}));
|
||||
}
|
||||
|
||||
createButton(8, Material.OAK_DOOR, plugin.getLocale().getMessage("gui.general.back"));
|
||||
|
||||
createButton(6, Material.REDSTONE, plugin.getLocale().getMessage("gui.notes.create"));
|
||||
|
||||
for (int i = 0; i < notes.size(); i++) {
|
||||
PunishmentNote note = notes.get(i);
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.songoda.ultimatemoderation.gui;
|
||||
|
||||
import com.songoda.ultimatemoderation.UltimateModeration;
|
||||
import com.songoda.ultimatemoderation.punish.PunishmentNote;
|
||||
import com.songoda.ultimatemoderation.punish.PunishmentType;
|
||||
import com.songoda.ultimatemoderation.punish.player.PlayerPunishData;
|
||||
import com.songoda.ultimatemoderation.utils.gui.AbstractGUI;
|
||||
|
@ -11,12 +12,15 @@ import org.bukkit.inventory.ItemStack;
|
|||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class GUIPlayers extends AbstractGUI {
|
||||
|
||||
private final UltimateModeration plugin;
|
||||
|
||||
private int task;
|
||||
private int page = 0;
|
||||
|
||||
public GUIPlayers(UltimateModeration plugin, Player player) {
|
||||
super(player);
|
||||
|
@ -31,7 +35,30 @@ public class GUIPlayers extends AbstractGUI {
|
|||
inventory.clear();
|
||||
resetClickables();
|
||||
registerClickables();
|
||||
ArrayList<Player> players = new ArrayList<>(Bukkit.getOnlinePlayers());
|
||||
|
||||
List<Player> players = new ArrayList<>(Bukkit.getOnlinePlayers()).stream()
|
||||
.skip(page * 36).collect(Collectors.toList());
|
||||
|
||||
int sizeLeft = players.size();
|
||||
|
||||
players = players.stream().limit(36).collect(Collectors.toList());
|
||||
|
||||
if (page != 0) {
|
||||
createButton(46, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
|
||||
registerClickable(46, ((player1, inventory1, cursor, slot, type) -> {
|
||||
page --;
|
||||
constructGUI();
|
||||
}));
|
||||
}
|
||||
|
||||
if (sizeLeft >= 36) {
|
||||
createButton(48, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
|
||||
registerClickable(48, ((player1, inventory1, cursor, slot, type) -> {
|
||||
page ++;
|
||||
constructGUI();
|
||||
}));
|
||||
}
|
||||
|
||||
for (int i = 0; i < players.size(); i++) {
|
||||
Player pl = players.get(i);
|
||||
|
||||
|
@ -67,11 +94,6 @@ public class GUIPlayers extends AbstractGUI {
|
|||
for (int i = 0; i < 9; i++)
|
||||
createButton(36 + i, Material.GRAY_STAINED_GLASS_PANE, "&1");
|
||||
|
||||
|
||||
createButton(46, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
|
||||
createButton(48, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
|
||||
|
||||
|
||||
createButton(51, Material.CHEST, "&7Tickets");
|
||||
createButton(52, Material.MAP, plugin.getLocale().getMessage("gui.players.button.templatemanager"));
|
||||
}
|
||||
|
|
|
@ -2,19 +2,20 @@ package com.songoda.ultimatemoderation.gui;
|
|||
|
||||
import com.songoda.ultimatemoderation.UltimateModeration;
|
||||
import com.songoda.ultimatemoderation.punish.AppliedPunishment;
|
||||
import com.songoda.ultimatemoderation.punish.Punishment;
|
||||
import com.songoda.ultimatemoderation.punish.PunishmentType;
|
||||
import com.songoda.ultimatemoderation.punish.player.PlayerPunishData;
|
||||
import com.songoda.ultimatemoderation.tickets.TicketResponse;
|
||||
import com.songoda.ultimatemoderation.utils.Methods;
|
||||
import com.songoda.ultimatemoderation.utils.gui.AbstractGUI;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.omg.PortableInterceptor.ACTIVE;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class GUIPunishments extends AbstractGUI {
|
||||
|
||||
|
@ -24,6 +25,8 @@ public class GUIPunishments extends AbstractGUI {
|
|||
private Activity currentActivity = Activity.BOTH;
|
||||
private PunishmentType punishmentType = PunishmentType.ALL;
|
||||
|
||||
private int page = 0;
|
||||
|
||||
public GUIPunishments(UltimateModeration plugin, OfflinePlayer toModerate, Player player) {
|
||||
super(player);
|
||||
this.plugin = plugin;
|
||||
|
@ -38,6 +41,52 @@ public class GUIPunishments extends AbstractGUI {
|
|||
resetClickables();
|
||||
registerClickables();
|
||||
|
||||
PlayerPunishData playerPunishData = plugin.getPunishmentManager().getPlayer(toModerate);
|
||||
|
||||
List<PunishmentHolder> punishments = new ArrayList<>();
|
||||
|
||||
if (currentActivity == Activity.ACTIVE || currentActivity == Activity.BOTH) {
|
||||
for (AppliedPunishment punishment : playerPunishData.getActivePunishments()) {
|
||||
if (punishmentType != PunishmentType.ALL) {
|
||||
if (punishment.getPunishmentType() != punishmentType)
|
||||
continue;
|
||||
}
|
||||
punishments.add(new PunishmentHolder(Activity.ACTIVE, punishment));
|
||||
}
|
||||
}
|
||||
|
||||
if (currentActivity == Activity.EXPIRED || currentActivity == Activity.BOTH) {
|
||||
for (AppliedPunishment punishment : playerPunishData.getExpiredPunishments()) {
|
||||
if (punishmentType != PunishmentType.ALL) {
|
||||
if (punishment.getPunishmentType() != punishmentType)
|
||||
continue;
|
||||
}
|
||||
punishments.add(new PunishmentHolder(Activity.EXPIRED, punishment));
|
||||
}
|
||||
}
|
||||
|
||||
int numNotes = punishments.size();
|
||||
int maxPage = (int) Math.ceil(numNotes / 36.0);
|
||||
|
||||
punishments = punishments.stream().skip(page * 36).limit(36)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (page != 0) {
|
||||
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
|
||||
registerClickable(1, ((player1, inventory1, cursor, slot, type) -> {
|
||||
page --;
|
||||
constructGUI();
|
||||
}));
|
||||
}
|
||||
|
||||
if (page != maxPage) {
|
||||
createButton(8, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
|
||||
registerClickable(8, ((player1, inventory1, cursor, slot, type) -> {
|
||||
page ++;
|
||||
constructGUI();
|
||||
}));
|
||||
}
|
||||
|
||||
createButton(8, Material.OAK_DOOR, plugin.getLocale().getMessage("gui.general.back"));
|
||||
|
||||
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
|
||||
|
@ -50,34 +99,10 @@ public class GUIPunishments extends AbstractGUI {
|
|||
for (int i = 0; i < 9; i++)
|
||||
createButton(9 + i, Material.GRAY_STAINED_GLASS_PANE, "&1");
|
||||
|
||||
PlayerPunishData playerPunishData = plugin.getPunishmentManager().getPlayer(toModerate);
|
||||
|
||||
Map<AppliedPunishment, Activity> punishments = new HashMap<>();
|
||||
|
||||
if (currentActivity == Activity.ACTIVE || currentActivity == Activity.BOTH) {
|
||||
for (AppliedPunishment punishment : playerPunishData.getActivePunishments()) {
|
||||
if (punishmentType != PunishmentType.ALL) {
|
||||
if (punishment.getPunishmentType() != punishmentType)
|
||||
continue;
|
||||
}
|
||||
punishments.put(punishment, Activity.ACTIVE);
|
||||
}
|
||||
}
|
||||
|
||||
if (currentActivity == Activity.EXPIRED || currentActivity == Activity.BOTH) {
|
||||
for (AppliedPunishment punishment : playerPunishData.getExpiredPunishments()) {
|
||||
if (punishmentType != PunishmentType.ALL) {
|
||||
if (punishment.getPunishmentType() != punishmentType)
|
||||
continue;
|
||||
}
|
||||
punishments.put(punishment, Activity.EXPIRED);
|
||||
}
|
||||
}
|
||||
|
||||
int currentSlot = 18;
|
||||
for (Map.Entry<AppliedPunishment, Activity> entry : punishments.entrySet()) {
|
||||
AppliedPunishment appliedPunishment = entry.getKey();
|
||||
Activity activity = entry.getValue();
|
||||
for (PunishmentHolder punishmentHolder : punishments) {
|
||||
AppliedPunishment appliedPunishment = punishmentHolder.appliedPunishment;
|
||||
Activity activity = punishmentHolder.getActivity();
|
||||
|
||||
ArrayList<String> lore = new ArrayList<>();
|
||||
lore.add("");
|
||||
|
@ -119,11 +144,13 @@ public class GUIPunishments extends AbstractGUI {
|
|||
|
||||
registerClickable(3, ((player1, inventory1, cursor, slot, type) -> {
|
||||
this.currentActivity = currentActivity.next();
|
||||
this.page = 0;
|
||||
constructGUI();
|
||||
}));
|
||||
|
||||
registerClickable(4, ((player1, inventory1, cursor, slot, type) -> {
|
||||
this.punishmentType = punishmentType.nextFilter();
|
||||
this.page = 0;
|
||||
constructGUI();
|
||||
}));
|
||||
}
|
||||
|
@ -132,6 +159,25 @@ public class GUIPunishments extends AbstractGUI {
|
|||
protected void registerOnCloses() {
|
||||
}
|
||||
|
||||
private class PunishmentHolder {
|
||||
|
||||
private final Activity activity;
|
||||
private final AppliedPunishment appliedPunishment;
|
||||
|
||||
public PunishmentHolder(Activity activity, AppliedPunishment appliedPunishment) {
|
||||
this.activity = activity;
|
||||
this.appliedPunishment = appliedPunishment;
|
||||
}
|
||||
|
||||
public Activity getActivity() {
|
||||
return activity;
|
||||
}
|
||||
|
||||
public AppliedPunishment getAppliedPunishment() {
|
||||
return appliedPunishment;
|
||||
}
|
||||
}
|
||||
|
||||
private enum Activity {
|
||||
|
||||
BOTH, ACTIVE, EXPIRED;
|
||||
|
|
|
@ -3,6 +3,7 @@ package com.songoda.ultimatemoderation.gui;
|
|||
import com.songoda.ultimatemoderation.UltimateModeration;
|
||||
import com.songoda.ultimatemoderation.punish.PunishmentType;
|
||||
import com.songoda.ultimatemoderation.punish.template.Template;
|
||||
import com.songoda.ultimatemoderation.tickets.TicketResponse;
|
||||
import com.songoda.ultimatemoderation.utils.Methods;
|
||||
import com.songoda.ultimatemoderation.utils.gui.AbstractGUI;
|
||||
import org.bukkit.Material;
|
||||
|
@ -10,11 +11,15 @@ import org.bukkit.entity.Player;
|
|||
import org.bukkit.event.inventory.ClickType;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class GUITemplateManager extends AbstractGUI {
|
||||
|
||||
private final UltimateModeration plugin;
|
||||
|
||||
private int page = 0;
|
||||
|
||||
private PunishmentType punishmentType = PunishmentType.ALL;
|
||||
|
||||
public GUITemplateManager(UltimateModeration plugin, Player player) {
|
||||
|
@ -27,13 +32,33 @@ public class GUITemplateManager extends AbstractGUI {
|
|||
@Override
|
||||
protected void constructGUI() {
|
||||
inventory.clear();
|
||||
resetClickables();
|
||||
registerClickables();
|
||||
|
||||
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
|
||||
int numTemplates = plugin.getTemplateManager().getTemplates().size();
|
||||
int maxPage = (int) Math.ceil(numTemplates / 36.0);
|
||||
|
||||
List<Template> templates = plugin.getTemplateManager().getTemplates().values().stream().skip(page * 36).limit(36)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (page != 0) {
|
||||
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
|
||||
registerClickable(1, ((player1, inventory1, cursor, slot, type) -> {
|
||||
page --;
|
||||
constructGUI();
|
||||
}));
|
||||
}
|
||||
|
||||
if (page != maxPage) {
|
||||
createButton(5, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
|
||||
registerClickable(5, ((player1, inventory1, cursor, slot, type) -> {
|
||||
page ++;
|
||||
constructGUI();
|
||||
}));
|
||||
}
|
||||
|
||||
createButton(3 ,Material.DIAMOND_SWORD, Methods.formatText("&6" + punishmentType.name()));
|
||||
|
||||
createButton(5, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
|
||||
|
||||
createButton(8, Material.OAK_DOOR, plugin.getLocale().getMessage("gui.general.back"));
|
||||
|
||||
createButton(7, Material.REDSTONE, plugin.getLocale().getMessage("gui.templatemanager.create"));
|
||||
|
@ -41,7 +66,6 @@ public class GUITemplateManager extends AbstractGUI {
|
|||
for (int i = 0; i < 9; i++)
|
||||
createButton(9 + i, Material.GRAY_STAINED_GLASS_PANE, "&1");
|
||||
|
||||
ArrayList<Template> templates = new ArrayList<>(plugin.getTemplateManager().getTemplates().values());
|
||||
if (punishmentType != PunishmentType.ALL)
|
||||
templates.removeIf(template -> template.getPunishmentType() != punishmentType);
|
||||
for (int i = 0; i < templates.size(); i++) {
|
||||
|
@ -71,6 +95,7 @@ public class GUITemplateManager extends AbstractGUI {
|
|||
|
||||
registerClickable(3, ((player1, inventory1, cursor, slot, type) -> {
|
||||
this.punishmentType = punishmentType.nextFilter();
|
||||
this.page = 0;
|
||||
constructGUI();
|
||||
}));
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ import java.text.SimpleDateFormat;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class GUITicket extends AbstractGUI {
|
||||
|
||||
|
@ -26,6 +27,7 @@ public class GUITicket extends AbstractGUI {
|
|||
private final Ticket ticket;
|
||||
|
||||
private final OfflinePlayer toModerate;
|
||||
private int page = 0;
|
||||
|
||||
public GUITicket(UltimateModeration plugin, Ticket ticket, OfflinePlayer toModerate, Player player) {
|
||||
super(player);
|
||||
|
@ -42,12 +44,30 @@ public class GUITicket extends AbstractGUI {
|
|||
resetClickables();
|
||||
registerClickables();
|
||||
|
||||
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
|
||||
int numNotes = ticket.getResponses().size();
|
||||
int maxPage = (int) Math.ceil(numNotes / 36.0);
|
||||
|
||||
List<TicketResponse> responses = ticket.getResponses().stream().skip(page * 36).limit(36)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (page != 0) {
|
||||
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
|
||||
registerClickable(1, ((player1, inventory1, cursor, slot, type) -> {
|
||||
page --;
|
||||
constructGUI();
|
||||
}));
|
||||
}
|
||||
|
||||
if (page != maxPage) {
|
||||
createButton(8, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
|
||||
registerClickable(8, ((player1, inventory1, cursor, slot, type) -> {
|
||||
page ++;
|
||||
constructGUI();
|
||||
}));
|
||||
}
|
||||
|
||||
createButton(3, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
|
||||
|
||||
createButton(8, Material.OAK_DOOR, plugin.getLocale().getMessage("gui.general.back"));
|
||||
|
||||
if (player.hasPermission("um.ticket.openclose"))
|
||||
createButton(5, Material.REDSTONE, "&6" + ticket.getStatus().getStatus());
|
||||
|
||||
|
@ -56,8 +76,6 @@ public class GUITicket extends AbstractGUI {
|
|||
for (int i = 0; i < 9; i++)
|
||||
createButton(9 + i, Material.GRAY_STAINED_GLASS_PANE, "&1");
|
||||
|
||||
List<TicketResponse> responses = ticket.getResponses();
|
||||
|
||||
for (int i = 0; i < responses.size(); i++) {
|
||||
TicketResponse ticketResponse = responses.get(i);
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ import java.text.SimpleDateFormat;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class GUITicketManager extends AbstractGUI {
|
||||
|
||||
|
@ -29,6 +30,8 @@ public class GUITicketManager extends AbstractGUI {
|
|||
|
||||
private TicketStatus status = TicketStatus.OPEN;
|
||||
|
||||
private int page = 0;
|
||||
|
||||
public GUITicketManager(UltimateModeration plugin, OfflinePlayer toModerate, Player player) {
|
||||
super(player);
|
||||
this.plugin = plugin;
|
||||
|
@ -43,12 +46,31 @@ public class GUITicketManager extends AbstractGUI {
|
|||
resetClickables();
|
||||
registerClickables();
|
||||
|
||||
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
|
||||
List<Ticket> tickets = toModerate != null ? plugin.getTicketManager().getTicketsAbout(toModerate, status) : plugin.getTicketManager().getTickets(status);
|
||||
|
||||
int numTickets = tickets.size();
|
||||
int maxPage = (int) Math.ceil(numTickets / 36.0);
|
||||
|
||||
tickets = tickets.stream().skip(page * 36).limit(36).collect(Collectors.toList());
|
||||
|
||||
if (page != 0) {
|
||||
createButton(1, Material.ARROW, plugin.getLocale().getMessage("gui.general.previous"));
|
||||
registerClickable(1, ((player1, inventory1, cursor, slot, type) -> {
|
||||
page --;
|
||||
constructGUI();
|
||||
}));
|
||||
}
|
||||
|
||||
if (maxPage >= 36) {
|
||||
createButton(5, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
|
||||
registerClickable(5, ((player1, inventory1, cursor, slot, type) -> {
|
||||
page ++;
|
||||
constructGUI();
|
||||
}));
|
||||
}
|
||||
|
||||
createButton(3 ,Material.DIAMOND_SWORD, Methods.formatText("&6" + status.getStatus()));
|
||||
|
||||
createButton(5, Material.ARROW, plugin.getLocale().getMessage("gui.general.next"));
|
||||
|
||||
if (toModerate != null)
|
||||
createButton(7, Material.REDSTONE, plugin.getLocale().getMessage("gui.tickets.create"));
|
||||
|
||||
|
@ -58,8 +80,6 @@ public class GUITicketManager extends AbstractGUI {
|
|||
for (int i = 0; i < 9; i++)
|
||||
createButton(9 + i, Material.GRAY_STAINED_GLASS_PANE, "&1");
|
||||
|
||||
List<Ticket> tickets = toModerate != null ? plugin.getTicketManager().getTicketsAbout(toModerate, status) : plugin.getTicketManager().getTickets(status);
|
||||
|
||||
for (int i = 0; i < tickets.size(); i++) {
|
||||
Ticket ticket = tickets.get(i);
|
||||
|
||||
|
@ -115,6 +135,7 @@ public class GUITicketManager extends AbstractGUI {
|
|||
|
||||
registerClickable(3, ((player1, inventory1, cursor, slot, type) -> {
|
||||
this.status = status == TicketStatus.OPEN ? TicketStatus.CLOSED : TicketStatus.OPEN;
|
||||
this.page = 0;
|
||||
constructGUI();
|
||||
}));
|
||||
|
||||
|
|
Loading…
Reference in New Issue