mirror of
https://github.com/Coooookies/Grasscutter-MeaMailPlus.git
synced 2024-11-22 09:28:55 +00:00
fix: Mail can't be sent to Offline player
This commit is contained in:
parent
21c23459ee
commit
7134419738
@ -73,11 +73,17 @@ public class PluginCommand implements CommandHandler {
|
|||||||
|
|
||||||
int uid = Integer.parseInt(args.get(2));
|
int uid = Integer.parseInt(args.get(2));
|
||||||
CommandHandler.sendMessage(sender, "Mail Sending...");
|
CommandHandler.sendMessage(sender, "Mail Sending...");
|
||||||
Grasscutter.getGameServer().getPlayers().forEach((index, player) -> {
|
MailCore.sendMailToPlayer(uid, template, false);
|
||||||
if (player.getUid() == uid) {
|
}
|
||||||
MailCore.sendMailToPlayer(player, template);
|
case "sendonline" -> {
|
||||||
}
|
if (template == null) {
|
||||||
});
|
CommandHandler.sendMessage(sender, "Invalid template id.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int uid = Integer.parseInt(args.get(2));
|
||||||
|
CommandHandler.sendMessage(sender, "Mail Sending...");
|
||||||
|
MailCore.sendMailToPlayer(uid, template, true);
|
||||||
}
|
}
|
||||||
case "sendall" -> {
|
case "sendall" -> {
|
||||||
if (template == null) {
|
if (template == null) {
|
||||||
|
@ -12,11 +12,42 @@ import java.time.Instant;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
public final class MailCore {
|
public final class MailCore {
|
||||||
|
public static void saveMailToDatabase(Player player, MeaMailTemplate template) {
|
||||||
|
saveMailToDatabase(player, template, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void saveMailToDatabase(Player player, MeaMailTemplate template, int minLevel) {
|
||||||
|
if (player.getLevel() < minLevel) return;
|
||||||
|
|
||||||
|
Mail mail = templateToMail(template);
|
||||||
|
mail.setOwnerUid(player.getUid());
|
||||||
|
DatabaseHelper.saveMail(mail);
|
||||||
|
MeaMailPlusCore.getInstance().logger("Mail sent to " + player.getUid() + "(Offline): " + template.title);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void sendMailToPlayer(int uid, MeaMailTemplate template, boolean onlineOnly) {
|
||||||
|
AtomicBoolean mailSent = new AtomicBoolean(false);
|
||||||
|
Grasscutter.getGameServer().getPlayers().forEach((index, player) -> {
|
||||||
|
if (player.getUid() == uid) {
|
||||||
|
mailSent.set(true);
|
||||||
|
sendMailToPlayer(player, template);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if(!onlineOnly && !mailSent.get()) {
|
||||||
|
DatabaseHelper.getAllPlayers().forEach(player -> {
|
||||||
|
if (player.getUid() == uid) {
|
||||||
|
saveMailToDatabase(player, template);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void sendMailToPlayer(Player player, MeaMailTemplate template) {
|
public static void sendMailToPlayer(Player player, MeaMailTemplate template) {
|
||||||
sendMailToPlayer(player, template, 0);
|
sendMailToPlayer(player, template, 0);
|
||||||
}
|
}
|
||||||
@ -112,7 +143,7 @@ public final class MailCore {
|
|||||||
|
|
||||||
// two methods to send mail
|
// two methods to send mail
|
||||||
onlinePlayers.forEach(player -> sendMailToPlayer(player, template, minLevel));
|
onlinePlayers.forEach(player -> sendMailToPlayer(player, template, minLevel));
|
||||||
offlinePlayers.forEach(player -> sendMailToPlayer(player, template, minLevel));
|
offlinePlayers.forEach(player -> saveMailToDatabase(player, template, minLevel));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendDailySignInMailToPlayer(int uid) {
|
public static void sendDailySignInMailToPlayer(int uid) {
|
||||||
|
Loading…
Reference in New Issue
Block a user