diff --git a/src/main/java/emu/lunarcore/game/player/Player.java b/src/main/java/emu/lunarcore/game/player/Player.java index f26d148..debdea8 100644 --- a/src/main/java/emu/lunarcore/game/player/Player.java +++ b/src/main/java/emu/lunarcore/game/player/Player.java @@ -147,6 +147,14 @@ public class Player { return false; } + public void setSignature(String signature) { + if (signature.length() > 50) { // Client's max signature length is 50 + signature = signature.substring(0, 49); + } + this.signature = signature; + this.save(); + } + public int setBirthday(int birthday) { if (this.birthday == 0) { int month = birthday / 100; diff --git a/src/main/java/emu/lunarcore/server/packet/recv/HandlerSetSignatureCsReq.java b/src/main/java/emu/lunarcore/server/packet/recv/HandlerSetSignatureCsReq.java new file mode 100644 index 0000000..93f778f --- /dev/null +++ b/src/main/java/emu/lunarcore/server/packet/recv/HandlerSetSignatureCsReq.java @@ -0,0 +1,21 @@ +package emu.lunarcore.server.packet.recv; + +import emu.lunarcore.proto.SetSignatureCsReqOuterClass.SetSignatureCsReq; +import emu.lunarcore.server.game.GameSession; +import emu.lunarcore.server.packet.CmdId; +import emu.lunarcore.server.packet.Opcodes; +import emu.lunarcore.server.packet.PacketHandler; +import emu.lunarcore.server.packet.send.PacketSetSignatureScRsp; + +@Opcodes(CmdId.SetSignatureCsReq) +public class HandlerSetSignatureCsReq extends PacketHandler { + + @Override + public void handle(GameSession session, byte[] header, byte[] data) throws Exception { + var req = SetSignatureCsReq.parseFrom(data); + + session.getPlayer().setSignature(req.getSignature()); + session.send(new PacketSetSignatureScRsp(session.getPlayer())); + } + +} diff --git a/src/main/java/emu/lunarcore/server/packet/send/PacketSetSignatureScRsp.java b/src/main/java/emu/lunarcore/server/packet/send/PacketSetSignatureScRsp.java new file mode 100644 index 0000000..8269676 --- /dev/null +++ b/src/main/java/emu/lunarcore/server/packet/send/PacketSetSignatureScRsp.java @@ -0,0 +1,18 @@ +package emu.lunarcore.server.packet.send; + +import emu.lunarcore.game.player.Player; +import emu.lunarcore.proto.SetSignatureScRspOuterClass.SetSignatureScRsp; +import emu.lunarcore.server.packet.BasePacket; +import emu.lunarcore.server.packet.CmdId; + +public class PacketSetSignatureScRsp extends BasePacket { + + public PacketSetSignatureScRsp(Player player) { + super(CmdId.SetSignatureScRsp); + + var data = SetSignatureScRsp.newInstance() + .setSignature(player.getSignature()); + + this.setData(data); + } +}