package emu.grasscutter.server.packet.send; import emu.grasscutter.Grasscutter; import emu.grasscutter.game.mail.Mail; import emu.grasscutter.game.player.Player; import emu.grasscutter.net.packet.BasePacket; import emu.grasscutter.net.packet.PacketOpcodes; import emu.grasscutter.net.proto.*; import java.util.ArrayList; import java.util.List; public class PacketMailChangeNotify extends BasePacket { public PacketMailChangeNotify(Player player, Mail message) { this (player, new ArrayList(){{add(message);}}); } public PacketMailChangeNotify(Player player, List mailList) { this(player, mailList, null); } public PacketMailChangeNotify(Player player, List mailList, List delMailIdList) { super(PacketOpcodes.MailChangeNotify); MailChangeNotifyOuterClass.MailChangeNotify.Builder proto = MailChangeNotifyOuterClass.MailChangeNotify.newBuilder(); if (mailList != null) { for (Mail message : mailList) { MailTextContentOuterClass.MailTextContent.Builder mailTextContent = MailTextContentOuterClass.MailTextContent.newBuilder(); mailTextContent.setTitle(message.mailContent.title); mailTextContent.setContent(message.mailContent.content); mailTextContent.setSender(message.mailContent.sender); List mailItems = new ArrayList(); for (Mail.MailItem item : message.itemList) { MailItemOuterClass.MailItem.Builder mailItem = MailItemOuterClass.MailItem.newBuilder(); ItemParamOuterClass.ItemParam.Builder itemParam = ItemParamOuterClass.ItemParam.newBuilder(); itemParam.setItemId(item.itemId); itemParam.setCount(item.itemCount); mailItem.setItemParam(itemParam.build()); mailItems.add(mailItem.build()); } MailDataOuterClass.MailData.Builder mailData = MailDataOuterClass.MailData.newBuilder(); mailData.setMailId(player.getMailId(message)); mailData.setMailTextContent(mailTextContent.build()); mailData.addAllItemList(mailItems); mailData.setSendTime((int) message.sendTime); mailData.setExpireTime((int) message.expireTime); mailData.setImportance(message.importance); mailData.setIsRead(message.isRead); mailData.setIsAttachmentGot(message.isAttachmentGot); mailData.setStateValue(message.stateValue); proto.addMailList(mailData.build()); } } if(delMailIdList != null) { proto.addAllDelMailIdList(delMailIdList); } this.setData(proto.build()); } }