mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-13 22:04:36 +01:00
More tweaks to the /gender command
This commit is contained in:
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user