diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/enums/RankingCategory.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/enums/RankingCategory.java index 46a198f370..8fba312b99 100644 --- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/enums/RankingCategory.java +++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/enums/RankingCategory.java @@ -28,6 +28,7 @@ public enum RankingCategory { SERVER, RACE, + CLASS, CLAN, FRIEND; @@ -43,6 +44,7 @@ public enum RankingCategory { return id == 0 ? TOP_100 : SELF; } + case CLASS: case CLAN: case FRIEND: { diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestRankingCharRankers.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestRankingCharRankers.java index 9c24e1b810..6b3dac4575 100644 --- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestRankingCharRankers.java +++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestRankingCharRankers.java @@ -29,14 +29,14 @@ public class RequestRankingCharRankers implements IClientIncomingPacket { private int _group; private int _scope; - private int _race; + private int _ordinal; @Override public boolean read(GameClient client, PacketReader packet) { _group = packet.readC(); // Tab Id _scope = packet.readC(); // All or personal - _race = packet.readD(); + _ordinal = packet.readD(); return true; } @@ -49,6 +49,6 @@ public class RequestRankingCharRankers implements IClientIncomingPacket return; } - player.sendPacket(new ExRankingCharRankers(player, _group, _scope, _race)); + player.sendPacket(new ExRankingCharRankers(player, _group, _scope, _ordinal)); } } diff --git a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExRankingCharRankers.java b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExRankingCharRankers.java index 3985aa76d0..34eca5abec 100644 --- a/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExRankingCharRankers.java +++ b/L2J_Mobius_8.0_Homunculus/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExRankingCharRankers.java @@ -20,9 +20,11 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.stream.Collectors; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.enums.ClassId; import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.enums.RankingCategory; import org.l2jmobius.gameserver.enums.RankingScope; @@ -40,16 +42,16 @@ public class ExRankingCharRankers implements IClientOutgoingPacket private final PlayerInstance _player; private final int _group; private final int _scope; - private final int _race; + private final int _ordinal; private final Map _playerList; private final Map _snapshotList; - public ExRankingCharRankers(PlayerInstance player, int group, int scope, int race) + public ExRankingCharRankers(PlayerInstance player, int group, int scope, int ordinal) { _player = player; _group = group; _scope = scope; - _race = race; + _ordinal = ordinal; _playerList = RankManager.getInstance().getRankList(); _snapshotList = RankManager.getInstance().getSnapshotList(); } @@ -61,13 +63,13 @@ public class ExRankingCharRankers implements IClientOutgoingPacket packet.writeC(_group); packet.writeC(_scope); - packet.writeD(_race); + packet.writeD(_ordinal); packet.writeD(_player.getClassId().getId()); if (_playerList.size() > 0) { final RankingCategory category = RankingCategory.values()[_group]; - writeFilteredRankingData(packet, category, category.getScopeByGroup(_scope), Race.values()[_race]); + writeFilteredRankingData(packet, category, category.getScopeByGroup(_scope)); } else { @@ -76,34 +78,78 @@ public class ExRankingCharRankers implements IClientOutgoingPacket return true; } - private void writeFilteredRankingData(PacketWriter packet, RankingCategory category, RankingScope scope, Race race) + private void writeFilteredRankingData(PacketWriter packet, RankingCategory category, RankingScope scope) { switch (category) { - case SERVER -> writeScopeData(packet, scope, new ArrayList<>(_playerList.entrySet()), new ArrayList<>(_snapshotList.entrySet())); - case RACE -> writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> it.getValue().getInt("race") == race.ordinal()).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> it.getValue().getInt("race") == race.ordinal()).collect(Collectors.toList())); - case CLAN -> writeScopeData(packet, scope, _player.getClan() == null ? Collections.emptyList() : _playerList.entrySet().stream().filter(it -> it.getValue().getString("clanName").equals(_player.getClan().getName())).collect(Collectors.toList()), _player.getClan() == null ? Collections.emptyList() : _snapshotList.entrySet().stream().filter(it -> it.getValue().getString("clanName").equals(_player.getClan().getName())).collect(Collectors.toList())); - case FRIEND -> writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> _player.getFriendList().contains(it.getValue().getInt("charId"))).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> _player.getFriendList().contains(it.getValue().getInt("charId"))).collect(Collectors.toList())); + case SERVER: + { + writeScopeData(packet, scope, new ArrayList<>(_playerList.entrySet()), new ArrayList<>(_snapshotList.entrySet())); + break; + } + case RACE: + { + final Race race = Race.values()[_ordinal]; + writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> it.getValue().getInt("race") == race.ordinal()).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> it.getValue().getInt("race") == race.ordinal()).collect(Collectors.toList())); + break; + } + case CLASS: // TODO: Check if this works. + { + final ClassId classId = ClassId.getClassId(_ordinal); + writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> it.getValue().getInt("classId") == classId.getId()).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> it.getValue().getInt("classId") == classId.getId()).collect(Collectors.toList())); + break; + } + case CLAN: + { + writeScopeData(packet, scope, _player.getClan() == null ? Collections.emptyList() : _playerList.entrySet().stream().filter(it -> it.getValue().getString("clanName").equals(_player.getClan().getName())).collect(Collectors.toList()), _player.getClan() == null ? Collections.emptyList() : _snapshotList.entrySet().stream().filter(it -> it.getValue().getString("clanName").equals(_player.getClan().getName())).collect(Collectors.toList())); + break; + } + case FRIEND: + { + writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> _player.getFriendList().contains(it.getValue().getInt("charId"))).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> _player.getFriendList().contains(it.getValue().getInt("charId"))).collect(Collectors.toList())); + break; + } } } - private void writeScopeData(PacketWriter packet, RankingScope scope, List> list, List> snapshot) + private void writeScopeData(PacketWriter packet, RankingScope scope, List> list, List> snapshot) { - - Map.Entry playerData = list.stream().filter(it -> it.getValue().getInt("charId", 0) == _player.getObjectId()).findFirst().orElse(null); + Entry playerData = list.stream().filter(it -> it.getValue().getInt("charId", 0) == _player.getObjectId()).findFirst().orElse(null); final int indexOf = list.indexOf(playerData); - final List> limited = switch (scope) + + final List> limited; + switch (scope) { - case TOP_100 -> list.stream().limit(100).collect(Collectors.toList()); - case ALL -> list; - case TOP_150 -> list.stream().limit(150).collect(Collectors.toList()); - case SELF -> playerData == null ? Collections.emptyList() : list.subList(Math.max(0, indexOf - 10), Math.min(list.size(), indexOf + 10)); - }; + case TOP_100: + { + limited = list.stream().limit(100).collect(Collectors.toList()); + break; + } + case ALL: + { + limited = list; + break; + } + case TOP_150: + { + limited = list.stream().limit(150).collect(Collectors.toList()); + break; + } + case SELF: + { + limited = playerData == null ? Collections.emptyList() : list.subList(Math.max(0, indexOf - 10), Math.min(list.size(), indexOf + 10)); + break; + } + default: + { + limited = Collections.emptyList(); + } + } packet.writeD(limited.size()); int rank = 1; - for (Map.Entry data : limited.stream().sorted(Map.Entry.comparingByKey()).collect(Collectors.toList())) + for (Entry data : limited.stream().sorted(Entry.comparingByKey()).collect(Collectors.toList())) { int curRank = rank++; final StatSet player = data.getValue(); @@ -116,7 +162,7 @@ public class ExRankingCharRankers implements IClientOutgoingPacket if (snapshot.size() > 0) { int snapshotRank = 1; - for (Map.Entry ssData : snapshot.stream().sorted(Map.Entry.comparingByKey()).collect(Collectors.toList())) + for (Entry ssData : snapshot.stream().sorted(Entry.comparingByKey()).collect(Collectors.toList())) { final StatSet snapshotData = ssData.getValue(); if (player.getInt("charId") == snapshotData.getInt("charId")) diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/enums/RankingCategory.java b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/enums/RankingCategory.java index 46a198f370..8fba312b99 100644 --- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/enums/RankingCategory.java +++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/enums/RankingCategory.java @@ -28,6 +28,7 @@ public enum RankingCategory { SERVER, RACE, + CLASS, CLAN, FRIEND; @@ -43,6 +44,7 @@ public enum RankingCategory { return id == 0 ? TOP_100 : SELF; } + case CLASS: case CLAN: case FRIEND: { diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestRankingCharRankers.java b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestRankingCharRankers.java index 9c24e1b810..6b3dac4575 100644 --- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestRankingCharRankers.java +++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestRankingCharRankers.java @@ -29,14 +29,14 @@ public class RequestRankingCharRankers implements IClientIncomingPacket { private int _group; private int _scope; - private int _race; + private int _ordinal; @Override public boolean read(GameClient client, PacketReader packet) { _group = packet.readC(); // Tab Id _scope = packet.readC(); // All or personal - _race = packet.readD(); + _ordinal = packet.readD(); return true; } @@ -49,6 +49,6 @@ public class RequestRankingCharRankers implements IClientIncomingPacket return; } - player.sendPacket(new ExRankingCharRankers(player, _group, _scope, _race)); + player.sendPacket(new ExRankingCharRankers(player, _group, _scope, _ordinal)); } } diff --git a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExRankingCharRankers.java b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExRankingCharRankers.java index 3985aa76d0..34eca5abec 100644 --- a/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExRankingCharRankers.java +++ b/L2J_Mobius_9.0_ReturnOfTheQueenAnt/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExRankingCharRankers.java @@ -20,9 +20,11 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.stream.Collectors; import org.l2jmobius.commons.network.PacketWriter; +import org.l2jmobius.gameserver.enums.ClassId; import org.l2jmobius.gameserver.enums.Race; import org.l2jmobius.gameserver.enums.RankingCategory; import org.l2jmobius.gameserver.enums.RankingScope; @@ -40,16 +42,16 @@ public class ExRankingCharRankers implements IClientOutgoingPacket private final PlayerInstance _player; private final int _group; private final int _scope; - private final int _race; + private final int _ordinal; private final Map _playerList; private final Map _snapshotList; - public ExRankingCharRankers(PlayerInstance player, int group, int scope, int race) + public ExRankingCharRankers(PlayerInstance player, int group, int scope, int ordinal) { _player = player; _group = group; _scope = scope; - _race = race; + _ordinal = ordinal; _playerList = RankManager.getInstance().getRankList(); _snapshotList = RankManager.getInstance().getSnapshotList(); } @@ -61,13 +63,13 @@ public class ExRankingCharRankers implements IClientOutgoingPacket packet.writeC(_group); packet.writeC(_scope); - packet.writeD(_race); + packet.writeD(_ordinal); packet.writeD(_player.getClassId().getId()); if (_playerList.size() > 0) { final RankingCategory category = RankingCategory.values()[_group]; - writeFilteredRankingData(packet, category, category.getScopeByGroup(_scope), Race.values()[_race]); + writeFilteredRankingData(packet, category, category.getScopeByGroup(_scope)); } else { @@ -76,34 +78,78 @@ public class ExRankingCharRankers implements IClientOutgoingPacket return true; } - private void writeFilteredRankingData(PacketWriter packet, RankingCategory category, RankingScope scope, Race race) + private void writeFilteredRankingData(PacketWriter packet, RankingCategory category, RankingScope scope) { switch (category) { - case SERVER -> writeScopeData(packet, scope, new ArrayList<>(_playerList.entrySet()), new ArrayList<>(_snapshotList.entrySet())); - case RACE -> writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> it.getValue().getInt("race") == race.ordinal()).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> it.getValue().getInt("race") == race.ordinal()).collect(Collectors.toList())); - case CLAN -> writeScopeData(packet, scope, _player.getClan() == null ? Collections.emptyList() : _playerList.entrySet().stream().filter(it -> it.getValue().getString("clanName").equals(_player.getClan().getName())).collect(Collectors.toList()), _player.getClan() == null ? Collections.emptyList() : _snapshotList.entrySet().stream().filter(it -> it.getValue().getString("clanName").equals(_player.getClan().getName())).collect(Collectors.toList())); - case FRIEND -> writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> _player.getFriendList().contains(it.getValue().getInt("charId"))).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> _player.getFriendList().contains(it.getValue().getInt("charId"))).collect(Collectors.toList())); + case SERVER: + { + writeScopeData(packet, scope, new ArrayList<>(_playerList.entrySet()), new ArrayList<>(_snapshotList.entrySet())); + break; + } + case RACE: + { + final Race race = Race.values()[_ordinal]; + writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> it.getValue().getInt("race") == race.ordinal()).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> it.getValue().getInt("race") == race.ordinal()).collect(Collectors.toList())); + break; + } + case CLASS: // TODO: Check if this works. + { + final ClassId classId = ClassId.getClassId(_ordinal); + writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> it.getValue().getInt("classId") == classId.getId()).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> it.getValue().getInt("classId") == classId.getId()).collect(Collectors.toList())); + break; + } + case CLAN: + { + writeScopeData(packet, scope, _player.getClan() == null ? Collections.emptyList() : _playerList.entrySet().stream().filter(it -> it.getValue().getString("clanName").equals(_player.getClan().getName())).collect(Collectors.toList()), _player.getClan() == null ? Collections.emptyList() : _snapshotList.entrySet().stream().filter(it -> it.getValue().getString("clanName").equals(_player.getClan().getName())).collect(Collectors.toList())); + break; + } + case FRIEND: + { + writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> _player.getFriendList().contains(it.getValue().getInt("charId"))).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> _player.getFriendList().contains(it.getValue().getInt("charId"))).collect(Collectors.toList())); + break; + } } } - private void writeScopeData(PacketWriter packet, RankingScope scope, List> list, List> snapshot) + private void writeScopeData(PacketWriter packet, RankingScope scope, List> list, List> snapshot) { - - Map.Entry playerData = list.stream().filter(it -> it.getValue().getInt("charId", 0) == _player.getObjectId()).findFirst().orElse(null); + Entry playerData = list.stream().filter(it -> it.getValue().getInt("charId", 0) == _player.getObjectId()).findFirst().orElse(null); final int indexOf = list.indexOf(playerData); - final List> limited = switch (scope) + + final List> limited; + switch (scope) { - case TOP_100 -> list.stream().limit(100).collect(Collectors.toList()); - case ALL -> list; - case TOP_150 -> list.stream().limit(150).collect(Collectors.toList()); - case SELF -> playerData == null ? Collections.emptyList() : list.subList(Math.max(0, indexOf - 10), Math.min(list.size(), indexOf + 10)); - }; + case TOP_100: + { + limited = list.stream().limit(100).collect(Collectors.toList()); + break; + } + case ALL: + { + limited = list; + break; + } + case TOP_150: + { + limited = list.stream().limit(150).collect(Collectors.toList()); + break; + } + case SELF: + { + limited = playerData == null ? Collections.emptyList() : list.subList(Math.max(0, indexOf - 10), Math.min(list.size(), indexOf + 10)); + break; + } + default: + { + limited = Collections.emptyList(); + } + } packet.writeD(limited.size()); int rank = 1; - for (Map.Entry data : limited.stream().sorted(Map.Entry.comparingByKey()).collect(Collectors.toList())) + for (Entry data : limited.stream().sorted(Entry.comparingByKey()).collect(Collectors.toList())) { int curRank = rank++; final StatSet player = data.getValue(); @@ -116,7 +162,7 @@ public class ExRankingCharRankers implements IClientOutgoingPacket if (snapshot.size() > 0) { int snapshotRank = 1; - for (Map.Entry ssData : snapshot.stream().sorted(Map.Entry.comparingByKey()).collect(Collectors.toList())) + for (Entry ssData : snapshot.stream().sorted(Entry.comparingByKey()).collect(Collectors.toList())) { final StatSet snapshotData = ssData.getValue(); if (player.getInt("charId") == snapshotData.getInt("charId")) diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestRankingCharRankers.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestRankingCharRankers.java index 9c24e1b810..6b3dac4575 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestRankingCharRankers.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestRankingCharRankers.java @@ -29,14 +29,14 @@ public class RequestRankingCharRankers implements IClientIncomingPacket { private int _group; private int _scope; - private int _race; + private int _ordinal; @Override public boolean read(GameClient client, PacketReader packet) { _group = packet.readC(); // Tab Id _scope = packet.readC(); // All or personal - _race = packet.readD(); + _ordinal = packet.readD(); return true; } @@ -49,6 +49,6 @@ public class RequestRankingCharRankers implements IClientIncomingPacket return; } - player.sendPacket(new ExRankingCharRankers(player, _group, _scope, _race)); + player.sendPacket(new ExRankingCharRankers(player, _group, _scope, _ordinal)); } } diff --git a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExRankingCharRankers.java b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExRankingCharRankers.java index 3985aa76d0..3c8b448b3b 100644 --- a/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExRankingCharRankers.java +++ b/L2J_Mobius_Essence_4.0_DwellingOfSpirits/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExRankingCharRankers.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.stream.Collectors; import org.l2jmobius.commons.network.PacketWriter; @@ -40,16 +41,16 @@ public class ExRankingCharRankers implements IClientOutgoingPacket private final PlayerInstance _player; private final int _group; private final int _scope; - private final int _race; + private final int _ordinal; private final Map _playerList; private final Map _snapshotList; - public ExRankingCharRankers(PlayerInstance player, int group, int scope, int race) + public ExRankingCharRankers(PlayerInstance player, int group, int scope, int ordinal) { _player = player; _group = group; _scope = scope; - _race = race; + _ordinal = ordinal; _playerList = RankManager.getInstance().getRankList(); _snapshotList = RankManager.getInstance().getSnapshotList(); } @@ -61,13 +62,13 @@ public class ExRankingCharRankers implements IClientOutgoingPacket packet.writeC(_group); packet.writeC(_scope); - packet.writeD(_race); + packet.writeD(_ordinal); packet.writeD(_player.getClassId().getId()); if (_playerList.size() > 0) { final RankingCategory category = RankingCategory.values()[_group]; - writeFilteredRankingData(packet, category, category.getScopeByGroup(_scope), Race.values()[_race]); + writeFilteredRankingData(packet, category, category.getScopeByGroup(_scope)); } else { @@ -76,34 +77,72 @@ public class ExRankingCharRankers implements IClientOutgoingPacket return true; } - private void writeFilteredRankingData(PacketWriter packet, RankingCategory category, RankingScope scope, Race race) + private void writeFilteredRankingData(PacketWriter packet, RankingCategory category, RankingScope scope) { switch (category) { - case SERVER -> writeScopeData(packet, scope, new ArrayList<>(_playerList.entrySet()), new ArrayList<>(_snapshotList.entrySet())); - case RACE -> writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> it.getValue().getInt("race") == race.ordinal()).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> it.getValue().getInt("race") == race.ordinal()).collect(Collectors.toList())); - case CLAN -> writeScopeData(packet, scope, _player.getClan() == null ? Collections.emptyList() : _playerList.entrySet().stream().filter(it -> it.getValue().getString("clanName").equals(_player.getClan().getName())).collect(Collectors.toList()), _player.getClan() == null ? Collections.emptyList() : _snapshotList.entrySet().stream().filter(it -> it.getValue().getString("clanName").equals(_player.getClan().getName())).collect(Collectors.toList())); - case FRIEND -> writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> _player.getFriendList().contains(it.getValue().getInt("charId"))).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> _player.getFriendList().contains(it.getValue().getInt("charId"))).collect(Collectors.toList())); + case SERVER: + { + writeScopeData(packet, scope, new ArrayList<>(_playerList.entrySet()), new ArrayList<>(_snapshotList.entrySet())); + break; + } + case RACE: + { + final Race race = Race.values()[_ordinal]; + writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> it.getValue().getInt("race") == race.ordinal()).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> it.getValue().getInt("race") == race.ordinal()).collect(Collectors.toList())); + break; + } + case CLAN: + { + writeScopeData(packet, scope, _player.getClan() == null ? Collections.emptyList() : _playerList.entrySet().stream().filter(it -> it.getValue().getString("clanName").equals(_player.getClan().getName())).collect(Collectors.toList()), _player.getClan() == null ? Collections.emptyList() : _snapshotList.entrySet().stream().filter(it -> it.getValue().getString("clanName").equals(_player.getClan().getName())).collect(Collectors.toList())); + break; + } + case FRIEND: + { + writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> _player.getFriendList().contains(it.getValue().getInt("charId"))).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> _player.getFriendList().contains(it.getValue().getInt("charId"))).collect(Collectors.toList())); + break; + } } } - private void writeScopeData(PacketWriter packet, RankingScope scope, List> list, List> snapshot) + private void writeScopeData(PacketWriter packet, RankingScope scope, List> list, List> snapshot) { - - Map.Entry playerData = list.stream().filter(it -> it.getValue().getInt("charId", 0) == _player.getObjectId()).findFirst().orElse(null); + Entry playerData = list.stream().filter(it -> it.getValue().getInt("charId", 0) == _player.getObjectId()).findFirst().orElse(null); final int indexOf = list.indexOf(playerData); - final List> limited = switch (scope) + + final List> limited; + switch (scope) { - case TOP_100 -> list.stream().limit(100).collect(Collectors.toList()); - case ALL -> list; - case TOP_150 -> list.stream().limit(150).collect(Collectors.toList()); - case SELF -> playerData == null ? Collections.emptyList() : list.subList(Math.max(0, indexOf - 10), Math.min(list.size(), indexOf + 10)); - }; + case TOP_100: + { + limited = list.stream().limit(100).collect(Collectors.toList()); + break; + } + case ALL: + { + limited = list; + break; + } + case TOP_150: + { + limited = list.stream().limit(150).collect(Collectors.toList()); + break; + } + case SELF: + { + limited = playerData == null ? Collections.emptyList() : list.subList(Math.max(0, indexOf - 10), Math.min(list.size(), indexOf + 10)); + break; + } + default: + { + limited = Collections.emptyList(); + } + } packet.writeD(limited.size()); int rank = 1; - for (Map.Entry data : limited.stream().sorted(Map.Entry.comparingByKey()).collect(Collectors.toList())) + for (Entry data : limited.stream().sorted(Entry.comparingByKey()).collect(Collectors.toList())) { int curRank = rank++; final StatSet player = data.getValue(); @@ -116,7 +155,7 @@ public class ExRankingCharRankers implements IClientOutgoingPacket if (snapshot.size() > 0) { int snapshotRank = 1; - for (Map.Entry ssData : snapshot.stream().sorted(Map.Entry.comparingByKey()).collect(Collectors.toList())) + for (Entry ssData : snapshot.stream().sorted(Entry.comparingByKey()).collect(Collectors.toList())) { final StatSet snapshotData = ssData.getValue(); if (player.getInt("charId") == snapshotData.getInt("charId")) diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestRankingCharRankers.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestRankingCharRankers.java index 9c24e1b810..6b3dac4575 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestRankingCharRankers.java +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/clientpackets/ranking/RequestRankingCharRankers.java @@ -29,14 +29,14 @@ public class RequestRankingCharRankers implements IClientIncomingPacket { private int _group; private int _scope; - private int _race; + private int _ordinal; @Override public boolean read(GameClient client, PacketReader packet) { _group = packet.readC(); // Tab Id _scope = packet.readC(); // All or personal - _race = packet.readD(); + _ordinal = packet.readD(); return true; } @@ -49,6 +49,6 @@ public class RequestRankingCharRankers implements IClientIncomingPacket return; } - player.sendPacket(new ExRankingCharRankers(player, _group, _scope, _race)); + player.sendPacket(new ExRankingCharRankers(player, _group, _scope, _ordinal)); } } diff --git a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExRankingCharRankers.java b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExRankingCharRankers.java index 3985aa76d0..3c8b448b3b 100644 --- a/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExRankingCharRankers.java +++ b/L2J_Mobius_Essence_5.0_Sylph/java/org/l2jmobius/gameserver/network/serverpackets/ranking/ExRankingCharRankers.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import java.util.stream.Collectors; import org.l2jmobius.commons.network.PacketWriter; @@ -40,16 +41,16 @@ public class ExRankingCharRankers implements IClientOutgoingPacket private final PlayerInstance _player; private final int _group; private final int _scope; - private final int _race; + private final int _ordinal; private final Map _playerList; private final Map _snapshotList; - public ExRankingCharRankers(PlayerInstance player, int group, int scope, int race) + public ExRankingCharRankers(PlayerInstance player, int group, int scope, int ordinal) { _player = player; _group = group; _scope = scope; - _race = race; + _ordinal = ordinal; _playerList = RankManager.getInstance().getRankList(); _snapshotList = RankManager.getInstance().getSnapshotList(); } @@ -61,13 +62,13 @@ public class ExRankingCharRankers implements IClientOutgoingPacket packet.writeC(_group); packet.writeC(_scope); - packet.writeD(_race); + packet.writeD(_ordinal); packet.writeD(_player.getClassId().getId()); if (_playerList.size() > 0) { final RankingCategory category = RankingCategory.values()[_group]; - writeFilteredRankingData(packet, category, category.getScopeByGroup(_scope), Race.values()[_race]); + writeFilteredRankingData(packet, category, category.getScopeByGroup(_scope)); } else { @@ -76,34 +77,72 @@ public class ExRankingCharRankers implements IClientOutgoingPacket return true; } - private void writeFilteredRankingData(PacketWriter packet, RankingCategory category, RankingScope scope, Race race) + private void writeFilteredRankingData(PacketWriter packet, RankingCategory category, RankingScope scope) { switch (category) { - case SERVER -> writeScopeData(packet, scope, new ArrayList<>(_playerList.entrySet()), new ArrayList<>(_snapshotList.entrySet())); - case RACE -> writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> it.getValue().getInt("race") == race.ordinal()).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> it.getValue().getInt("race") == race.ordinal()).collect(Collectors.toList())); - case CLAN -> writeScopeData(packet, scope, _player.getClan() == null ? Collections.emptyList() : _playerList.entrySet().stream().filter(it -> it.getValue().getString("clanName").equals(_player.getClan().getName())).collect(Collectors.toList()), _player.getClan() == null ? Collections.emptyList() : _snapshotList.entrySet().stream().filter(it -> it.getValue().getString("clanName").equals(_player.getClan().getName())).collect(Collectors.toList())); - case FRIEND -> writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> _player.getFriendList().contains(it.getValue().getInt("charId"))).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> _player.getFriendList().contains(it.getValue().getInt("charId"))).collect(Collectors.toList())); + case SERVER: + { + writeScopeData(packet, scope, new ArrayList<>(_playerList.entrySet()), new ArrayList<>(_snapshotList.entrySet())); + break; + } + case RACE: + { + final Race race = Race.values()[_ordinal]; + writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> it.getValue().getInt("race") == race.ordinal()).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> it.getValue().getInt("race") == race.ordinal()).collect(Collectors.toList())); + break; + } + case CLAN: + { + writeScopeData(packet, scope, _player.getClan() == null ? Collections.emptyList() : _playerList.entrySet().stream().filter(it -> it.getValue().getString("clanName").equals(_player.getClan().getName())).collect(Collectors.toList()), _player.getClan() == null ? Collections.emptyList() : _snapshotList.entrySet().stream().filter(it -> it.getValue().getString("clanName").equals(_player.getClan().getName())).collect(Collectors.toList())); + break; + } + case FRIEND: + { + writeScopeData(packet, scope, _playerList.entrySet().stream().filter(it -> _player.getFriendList().contains(it.getValue().getInt("charId"))).collect(Collectors.toList()), _snapshotList.entrySet().stream().filter(it -> _player.getFriendList().contains(it.getValue().getInt("charId"))).collect(Collectors.toList())); + break; + } } } - private void writeScopeData(PacketWriter packet, RankingScope scope, List> list, List> snapshot) + private void writeScopeData(PacketWriter packet, RankingScope scope, List> list, List> snapshot) { - - Map.Entry playerData = list.stream().filter(it -> it.getValue().getInt("charId", 0) == _player.getObjectId()).findFirst().orElse(null); + Entry playerData = list.stream().filter(it -> it.getValue().getInt("charId", 0) == _player.getObjectId()).findFirst().orElse(null); final int indexOf = list.indexOf(playerData); - final List> limited = switch (scope) + + final List> limited; + switch (scope) { - case TOP_100 -> list.stream().limit(100).collect(Collectors.toList()); - case ALL -> list; - case TOP_150 -> list.stream().limit(150).collect(Collectors.toList()); - case SELF -> playerData == null ? Collections.emptyList() : list.subList(Math.max(0, indexOf - 10), Math.min(list.size(), indexOf + 10)); - }; + case TOP_100: + { + limited = list.stream().limit(100).collect(Collectors.toList()); + break; + } + case ALL: + { + limited = list; + break; + } + case TOP_150: + { + limited = list.stream().limit(150).collect(Collectors.toList()); + break; + } + case SELF: + { + limited = playerData == null ? Collections.emptyList() : list.subList(Math.max(0, indexOf - 10), Math.min(list.size(), indexOf + 10)); + break; + } + default: + { + limited = Collections.emptyList(); + } + } packet.writeD(limited.size()); int rank = 1; - for (Map.Entry data : limited.stream().sorted(Map.Entry.comparingByKey()).collect(Collectors.toList())) + for (Entry data : limited.stream().sorted(Entry.comparingByKey()).collect(Collectors.toList())) { int curRank = rank++; final StatSet player = data.getValue(); @@ -116,7 +155,7 @@ public class ExRankingCharRankers implements IClientOutgoingPacket if (snapshot.size() > 0) { int snapshotRank = 1; - for (Map.Entry ssData : snapshot.stream().sorted(Map.Entry.comparingByKey()).collect(Collectors.toList())) + for (Entry ssData : snapshot.stream().sorted(Entry.comparingByKey()).collect(Collectors.toList())) { final StatSet snapshotData = ssData.getValue(); if (player.getInt("charId") == snapshotData.getInt("charId"))