Reformat and clean up "net" package

This commit is contained in:
P0nk
2021-09-09 23:26:02 +02:00
parent 69f4580637
commit 6be6ea9927
235 changed files with 3556 additions and 3398 deletions

View File

@@ -30,7 +30,7 @@ public class CustomPacketHandler implements PacketHandler {
@Override
public void handlePacket(InPacket p, Client c) {
if (p.available() > 0 && c.getGMLevel() == 4) {//w/e
c.sendPacket(PacketCreator.customPacket(p.readBytes((int) p.available())));
c.sendPacket(PacketCreator.customPacket(p.readBytes(p.available())));
}
}

View File

@@ -26,7 +26,7 @@ import net.PacketHandler;
import net.packet.InPacket;
public final class LoginRequiringNoOpHandler implements PacketHandler {
private static LoginRequiringNoOpHandler instance = new LoginRequiringNoOpHandler();
private static final LoginRequiringNoOpHandler instance = new LoginRequiringNoOpHandler();
public static LoginRequiringNoOpHandler getInstance() {
return instance;

View File

@@ -6,7 +6,6 @@ import net.packet.InPacket;
import tools.PacketCreator;
/**
*
* @author kevintjuh93
*/
public final class AcceptToSHandler extends AbstractPacketHandler {

View File

@@ -38,7 +38,7 @@ import java.net.UnknownHostException;
public final class CharSelectedHandler extends AbstractPacketHandler {
private static final Logger log = LoggerFactory.getLogger(CharSelectedHandler.class);
private static int parseAntiMulticlientError(AntiMulticlientResult res) {
return switch (res) {
case REMOTE_PROCESSING -> 10;
@@ -48,11 +48,11 @@ public final class CharSelectedHandler extends AbstractPacketHandler {
default -> 9;
};
}
@Override
public final void handlePacket(InPacket p, Client c) {
int charId = p.readInt();
String macs = p.readString();
String hostString = p.readString();
@@ -64,7 +64,7 @@ public final class CharSelectedHandler extends AbstractPacketHandler {
c.sendPacket(PacketCreator.getAfterLoginError(17));
return;
}
c.updateMacs(macs);
c.updateHwid(hwid);
@@ -73,34 +73,34 @@ public final class CharSelectedHandler extends AbstractPacketHandler {
c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res)));
return;
}
if (c.hasBannedMac() || c.hasBannedHWID()) {
SessionCoordinator.getInstance().closeSession(c, true);
return;
}
Server server = Server.getInstance();
if(!server.haveCharacterEntry(c.getAccID(), charId)) {
if (!server.haveCharacterEntry(c.getAccID(), charId)) {
SessionCoordinator.getInstance().closeSession(c, true);
return;
}
c.setWorld(server.getCharacterWorld(charId));
World wserv = c.getWorldServer();
if(wserv == null || wserv.isWorldCapacityFull()) {
if (wserv == null || wserv.isWorldCapacityFull()) {
c.sendPacket(PacketCreator.getAfterLoginError(10));
return;
}
String[] socket = server.getInetSocket(c, c.getWorld(), c.getChannel());
if(socket == null) {
if (socket == null) {
c.sendPacket(PacketCreator.getAfterLoginError(10));
return;
}
server.unregisterLoginState(c);
c.setCharacterOnSessionTransitionState(charId);
try {
c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId));
} catch (UnknownHostException | NumberFormatException e) {

View File

@@ -27,12 +27,12 @@ public class CharSelectedWithPicHandler extends AbstractPacketHandler {
default -> 9;
};
}
@Override
public void handlePacket(InPacket p, Client c) {
String pic = p.readString();
int charId = p.readInt();
String macs = p.readString();
String hostString = p.readString();
@@ -44,7 +44,7 @@ public class CharSelectedWithPicHandler extends AbstractPacketHandler {
c.sendPacket(PacketCreator.getAfterLoginError(17));
return;
}
c.updateMacs(macs);
c.updateHwid(hwid);
@@ -52,36 +52,36 @@ public class CharSelectedWithPicHandler extends AbstractPacketHandler {
SessionCoordinator.getInstance().closeSession(c, true);
return;
}
Server server = Server.getInstance();
if(!server.haveCharacterEntry(c.getAccID(), charId)) {
if (!server.haveCharacterEntry(c.getAccID(), charId)) {
SessionCoordinator.getInstance().closeSession(c, true);
return;
}
if (c.checkPic(pic)) {
c.setWorld(server.getCharacterWorld(charId));
World wserv = c.getWorldServer();
if(wserv == null || wserv.isWorldCapacityFull()) {
if (wserv == null || wserv.isWorldCapacityFull()) {
c.sendPacket(PacketCreator.getAfterLoginError(10));
return;
}
String[] socket = server.getInetSocket(c, c.getWorld(), c.getChannel());
if(socket == null) {
if (socket == null) {
c.sendPacket(PacketCreator.getAfterLoginError(10));
return;
}
AntiMulticlientResult res = SessionCoordinator.getInstance().attemptGameSession(c, c.getAccID(), hwid);
if (res != AntiMulticlientResult.SUCCESS) {
c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res)));
return;
}
server.unregisterLoginState(c);
c.setCharacterOnSessionTransitionState(charId);
try {
c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId));
} catch (UnknownHostException | NumberFormatException e) {

View File

@@ -35,20 +35,20 @@ public final class CharlistRequestHandler extends AbstractPacketHandler {
public final void handlePacket(InPacket p, Client c) {
p.readByte();
int world = p.readByte();
World wserv = Server.getInstance().getWorld(world);
if(wserv == null || wserv.isWorldCapacityFull()) {
if (wserv == null || wserv.isWorldCapacityFull()) {
c.sendPacket(PacketCreator.getServerStatus(2));
return;
}
int channel = p.readByte() + 1;
Channel ch = wserv.getChannel(channel);
if(ch == null) {
if (ch == null) {
c.sendPacket(PacketCreator.getServerStatus(2));
return;
}
c.setWorld(world);
c.setChannel(channel);
c.sendCharList(world);

View File

@@ -35,61 +35,60 @@ import java.util.HashSet;
import java.util.Set;
public final class CreateCharHandler extends AbstractPacketHandler {
private final static Set<Integer> IDs = new HashSet<>(Arrays.asList(new Integer[]{
1302000, 1312004, 1322005, 1442079,// weapons
1040002, 1040006, 1040010, 1041002, 1041006, 1041010, 1041011, 1042167,// bottom
1060002, 1060006, 1061002, 1061008, 1062115, // top
1072001, 1072005, 1072037, 1072038, 1072383,// shoes
30000, 30010,30020, 30030, 31000, 31040, 31050,// hair
20000, 20001, 20002, 21000, 21001, 21002, 21201, 20401, 20402, 21700, 20100 //face
//#NeverTrustStevenCode
}));
private static boolean isLegal(Integer toCompare) {
return IDs.contains(toCompare);
}
private final static Set<Integer> IDs = new HashSet<>(Arrays.asList(1302000, 1312004, 1322005, 1442079,// weapons
1040002, 1040006, 1040010, 1041002, 1041006, 1041010, 1041011, 1042167,// bottom
1060002, 1060006, 1061002, 1061008, 1062115, // top
1072001, 1072005, 1072037, 1072038, 1072383,// shoes
30000, 30010, 30020, 30030, 31000, 31040, 31050,// hair
20000, 20001, 20002, 21000, 21001, 21002, 21201, 20401, 20402, 21700, 20100 //face
//#NeverTrustStevenCode
));
private static boolean isLegal(Integer toCompare) {
return IDs.contains(toCompare);
}
@Override
public final void handlePacket(InPacket p, Client c) {
String name = p.readString();
int job = p.readInt();
int face = p.readInt();
@Override
public final void handlePacket(InPacket p, Client c) {
String name = p.readString();
int job = p.readInt();
int face = p.readInt();
int hair = p.readInt();
int haircolor = p.readInt();
int skincolor = p.readInt();
int hair = p.readInt();
int haircolor = p.readInt();
int skincolor = p.readInt();
int top = p.readInt();
int bottom = p.readInt();
int shoes = p.readInt();
int weapon = p.readInt();
int gender = p.readByte();
int [] items = new int [] {weapon, top, bottom, shoes, hair, face};
for (int item : items) {
if (!isLegal(item)) {
FilePrinter.printError(FilePrinter.EXPLOITS + name + ".txt", "Owner from account '" + c.getAccountName() + "' tried to packet edit in char creation.");
c.disconnect(true, false);
return;
}
}
int status;
if (job == 0) { // Knights of Cygnus
status = NoblesseCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender);
} else if (job == 1) { // Adventurer
status = BeginnerCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender);
} else if (job == 2) { // Aran
status = LegendCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender);
} else {
c.sendPacket(PacketCreator.deleteCharResponse(0, 9));
return;
}
if (status == -2) {
c.sendPacket(PacketCreator.deleteCharResponse(0, 9));
}
}
int top = p.readInt();
int bottom = p.readInt();
int shoes = p.readInt();
int weapon = p.readInt();
int gender = p.readByte();
int[] items = new int[]{weapon, top, bottom, shoes, hair, face};
for (int item : items) {
if (!isLegal(item)) {
FilePrinter.printError(FilePrinter.EXPLOITS + name + ".txt", "Owner from account '" + c.getAccountName() + "' tried to packet edit in char creation.");
c.disconnect(true, false);
return;
}
}
int status;
if (job == 0) { // Knights of Cygnus
status = NoblesseCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender);
} else if (job == 1) { // Adventurer
status = BeginnerCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender);
} else if (job == 2) { // Aran
status = LegendCreator.createCharacter(c, name, face, hair + haircolor, skincolor, top, bottom, shoes, weapon, gender);
} else {
c.sendPacket(PacketCreator.deleteCharResponse(0, 9));
return;
}
if (status == -2) {
c.sendPacket(PacketCreator.deleteCharResponse(0, 9));
}
}
}

View File

@@ -39,56 +39,56 @@ public final class DeleteCharHandler extends AbstractPacketHandler {
@Override
public final void handlePacket(InPacket p, Client c) {
String pic = p.readString();
int cid = p.readInt();
if (c.checkPic(pic)) {
//check for family, guild leader, pending marriage, world transfer
try (Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("SELECT `world`, `guildid`, `guildrank`, `familyId` FROM characters WHERE id = ?");
PreparedStatement ps2 = con.prepareStatement("SELECT COUNT(*) as rowcount FROM worldtransfers WHERE `characterid` = ? AND completionTime IS NULL")) {
ps.setInt(1, cid);
String pic = p.readString();
int cid = p.readInt();
if (c.checkPic(pic)) {
//check for family, guild leader, pending marriage, world transfer
try (Connection con = DatabaseConnection.getConnection();
PreparedStatement ps = con.prepareStatement("SELECT `world`, `guildid`, `guildrank`, `familyId` FROM characters WHERE id = ?");
PreparedStatement ps2 = con.prepareStatement("SELECT COUNT(*) as rowcount FROM worldtransfers WHERE `characterid` = ? AND completionTime IS NULL")) {
ps.setInt(1, cid);
try (ResultSet rs = ps.executeQuery()) {
if (!rs.next()) {
throw new SQLException("Character record does not exist.");
}
int world = rs.getInt("world");
int guildId = rs.getInt("guildid");
int guildRank = rs.getInt("guildrank");
int familyId = rs.getInt("familyId");
if (guildId != 0 && guildRank <= 1) {
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x16));
return;
} else if (familyId != -1) {
Family family = Server.getInstance().getWorld(world).getFamily(familyId);
if (family != null && family.getTotalMembers() > 1) {
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x1D));
return;
}
}
}
try (ResultSet rs = ps.executeQuery()) {
if (!rs.next()) {
throw new SQLException("Character record does not exist.");
}
int world = rs.getInt("world");
int guildId = rs.getInt("guildid");
int guildRank = rs.getInt("guildrank");
int familyId = rs.getInt("familyId");
if (guildId != 0 && guildRank <= 1) {
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x16));
return;
} else if (familyId != -1) {
Family family = Server.getInstance().getWorld(world).getFamily(familyId);
if (family != null && family.getTotalMembers() > 1) {
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x1D));
return;
}
}
}
ps2.setInt(1, cid);
try (ResultSet rs = ps2.executeQuery()) {
rs.next();
if (rs.getInt("rowcount") > 0) {
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x1A));
return;
}
}
} catch (SQLException e) {
e.printStackTrace();
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x09));
return;
}
if (c.deleteCharacter(cid, c.getAccID())) {
FilePrinter.print(FilePrinter.DELETED_CHAR + c.getAccountName() + ".txt", c.getAccountName() + " deleted CID: " + cid);
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0));
} else {
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x09));
}
} else {
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x14));
}
}
ps2.setInt(1, cid);
try (ResultSet rs = ps2.executeQuery()) {
rs.next();
if (rs.getInt("rowcount") > 0) {
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x1A));
return;
}
}
} catch (SQLException e) {
e.printStackTrace();
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x09));
return;
}
if (c.deleteCharacter(cid, c.getAccID())) {
FilePrinter.print(FilePrinter.DELETED_CHAR + c.getAccountName() + ".txt", c.getAccountName() + " deleted CID: " + cid);
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0));
} else {
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x09));
}
} else {
c.sendPacket(PacketCreator.deleteCharResponse(cid, 0x14));
}
}
}

