mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-14 14:24:37 +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.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");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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()));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user