Someone can check if this code work?, thank you for the collab
JavaScript:
// File path: java/com/l2jserver/gameserver/services/AppearanceManager.java
package services;
import l2.commons.listener.EventListener;
import l2.gameserver.GameServer;
import l2.gameserver.model.Player;
import l2.gameserver.network.l2.s2c.MagicSkillUse;
import l2.gameserver.scripts.Functions;
import l2.gameserver.scripts.ScriptFile;
import l2.gameserver.utils.ItemFunctions;
public class AppearanceManager extends Functions implements ScriptFile, EventListener {
private static final String EVENT_APPEARANCE_CHANGE = "appearanceChange";
private static final String[] LISTENING_EVENTS = new String[]{EVENT_APPEARANCE_CHANGE};
@Override
public String[] listeningEventTypes() {
return LISTENING_EVENTS;
}
@Override
public void onEvent(String eventType, Object... args) {
if(eventType.equals(EVENT_APPEARANCE_CHANGE)) {
handleAppearanceChange((Player) args[0], (String) args[1], (String) args[2]);
}
}
private void handleAppearanceChange(Player player, String command, String value) {
switch (command) {
case "name":
changeName(player, value);
break;
case "nameColor":
changeNameColor(player, value);
break;
case "titleColor":
changeTitleColor(player, value);
break;
case "sex":
changeSex(player);
break;
case "face":
changeFace(player, value);
break;
case "hairStyle":
changeHairStyle(player, value);
break;
default:
player.sendMessage("Invalid appearance change command.");
}
}
private void changeName(Player player, String newName) {
if (newName.length() <= 16 && CharNameTable.getInstance().getIdByName(newName) == 0) {
player.setName(newName);
player.store();
player.sendMessage("Name successfully changed to " + newName);
player.broadcastUserInfo();
} else {
player.sendMessage("Invalid name or name already exists.");
}
}
private void changeNameColor(Player player, String color) {
try {
player.getAppearance().setNameColor(Integer.decode("0x" + color));
player.sendMessage("Name color changed to " + color);
player.broadcastUserInfo();
} catch (Exception e) {
player.sendMessage("Invalid color code.");
}
}
private void changeTitleColor(Player player, String color) {
try {
player.getAppearance().setTitleColor(Integer.decode("0x" + color));
player.sendMessage("Title color changed to " + color);
player.broadcastUserInfo();
} catch (Exception e) {
player.sendMessage("Invalid color code.");
}
}
private void changeSex(Player player) {
player.getAppearance().setSex(!player.getAppearance().getSex());
player.sendMessage("Sex changed.");
player.broadcastUserInfo();
}
private void changeFace(Player player, String faceId) {
try {
int face = Integer.parseInt(faceId);
if (face >= 0 && face <= 2) {
player.getAppearance().setFace(face);
player.sendMessage("Face changed to " + face);
player.broadcastUserInfo();
} else {
player.sendMessage("Invalid face id.");
}
} catch (NumberFormatException e) {
player.sendMessage("Invalid face id.");
}
}
private void changeHairStyle(Player player, String hairStyleId) {
try {
int hairStyle = Integer.parseInt(hairStyleId);
if (hairStyle >= 0 && hairStyle <= 3) {
player.getAppearance().setHairStyle(hairStyle);
player.sendMessage("Hair style changed to " + hairStyle);
player.broadcastUserInfo();
} else {
player.sendMessage("Invalid hair style id.");
}
} catch (NumberFormatException e) {
player.sendMessage("Invalid hair style id.");
}
}
@Override
public void onLoad() {
GameServer.getInstance().getListeners().addEventListener(this);
}
@Override
public void onReload() {
}
@Override
public void onShutdown() {
}
}
JavaScript:
// File path: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
// Add new fields and methods for appearance
public class L2PcInstance {
private String _nameColor = "FFFFFF";
private String _titleColor = "FFFFFF";
public String getNameColor() {
return _nameColor;
}
public void setNameColor(String nameColor) {
_nameColor = nameColor;
}
public String getTitleColor() {
return _titleColor;
}
public void setTitleColor(String titleColor) {
_titleColor = titleColor;
}
// Update existing methods to include new fields
public void restoreChar() {
// ...
_nameColor = rset.getString("namec");
_titleColor = rset.getString("title_color");
// ...
}
public void storeChar() {
// ...
statement.setString(53, _nameColor);
statement.setString(54, _titleColor);
statement.setInt(55, getObjectId());
// ...
}
}
// File path: java/com/l2jserver/gameserver/model/actor/appearance/PcAppearance.java
public class PcAppearance {
private byte _face;
private byte _hairStyle;
private byte _hairColor;
private boolean _sex;
public byte getFace() {
return _face;
}
public void setFace(int face) {
_face = (byte) face;
}
public byte getHairStyle() {
return _hairStyle;
}
public void setHairStyle(int hairStyle) {
_hairStyle = (byte) hairStyle;
}
public byte getHairColor() {
return _hairColor;
}
public void setHairColor(int hairColor) {
_hairColor = (byte) hairColor;
}
public boolean getSex() {
return _sex;
}
public void setSex(boolean sex) {
_sex = sex;
}
}