mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-15 00:15:33 +01:00
Added database support for mail
Send mail command now works from console (to use it from console change the uuid in the 'SendMailCommand' file
This commit is contained in:
@@ -34,28 +34,7 @@ import emu.grasscutter.net.proto.SocialDetailOuterClass.SocialDetail;
|
||||
import emu.grasscutter.net.proto.WorldPlayerLocationInfoOuterClass.WorldPlayerLocationInfo;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketAbilityInvocationsNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarAddNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarDataNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarGainCostumeNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketAvatarGainFlycloakNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketClientAbilityInitFinishNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketCombatInvocationsNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketGadgetInteractRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketItemAddHintNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketOpenStateUpdateNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerApplyEnterMpResultNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerDataNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerEnterSceneNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerPropNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketPlayerStoreNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketPrivateChatNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketScenePlayerLocationNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketSetNameCardRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketStoreWeightLimitNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketUnlockNameCardNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketWorldPlayerLocationNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketWorldPlayerRTTNotify;
|
||||
import emu.grasscutter.server.packet.send.*;
|
||||
import emu.grasscutter.utils.Position;
|
||||
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
@@ -94,6 +73,7 @@ public class GenshinPlayer {
|
||||
private MpSettingType mpSetting = MpSettingType.MpSettingEnterAfterApply;
|
||||
private boolean showAvatar;
|
||||
private ArrayList<AvatarProfileData> shownAvatars;
|
||||
private ArrayList<Mail> mail;
|
||||
|
||||
private int sceneId;
|
||||
private int regionId;
|
||||
@@ -130,7 +110,9 @@ public class GenshinPlayer {
|
||||
this.nameCardList = new HashSet<>();
|
||||
this.flyCloakList = new HashSet<>();
|
||||
this.costumeList = new HashSet<>();
|
||||
|
||||
|
||||
this.mail = new ArrayList<>();
|
||||
|
||||
this.setSceneId(3);
|
||||
this.setRegionId(1);
|
||||
this.sceneState = SceneLoadState.NONE;
|
||||
@@ -582,6 +564,16 @@ public class GenshinPlayer {
|
||||
public void sendMessage(GenshinPlayer sender, Object message) {
|
||||
this.sendPacket(new PacketPrivateChatNotify(sender.getUid(), this.getUid(), message.toString()));
|
||||
}
|
||||
|
||||
public List<Mail> getMail() { return mail; }
|
||||
|
||||
public void sendMail(Mail message) {
|
||||
|
||||
this.mail.add(message);
|
||||
message._id = this.mail.size() + 1;
|
||||
this.save();
|
||||
this.sendPacket(new PacketMailChangeNotify(this, message));
|
||||
}
|
||||
|
||||
public void interactWith(int gadgetEntityId) {
|
||||
GenshinEntity entity = getScene().getEntityById(gadgetEntityId);
|
||||
|
||||
99
src/main/java/emu/grasscutter/game/Mail.java
Normal file
99
src/main/java/emu/grasscutter/game/Mail.java
Normal file
@@ -0,0 +1,99 @@
|
||||
package emu.grasscutter.game;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Mail {
|
||||
|
||||
public int _id;
|
||||
public MailContent mailContent;
|
||||
public List<MailItem> itemList;
|
||||
public long sendTime;
|
||||
public long expireTime;
|
||||
public int importance;
|
||||
public boolean isRead;
|
||||
public boolean isAttachmentGot;
|
||||
public int stateValue;
|
||||
|
||||
public Mail() {
|
||||
_id = 1;
|
||||
mailContent = new MailContent("No title set...", "No content set...");
|
||||
itemList = new ArrayList<>();
|
||||
sendTime = 0;
|
||||
expireTime = 0;
|
||||
importance = 1;
|
||||
isRead = true;
|
||||
isAttachmentGot = true;
|
||||
stateValue = 1;
|
||||
}
|
||||
|
||||
public Mail(MailContent mailContent, List<MailItem> itemList, long expireTime) {
|
||||
this(mailContent, itemList, expireTime, 1);
|
||||
}
|
||||
|
||||
public Mail(MailContent mailContent, List<MailItem> itemList, long expireTime, int importance) {
|
||||
this(mailContent, itemList, expireTime, importance, 1);
|
||||
}
|
||||
|
||||
public Mail(MailContent mailContent, List<MailItem> itemList, long expireTime, int importance, int state) {
|
||||
this(0, mailContent, itemList, expireTime, importance, state);
|
||||
}
|
||||
|
||||
public Mail(int _id, MailContent mailContent, List<MailItem> itemList, long expireTime, int importance, int state) {
|
||||
this._id = _id;
|
||||
this.mailContent = mailContent;
|
||||
this.itemList = itemList;
|
||||
this.sendTime = (int) Instant.now().EPOCH.getEpochSecond();
|
||||
this.expireTime = expireTime;
|
||||
this.importance = importance;
|
||||
this.isRead = false;
|
||||
this.isAttachmentGot = false;
|
||||
this.stateValue = state;
|
||||
}
|
||||
|
||||
public static class MailContent {
|
||||
public String title;
|
||||
public String content;
|
||||
public String sender;
|
||||
|
||||
public MailContent() {
|
||||
this.title = "";
|
||||
this.content = "loading...";
|
||||
this.sender = "loading";
|
||||
}
|
||||
|
||||
public MailContent(String title, String content) {
|
||||
this(title, content, "Server");
|
||||
}
|
||||
|
||||
public MailContent(String title, String content, GenshinPlayer sender) {
|
||||
this(title, content, sender.getNickname());
|
||||
}
|
||||
|
||||
public MailContent(String title, String content, String sender) {
|
||||
this.title = title;
|
||||
this.content = content;
|
||||
this.sender = sender;
|
||||
}
|
||||
}
|
||||
|
||||
public static class MailItem {
|
||||
public int itemId;
|
||||
public int itemCount;
|
||||
|
||||
public MailItem() {
|
||||
this.itemId = 11101;
|
||||
this.itemCount = 1;
|
||||
}
|
||||
|
||||
public MailItem(int itemId) {
|
||||
this(itemId, 1);
|
||||
}
|
||||
|
||||
public MailItem(int itemId, int itemCount) {
|
||||
this.itemId = itemId;
|
||||
this.itemCount = itemCount;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user