View File

@@ -27,12 +27,12 @@ public final class RegisterPicHandler extends AbstractPacketHandler {
default -> 9;
};
}
@Override
public final void handlePacket(InPacket p, Client c) {
p.readByte();
int charId = p.readInt();
String macs = p.readString();
String hostString = p.readString();
@@ -44,47 +44,47 @@ public final class RegisterPicHandler extends AbstractPacketHandler {
c.sendPacket(PacketCreator.getAfterLoginError(17));
return;
}
c.updateMacs(macs);
c.updateHwid(hwid);
AntiMulticlientResult res = SessionCoordinator.getInstance().attemptGameSession(c, c.getAccID(), hwid);
if (res != AntiMulticlientResult.SUCCESS) {
c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res)));
return;
}
if (c.hasBannedMac() || c.hasBannedHWID()) {
SessionCoordinator.getInstance().closeSession(c, true);
return;
}
Server server = Server.getInstance();
if(!server.haveCharacterEntry(c.getAccID(), charId)) {
if (!server.haveCharacterEntry(c.getAccID(), charId)) {
SessionCoordinator.getInstance().closeSession(c, true);
return;
}
String pic = p.readString();
if (c.getPic() == null || c.getPic().equals("")) {
c.setPic(pic);
c.setWorld(server.getCharacterWorld(charId));
World wserv = c.getWorldServer();
if(wserv == null || wserv.isWorldCapacityFull()) {
if (wserv == null || wserv.isWorldCapacityFull()) {
c.sendPacket(PacketCreator.getAfterLoginError(10));
return;
}
String[] socket = server.getInetSocket(c, c.getWorld(), c.getChannel());
if(socket == null) {
if (socket == null) {
c.sendPacket(PacketCreator.getAfterLoginError(10));
return;
}
server.unregisterLoginState(c);
c.setCharacterOnSessionTransitionState(charId);
try {
c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId));
} catch (UnknownHostException e) {

View File

@@ -42,7 +42,7 @@ public final class RegisterPinHandler extends AbstractPacketHandler {
if (pin != null) {
c.setPin(pin);
c.sendPacket(PacketCreator.pinRegistered());
SessionCoordinator.getInstance().closeSession(c, null);
c.updateLoginState(Client.LOGIN_NOTLOGGEDIN);
}

View File

@@ -34,7 +34,7 @@ public final class ServerStatusRequestHandler extends AbstractPacketHandler {
public final void handlePacket(InPacket p, Client c) {
byte world = (byte) p.readShort();
World wserv = Server.getInstance().getWorld(world);
if(wserv != null) {
if (wserv != null) {
int status = wserv.getWorldCapacityStatus();
c.sendPacket(PacketCreator.getServerStatus(status));
} else {

View File

@@ -35,10 +35,10 @@ public final class ServerlistRequestHandler extends AbstractPacketHandler {
@Override
public final void handlePacket(InPacket p, Client c) {
Server server = Server.getInstance();
Server server = Server.getInstance();
List<World> worlds = server.getWorlds();
c.requestedServerlist(worlds.size());
for (World world : worlds) {
c.sendPacket(PacketCreator.getServerList(world.getId(), GameConstants.WORLD_NAMES[world.getId()], world.getFlag(), world.getEventMessage(), world.getChannels()));
}

View File

@@ -30,7 +30,6 @@ import net.server.coordinator.session.SessionCoordinator;
import tools.PacketCreator;
/**
*
* @author kevintjuh93
*/
public class SetGenderHandler extends AbstractPacketHandler {

View File

@@ -36,34 +36,34 @@ public final class ViewAllCharHandler extends AbstractPacketHandler {
@Override
public final void handlePacket(InPacket p, Client c) {
try {
if(!c.canRequestCharlist()) { // client breaks if the charlist request pops too soon
if (!c.canRequestCharlist()) { // client breaks if the charlist request pops too soon
c.sendPacket(PacketCreator.showAllCharacter(0, 0));
return;
}
int accountId = c.getAccID();
Pair<Pair<Integer, List<Character>>, List<Pair<Integer, List<Character>>>> loginBlob = Server.getInstance().loadAccountCharlist(accountId, c.getVisibleWorlds());
List<Pair<Integer, List<Character>>> worldChars = loginBlob.getRight();
int chrTotal = loginBlob.getLeft().getLeft();
List<Character> lastwchars = loginBlob.getLeft().getRight();
if (chrTotal > 9) {
int padRight = chrTotal % 3;
if (padRight > 0 && lastwchars != null) {
Character chr = lastwchars.get(lastwchars.size() - 1);
for(int i = padRight; i < 3; i++) { // filling the remaining slots with the last character loaded
for (int i = padRight; i < 3; i++) { // filling the remaining slots with the last character loaded
chrTotal++;
lastwchars.add(chr);
}
}
}
int charsSize = chrTotal;
int unk = charsSize + (3 - charsSize % 3); //rowSize?
c.sendPacket(PacketCreator.showAllCharacter(charsSize, unk));
for (Pair<Integer, List<Character>> wchars : worldChars) {
c.sendPacket(PacketCreator.showAllCharacterInfo(wchars.getLeft(), wchars.getRight(), YamlConfig.config.server.ENABLE_PIC && !c.canBypassPic()));
}

View File

@@ -28,13 +28,13 @@ public final class ViewAllCharRegisterPicHandler extends AbstractPacketHandler {
default -> 9;
};
}
@Override
public final void handlePacket(InPacket p, Client c) {
p.readByte();
int charId = p.readInt();
p.readInt(); // please don't let the client choose which world they should login
String mac = p.readString();
String hostString = p.readString();
@@ -46,10 +46,10 @@ public final class ViewAllCharRegisterPicHandler extends AbstractPacketHandler {
c.sendPacket(PacketCreator.getAfterLoginError(17));
return;
}
c.updateMacs(mac);
c.updateHwid(hwid);
if (c.hasBannedMac() || c.hasBannedHWID()) {
SessionCoordinator.getInstance().closeSession(c, true);
return;
@@ -60,35 +60,35 @@ public final class ViewAllCharRegisterPicHandler extends AbstractPacketHandler {
c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res)));
return;
}
Server server = Server.getInstance();
if(!server.haveCharacterEntry(c.getAccID(), charId)) {
if (!server.haveCharacterEntry(c.getAccID(), charId)) {
SessionCoordinator.getInstance().closeSession(c, true);
return;
}
c.setWorld(server.getCharacterWorld(charId));
World wserv = c.getWorldServer();
if(wserv == null || wserv.isWorldCapacityFull()) {
if (wserv == null || wserv.isWorldCapacityFull()) {
c.sendPacket(PacketCreator.getAfterLoginError(10));
return;
}
int channel = Randomizer.rand(1, server.getWorld(c.getWorld()).getChannelsSize());
c.setChannel(channel);
String pic = p.readString();
c.setPic(pic);
String[] socket = server.getInetSocket(c, c.getWorld(), channel);
if (socket == null) {
c.sendPacket(PacketCreator.getAfterLoginError(10));
return;
}
server.unregisterLoginState(c);
c.setCharacterOnSessionTransitionState(charId);
try {
c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId));
} catch (UnknownHostException e) {

View File

@@ -49,12 +49,12 @@ public final class ViewAllCharSelectedHandler extends AbstractPacketHandler {
default -> 9;
};
}
@Override
public final void handlePacket(InPacket p, Client c) {
int charId = p.readInt();
p.readInt(); // please don't let the client choose which world they should login
String macs = p.readString();
String hostString = p.readString();
@@ -66,10 +66,10 @@ public final class ViewAllCharSelectedHandler extends AbstractPacketHandler {
c.sendPacket(PacketCreator.getAfterLoginError(17));
return;
}
c.updateMacs(macs);
c.updateHwid(hwid);
if (c.hasBannedMac() || c.hasBannedHWID()) {
SessionCoordinator.getInstance().closeSession(c, true);
return;
@@ -80,21 +80,21 @@ public final class ViewAllCharSelectedHandler extends AbstractPacketHandler {
c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res)));
return;
}
Server server = Server.getInstance();
if(!server.haveCharacterEntry(c.getAccID(), charId)) {
if (!server.haveCharacterEntry(c.getAccID(), charId)) {
SessionCoordinator.getInstance().closeSession(c, true);
return;
}
c.setWorld(server.getCharacterWorld(charId));
World wserv = c.getWorldServer();
if(wserv == null || wserv.isWorldCapacityFull()) {
if (wserv == null || wserv.isWorldCapacityFull()) {
c.sendPacket(PacketCreator.getAfterLoginError(10));
return;
}
try {
int channel = Randomizer.rand(1, wserv.getChannelsSize());
c.setChannel(channel);
@@ -102,16 +102,16 @@ public final class ViewAllCharSelectedHandler extends AbstractPacketHandler {
e.printStackTrace();
c.setChannel(1);
}
String[] socket = server.getInetSocket(c, c.getWorld(), c.getChannel());
if(socket == null) {
if (socket == null) {
c.sendPacket(PacketCreator.getAfterLoginError(10));
return;
}
server.unregisterLoginState(c);
c.setCharacterOnSessionTransitionState(charId);
try {
c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId));
} catch (UnknownHostException e) {

View File

@@ -28,14 +28,14 @@ public class ViewAllCharSelectedWithPicHandler extends AbstractPacketHandler {
default -> 9;
};
}
@Override
public void handlePacket(InPacket p, Client c) {
String pic = p.readString();
int charId = p.readInt();
p.readInt(); // please don't let the client choose which world they should login
String macs = p.readString();
String hostString = p.readString();
@@ -47,47 +47,47 @@ public class ViewAllCharSelectedWithPicHandler extends AbstractPacketHandler {
c.sendPacket(PacketCreator.getAfterLoginError(17));
return;
}
c.updateMacs(macs);
c.updateHwid(hwid);
if (c.hasBannedMac() || c.hasBannedHWID()) {
SessionCoordinator.getInstance().closeSession(c, true);
return;
}
Server server = Server.getInstance();
if(!server.haveCharacterEntry(c.getAccID(), charId)) {
if (!server.haveCharacterEntry(c.getAccID(), charId)) {
SessionCoordinator.getInstance().closeSession(c, true);
return;
}
c.setWorld(server.getCharacterWorld(charId));
World wserv = c.getWorldServer();
if(wserv == null || wserv.isWorldCapacityFull()) {
if (wserv == null || wserv.isWorldCapacityFull()) {
c.sendPacket(PacketCreator.getAfterLoginError(10));
return;
}
int channel = Randomizer.rand(1, wserv.getChannelsSize());
c.setChannel(channel);
if (c.checkPic(pic)) {
String[] socket = server.getInetSocket(c, c.getWorld(), c.getChannel());
if(socket == null) {
if (socket == null) {
c.sendPacket(PacketCreator.getAfterLoginError(10));
return;
}
AntiMulticlientResult res = SessionCoordinator.getInstance().attemptGameSession(c, c.getAccID(), hwid);
if (res != AntiMulticlientResult.SUCCESS) {
c.sendPacket(PacketCreator.getAfterLoginError(parseAntiMulticlientError(res)));
return;
}
server.unregisterLoginState(c);
c.setCharacterOnSessionTransitionState(charId);
try {
c.sendPacket(PacketCreator.getServerIP(InetAddress.getByName(socket[0]), Integer.parseInt(socket[1]), charId));
} catch (UnknownHostException e) {