|
@@ -25,8 +25,6 @@ import java.util.Map;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
import java.util.logging.Logger;
|
|
|
|
|
|
-import javolution.util.FastList;
|
|
|
|
-
|
|
|
|
import com.l2jserver.Config;
|
|
import com.l2jserver.Config;
|
|
import com.l2jserver.L2DatabaseFactory;
|
|
import com.l2jserver.L2DatabaseFactory;
|
|
import com.l2jserver.gameserver.ThreadPoolManager;
|
|
import com.l2jserver.gameserver.ThreadPoolManager;
|
|
@@ -56,23 +54,18 @@ import com.l2jserver.gameserver.scripting.scriptengine.events.ClanWarEvent;
|
|
import com.l2jserver.gameserver.scripting.scriptengine.impl.L2Script.EventStage;
|
|
import com.l2jserver.gameserver.scripting.scriptengine.impl.L2Script.EventStage;
|
|
import com.l2jserver.gameserver.scripting.scriptengine.listeners.clan.ClanWarListener;
|
|
import com.l2jserver.gameserver.scripting.scriptengine.listeners.clan.ClanWarListener;
|
|
import com.l2jserver.gameserver.util.Util;
|
|
import com.l2jserver.gameserver.util.Util;
|
|
|
|
+import com.l2jserver.util.L2FastList;
|
|
|
|
|
|
/**
|
|
/**
|
|
- * This class ...
|
|
|
|
- *
|
|
|
|
- * @version $Revision: 1.11.2.5.2.5 $ $Date: 2005/03/27 15:29:18 $
|
|
|
|
|
|
+ * This class loads the clan related data.
|
|
*/
|
|
*/
|
|
public class ClanTable
|
|
public class ClanTable
|
|
{
|
|
{
|
|
- private static Logger _log = Logger.getLogger(ClanTable.class.getName());
|
|
|
|
- private static List<ClanWarListener> clanWarListeners = new FastList<ClanWarListener>().shared();
|
|
|
|
|
|
+ private static final Logger _log = Logger.getLogger(ClanTable.class.getName());
|
|
|
|
|
|
- private final Map<Integer, L2Clan> _clans = new HashMap<>();
|
|
|
|
|
|
+ private static List<ClanWarListener> clanWarListeners = new L2FastList<>(true);
|
|
|
|
|
|
- public static ClanTable getInstance()
|
|
|
|
- {
|
|
|
|
- return SingletonHolder._instance;
|
|
|
|
- }
|
|
|
|
|
|
+ private final Map<Integer, L2Clan> _clans = new HashMap<>();
|
|
|
|
|
|
public L2Clan[] getClans()
|
|
public L2Clan[] getClans()
|
|
{
|
|
{
|
|
@@ -83,7 +76,9 @@ public class ClanTable
|
|
{
|
|
{
|
|
// forums has to be loaded before clan data, because of last forum id used should have also memo included
|
|
// forums has to be loaded before clan data, because of last forum id used should have also memo included
|
|
if (Config.COMMUNITY_TYPE > 0)
|
|
if (Config.COMMUNITY_TYPE > 0)
|
|
|
|
+ {
|
|
ForumsBBSManager.getInstance().initRoot();
|
|
ForumsBBSManager.getInstance().initRoot();
|
|
|
|
+ }
|
|
|
|
|
|
L2Clan clan;
|
|
L2Clan clan;
|
|
// Count the clans
|
|
// Count the clans
|
|
@@ -98,7 +93,9 @@ public class ClanTable
|
|
_clans.put(clanId, new L2Clan(clanId));
|
|
_clans.put(clanId, new L2Clan(clanId));
|
|
clan = getClan(clanId);
|
|
clan = getClan(clanId);
|
|
if (clan.getDissolvingExpiryTime() != 0)
|
|
if (clan.getDissolvingExpiryTime() != 0)
|
|
|
|
+ {
|
|
scheduleRemoveClan(clan.getClanId());
|
|
scheduleRemoveClan(clan.getClanId());
|
|
|
|
+ }
|
|
clanCount++;
|
|
clanCount++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -137,18 +134,21 @@ public class ClanTable
|
|
|
|
|
|
/**
|
|
/**
|
|
* Creates a new clan and store clan info to database
|
|
* Creates a new clan and store clan info to database
|
|
- *
|
|
|
|
* @param player
|
|
* @param player
|
|
- * @param clanName
|
|
|
|
|
|
+ * @param clanName
|
|
* @return NULL if clan with same name already exists
|
|
* @return NULL if clan with same name already exists
|
|
*/
|
|
*/
|
|
public L2Clan createClan(L2PcInstance player, String clanName)
|
|
public L2Clan createClan(L2PcInstance player, String clanName)
|
|
{
|
|
{
|
|
if (null == player)
|
|
if (null == player)
|
|
|
|
+ {
|
|
return null;
|
|
return null;
|
|
|
|
+ }
|
|
|
|
|
|
if (Config.DEBUG)
|
|
if (Config.DEBUG)
|
|
|
|
+ {
|
|
_log.fine(player.getObjectId() + "(" + player.getName() + ") requested a clan creation.");
|
|
_log.fine(player.getObjectId() + "(" + player.getName() + ") requested a clan creation.");
|
|
|
|
+ }
|
|
|
|
|
|
if (10 > player.getLevel())
|
|
if (10 > player.getLevel())
|
|
{
|
|
{
|
|
@@ -165,7 +165,7 @@ public class ClanTable
|
|
player.sendPacket(SystemMessageId.YOU_MUST_WAIT_XX_DAYS_BEFORE_CREATING_A_NEW_CLAN);
|
|
player.sendPacket(SystemMessageId.YOU_MUST_WAIT_XX_DAYS_BEFORE_CREATING_A_NEW_CLAN);
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
- if (!Util.isAlphaNumeric(clanName) || 2 > clanName.length())
|
|
|
|
|
|
+ if (!Util.isAlphaNumeric(clanName) || (2 > clanName.length()))
|
|
{
|
|
{
|
|
player.sendPacket(SystemMessageId.CLAN_NAME_INCORRECT);
|
|
player.sendPacket(SystemMessageId.CLAN_NAME_INCORRECT);
|
|
return null;
|
|
return null;
|
|
@@ -187,20 +187,22 @@ public class ClanTable
|
|
}
|
|
}
|
|
|
|
|
|
L2Clan clan = new L2Clan(IdFactory.getInstance().getNextId(), clanName);
|
|
L2Clan clan = new L2Clan(IdFactory.getInstance().getNextId(), clanName);
|
|
- L2ClanMember leader = new L2ClanMember(clan, player.getName(), player.getLevel(), player.getClassId().getId(), player.getObjectId(), player.getPledgeType(), player.getPowerGrade(), player.getTitle(), player.getAppearance().getSex(), player.getRace().ordinal());
|
|
|
|
|
|
+ L2ClanMember leader = new L2ClanMember(clan, player);
|
|
clan.setLeader(leader);
|
|
clan.setLeader(leader);
|
|
leader.setPlayerInstance(player);
|
|
leader.setPlayerInstance(player);
|
|
clan.store();
|
|
clan.store();
|
|
player.setClan(clan);
|
|
player.setClan(clan);
|
|
- player.setPledgeClass(leader.calculatePledgeClass(player));
|
|
|
|
|
|
+ player.setPledgeClass(L2ClanMember.calculatePledgeClass(player));
|
|
player.setClanPrivileges(L2Clan.CP_ALL);
|
|
player.setClanPrivileges(L2Clan.CP_ALL);
|
|
|
|
|
|
if (Config.DEBUG)
|
|
if (Config.DEBUG)
|
|
|
|
+ {
|
|
_log.fine("New clan created: " + clan.getClanId() + " " + clan.getName());
|
|
_log.fine("New clan created: " + clan.getClanId() + " " + clan.getName());
|
|
|
|
+ }
|
|
|
|
|
|
_clans.put(Integer.valueOf(clan.getClanId()), clan);
|
|
_clans.put(Integer.valueOf(clan.getClanId()), clan);
|
|
|
|
|
|
- //should be update packet only
|
|
|
|
|
|
+ // should be update packet only
|
|
player.sendPacket(new PledgeShowInfoUpdate(clan));
|
|
player.sendPacket(new PledgeShowInfoUpdate(clan));
|
|
player.sendPacket(new PledgeShowMemberListAll(clan, player));
|
|
player.sendPacket(new PledgeShowMemberListAll(clan, player));
|
|
player.sendPacket(new UserInfo(player));
|
|
player.sendPacket(new UserInfo(player));
|
|
@@ -238,17 +240,23 @@ public class ClanTable
|
|
}
|
|
}
|
|
}
|
|
}
|
|
int hallId = clan.getHideoutId();
|
|
int hallId = clan.getHideoutId();
|
|
- if(hallId == 0)
|
|
|
|
|
|
+ if (hallId == 0)
|
|
{
|
|
{
|
|
- for(SiegableHall hall : CHSiegeManager.getInstance().getConquerableHalls().values())
|
|
|
|
|
|
+ for (SiegableHall hall : CHSiegeManager.getInstance().getConquerableHalls().values())
|
|
|
|
+ {
|
|
hall.removeAttacker(clan);
|
|
hall.removeAttacker(clan);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
L2ClanMember leaderMember = clan.getLeader();
|
|
L2ClanMember leaderMember = clan.getLeader();
|
|
if (leaderMember == null)
|
|
if (leaderMember == null)
|
|
|
|
+ {
|
|
clan.getWarehouse().destroyAllItems("ClanRemove", null, null);
|
|
clan.getWarehouse().destroyAllItems("ClanRemove", null, null);
|
|
|
|
+ }
|
|
else
|
|
else
|
|
|
|
+ {
|
|
clan.getWarehouse().destroyAllItems("ClanRemove", clan.getLeader().getPlayerInstance(), null);
|
|
clan.getWarehouse().destroyAllItems("ClanRemove", clan.getLeader().getPlayerInstance(), null);
|
|
|
|
+ }
|
|
|
|
|
|
for (L2ClanMember member : clan.getMembers())
|
|
for (L2ClanMember member : clan.getMembers())
|
|
{
|
|
{
|
|
@@ -305,17 +313,23 @@ public class ClanTable
|
|
{
|
|
{
|
|
L2Clan owner = fort.getOwnerClan();
|
|
L2Clan owner = fort.getOwnerClan();
|
|
if (clan == owner)
|
|
if (clan == owner)
|
|
|
|
+ {
|
|
fort.removeOwner(true);
|
|
fort.removeOwner(true);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if(hallId != 0)
|
|
|
|
|
|
+ if (hallId != 0)
|
|
{
|
|
{
|
|
SiegableHall hall = CHSiegeManager.getInstance().getSiegableHall(hallId);
|
|
SiegableHall hall = CHSiegeManager.getInstance().getSiegableHall(hallId);
|
|
- if(hall != null && hall.getOwnerId() == clanId)
|
|
|
|
|
|
+ if ((hall != null) && (hall.getOwnerId() == clanId))
|
|
|
|
+ {
|
|
hall.free();
|
|
hall.free();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
if (Config.DEBUG)
|
|
if (Config.DEBUG)
|
|
|
|
+ {
|
|
_log.fine("clan removed in db: " + clanId);
|
|
_log.fine("clan removed in db: " + clanId);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
catch (Exception e)
|
|
{
|
|
{
|
|
@@ -325,7 +339,7 @@ public class ClanTable
|
|
|
|
|
|
public void scheduleRemoveClan(final int clanId)
|
|
public void scheduleRemoveClan(final int clanId)
|
|
{
|
|
{
|
|
- ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
|
|
|
|
|
|
+ ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
|
|
{
|
|
{
|
|
@Override
|
|
@Override
|
|
public void run()
|
|
public void run()
|
|
@@ -346,7 +360,7 @@ public class ClanTable
|
|
{
|
|
{
|
|
for (L2Clan clan : getClans())
|
|
for (L2Clan clan : getClans())
|
|
{
|
|
{
|
|
- if (clan.getAllyName() != null && clan.getAllyName().equalsIgnoreCase(allyName))
|
|
|
|
|
|
+ if ((clan.getAllyName() != null) && clan.getAllyName().equalsIgnoreCase(allyName))
|
|
{
|
|
{
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
@@ -382,14 +396,14 @@ public class ClanTable
|
|
_log.log(Level.SEVERE, "Error storing clan wars data.", e);
|
|
_log.log(Level.SEVERE, "Error storing clan wars data.", e);
|
|
}
|
|
}
|
|
|
|
|
|
- //SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.WAR_WITH_THE_S1_CLAN_HAS_BEGUN);
|
|
|
|
|
|
+ // SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.WAR_WITH_THE_S1_CLAN_HAS_BEGUN);
|
|
//
|
|
//
|
|
SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.CLAN_WAR_DECLARED_AGAINST_S1_IF_KILLED_LOSE_LOW_EXP);
|
|
SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.CLAN_WAR_DECLARED_AGAINST_S1_IF_KILLED_LOSE_LOW_EXP);
|
|
msg.addString(clan2.getName());
|
|
msg.addString(clan2.getName());
|
|
clan1.broadcastToOnlineMembers(msg);
|
|
clan1.broadcastToOnlineMembers(msg);
|
|
- //msg = SystemMessage.getSystemMessage(SystemMessageId.WAR_WITH_THE_S1_CLAN_HAS_BEGUN);
|
|
|
|
- //msg.addString(clan1.getName());
|
|
|
|
- //clan2.broadcastToOnlineMembers(msg);
|
|
|
|
|
|
+ // msg = SystemMessage.getSystemMessage(SystemMessageId.WAR_WITH_THE_S1_CLAN_HAS_BEGUN);
|
|
|
|
+ // msg.addString(clan1.getName());
|
|
|
|
+ // clan2.broadcastToOnlineMembers(msg);
|
|
// clan1 declared clan war.
|
|
// clan1 declared clan war.
|
|
msg = SystemMessage.getSystemMessage(SystemMessageId.CLAN_S1_DECLARED_WAR);
|
|
msg = SystemMessage.getSystemMessage(SystemMessageId.CLAN_S1_DECLARED_WAR);
|
|
msg.addString(clan1.getName());
|
|
msg.addString(clan1.getName());
|
|
@@ -410,16 +424,16 @@ public class ClanTable
|
|
clan2.deleteAttackerClan(clan1);
|
|
clan2.deleteAttackerClan(clan1);
|
|
clan1.broadcastClanStatus();
|
|
clan1.broadcastClanStatus();
|
|
clan2.broadcastClanStatus();
|
|
clan2.broadcastClanStatus();
|
|
- //for(L2ClanMember player: clan1.getMembers())
|
|
|
|
- //{
|
|
|
|
- // if(player.getPlayerInstance()!=null)
|
|
|
|
- // player.getPlayerInstance().setWantsPeace(0);
|
|
|
|
- //}
|
|
|
|
- //for(L2ClanMember player: clan2.getMembers())
|
|
|
|
- //{
|
|
|
|
- // if(player.getPlayerInstance()!=null)
|
|
|
|
- // player.getPlayerInstance().setWantsPeace(0);
|
|
|
|
- //}
|
|
|
|
|
|
+ // for(L2ClanMember player: clan1.getMembers())
|
|
|
|
+ // {
|
|
|
|
+ // if(player.getPlayerInstance()!=null)
|
|
|
|
+ // player.getPlayerInstance().setWantsPeace(0);
|
|
|
|
+ // }
|
|
|
|
+ // for(L2ClanMember player: clan2.getMembers())
|
|
|
|
+ // {
|
|
|
|
+ // if(player.getPlayerInstance()!=null)
|
|
|
|
+ // player.getPlayerInstance().setWantsPeace(0);
|
|
|
|
+ // }
|
|
|
|
|
|
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
|
|
try (Connection con = L2DatabaseFactory.getInstance().getConnection();
|
|
PreparedStatement ps = con.prepareStatement("DELETE FROM clan_wars WHERE clan1=? AND clan2=?"))
|
|
PreparedStatement ps = con.prepareStatement("DELETE FROM clan_wars WHERE clan1=? AND clan2=?"))
|
|
@@ -433,16 +447,16 @@ public class ClanTable
|
|
_log.log(Level.SEVERE, "Error removing clan wars data.", e);
|
|
_log.log(Level.SEVERE, "Error removing clan wars data.", e);
|
|
}
|
|
}
|
|
|
|
|
|
- //SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.WAR_WITH_THE_S1_CLAN_HAS_ENDED);
|
|
|
|
|
|
+ // SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.WAR_WITH_THE_S1_CLAN_HAS_ENDED);
|
|
SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.WAR_AGAINST_S1_HAS_STOPPED);
|
|
SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.WAR_AGAINST_S1_HAS_STOPPED);
|
|
msg.addString(clan2.getName());
|
|
msg.addString(clan2.getName());
|
|
clan1.broadcastToOnlineMembers(msg);
|
|
clan1.broadcastToOnlineMembers(msg);
|
|
msg = SystemMessage.getSystemMessage(SystemMessageId.CLAN_S1_HAS_DECIDED_TO_STOP);
|
|
msg = SystemMessage.getSystemMessage(SystemMessageId.CLAN_S1_HAS_DECIDED_TO_STOP);
|
|
msg.addString(clan1.getName());
|
|
msg.addString(clan1.getName());
|
|
clan2.broadcastToOnlineMembers(msg);
|
|
clan2.broadcastToOnlineMembers(msg);
|
|
- //msg = SystemMessage.getSystemMessage(SystemMessageId.WAR_WITH_THE_S1_CLAN_HAS_ENDED);
|
|
|
|
- //msg.addString(clan1.getName());
|
|
|
|
- //clan2.broadcastToOnlineMembers(msg);
|
|
|
|
|
|
+ // msg = SystemMessage.getSystemMessage(SystemMessageId.WAR_WITH_THE_S1_CLAN_HAS_ENDED);
|
|
|
|
+ // msg.addString(clan1.getName());
|
|
|
|
+ // clan2.broadcastToOnlineMembers(msg);
|
|
}
|
|
}
|
|
|
|
|
|
public void checkSurrender(L2Clan clan1, L2Clan clan2)
|
|
public void checkSurrender(L2Clan clan1, L2Clan clan2)
|
|
@@ -450,10 +464,12 @@ public class ClanTable
|
|
int count = 0;
|
|
int count = 0;
|
|
for (L2ClanMember player : clan1.getMembers())
|
|
for (L2ClanMember player : clan1.getMembers())
|
|
{
|
|
{
|
|
- if (player != null && player.getPlayerInstance().getWantsPeace() == 1)
|
|
|
|
|
|
+ if ((player != null) && (player.getPlayerInstance().getWantsPeace() == 1))
|
|
|
|
+ {
|
|
count++;
|
|
count++;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- if (count == clan1.getMembers().length - 1)
|
|
|
|
|
|
+ if (count == (clan1.getMembers().length - 1))
|
|
{
|
|
{
|
|
if (!fireClanWarEndListeners(clan1, clan2))
|
|
if (!fireClanWarEndListeners(clan1, clan2))
|
|
{
|
|
{
|
|
@@ -476,13 +492,15 @@ public class ClanTable
|
|
{
|
|
{
|
|
clan1 = getClan(rset.getInt("clan1"));
|
|
clan1 = getClan(rset.getInt("clan1"));
|
|
clan2 = getClan(rset.getInt("clan2"));
|
|
clan2 = getClan(rset.getInt("clan2"));
|
|
- if (clan1 != null && clan2 != null)
|
|
|
|
|
|
+ if ((clan1 != null) && (clan2 != null))
|
|
{
|
|
{
|
|
clan1.setEnemyClan(rset.getInt("clan2"));
|
|
clan1.setEnemyClan(rset.getInt("clan2"));
|
|
clan2.setAttackerClan(rset.getInt("clan1"));
|
|
clan2.setAttackerClan(rset.getInt("clan1"));
|
|
}
|
|
}
|
|
else
|
|
else
|
|
|
|
+ {
|
|
_log.log(Level.WARNING, "[ClanTable]: restorewars one of clans is null clan1:" + clan1 + " clan2:" + clan2);
|
|
_log.log(Level.WARNING, "[ClanTable]: restorewars one of clans is null clan1:" + clan1 + " clan2:" + clan2);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
catch (Exception e)
|
|
@@ -499,7 +517,7 @@ public class ClanTable
|
|
for (L2Clan clan : _clans.values())
|
|
for (L2Clan clan : _clans.values())
|
|
{
|
|
{
|
|
int allyId = clan.getAllyId();
|
|
int allyId = clan.getAllyId();
|
|
- if (allyId != 0 && clan.getClanId() != allyId)
|
|
|
|
|
|
+ if ((allyId != 0) && (clan.getClanId() != allyId))
|
|
{
|
|
{
|
|
if (!_clans.containsKey(allyId))
|
|
if (!_clans.containsKey(allyId))
|
|
{
|
|
{
|
|
@@ -507,7 +525,7 @@ public class ClanTable
|
|
clan.setAllyName(null);
|
|
clan.setAllyName(null);
|
|
clan.changeAllyCrest(0, true);
|
|
clan.changeAllyCrest(0, true);
|
|
clan.updateClanInDB();
|
|
clan.updateClanInDB();
|
|
- _log.info(getClass().getSimpleName()+": Removed alliance from clan: "+clan);
|
|
|
|
|
|
+ _log.info(getClass().getSimpleName() + ": Removed alliance from clan: " + clan);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -532,7 +550,9 @@ public class ClanTable
|
|
public void storeClanScore()
|
|
public void storeClanScore()
|
|
{
|
|
{
|
|
for (L2Clan clan : _clans.values())
|
|
for (L2Clan clan : _clans.values())
|
|
|
|
+ {
|
|
clan.updateClanScoreInDB();
|
|
clan.updateClanScoreInDB();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -544,7 +564,7 @@ public class ClanTable
|
|
*/
|
|
*/
|
|
private boolean fireClanWarStartListeners(L2Clan clan1, L2Clan clan2)
|
|
private boolean fireClanWarStartListeners(L2Clan clan1, L2Clan clan2)
|
|
{
|
|
{
|
|
- if (!clanWarListeners.isEmpty() && clan1 != null && clan2 != null)
|
|
|
|
|
|
+ if (!clanWarListeners.isEmpty() && (clan1 != null) && (clan2 != null))
|
|
{
|
|
{
|
|
ClanWarEvent event = new ClanWarEvent();
|
|
ClanWarEvent event = new ClanWarEvent();
|
|
event.setClan1(clan1);
|
|
event.setClan1(clan1);
|
|
@@ -570,7 +590,7 @@ public class ClanTable
|
|
*/
|
|
*/
|
|
private boolean fireClanWarEndListeners(L2Clan clan1, L2Clan clan2)
|
|
private boolean fireClanWarEndListeners(L2Clan clan1, L2Clan clan2)
|
|
{
|
|
{
|
|
- if (!clanWarListeners.isEmpty() && clan1 != null && clan2 != null)
|
|
|
|
|
|
+ if (!clanWarListeners.isEmpty() && (clan1 != null) && (clan2 != null))
|
|
{
|
|
{
|
|
ClanWarEvent event = new ClanWarEvent();
|
|
ClanWarEvent event = new ClanWarEvent();
|
|
event.setClan1(clan1);
|
|
event.setClan1(clan1);
|
|
@@ -608,6 +628,11 @@ public class ClanTable
|
|
clanWarListeners.remove(listener);
|
|
clanWarListeners.remove(listener);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public static ClanTable getInstance()
|
|
|
|
+ {
|
|
|
|
+ return SingletonHolder._instance;
|
|
|
|
+ }
|
|
|
|
+
|
|
private static class SingletonHolder
|
|
private static class SingletonHolder
|
|
{
|
|
{
|
|
protected static final ClanTable _instance = new ClanTable();
|
|
protected static final ClanTable _instance = new ClanTable();
|