Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
*.class
target/
.DS_Store
*.tmp
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public class HelpCommand {
public boolean execute(CommandSender sender) {
sender.sendMessage(ChatColor.AQUA + "=== Mailboxes Commands ===");
sender.sendMessage(ChatColor.AQUA + "/m help - View a list of helpful commands.");
sender.sendMessage(ChatColor.AQUA + "/m list - List your messages.");
sender.sendMessage(ChatColor.AQUA + "/m list [type] [page] - List your messages with pagination.");
sender.sendMessage(ChatColor.AQUA + "/m open - Open a message.");
sender.sendMessage(ChatColor.AQUA + "/m send - Send a message to another player.");
sender.sendMessage(ChatColor.AQUA + "/m delete - Delete a message.");
Expand Down
36 changes: 28 additions & 8 deletions src/main/java/dansplugins/mailboxes/commands/ListCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,25 +31,45 @@ public boolean execute(CommandSender sender, String[] args) {
return false;
}

int page = 1;
int pageSize = 10;
String listType = "active";

if (args.length > 0) {
String list = args[0];
if (list.equalsIgnoreCase("active")) {
mailbox.sendListOfActiveMessagesToPlayer(player);
listType = args[0].toLowerCase();

// Parse page number if provided
if (args.length > 1) {
try {
page = Integer.parseInt(args[1]);
if (page < 1) {
player.sendMessage(ChatColor.RED + "Page number must be 1 or greater.");
return false;
}
} catch (NumberFormatException e) {
player.sendMessage(ChatColor.RED + "Invalid page number: " + args[1]);
return false;
}
}

if (listType.equals("active")) {
mailbox.sendListOfActiveMessagesToPlayer(player, page, pageSize);
}
else if (list.equalsIgnoreCase("archived")) {
mailbox.sendListOfArchivedMessagesToPlayer(player);
else if (listType.equals("archived")) {
mailbox.sendListOfArchivedMessagesToPlayer(player, page, pageSize);
}
else if (list.equalsIgnoreCase("unread")) {
mailbox.sendListOfUnreadMessagesToPlayer(player);
else if (listType.equals("unread")) {
mailbox.sendListOfUnreadMessagesToPlayer(player, page, pageSize);
}
else {
player.sendMessage(ChatColor.RED + "Sub-commands: active, archived, unread");
player.sendMessage(ChatColor.AQUA + "Usage: /m list [type] [page]");
return false;
}
return true;
}

mailbox.sendListOfActiveMessagesToPlayer(player);
mailbox.sendListOfActiveMessagesToPlayer(player, page, pageSize);
return true;
}

Expand Down
114 changes: 105 additions & 9 deletions src/main/java/dansplugins/mailboxes/objects/Mailbox.java
Original file line number Diff line number Diff line change
Expand Up @@ -97,20 +97,52 @@ public void removeActiveMessage(int ID) {
}

public void sendListOfActiveMessagesToPlayer(Player player) {
sendListOfActiveMessagesToPlayer(player, 1, 10);
}

public void sendListOfActiveMessagesToPlayer(Player player, int page, int pageSize) {
if (activeMessages.size() == 0) {
player.sendMessage(ChatColor.AQUA + "You don't have any active messages at this time.");
if (page > 1) {
player.sendMessage(ChatColor.RED + "Invalid page number. You don't have any active messages.");
} else {
player.sendMessage(ChatColor.AQUA + "You don't have any active messages at this time.");
}
return;
}

int totalPages = (int) Math.ceil((double) activeMessages.size() / pageSize);
if (page < 1 || page > totalPages) {
player.sendMessage(ChatColor.RED + "Invalid page number. Valid pages: 1-" + totalPages);
return;
}
player.sendMessage(ChatColor.AQUA + "=== Active Messages ===");

player.sendMessage(ChatColor.AQUA + "=== Active Messages (Page " + page + "/" + totalPages + ") ===");
player.sendMessage(ChatColor.AQUA + "D: date, S: sender");
for (Message message : activeMessages) {

int startIndex = (page - 1) * pageSize;
int endIndex = Math.min(startIndex + pageSize, activeMessages.size());

for (int i = startIndex; i < endIndex; i++) {
Message message = activeMessages.get(i);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String toSend = "* ID: " + message.getID() + " - D: " + dateFormat.format(message.getDate()) + " - S: " + message.getSender();
if (message.isUnread()) {
toSend = ChatColor.BOLD + toSend;
}
player.sendMessage(ChatColor.AQUA + toSend);
}

// Show navigation info
if (totalPages > 1) {
String navInfo = ChatColor.GRAY + "Page " + page + " of " + totalPages;
if (page > 1) {
navInfo += " | Previous: /m list active " + (page - 1);
}
if (page < totalPages) {
navInfo += " | Next: /m list active " + (page + 1);
}
player.sendMessage(navInfo);
}
}

public ArrayList<Message> getArchivedMessages() {
Expand Down Expand Up @@ -142,20 +174,52 @@ public void removeArchivedMessage(int ID) {
}

public void sendListOfArchivedMessagesToPlayer(Player player) {
sendListOfArchivedMessagesToPlayer(player, 1, 10);
}

public void sendListOfArchivedMessagesToPlayer(Player player, int page, int pageSize) {
if (archivedMessages.size() == 0) {
player.sendMessage(ChatColor.AQUA + "You don't have any archived messages at this time.");
if (page > 1) {
player.sendMessage(ChatColor.RED + "Invalid page number. You don't have any archived messages.");
} else {
player.sendMessage(ChatColor.AQUA + "You don't have any archived messages at this time.");
}
return;
}
player.sendMessage(ChatColor.AQUA + "=== Archived Messages ===");

int totalPages = (int) Math.ceil((double) archivedMessages.size() / pageSize);
if (page < 1 || page > totalPages) {
player.sendMessage(ChatColor.RED + "Invalid page number. Valid pages: 1-" + totalPages);
return;
}

player.sendMessage(ChatColor.AQUA + "=== Archived Messages (Page " + page + "/" + totalPages + ") ===");
player.sendMessage(ChatColor.AQUA + "D: date, S: sender");
for (Message message : archivedMessages) {

int startIndex = (page - 1) * pageSize;
int endIndex = Math.min(startIndex + pageSize, archivedMessages.size());

for (int i = startIndex; i < endIndex; i++) {
Message message = archivedMessages.get(i);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String toSend = "* ID: " + message.getID() + " - D: " + dateFormat.format(message.getDate()) + " - S: " + message.getSender();
if (message.isUnread()) {
toSend = ChatColor.BOLD + toSend;
}
player.sendMessage(ChatColor.AQUA + toSend);
}

// Show navigation info
if (totalPages > 1) {
String navInfo = ChatColor.GRAY + "Page " + page + " of " + totalPages;
if (page > 1) {
navInfo += " | Previous: /m list archived " + (page - 1);
}
if (page < totalPages) {
navInfo += " | Next: /m list archived " + (page + 1);
}
player.sendMessage(navInfo);
}
}

public void archiveMessage(Message message) {
Expand Down Expand Up @@ -195,19 +259,51 @@ public ArrayList<Message> getUnreadMessages() {
}

public void sendListOfUnreadMessagesToPlayer(Player player) {
sendListOfUnreadMessagesToPlayer(player, 1, 10);
}

public void sendListOfUnreadMessagesToPlayer(Player player, int page, int pageSize) {
ArrayList<Message> unreadMessages = getUnreadMessages();
if (unreadMessages.size() == 0) {
player.sendMessage(ChatColor.AQUA + "You don't have any unread messages at this time.");
if (page > 1) {
player.sendMessage(ChatColor.RED + "Invalid page number. You don't have any unread messages.");
} else {
player.sendMessage(ChatColor.AQUA + "You don't have any unread messages at this time.");
}
return;
}
player.sendMessage(ChatColor.AQUA + "=== Unread Messages ===");

int totalPages = (int) Math.ceil((double) unreadMessages.size() / pageSize);
if (page < 1 || page > totalPages) {
player.sendMessage(ChatColor.RED + "Invalid page number. Valid pages: 1-" + totalPages);
return;
}

player.sendMessage(ChatColor.AQUA + "=== Unread Messages (Page " + page + "/" + totalPages + ") ===");
player.sendMessage(ChatColor.AQUA + "D: date, S: sender");
for (Message message : getUnreadMessages()) {

int startIndex = (page - 1) * pageSize;
int endIndex = Math.min(startIndex + pageSize, unreadMessages.size());

for (int i = startIndex; i < endIndex; i++) {
Message message = unreadMessages.get(i);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String toSend = "* ID: " + message.getID() + " - D: " + dateFormat.format(message.getDate()) + " - S: " + message.getSender();
toSend = ChatColor.BOLD + toSend;
player.sendMessage(ChatColor.AQUA + toSend);
}

// Show navigation info
if (totalPages > 1) {
String navInfo = ChatColor.GRAY + "Page " + page + " of " + totalPages;
if (page > 1) {
navInfo += " | Previous: /m list unread " + (page - 1);
}
if (page < totalPages) {
navInfo += " | Next: /m list unread " + (page + 1);
}
player.sendMessage(navInfo);
}
}

public Map<String, String> save() {
Expand Down