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.Command;
import emu.lunarcore.command.CommandArgs; import emu.lunarcore.command.CommandArgs;
import emu.lunarcore.command.CommandHandler; import emu.lunarcore.command.CommandHandler;
import emu.lunarcore.data.GameData;
import emu.lunarcore.game.player.Player; import emu.lunarcore.game.player.Player;
import emu.lunarcore.game.player.PlayerGender; import emu.lunarcore.game.player.PlayerGender;
import emu.lunarcore.server.packet.send.PacketGetHeroBasicTypeInfoScRsp; import emu.lunarcore.server.packet.send.PacketGetHeroBasicTypeInfoScRsp;
@@ -19,9 +20,10 @@ public class GenderCommand implements CommandHandler {
} }
// Set world level // Set world level
String gender = args.get(0).toLowerCase(); Player target = args.getTarget();
PlayerGender playerGender = null; PlayerGender playerGender = null;
String gender = args.get(0).toLowerCase();
switch (gender) { switch (gender) {
case "m", "male", "boy", "man" -> { case "m", "male", "boy", "man" -> {
playerGender = PlayerGender.GENDER_MAN; playerGender = PlayerGender.GENDER_MAN;
@@ -32,11 +34,21 @@ public class GenderCommand implements CommandHandler {
} }
// Change gender // Change gender
if (playerGender != null && playerGender != args.getTarget().getGender()) { if (playerGender != null && playerGender != target.getGender()) {
args.getTarget().setGender(playerGender); // Set gender first
args.getTarget().sendPacket(new PacketGetHeroBasicTypeInfoScRsp(args.getTarget())); 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 { } else {
this.sendMessage(sender, "Error: Invalid input"); this.sendMessage(sender, "Error: Invalid input");
} }

View File

@@ -11,7 +11,7 @@ public class HandlerGetAvatarDataCsReq extends PacketHandler {
@Override @Override
public void handle(GameSession session, byte[] header, byte[] data) throws Exception { 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; package emu.lunarcore.server.packet.send;
import emu.lunarcore.game.avatar.GameAvatar; import emu.lunarcore.game.avatar.GameAvatar;
import emu.lunarcore.game.player.Player;
import emu.lunarcore.proto.GetAvatarDataScRspOuterClass.GetAvatarDataScRsp; import emu.lunarcore.proto.GetAvatarDataScRspOuterClass.GetAvatarDataScRsp;
import emu.lunarcore.server.game.GameSession;
import emu.lunarcore.server.packet.BasePacket; import emu.lunarcore.server.packet.BasePacket;
import emu.lunarcore.server.packet.CmdId; import emu.lunarcore.server.packet.CmdId;
public class PacketGetAvatarDataScRsp extends BasePacket { public class PacketGetAvatarDataScRsp extends BasePacket {
public PacketGetAvatarDataScRsp(GameSession session) { public PacketGetAvatarDataScRsp(Player player) {
super(CmdId.GetAvatarDataScRsp); super(CmdId.GetAvatarDataScRsp);
var data = GetAvatarDataScRsp.newInstance() var data = GetAvatarDataScRsp.newInstance()
.setIsGetAll(true); .setIsGetAll(true);
for (GameAvatar avatar : session.getPlayer().getAvatars()) { for (GameAvatar avatar : player.getAvatars()) {
data.addAvatarList(avatar.toProto()); data.addAvatarList(avatar.toProto());
} }
this.setData(data); this.setData(data);
} }
}
}