More tweaks to the /gender command

This commit is contained in:
Melledy
2023-10-28 12:16:27 -07:00
parent a37175a339
commit 7839bf2a05
3 changed files with 24 additions and 11 deletions

View File

@@ -3,6 +3,7 @@ package emu.lunarcore.command.commands;
import emu.lunarcore.command.Command;
import emu.lunarcore.command.CommandArgs;
import emu.lunarcore.command.CommandHandler;
import emu.lunarcore.data.GameData;
import emu.lunarcore.game.player.Player;
import emu.lunarcore.game.player.PlayerGender;
import emu.lunarcore.server.packet.send.PacketGetHeroBasicTypeInfoScRsp;
@@ -19,9 +20,10 @@ public class GenderCommand implements CommandHandler {
}
// Set world level
String gender = args.get(0).toLowerCase();
Player target = args.getTarget();
PlayerGender playerGender = null;
String gender = args.get(0).toLowerCase();
switch (gender) {
case "m", "male", "boy", "man" -> {
playerGender = PlayerGender.GENDER_MAN;
@@ -32,11 +34,21 @@ public class GenderCommand implements CommandHandler {
}
// Change gender
if (playerGender != null && playerGender != args.getTarget().getGender()) {
args.getTarget().setGender(playerGender);
args.getTarget().sendPacket(new PacketGetHeroBasicTypeInfoScRsp(args.getTarget()));
if (playerGender != null && playerGender != target.getGender()) {
// Set gender first
target.setGender(playerGender);
target.save();
// Get first hero excel that matches our new player gender
var heroExcel = GameData.getHeroExcelMap().values().stream().filter(path -> path.getGender() == target.getGender()).findFirst().orElse(null);
if (heroExcel != null) {
// Set hero basic type
target.setHeroBasicType(heroExcel.getId());
}
this.sendMessage(sender, "Gender for " + args.getTarget().getName() + " set successfully");
// Send packet and response message
target.sendPacket(new PacketGetHeroBasicTypeInfoScRsp(target));
this.sendMessage(sender, "Gender for " + target.getName() + " set successfully");
} else {
this.sendMessage(sender, "Error: Invalid input");
}

View File

@@ -11,7 +11,7 @@ public class HandlerGetAvatarDataCsReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] data) throws Exception {
session.send(new PacketGetAvatarDataScRsp(session));
session.send(new PacketGetAvatarDataScRsp(session.getPlayer()));
}
}

View File

@@ -1,23 +1,24 @@
package emu.lunarcore.server.packet.send;
import emu.lunarcore.game.avatar.GameAvatar;
import emu.lunarcore.game.player.Player;
import emu.lunarcore.proto.GetAvatarDataScRspOuterClass.GetAvatarDataScRsp;
import emu.lunarcore.server.game.GameSession;
import emu.lunarcore.server.packet.BasePacket;
import emu.lunarcore.server.packet.CmdId;
public class PacketGetAvatarDataScRsp extends BasePacket {
public PacketGetAvatarDataScRsp(GameSession session) {
public PacketGetAvatarDataScRsp(Player player) {
super(CmdId.GetAvatarDataScRsp);
var data = GetAvatarDataScRsp.newInstance()
.setIsGetAll(true);
for (GameAvatar avatar : session.getPlayer().getAvatars()) {
for (GameAvatar avatar : player.getAvatars()) {
data.addAvatarList(avatar.toProto());
}
this.setData(data);
}
}
}