mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-05-19 11:29:54 +08:00
Receiving items in mail
This commit is contained in:
@@ -1,13 +1,21 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.GenshinData;
|
||||
import emu.grasscutter.game.GenshinPlayer;
|
||||
import emu.grasscutter.game.Mail;
|
||||
import emu.grasscutter.game.inventory.GenshinItem;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.EquipParamOuterClass;
|
||||
import emu.grasscutter.net.proto.GetMailItemRspOuterClass.GetMailItemRsp;
|
||||
import emu.grasscutter.net.proto.ItemParamOuterClass;
|
||||
import emu.grasscutter.net.proto.MailItemOuterClass;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class PacketGetMailItemRsp extends GenshinPacket {
|
||||
|
||||
@@ -17,15 +25,40 @@ public class PacketGetMailItemRsp extends GenshinPacket {
|
||||
//I'm assuming that this is to receive the attachments on the message.
|
||||
// TODO: This.
|
||||
|
||||
//GetMailItemRsp.Builder proto = GetMailItemRsp.newBuilder();
|
||||
List<Mail> claimedMessages = new ArrayList<>();
|
||||
List<EquipParamOuterClass.EquipParam> claimedItems = new ArrayList<>();
|
||||
|
||||
//MailItemOuterClass.MailItem.Builder mailItem = MailItemOuterClass.MailItem.newBuilder();
|
||||
GetMailItemRsp.Builder proto = GetMailItemRsp.newBuilder();
|
||||
|
||||
//ItemParamOuterClass.ItemParam.Builder itemParam = ItemParamOuterClass.ItemParam.newBuilder();
|
||||
for (int mailId : mailList) {
|
||||
Mail message = player.getMailById(mailId);
|
||||
int messageIndex = player.getMailIndex(message);
|
||||
|
||||
//mailItem.setItemParam(itemParam);
|
||||
message.isAttachmentGot = true;
|
||||
claimedMessages.add(message);
|
||||
|
||||
//proto.addAllMailIdList(mailList);
|
||||
//proto.addItemList();
|
||||
player.replaceMailByIndex(messageIndex, message);
|
||||
|
||||
for(Mail.MailItem mailItem : message.itemList) {
|
||||
//TODO: Actually give the item
|
||||
EquipParamOuterClass.EquipParam.Builder item = EquipParamOuterClass.EquipParam.newBuilder();
|
||||
item.setItemId(mailItem.itemId);
|
||||
item.setItemNum(mailItem.itemCount);
|
||||
claimedItems.add(item.build());
|
||||
|
||||
GenshinItem genshinItem = new GenshinItem(GenshinData.getItemDataMap().get(mailItem.itemId));
|
||||
genshinItem.setCount(mailItem.itemCount);
|
||||
player.getInventory().addItem(genshinItem);
|
||||
player.sendPacket(new PacketItemAddHintNotify(genshinItem, ActionReason.MailAttachment));
|
||||
}
|
||||
}
|
||||
|
||||
proto.addAllMailIdList(claimedMessages.stream().map(Mail::getId).collect(Collectors.toList()));
|
||||
proto.addAllItemList(claimedItems);
|
||||
player.save();
|
||||
|
||||
Grasscutter.getLogger().info(Grasscutter.getDispatchServer().getGsonFactory().toJson(proto.build()));
|
||||
this.setData(proto.build());
|
||||
player.getSession().send(new PacketMailChangeNotify(player, claimedMessages));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user