mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-05-25 04:39:51 +08:00
Format code [skip actions]
This commit is contained in:
@@ -1,73 +1,73 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.game.inventory.GameItem;
|
||||
import emu.grasscutter.game.mail.Mail;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.EquipParamOuterClass;
|
||||
import emu.grasscutter.net.proto.GetMailItemRspOuterClass.GetMailItemRsp;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class PacketGetMailItemRsp extends BasePacket {
|
||||
|
||||
public PacketGetMailItemRsp(Player player, List<Integer> mailList) {
|
||||
super(PacketOpcodes.GetMailItemRsp);
|
||||
List<Mail> claimedMessages = new ArrayList<>();
|
||||
List<EquipParamOuterClass.EquipParam> claimedItems = new ArrayList<>();
|
||||
|
||||
GetMailItemRsp.Builder proto = GetMailItemRsp.newBuilder();
|
||||
|
||||
synchronized (player) {
|
||||
boolean modified = false;
|
||||
for (int mailId : mailList) {
|
||||
Mail message = player.getMail(mailId);
|
||||
if (!message.isAttachmentGot) { // No duplicated item
|
||||
for (Mail.MailItem mailItem : message.itemList) {
|
||||
EquipParamOuterClass.EquipParam.Builder item =
|
||||
EquipParamOuterClass.EquipParam.newBuilder();
|
||||
int promoteLevel = GameItem.getMinPromoteLevel(mailItem.itemLevel);
|
||||
|
||||
item.setItemId(mailItem.itemId);
|
||||
item.setItemNum(mailItem.itemCount);
|
||||
item.setItemLevel(mailItem.itemLevel);
|
||||
item.setPromoteLevel(promoteLevel);
|
||||
claimedItems.add(item.build());
|
||||
|
||||
GameItem gameItem = new GameItem(GameData.getItemDataMap().get(mailItem.itemId));
|
||||
gameItem.setCount(mailItem.itemCount);
|
||||
gameItem.setLevel(mailItem.itemLevel);
|
||||
gameItem.setPromoteLevel(promoteLevel);
|
||||
player.getInventory().addItem(gameItem, ActionReason.MailAttachment);
|
||||
}
|
||||
|
||||
message.isAttachmentGot = true;
|
||||
claimedMessages.add(message);
|
||||
|
||||
player.replaceMailByIndex(mailId, message);
|
||||
modified = true;
|
||||
}
|
||||
}
|
||||
if (modified) {
|
||||
player.save();
|
||||
}
|
||||
}
|
||||
|
||||
proto.addAllMailIdList(
|
||||
claimedMessages.stream().map(player::getMailId).collect(Collectors.toList()));
|
||||
proto.addAllItemList(claimedItems);
|
||||
|
||||
this.setData(proto.build());
|
||||
player
|
||||
.getSession()
|
||||
.send(
|
||||
new PacketMailChangeNotify(
|
||||
player,
|
||||
claimedMessages)); // For some reason you have to also send the MailChangeNotify
|
||||
// packet
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.game.inventory.GameItem;
|
||||
import emu.grasscutter.game.mail.Mail;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.EquipParamOuterClass;
|
||||
import emu.grasscutter.net.proto.GetMailItemRspOuterClass.GetMailItemRsp;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class PacketGetMailItemRsp extends BasePacket {
|
||||
|
||||
public PacketGetMailItemRsp(Player player, List<Integer> mailList) {
|
||||
super(PacketOpcodes.GetMailItemRsp);
|
||||
List<Mail> claimedMessages = new ArrayList<>();
|
||||
List<EquipParamOuterClass.EquipParam> claimedItems = new ArrayList<>();
|
||||
|
||||
GetMailItemRsp.Builder proto = GetMailItemRsp.newBuilder();
|
||||
|
||||
synchronized (player) {
|
||||
boolean modified = false;
|
||||
for (int mailId : mailList) {
|
||||
Mail message = player.getMail(mailId);
|
||||
if (!message.isAttachmentGot) { // No duplicated item
|
||||
for (Mail.MailItem mailItem : message.itemList) {
|
||||
EquipParamOuterClass.EquipParam.Builder item =
|
||||
EquipParamOuterClass.EquipParam.newBuilder();
|
||||
int promoteLevel = GameItem.getMinPromoteLevel(mailItem.itemLevel);
|
||||
|
||||
item.setItemId(mailItem.itemId);
|
||||
item.setItemNum(mailItem.itemCount);
|
||||
item.setItemLevel(mailItem.itemLevel);
|
||||
item.setPromoteLevel(promoteLevel);
|
||||
claimedItems.add(item.build());
|
||||
|
||||
GameItem gameItem = new GameItem(GameData.getItemDataMap().get(mailItem.itemId));
|
||||
gameItem.setCount(mailItem.itemCount);
|
||||
gameItem.setLevel(mailItem.itemLevel);
|
||||
gameItem.setPromoteLevel(promoteLevel);
|
||||
player.getInventory().addItem(gameItem, ActionReason.MailAttachment);
|
||||
}
|
||||
|
||||
message.isAttachmentGot = true;
|
||||
claimedMessages.add(message);
|
||||
|
||||
player.replaceMailByIndex(mailId, message);
|
||||
modified = true;
|
||||
}
|
||||
}
|
||||
if (modified) {
|
||||
player.save();
|
||||
}
|
||||
}
|
||||
|
||||
proto.addAllMailIdList(
|
||||
claimedMessages.stream().map(player::getMailId).collect(Collectors.toList()));
|
||||
proto.addAllItemList(claimedItems);
|
||||
|
||||
this.setData(proto.build());
|
||||
player
|
||||
.getSession()
|
||||
.send(
|
||||
new PacketMailChangeNotify(
|
||||
player,
|
||||
claimedMessages)); // For some reason you have to also send the MailChangeNotify
|
||||
// packet
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user