From 0fa2380e7d7fa0b085a1d3a0140bae1454fc44da Mon Sep 17 00:00:00 2001 From: Melledy <121644117+Melledy@users.noreply.github.com> Date: Fri, 24 Nov 2023 20:17:00 -0800 Subject: [PATCH] Send welcome mail on player creation --- src/main/java/emu/lunarcore/Config.java | 24 +++++++++++++++++++ .../emu/lunarcore/data/common/ItemParam.java | 2 +- .../java/emu/lunarcore/game/mail/Mailbox.java | 14 +++++++++++ .../emu/lunarcore/game/player/Player.java | 3 +++ 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/src/main/java/emu/lunarcore/Config.java b/src/main/java/emu/lunarcore/Config.java index 3e2ef22..eb80f38 100644 --- a/src/main/java/emu/lunarcore/Config.java +++ b/src/main/java/emu/lunarcore/Config.java @@ -1,7 +1,9 @@ package emu.lunarcore; +import java.util.List; import java.util.Set; +import emu.lunarcore.data.common.ItemParam; import lombok.Getter; @Getter @@ -91,6 +93,7 @@ public class Config { public int staminaReserveRecoveryRate = 18 * 60; public String language = "EN"; public Set defaultPermissions = Set.of("*"); + public WelcomeMail welcomeMail = new WelcomeMail(); public int getStaminaRecoveryRate() { return staminaRecoveryRate > 0 ? staminaRecoveryRate : 1; @@ -101,6 +104,27 @@ public class Config { } } + @Getter + public static class WelcomeMail { + public String title; + public String sender; + public String content; + public List attachments; + + public WelcomeMail() { + this.title = "Welcome to a LunarCore server"; + this.sender = "Server"; + this.content = "Welcome to Lunar Core! Please take these items as a starter gift. For a list of commands, type /help in the server chat window. Check out our Discord for more information about the server."; + this.attachments = List.of( + new ItemParam(2, 1000000), + new ItemParam(101, 100), + new ItemParam(102, 100), + new ItemParam(1001, 1), + new ItemParam(1002, 1) + ); + } + } + @Getter public static class LogOptions { public boolean commands = true; diff --git a/src/main/java/emu/lunarcore/data/common/ItemParam.java b/src/main/java/emu/lunarcore/data/common/ItemParam.java index 544cc93..7f59e19 100644 --- a/src/main/java/emu/lunarcore/data/common/ItemParam.java +++ b/src/main/java/emu/lunarcore/data/common/ItemParam.java @@ -13,7 +13,7 @@ public class ItemParam { @SerializedName(value = "count", alternate = {"ItemCount", "ItemNum"}) private int count; - private ItemParamType type = ItemParamType.PILE; + private transient ItemParamType type = ItemParamType.PILE; public ItemParam() { // Gson diff --git a/src/main/java/emu/lunarcore/game/mail/Mailbox.java b/src/main/java/emu/lunarcore/game/mail/Mailbox.java index ac6e213..a3970b3 100644 --- a/src/main/java/emu/lunarcore/game/mail/Mailbox.java +++ b/src/main/java/emu/lunarcore/game/mail/Mailbox.java @@ -6,6 +6,7 @@ import java.util.List; import java.util.stream.Stream; import emu.lunarcore.LunarCore; +import emu.lunarcore.data.common.ItemParam; import emu.lunarcore.game.inventory.GameItem; import emu.lunarcore.game.player.BasePlayerManager; import emu.lunarcore.game.player.Player; @@ -116,6 +117,19 @@ public class Mailbox extends BasePlayerManager implements Iterable { return deleteList; } + public void sendWelcomeMail() { + var welcomeMail = LunarCore.getConfig().getServerOptions().welcomeMail; + if (welcomeMail == null) return; + + Mail mail = new Mail(welcomeMail.getTitle(), welcomeMail.getSender(), welcomeMail.getContent()); + + for (ItemParam param : welcomeMail.getAttachments()) { + mail.addAttachment(new GameItem(param.getId(), param.getCount())); + } + + this.sendMail(mail); + } + // Internal method to put mail into the hash map private void putMail(Mail mail) { mail.setUniqueId(this.getNextMailId()); diff --git a/src/main/java/emu/lunarcore/game/player/Player.java b/src/main/java/emu/lunarcore/game/player/Player.java index 19dd0bd..289f8cd 100644 --- a/src/main/java/emu/lunarcore/game/player/Player.java +++ b/src/main/java/emu/lunarcore/game/player/Player.java @@ -169,6 +169,9 @@ public class Player { this.addAvatar(avatar); this.getCurrentLineup().getAvatars().add(avatar.getAvatarId()); this.getCurrentLineup().save(); + + // Welcome mail + this.getMailbox().sendWelcomeMail(); } public GameServer getServer() {