Addition of player limit for rank manager.
This commit is contained in:
parent
6abcec1ce6
commit
6f337395e5
@ -141,6 +141,7 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.PremiumManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.PunishmentManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.RankManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.SellBuffsManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.ServerRestartManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.SiegeGuardManager;
|
||||
@ -351,6 +352,7 @@ public class GameServer
|
||||
CursedWeaponsManager.getInstance();
|
||||
TransformData.getInstance();
|
||||
BotReportTable.getInstance();
|
||||
RankManager.getInstance();
|
||||
if (Config.SELLBUFF_ENABLED)
|
||||
{
|
||||
SellBuffsManager.getInstance();
|
||||
|
@ -37,11 +37,13 @@ public class RankManager
|
||||
{
|
||||
private static final Logger LOGGER = Logger.getLogger(RankManager.class.getName());
|
||||
|
||||
private static final String SELECT_CHARACTERS = "SELECT charId,char_name,level,race,base_class, clanid FROM characters WHERE level > 84 ORDER BY exp DESC";
|
||||
private static final String SELECT_CHARACTERS_BY_RACE = "SELECT charId FROM characters WHERE level > 84 AND race = ? ORDER BY exp DESC";
|
||||
public static final int PLAYER_LIMIT = 100;
|
||||
|
||||
private static final String GET_CURRENT_CYCLE_DATA = "SELECT characters.char_name, characters.level, characters.base_class, characters.clanid, olympiad_nobles.charId, olympiad_nobles.olympiad_points, olympiad_nobles.competitions_won, olympiad_nobles.competitions_lost FROM characters, olympiad_nobles WHERE characters.charId = olympiad_nobles.charId ORDER BY olympiad_nobles.olympiad_points DESC";
|
||||
private static final String GET_CHARACTERS_BY_CLASS = "SELECT characters.charId, olympiad_nobles.olympiad_points FROM characters, olympiad_nobles WHERE olympiad_nobles.charId = characters.charId AND characters.base_class = ? ORDER BY olympiad_nobles.olympiad_points DESC";
|
||||
private static final String SELECT_CHARACTERS = "SELECT charId,char_name,level,race,base_class, clanid FROM characters WHERE level > 84 ORDER BY exp DESC LIMIT " + PLAYER_LIMIT;
|
||||
private static final String SELECT_CHARACTERS_BY_RACE = "SELECT charId FROM characters WHERE level > 84 AND race = ? ORDER BY exp DESC LIMIT " + PLAYER_LIMIT;
|
||||
|
||||
private static final String GET_CURRENT_CYCLE_DATA = "SELECT characters.char_name, characters.level, characters.base_class, characters.clanid, olympiad_nobles.charId, olympiad_nobles.olympiad_points, olympiad_nobles.competitions_won, olympiad_nobles.competitions_lost FROM characters, olympiad_nobles WHERE characters.charId = olympiad_nobles.charId ORDER BY olympiad_nobles.olympiad_points DESC LIMIT " + PLAYER_LIMIT;
|
||||
private static final String GET_CHARACTERS_BY_CLASS = "SELECT characters.charId, olympiad_nobles.olympiad_points FROM characters, olympiad_nobles WHERE olympiad_nobles.charId = characters.charId AND characters.base_class = ? ORDER BY olympiad_nobles.olympiad_points DESC LIMIT " + PLAYER_LIMIT;
|
||||
|
||||
private final Map<Integer, StatsSet> _mainList = new ConcurrentHashMap<>();
|
||||
private Map<Integer, StatsSet> _snapshotList = new ConcurrentHashMap<>();
|
||||
@ -53,26 +55,6 @@ public class RankManager
|
||||
ThreadPool.scheduleAtFixedRate(this::update, 0, 1800000);
|
||||
}
|
||||
|
||||
public Map<Integer, StatsSet> getRankList()
|
||||
{
|
||||
return _mainList;
|
||||
}
|
||||
|
||||
public Map<Integer, StatsSet> getSnapshotList()
|
||||
{
|
||||
return _snapshotList;
|
||||
}
|
||||
|
||||
public Map<Integer, StatsSet> getOlyRankList()
|
||||
{
|
||||
return _mainOlyList;
|
||||
}
|
||||
|
||||
public Map<Integer, StatsSet> getSnapshotOlyList()
|
||||
{
|
||||
return _snapshotOlyList;
|
||||
}
|
||||
|
||||
private synchronized void update()
|
||||
{
|
||||
// Load charIds All
|
||||
@ -80,6 +62,7 @@ public class RankManager
|
||||
_mainList.clear();
|
||||
_snapshotOlyList = _mainOlyList;
|
||||
_mainOlyList.clear();
|
||||
|
||||
try (Connection con = DatabaseFactory.getConnection();
|
||||
PreparedStatement statement = con.prepareStatement(SELECT_CHARACTERS))
|
||||
{
|
||||
@ -117,6 +100,7 @@ public class RankManager
|
||||
{
|
||||
LOGGER.log(Level.WARNING, "Could not load chars total rank data: " + this + " - " + e.getMessage(), e);
|
||||
}
|
||||
|
||||
// load olympiad data.
|
||||
try (Connection con = DatabaseFactory.getConnection();
|
||||
PreparedStatement statement = con.prepareStatement(GET_CURRENT_CYCLE_DATA))
|
||||
@ -237,13 +221,33 @@ public class RankManager
|
||||
}
|
||||
}
|
||||
|
||||
private static class SingletonHolder
|
||||
public Map<Integer, StatsSet> getRankList()
|
||||
{
|
||||
protected static final RankManager INSTANCE = new RankManager();
|
||||
return _mainList;
|
||||
}
|
||||
|
||||
public Map<Integer, StatsSet> getSnapshotList()
|
||||
{
|
||||
return _snapshotList;
|
||||
}
|
||||
|
||||
public Map<Integer, StatsSet> getOlyRankList()
|
||||
{
|
||||
return _mainOlyList;
|
||||
}
|
||||
|
||||
public Map<Integer, StatsSet> getSnapshotOlyList()
|
||||
{
|
||||
return _snapshotOlyList;
|
||||
}
|
||||
|
||||
public static RankManager getInstance()
|
||||
{
|
||||
return SingletonHolder.INSTANCE;
|
||||
}
|
||||
|
||||
private static class SingletonHolder
|
||||
{
|
||||
protected static final RankManager INSTANCE = new RankManager();
|
||||
}
|
||||
}
|
@ -37,5 +37,4 @@ public class RequestOlympiadMyRankingInfo implements IClientIncomingPacket
|
||||
{
|
||||
client.sendPacket(new ExOlympiadMyRankingInfo(client.getPlayer()));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -48,5 +48,4 @@ public class RequestOlympiadRankingInfo implements IClientIncomingPacket
|
||||
{
|
||||
client.sendPacket(new ExOlympiadRankingInfo(client.getPlayer(), _tabId, _rankingType, _unk, _classId, _serverId));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.gameserver.data.sql.impl.ClanTable;
|
||||
import org.l2jmobius.gameserver.instancemanager.RankManager;
|
||||
import org.l2jmobius.gameserver.model.entity.Hero;
|
||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
@ -34,11 +35,11 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
*/
|
||||
public class ExOlympiadHeroAndLegendInfo implements IClientOutgoingPacket
|
||||
{
|
||||
private static final String GET_HEROES = "SELECT characters.charId, characters.char_name, characters.race, characters.sex, characters.base_class, characters.level, characters.clanid, olympiad_nobles_eom.competitions_won, olympiad_nobles_eom.competitions_lost, olympiad_nobles_eom.olympiad_points, heroes.legend_count, heroes.count FROM heroes, characters, olympiad_nobles_eom WHERE characters.charId = heroes.charId AND characters.charId = olympiad_nobles_eom.charId ORDER BY olympiad_nobles_eom.olympiad_points DESC, characters.base_class ASC";
|
||||
// TODO: Move query and store data at RankManager.
|
||||
private static final String GET_HEROES = "SELECT characters.charId, characters.char_name, characters.race, characters.sex, characters.base_class, characters.level, characters.clanid, olympiad_nobles_eom.competitions_won, olympiad_nobles_eom.competitions_lost, olympiad_nobles_eom.olympiad_points, heroes.legend_count, heroes.count FROM heroes, characters, olympiad_nobles_eom WHERE characters.charId = heroes.charId AND characters.charId = olympiad_nobles_eom.charId ORDER BY olympiad_nobles_eom.olympiad_points DESC, characters.base_class ASC LIMIT " + RankManager.PLAYER_LIMIT;
|
||||
|
||||
public ExOlympiadHeroAndLegendInfo()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -26,6 +26,7 @@ import java.util.GregorianCalendar;
|
||||
|
||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.gameserver.instancemanager.RankManager;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.entity.Hero;
|
||||
@ -38,8 +39,10 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
*/
|
||||
public class ExOlympiadMyRankingInfo implements IClientOutgoingPacket
|
||||
{
|
||||
private static final String GET_CURRENT_CYCLE_DATA = "SELECT charId, olympiad_points, competitions_won, competitions_lost FROM olympiad_nobles WHERE class_id = ?";
|
||||
private static final String GET_PREVIOUS_CYCLE_DATA = "SELECT charId, olympiad_points, competitions_won, competitions_lost FROM olympiad_nobles_eom WHERE class_id = ?";
|
||||
// TODO: Move query and store data at RankManager.
|
||||
private static final String GET_CURRENT_CYCLE_DATA = "SELECT charId, olympiad_points, competitions_won, competitions_lost FROM olympiad_nobles WHERE class_id = ? ORDER BY olympiad_points DESC LIMIT " + RankManager.PLAYER_LIMIT;
|
||||
private static final String GET_PREVIOUS_CYCLE_DATA = "SELECT charId, olympiad_points, competitions_won, competitions_lost FROM olympiad_nobles_eom WHERE class_id = ? ORDER BY olympiad_points DESC LIMIT " + RankManager.PLAYER_LIMIT;
|
||||
|
||||
private final PlayerInstance _player;
|
||||
|
||||
public ExOlympiadMyRankingInfo(PlayerInstance player)
|
||||
@ -98,6 +101,7 @@ public class ExOlympiadMyRankingInfo implements IClientOutgoingPacket
|
||||
{
|
||||
LOGGER.warning("Olympiad my ranking: Couldnt load data: " + e.getMessage());
|
||||
}
|
||||
|
||||
int previousPlace = 0;
|
||||
int previousWins = 0;
|
||||
int previousLoses = 0;
|
||||
@ -126,6 +130,7 @@ public class ExOlympiadMyRankingInfo implements IClientOutgoingPacket
|
||||
{
|
||||
LOGGER.warning("Olympiad my ranking: Couldnt load data: " + e.getMessage());
|
||||
}
|
||||
|
||||
int heroCount = 0;
|
||||
int legendCount = 0;
|
||||
if (Hero.getInstance().getCompleteHeroes().containsKey(_player.getObjectId()))
|
||||
|
@ -138,6 +138,7 @@ import org.l2jmobius.gameserver.instancemanager.PetitionManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.PremiumManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.PunishmentManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.QuestManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.RankManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.SellBuffsManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.ServerRestartManager;
|
||||
import org.l2jmobius.gameserver.instancemanager.SiegeGuardManager;
|
||||
@ -347,6 +348,7 @@ public class GameServer
|
||||
CursedWeaponsManager.getInstance();
|
||||
TransformData.getInstance();
|
||||
BotReportTable.getInstance();
|
||||
RankManager.getInstance();
|
||||
if (Config.SELLBUFF_ENABLED)
|
||||
{
|
||||
SellBuffsManager.getInstance();
|
||||
|
@ -37,11 +37,13 @@ public class RankManager
|
||||
{
|
||||
private static final Logger LOGGER = Logger.getLogger(RankManager.class.getName());
|
||||
|
||||
private static final String SELECT_CHARACTERS = "SELECT charId,char_name,level,race,base_class, clanid FROM characters WHERE level > 84 ORDER BY exp DESC";
|
||||
private static final String SELECT_CHARACTERS_BY_RACE = "SELECT charId FROM characters WHERE level > 84 AND race = ? ORDER BY exp DESC";
|
||||
public static final int PLAYER_LIMIT = 100;
|
||||
|
||||
private static final String GET_CURRENT_CYCLE_DATA = "SELECT characters.char_name, characters.level, characters.base_class, characters.clanid, olympiad_nobles.charId, olympiad_nobles.olympiad_points, olympiad_nobles.competitions_won, olympiad_nobles.competitions_lost FROM characters, olympiad_nobles WHERE characters.charId = olympiad_nobles.charId ORDER BY olympiad_nobles.olympiad_points DESC";
|
||||
private static final String GET_CHARACTERS_BY_CLASS = "SELECT characters.charId, olympiad_nobles.olympiad_points FROM characters, olympiad_nobles WHERE olympiad_nobles.charId = characters.charId AND characters.base_class = ? ORDER BY olympiad_nobles.olympiad_points DESC";
|
||||
private static final String SELECT_CHARACTERS = "SELECT charId,char_name,level,race,base_class, clanid FROM characters WHERE level > 84 ORDER BY exp DESC LIMIT " + PLAYER_LIMIT;
|
||||
private static final String SELECT_CHARACTERS_BY_RACE = "SELECT charId FROM characters WHERE level > 84 AND race = ? ORDER BY exp DESC LIMIT " + PLAYER_LIMIT;
|
||||
|
||||
private static final String GET_CURRENT_CYCLE_DATA = "SELECT characters.char_name, characters.level, characters.base_class, characters.clanid, olympiad_nobles.charId, olympiad_nobles.olympiad_points, olympiad_nobles.competitions_won, olympiad_nobles.competitions_lost FROM characters, olympiad_nobles WHERE characters.charId = olympiad_nobles.charId ORDER BY olympiad_nobles.olympiad_points DESC LIMIT " + PLAYER_LIMIT;
|
||||
private static final String GET_CHARACTERS_BY_CLASS = "SELECT characters.charId, olympiad_nobles.olympiad_points FROM characters, olympiad_nobles WHERE olympiad_nobles.charId = characters.charId AND characters.base_class = ? ORDER BY olympiad_nobles.olympiad_points DESC LIMIT " + PLAYER_LIMIT;
|
||||
|
||||
private final Map<Integer, StatsSet> _mainList = new ConcurrentHashMap<>();
|
||||
private Map<Integer, StatsSet> _snapshotList = new ConcurrentHashMap<>();
|
||||
@ -53,26 +55,6 @@ public class RankManager
|
||||
ThreadPool.scheduleAtFixedRate(this::update, 0, 1800000);
|
||||
}
|
||||
|
||||
public Map<Integer, StatsSet> getRankList()
|
||||
{
|
||||
return _mainList;
|
||||
}
|
||||
|
||||
public Map<Integer, StatsSet> getSnapshotList()
|
||||
{
|
||||
return _snapshotList;
|
||||
}
|
||||
|
||||
public Map<Integer, StatsSet> getOlyRankList()
|
||||
{
|
||||
return _mainOlyList;
|
||||
}
|
||||
|
||||
public Map<Integer, StatsSet> getSnapshotOlyList()
|
||||
{
|
||||
return _snapshotOlyList;
|
||||
}
|
||||
|
||||
private synchronized void update()
|
||||
{
|
||||
// Load charIds All
|
||||
@ -80,6 +62,7 @@ public class RankManager
|
||||
_mainList.clear();
|
||||
_snapshotOlyList = _mainOlyList;
|
||||
_mainOlyList.clear();
|
||||
|
||||
try (Connection con = DatabaseFactory.getConnection();
|
||||
PreparedStatement statement = con.prepareStatement(SELECT_CHARACTERS))
|
||||
{
|
||||
@ -117,6 +100,7 @@ public class RankManager
|
||||
{
|
||||
LOGGER.log(Level.WARNING, "Could not load chars total rank data: " + this + " - " + e.getMessage(), e);
|
||||
}
|
||||
|
||||
// load olympiad data.
|
||||
try (Connection con = DatabaseFactory.getConnection();
|
||||
PreparedStatement statement = con.prepareStatement(GET_CURRENT_CYCLE_DATA))
|
||||
@ -237,13 +221,33 @@ public class RankManager
|
||||
}
|
||||
}
|
||||
|
||||
private static class SingletonHolder
|
||||
public Map<Integer, StatsSet> getRankList()
|
||||
{
|
||||
protected static final RankManager INSTANCE = new RankManager();
|
||||
return _mainList;
|
||||
}
|
||||
|
||||
public Map<Integer, StatsSet> getSnapshotList()
|
||||
{
|
||||
return _snapshotList;
|
||||
}
|
||||
|
||||
public Map<Integer, StatsSet> getOlyRankList()
|
||||
{
|
||||
return _mainOlyList;
|
||||
}
|
||||
|
||||
public Map<Integer, StatsSet> getSnapshotOlyList()
|
||||
{
|
||||
return _snapshotOlyList;
|
||||
}
|
||||
|
||||
public static RankManager getInstance()
|
||||
{
|
||||
return SingletonHolder.INSTANCE;
|
||||
}
|
||||
|
||||
private static class SingletonHolder
|
||||
{
|
||||
protected static final RankManager INSTANCE = new RankManager();
|
||||
}
|
||||
}
|
@ -37,5 +37,4 @@ public class RequestOlympiadMyRankingInfo implements IClientIncomingPacket
|
||||
{
|
||||
client.sendPacket(new ExOlympiadMyRankingInfo(client.getPlayer()));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -48,5 +48,4 @@ public class RequestOlympiadRankingInfo implements IClientIncomingPacket
|
||||
{
|
||||
client.sendPacket(new ExOlympiadRankingInfo(client.getPlayer(), _tabId, _rankingType, _unk, _classId, _serverId));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ import org.l2jmobius.Config;
|
||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.gameserver.data.sql.impl.ClanTable;
|
||||
import org.l2jmobius.gameserver.instancemanager.RankManager;
|
||||
import org.l2jmobius.gameserver.model.entity.Hero;
|
||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||
import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
@ -34,11 +35,11 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
*/
|
||||
public class ExOlympiadHeroAndLegendInfo implements IClientOutgoingPacket
|
||||
{
|
||||
private static final String GET_HEROES = "SELECT characters.charId, characters.char_name, characters.race, characters.sex, characters.base_class, characters.level, characters.clanid, olympiad_nobles_eom.competitions_won, olympiad_nobles_eom.competitions_lost, olympiad_nobles_eom.olympiad_points, heroes.legend_count, heroes.count FROM heroes, characters, olympiad_nobles_eom WHERE characters.charId = heroes.charId AND characters.charId = olympiad_nobles_eom.charId ORDER BY olympiad_nobles_eom.olympiad_points DESC, characters.base_class ASC";
|
||||
// TODO: Move query and store data at RankManager.
|
||||
private static final String GET_HEROES = "SELECT characters.charId, characters.char_name, characters.race, characters.sex, characters.base_class, characters.level, characters.clanid, olympiad_nobles_eom.competitions_won, olympiad_nobles_eom.competitions_lost, olympiad_nobles_eom.olympiad_points, heroes.legend_count, heroes.count FROM heroes, characters, olympiad_nobles_eom WHERE characters.charId = heroes.charId AND characters.charId = olympiad_nobles_eom.charId ORDER BY olympiad_nobles_eom.olympiad_points DESC, characters.base_class ASC LIMIT " + RankManager.PLAYER_LIMIT;
|
||||
|
||||
public ExOlympiadHeroAndLegendInfo()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -26,6 +26,7 @@ import java.util.GregorianCalendar;
|
||||
|
||||
import org.l2jmobius.commons.database.DatabaseFactory;
|
||||
import org.l2jmobius.commons.network.PacketWriter;
|
||||
import org.l2jmobius.gameserver.instancemanager.RankManager;
|
||||
import org.l2jmobius.gameserver.model.StatsSet;
|
||||
import org.l2jmobius.gameserver.model.actor.instance.PlayerInstance;
|
||||
import org.l2jmobius.gameserver.model.entity.Hero;
|
||||
@ -38,8 +39,10 @@ import org.l2jmobius.gameserver.network.serverpackets.IClientOutgoingPacket;
|
||||
*/
|
||||
public class ExOlympiadMyRankingInfo implements IClientOutgoingPacket
|
||||
{
|
||||
private static final String GET_CURRENT_CYCLE_DATA = "SELECT charId, olympiad_points, competitions_won, competitions_lost FROM olympiad_nobles WHERE class_id = ?";
|
||||
private static final String GET_PREVIOUS_CYCLE_DATA = "SELECT charId, olympiad_points, competitions_won, competitions_lost FROM olympiad_nobles_eom WHERE class_id = ?";
|
||||
// TODO: Move query and store data at RankManager.
|
||||
private static final String GET_CURRENT_CYCLE_DATA = "SELECT charId, olympiad_points, competitions_won, competitions_lost FROM olympiad_nobles WHERE class_id = ? ORDER BY olympiad_points DESC LIMIT " + RankManager.PLAYER_LIMIT;
|
||||
private static final String GET_PREVIOUS_CYCLE_DATA = "SELECT charId, olympiad_points, competitions_won, competitions_lost FROM olympiad_nobles_eom WHERE class_id = ? ORDER BY olympiad_points DESC LIMIT " + RankManager.PLAYER_LIMIT;
|
||||
|
||||
private final PlayerInstance _player;
|
||||
|
||||
public ExOlympiadMyRankingInfo(PlayerInstance player)
|
||||
@ -98,6 +101,7 @@ public class ExOlympiadMyRankingInfo implements IClientOutgoingPacket
|
||||
{
|
||||
LOGGER.warning("Olympiad my ranking: Couldnt load data: " + e.getMessage());
|
||||
}
|
||||
|
||||
int previousPlace = 0;
|
||||
int previousWins = 0;
|
||||
int previousLoses = 0;
|
||||
@ -126,6 +130,7 @@ public class ExOlympiadMyRankingInfo implements IClientOutgoingPacket
|
||||
{
|
||||
LOGGER.warning("Olympiad my ranking: Couldnt load data: " + e.getMessage());
|
||||
}
|
||||
|
||||
int heroCount = 0;
|
||||
int legendCount = 0;
|
||||
if (Hero.getInstance().getCompleteHeroes().containsKey(_player.getObjectId()))
|
||||
|
Loading…
Reference in New Issue
Block a user