소스 검색

BETA: Reworking L2ClanMember related code:
* Fix for !Noblesse/Hero status for clanless characters. Patch by: Tavo22
* With minor changes.
* Removed useless constructors.
* Replaced L2ClanMember(L2Clan clan, String name, int level, int classId, int objectId, int pledgeType, int powerGrade, String title, boolean sex, int raceOrdinal) with L2ClanMember(L2Clan clan, !ResultSet clanMember).
* Added !JavaDocs to L2ClanMember.
* L2ClanMember#calculatePledgeClass(..) is now static.
* L2ClanMember class format and clan up.
* !ClanTable class format and clan up.
* Updated other related classes.

Zoey76 12 년 전
부모
커밋
b58d407a20

+ 74 - 49
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/ClanTable.java

@@ -25,8 +25,6 @@ import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javolution.util.FastList;
-
 import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 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.listeners.clan.ClanWarListener;
 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
 {
-	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()
 	{
@@ -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
 		if (Config.COMMUNITY_TYPE > 0)
+		{
 			ForumsBBSManager.getInstance().initRoot();
+		}
 		
 		L2Clan clan;
 		// Count the clans
@@ -98,7 +93,9 @@ public class ClanTable
 				_clans.put(clanId, new L2Clan(clanId));
 				clan = getClan(clanId);
 				if (clan.getDissolvingExpiryTime() != 0)
+				{
 					scheduleRemoveClan(clan.getClanId());
+				}
 				clanCount++;
 			}
 		}
@@ -137,18 +134,21 @@ public class ClanTable
 	
 	/**
 	 * Creates a new clan and store clan info to database
-	 *
 	 * @param player
-	 * @param clanName 
+	 * @param clanName
 	 * @return NULL if clan with same name already exists
 	 */
 	public L2Clan createClan(L2PcInstance player, String clanName)
 	{
 		if (null == player)
+		{
 			return null;
+		}
 		
 		if (Config.DEBUG)
+		{
 			_log.fine(player.getObjectId() + "(" + player.getName() + ") requested a clan creation.");
+		}
 		
 		if (10 > player.getLevel())
 		{
@@ -165,7 +165,7 @@ public class ClanTable
 			player.sendPacket(SystemMessageId.YOU_MUST_WAIT_XX_DAYS_BEFORE_CREATING_A_NEW_CLAN);
 			return null;
 		}
-		if (!Util.isAlphaNumeric(clanName) || 2 > clanName.length())
+		if (!Util.isAlphaNumeric(clanName) || (2 > clanName.length()))
 		{
 			player.sendPacket(SystemMessageId.CLAN_NAME_INCORRECT);
 			return null;
@@ -187,20 +187,22 @@ public class ClanTable
 		}
 		
 		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);
 		leader.setPlayerInstance(player);
 		clan.store();
 		player.setClan(clan);
-		player.setPledgeClass(leader.calculatePledgeClass(player));
+		player.setPledgeClass(L2ClanMember.calculatePledgeClass(player));
 		player.setClanPrivileges(L2Clan.CP_ALL);
 		
 		if (Config.DEBUG)
+		{
 			_log.fine("New clan created: " + clan.getClanId() + " " + clan.getName());
+		}
 		
 		_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 PledgeShowMemberListAll(clan, player));
 		player.sendPacket(new UserInfo(player));
@@ -238,17 +240,23 @@ public class ClanTable
 			}
 		}
 		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);
+			}
 		}
 		
 		L2ClanMember leaderMember = clan.getLeader();
 		if (leaderMember == null)
+		{
 			clan.getWarehouse().destroyAllItems("ClanRemove", null, null);
+		}
 		else
+		{
 			clan.getWarehouse().destroyAllItems("ClanRemove", clan.getLeader().getPlayerInstance(), null);
+		}
 		
 		for (L2ClanMember member : clan.getMembers())
 		{
@@ -305,17 +313,23 @@ public class ClanTable
 				{
 					L2Clan owner = fort.getOwnerClan();
 					if (clan == owner)
+					{
 						fort.removeOwner(true);
+					}
 				}
 			}
-			if(hallId != 0)
+			if (hallId != 0)
 			{
 				SiegableHall hall = CHSiegeManager.getInstance().getSiegableHall(hallId);
-				if(hall != null && hall.getOwnerId() == clanId)
+				if ((hall != null) && (hall.getOwnerId() == clanId))
+				{
 					hall.free();
+				}
 			}
 			if (Config.DEBUG)
+			{
 				_log.fine("clan removed in db: " + clanId);
+			}
 		}
 		catch (Exception e)
 		{
@@ -325,7 +339,7 @@ public class ClanTable
 	
 	public void scheduleRemoveClan(final int clanId)
 	{
-		ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() 
+		ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
 		{
 			@Override
 			public void run()
@@ -346,7 +360,7 @@ public class ClanTable
 	{
 		for (L2Clan clan : getClans())
 		{
-			if (clan.getAllyName() != null && clan.getAllyName().equalsIgnoreCase(allyName))
+			if ((clan.getAllyName() != null) && clan.getAllyName().equalsIgnoreCase(allyName))
 			{
 				return true;
 			}
@@ -382,14 +396,14 @@ public class ClanTable
 			_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);
 		msg.addString(clan2.getName());
 		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.
 		msg = SystemMessage.getSystemMessage(SystemMessageId.CLAN_S1_DECLARED_WAR);
 		msg.addString(clan1.getName());
@@ -410,16 +424,16 @@ public class ClanTable
 		clan2.deleteAttackerClan(clan1);
 		clan1.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();
 			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);
 		}
 		
-		//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);
 		msg.addString(clan2.getName());
 		clan1.broadcastToOnlineMembers(msg);
 		msg = SystemMessage.getSystemMessage(SystemMessageId.CLAN_S1_HAS_DECIDED_TO_STOP);
 		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);
+		// 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)
@@ -450,10 +464,12 @@ public class ClanTable
 		int count = 0;
 		for (L2ClanMember player : clan1.getMembers())
 		{
-			if (player != null && player.getPlayerInstance().getWantsPeace() == 1)
+			if ((player != null) && (player.getPlayerInstance().getWantsPeace() == 1))
+			{
 				count++;
+			}
 		}
-		if (count == clan1.getMembers().length - 1)
+		if (count == (clan1.getMembers().length - 1))
 		{
 			if (!fireClanWarEndListeners(clan1, clan2))
 			{
@@ -476,13 +492,15 @@ public class ClanTable
 			{
 				clan1 = getClan(rset.getInt("clan1"));
 				clan2 = getClan(rset.getInt("clan2"));
-				if (clan1 != null && clan2 != null)
+				if ((clan1 != null) && (clan2 != null))
 				{
 					clan1.setEnemyClan(rset.getInt("clan2"));
 					clan2.setAttackerClan(rset.getInt("clan1"));
 				}
 				else
+				{
 					_log.log(Level.WARNING, "[ClanTable]: restorewars one of clans is null clan1:" + clan1 + " clan2:" + clan2);
+				}
 			}
 		}
 		catch (Exception e)
@@ -499,7 +517,7 @@ public class ClanTable
 		for (L2Clan clan : _clans.values())
 		{
 			int allyId = clan.getAllyId();
-			if (allyId != 0 && clan.getClanId() != allyId)
+			if ((allyId != 0) && (clan.getClanId() != allyId))
 			{
 				if (!_clans.containsKey(allyId))
 				{
@@ -507,7 +525,7 @@ public class ClanTable
 					clan.setAllyName(null);
 					clan.changeAllyCrest(0, true);
 					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()
 	{
 		for (L2Clan clan : _clans.values())
+		{
 			clan.updateClanScoreInDB();
+		}
 	}
 	
 	/**
@@ -544,7 +564,7 @@ public class ClanTable
 	 */
 	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();
 			event.setClan1(clan1);
@@ -570,7 +590,7 @@ public class ClanTable
 	 */
 	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();
 			event.setClan1(clan1);
@@ -608,6 +628,11 @@ public class ClanTable
 		clanWarListeners.remove(listener);
 	}
 	
+	public static ClanTable getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
 	private static class SingletonHolder
 	{
 		protected static final ClanTable _instance = new ClanTable();

+ 10 - 11
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2Clan.java

@@ -284,11 +284,11 @@ public class L2Clan
 		setLeader(member);
 		updateClanInDB();
 		
-		exLeader.setPledgeClass(exLeader.getClan().getClanMember(exLeader.getObjectId()).calculatePledgeClass(exLeader));
+		exLeader.setPledgeClass(L2ClanMember.calculatePledgeClass(exLeader));
 		exLeader.broadcastUserInfo();
 		exLeader.checkItemRestriction();
 		newLeader.setClan(this);
-		newLeader.setPledgeClass(member.calculatePledgeClass(newLeader));
+		newLeader.setPledgeClass(L2ClanMember.calculatePledgeClass(newLeader));
 		newLeader.setClanPrivileges(L2Clan.CP_ALL);
 		if (getLevel() >= SiegeManager.getInstance().getSiegeClanMinLevel())
 		{
@@ -375,7 +375,7 @@ public class L2Clan
 		addClanMember(member);
 		member.setPlayerInstance(player);
 		player.setClan(this);
-		player.setPledgeClass(member.calculatePledgeClass(player));
+		player.setPledgeClass(L2ClanMember.calculatePledgeClass(player));
 		player.sendPacket(new PledgeShowMemberListUpdate(player));
 		player.sendPacket(new PledgeSkillList(this));
 		addSkillEffects(player);
@@ -389,7 +389,7 @@ public class L2Clan
 	 */
 	public void updateClanMember(L2PcInstance player)
 	{
-		final L2ClanMember member = new L2ClanMember(player);
+		final L2ClanMember member = new L2ClanMember(player.getClan(), player);
 		if (player.isClanLeader())
 			setLeader(member);
 		
@@ -455,7 +455,7 @@ public class L2Clan
 				if (apprentice.getPlayerInstance() != null)
 					apprentice.getPlayerInstance().setSponsor(0);
 				else
-					apprentice.initApprenticeAndSponsor(0, 0);
+					apprentice.setApprenticeAndSponsor(0, 0);
 				
 				apprentice.saveApprenticeAndSponsor(0, 0);
 			}
@@ -468,7 +468,7 @@ public class L2Clan
 				if (sponsor.getPlayerInstance() != null)
 					sponsor.getPlayerInstance().setApprentice(0);
 				else
-					sponsor.initApprenticeAndSponsor(0, 0);
+					sponsor.setApprenticeAndSponsor(0, 0);
 				
 				sponsor.saveApprenticeAndSponsor(0, 0);
 			}
@@ -509,7 +509,7 @@ public class L2Clan
 			if (exMember.getPledgeType() != -1)
 				player.setClanJoinExpiryTime(clanJoinExpiryTime);
 			
-			player.setPledgeClass(exMember.calculatePledgeClass(player));
+			player.setPledgeClass(L2ClanMember.calculatePledgeClass(player));
 			player.broadcastUserInfo();
 			// disable clan tab
 			player.sendPacket(PledgeShowMemberListDeleteAll.STATIC_PACKET);
@@ -1002,17 +1002,16 @@ public class L2Clan
 					try (PreparedStatement select = con.prepareStatement("SELECT char_name,level,classid,charId,title,power_grade,subpledge,apprentice,sponsor,sex,race FROM characters WHERE clanid=?"))
 					{
 						select.setInt(1, getClanId());
-						try (ResultSet clanMembers = select.executeQuery())
+						try (ResultSet clanMember = select.executeQuery())
 						{
 							L2ClanMember member = null;
-							while (clanMembers.next())
+							while (clanMember.next())
 							{
-								member = new L2ClanMember(this, clanMembers.getString("char_name"), clanMembers.getInt("level"), clanMembers.getInt("classid"), clanMembers.getInt("charId"), clanMembers.getInt("subpledge"), clanMembers.getInt("power_grade"), clanMembers.getString("title"), (clanMembers.getInt("sex") != 0), clanMembers.getInt("race"));
+								member = new L2ClanMember(this, clanMember);
 								if (member.getObjectId() == leaderId)
 									setLeader(member);
 								else
 									addClanMember(member);
-								member.initApprenticeAndSponsor(clanMembers.getInt("apprentice"), clanMembers.getInt("sponsor"));
 							}
 						}
 					}

+ 199 - 63
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2ClanMember.java

@@ -16,6 +16,7 @@ package com.l2jserver.gameserver.model;
 
 import java.sql.Connection;
 import java.sql.PreparedStatement;
+import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -25,13 +26,13 @@ import com.l2jserver.gameserver.instancemanager.SiegeManager;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 
 /**
- * Clan member class.
+ * This class holds the clan members data.
  */
 public class L2ClanMember
 {
 	private static final Logger _log = Logger.getLogger(L2ClanMember.class.getName());
 	
-	private L2Clan _clan;
+	private final L2Clan _clan;
 	private int _objectId;
 	private String _name;
 	private String _title;
@@ -45,28 +46,43 @@ public class L2ClanMember
 	private int _apprentice;
 	private int _sponsor;
 	
-	
-	public L2ClanMember(L2Clan clan, String name, int level, int classId, int objectId, int pledgeType, int powerGrade, String title, boolean sex, int raceOrdinal)
+	/**
+	 * Used to restore a clan member from the database.
+	 * @param clan the clan where the clan member belongs.
+	 * @param clanMember the clan member result set
+	 * @throws SQLException if the columnLabel is not valid or a database error occurs
+	 */
+	public L2ClanMember(L2Clan clan, ResultSet clanMember) throws SQLException
 	{
-		if(clan == null)
-			throw new IllegalArgumentException("Can not create a ClanMember with a null clan.");
+		if (clan == null)
+		{
+			throw new IllegalArgumentException("Cannot create a Clan Member with a null clan.");
+		}
 		_clan = clan;
-		_name = name;
-		_level = level;
-		_classId = classId;
-		_objectId = objectId;
-		_powerGrade = powerGrade;
-		_title = title;
-		_pledgeType = pledgeType;
-		_apprentice = 0;
-		_sponsor = 0;
-		_sex = sex;
-		_raceOrdinal = raceOrdinal;
-		
+		_name = clanMember.getString("char_name");
+		_level = clanMember.getInt("level");
+		_classId = clanMember.getInt("classid");
+		_objectId = clanMember.getInt("charId");
+		_pledgeType = clanMember.getInt("subpledge");
+		_title = clanMember.getString("title");
+		_powerGrade = clanMember.getInt("power_grade");
+		_apprentice = clanMember.getInt("apprentice");
+		_sponsor = clanMember.getInt("sponsor");
+		_sex = clanMember.getInt("sex") != 0;
+		_raceOrdinal = clanMember.getInt("race");
 	}
 	
+	/**
+	 * Creates a clan member from a player instance.
+	 * @param clan the clan where the player belongs
+	 * @param player the player from which the clan member will be created
+	 */
 	public L2ClanMember(L2Clan clan, L2PcInstance player)
 	{
+		if (player.getClan() == null)
+		{
+			throw new IllegalArgumentException("Cannot create a Clan Member if player has a null clan.");
+		}
 		_clan = clan;
 		_name = player.getName();
 		_level = player.getLevel();
@@ -75,35 +91,19 @@ public class L2ClanMember
 		_pledgeType = player.getPledgeType();
 		_powerGrade = player.getPowerGrade();
 		_title = player.getTitle();
-		_sponsor =  0;
+		_sponsor = 0;
 		_apprentice = 0;
 		_sex = player.getAppearance().getSex();
 		_raceOrdinal = player.getRace().ordinal();
 	}
 	
-	public L2ClanMember(L2PcInstance player)
-	{
-		if(player.getClan() == null)
-			throw new IllegalArgumentException("Can not create a ClanMember if player has a null clan.");
-		_clan = player.getClan();
-		_player = player;
-		_name = _player.getName();
-		_level = _player.getLevel();
-		_classId = _player.getClassId().getId();
-		_objectId = _player.getObjectId();
-		_powerGrade = _player.getPowerGrade();
-		_pledgeType = _player.getPledgeType();
-		_title = _player.getTitle();
-		_apprentice = 0;
-		_sponsor = 0;
-		_sex = _player.getAppearance().getSex();
-		_raceOrdinal = _player.getRace().ordinal();
-	}
-	
-	
+	/**
+	 * Sets the player instance.
+	 * @param player the new player instance
+	 */
 	public void setPlayerInstance(L2PcInstance player)
 	{
-		if (player == null && _player != null)
+		if ((player == null) && (_player != null))
 		{
 			// this is here to keep the data when the player logs off
 			_name = _player.getName();
@@ -122,34 +122,51 @@ public class L2ClanMember
 		if (player != null)
 		{
 			_clan.addSkillEffects(player);
-			if (_clan.getLevel() > 3 && player.isClanLeader())
+			if ((_clan.getLevel() > 3) && player.isClanLeader())
+			{
 				SiegeManager.getInstance().addSiegeSkills(player);
+			}
 			if (player.isClanLeader())
+			{
 				_clan.setLeader(this);
+			}
 		}
-		
 		_player = player;
 	}
 	
+	/**
+	 * Gets the player instance.
+	 * @return the player instance
+	 */
 	public L2PcInstance getPlayerInstance()
 	{
 		return _player;
 	}
 	
+	/**
+	 * Checks if is online.
+	 * @return true, if is online
+	 */
 	public boolean isOnline()
 	{
-		if (_player == null || !_player.isOnline())
+		if ((_player == null) || !_player.isOnline())
+		{
 			return false;
+		}
 		if (_player.getClient() == null)
+		{
 			return false;
+		}
 		if (_player.getClient().isDetached())
+		{
 			return false;
-		
+		}
 		return true;
 	}
 	
 	/**
-	 * @return Returns the classId.
+	 * Gets the class id.
+	 * @return the classId
 	 */
 	public int getClassId()
 	{
@@ -161,7 +178,8 @@ public class L2ClanMember
 	}
 	
 	/**
-	 * @return Returns the level.
+	 * Gets the level.
+	 * @return the level
 	 */
 	public int getLevel()
 	{
@@ -173,7 +191,8 @@ public class L2ClanMember
 	}
 	
 	/**
-	 * @return Returns the name.
+	 * Gets the name.
+	 * @return the name
 	 */
 	public String getName()
 	{
@@ -185,6 +204,7 @@ public class L2ClanMember
 	}
 	
 	/**
+	 * Gets the object id.
 	 * @return Returns the objectId.
 	 */
 	public int getObjectId()
@@ -196,13 +216,23 @@ public class L2ClanMember
 		return _objectId;
 	}
 	
-	public String getTitle() {
-		if (_player != null) {
+	/**
+	 * Gets the title.
+	 * @return the title
+	 */
+	public String getTitle()
+	{
+		if (_player != null)
+		{
 			return _player.getTitle();
 		}
 		return _title;
 	}
 	
+	/**
+	 * Gets the pledge type.
+	 * @return the pledge type
+	 */
 	public int getPledgeType()
 	{
 		if (_player != null)
@@ -212,20 +242,27 @@ public class L2ClanMember
 		return _pledgeType;
 	}
 	
+	/**
+	 * Sets the pledge type.
+	 * @param pledgeType the new pledge type
+	 */
 	public void setPledgeType(int pledgeType)
 	{
 		_pledgeType = pledgeType;
-		if(_player != null)
+		if (_player != null)
 		{
 			_player.setPledgeType(pledgeType);
 		}
 		else
 		{
-			//db save if char not logged in
+			// db save if char not logged in
 			updatePledgeType();
 		}
 	}
 	
+	/**
+	 * Update pledge type.
+	 */
 	public void updatePledgeType()
 	{
 		try (Connection con = L2DatabaseFactory.getInstance().getConnection())
@@ -242,20 +279,27 @@ public class L2ClanMember
 		}
 	}
 	
+	/**
+	 * Gets the power grade.
+	 * @return the power grade
+	 */
 	public int getPowerGrade()
 	{
-		if(_player != null)
+		if (_player != null)
+		{
 			return _player.getPowerGrade();
+		}
 		return _powerGrade;
 	}
 	
 	/**
-	 * @param powerGrade
+	 * Sets the power grade.
+	 * @param powerGrade the new power grade
 	 */
 	public void setPowerGrade(int powerGrade)
 	{
 		_powerGrade = powerGrade;
-		if(_player != null)
+		if (_player != null)
 		{
 			_player.setPowerGrade(powerGrade);
 		}
@@ -267,7 +311,7 @@ public class L2ClanMember
 	}
 	
 	/**
-	 * Update the characters table of the database with power grade.<BR><BR>
+	 * Update the characters table of the database with power grade.
 	 */
 	public void updatePowerGrade()
 	{
@@ -285,76 +329,123 @@ public class L2ClanMember
 		}
 	}
 	
-	public void initApprenticeAndSponsor(int apprenticeID, int sponsorID)
+	/**
+	 * Sets the apprentice and sponsor.
+	 * @param apprenticeID the apprentice id
+	 * @param sponsorID the sponsor id
+	 */
+	public void setApprenticeAndSponsor(int apprenticeID, int sponsorID)
 	{
 		_apprentice = apprenticeID;
 		_sponsor = sponsorID;
 	}
 	
+	/**
+	 * Gets the player's race ordinal.
+	 * @return the race ordinal
+	 */
 	public int getRaceOrdinal()
 	{
 		if (_player != null)
+		{
 			return _player.getRace().ordinal();
+		}
 		return _raceOrdinal;
 	}
 	
+	/**
+	 * Gets the player's sex.
+	 * @return the sex
+	 */
 	public boolean getSex()
 	{
 		if (_player != null)
+		{
 			return _player.getAppearance().getSex();
+		}
 		return _sex;
 	}
 	
+	/**
+	 * Gets the sponsor.
+	 * @return the sponsor
+	 */
 	public int getSponsor()
 	{
 		if (_player != null)
+		{
 			return _player.getSponsor();
+		}
 		return _sponsor;
 	}
 	
+	/**
+	 * Gets the apprentice.
+	 * @return the apprentice
+	 */
 	public int getApprentice()
 	{
 		if (_player != null)
+		{
 			return _player.getApprentice();
+		}
 		return _apprentice;
 	}
 	
+	/**
+	 * Gets the apprentice or sponsor name.
+	 * @return the apprentice or sponsor name
+	 */
 	public String getApprenticeOrSponsorName()
 	{
-		if(_player != null)
+		if (_player != null)
 		{
 			_apprentice = _player.getApprentice();
 			_sponsor = _player.getSponsor();
 		}
 		
-		if(_apprentice != 0)
+		if (_apprentice != 0)
 		{
 			L2ClanMember apprentice = _clan.getClanMember(_apprentice);
-			if(apprentice != null)
+			if (apprentice != null)
+			{
 				return apprentice.getName();
+			}
 			return "Error";
 		}
-		if(_sponsor != 0)
+		if (_sponsor != 0)
 		{
 			L2ClanMember sponsor = _clan.getClanMember(_sponsor);
-			if(sponsor != null) 
+			if (sponsor != null)
+			{
 				return sponsor.getName();
+			}
 			return "Error";
 		}
 		return "";
 	}
 	
+	/**
+	 * Gets the clan.
+	 * @return the clan
+	 */
 	public L2Clan getClan()
 	{
 		return _clan;
 	}
 	
-	public int calculatePledgeClass(L2PcInstance player)
+	/**
+	 * Calculate pledge class.
+	 * @param player the player
+	 * @return the int
+	 */
+	public static int calculatePledgeClass(L2PcInstance player)
 	{
 		int pledgeClass = 0;
-		
 		if (player == null)
+		{
 			return pledgeClass;
+		}
 		
 		L2Clan clan = player.getClan();
 		if (clan != null)
@@ -363,13 +454,19 @@ public class L2ClanMember
 			{
 				case 4:
 					if (player.isClanLeader())
+					{
 						pledgeClass = 3;
+					}
 					break;
 				case 5:
 					if (player.isClanLeader())
+					{
 						pledgeClass = 4;
+					}
 					else
+					{
 						pledgeClass = 2;
+					}
 					break;
 				case 6:
 					switch (player.getPledgeType())
@@ -383,8 +480,11 @@ public class L2ClanMember
 							break;
 						case 0:
 							if (player.isClanLeader())
+							{
 								pledgeClass = 5;
+							}
 							else
+							{
 								switch (clan.getLeaderSubPledge(player.getObjectId()))
 								{
 									case 100:
@@ -396,6 +496,7 @@ public class L2ClanMember
 										pledgeClass = 3;
 										break;
 								}
+							}
 							break;
 					}
 					break;
@@ -417,8 +518,11 @@ public class L2ClanMember
 							break;
 						case 0:
 							if (player.isClanLeader())
+							{
 								pledgeClass = 7;
+							}
 							else
+							{
 								switch (clan.getLeaderSubPledge(player.getObjectId()))
 								{
 									case 100:
@@ -436,6 +540,7 @@ public class L2ClanMember
 										pledgeClass = 4;
 										break;
 								}
+							}
 							break;
 					}
 					break;
@@ -457,8 +562,11 @@ public class L2ClanMember
 							break;
 						case 0:
 							if (player.isClanLeader())
+							{
 								pledgeClass = 8;
+							}
 							else
+							{
 								switch (clan.getLeaderSubPledge(player.getObjectId()))
 								{
 									case 100:
@@ -476,6 +584,7 @@ public class L2ClanMember
 										pledgeClass = 5;
 										break;
 								}
+							}
 							break;
 					}
 					break;
@@ -497,8 +606,11 @@ public class L2ClanMember
 							break;
 						case 0:
 							if (player.isClanLeader())
+							{
 								pledgeClass = 9;
+							}
 							else
+							{
 								switch (clan.getLeaderSubPledge(player.getObjectId()))
 								{
 									case 100:
@@ -516,6 +628,7 @@ public class L2ClanMember
 										pledgeClass = 6;
 										break;
 								}
+							}
 							break;
 					}
 					break;
@@ -537,8 +650,11 @@ public class L2ClanMember
 							break;
 						case 0:
 							if (player.isClanLeader())
+							{
 								pledgeClass = 10;
+							}
 							else
+							{
 								switch (clan.getLeaderSubPledge(player.getObjectId()))
 								{
 									case 100:
@@ -556,6 +672,7 @@ public class L2ClanMember
 										pledgeClass = 7;
 										break;
 								}
+							}
 							break;
 					}
 					break;
@@ -577,8 +694,11 @@ public class L2ClanMember
 							break;
 						case 0:
 							if (player.isClanLeader())
+							{
 								pledgeClass = 11;
+							}
 							else
+							{
 								switch (clan.getLeaderSubPledge(player.getObjectId()))
 								{
 									case 100:
@@ -596,6 +716,7 @@ public class L2ClanMember
 										pledgeClass = 8;
 										break;
 								}
+							}
 							break;
 					}
 					break;
@@ -604,9 +725,24 @@ public class L2ClanMember
 					break;
 			}
 		}
+		
+		if (player.isNoble() && (pledgeClass < 5))
+		{
+			pledgeClass = 5;
+		}
+		
+		if (player.isHero() && (pledgeClass < 8))
+		{
+			pledgeClass = 8;
+		}
 		return pledgeClass;
 	}
 	
+	/**
+	 * Save apprentice and sponsor.
+	 * @param apprentice the apprentice
+	 * @param sponsor the sponsor
+	 */
 	public void saveApprenticeAndSponsor(int apprentice, int sponsor)
 	{
 		try (Connection con = L2DatabaseFactory.getInstance().getConnection())

+ 11 - 11
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

@@ -7302,20 +7302,20 @@ public final class L2PcInstance extends L2Playable
 						player.setClanPrivileges(L2Clan.CP_ALL);
 						player.setPowerGrade(1);
 					}
-					int pledgeClass = 0;
-					
-					pledgeClass = player.getClan().getClanMember(objectId).calculatePledgeClass(player);
-					
-					if (player.isNoble() && pledgeClass < 5)
-						pledgeClass = 5;
-					
-					if (player.isHero() && pledgeClass < 8)
-						pledgeClass = 8;
-					
-					player.setPledgeClass(pledgeClass);
+					player.setPledgeClass(L2ClanMember.calculatePledgeClass(player));
 				}
 				else
 				{
+					if (player.isNoble())
+					{
+						player.setPledgeClass(5);
+					}
+					
+					if (player.isHero())
+					{
+						player.setPledgeClass(8);
+					}
+					
 					player.setClanPrivileges(L2Clan.CP_NOTHING);
 				}
 				

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2VillageMasterInstance.java

@@ -996,7 +996,7 @@ public class L2VillageMasterInstance extends L2NpcInstance
 			final L2PcInstance leaderPlayer = leaderSubPledge.getPlayerInstance();
 			if (leaderPlayer != null)
 			{
-				leaderPlayer.setPledgeClass(leaderSubPledge.calculatePledgeClass(leaderPlayer));
+				leaderPlayer.setPledgeClass(L2ClanMember.calculatePledgeClass(leaderPlayer));
 				leaderPlayer.sendPacket(new UserInfo(leaderPlayer));
 				leaderPlayer.sendPacket(new ExBrExtraUserInfo(leaderPlayer));
 			}
@@ -1080,7 +1080,7 @@ public class L2VillageMasterInstance extends L2NpcInstance
 		final L2PcInstance leaderPlayer = leaderSubPledge.getPlayerInstance();
 		if (leaderPlayer != null)
 		{
-			leaderPlayer.setPledgeClass(leaderSubPledge.calculatePledgeClass(leaderPlayer));
+			leaderPlayer.setPledgeClass(L2ClanMember.calculatePledgeClass(leaderPlayer));
 			leaderPlayer.sendPacket(new UserInfo(leaderPlayer));
 			leaderPlayer.sendPacket(new ExBrExtraUserInfo(leaderPlayer));
 		}

+ 4 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestPledgeSetAcademyMaster.java

@@ -78,11 +78,11 @@ public final class RequestPledgeSetAcademyMaster extends L2GameClientPacket
 			// test: do we get the current sponsor & apprentice from this packet or no?
 			if (apprentice != null) apprentice.setSponsor(0);
 			else // offline
-				apprenticeMember.initApprenticeAndSponsor(0, 0);
+				apprenticeMember.setApprenticeAndSponsor(0, 0);
 			
 			if (sponsor != null) sponsor.setApprentice(0);
 			else // offline
-				sponsorMember.initApprenticeAndSponsor(0, 0);
+				sponsorMember.setApprenticeAndSponsor(0, 0);
 			
 			apprenticeMember.saveApprenticeAndSponsor(0, 0);
 			sponsorMember.saveApprenticeAndSponsor(0, 0);
@@ -100,12 +100,12 @@ public final class RequestPledgeSetAcademyMaster extends L2GameClientPacket
 			if (apprentice != null)
 				apprentice.setSponsor(sponsorMember.getObjectId());
 			else // offline
-				apprenticeMember.initApprenticeAndSponsor(0, sponsorMember.getObjectId());
+				apprenticeMember.setApprenticeAndSponsor(0, sponsorMember.getObjectId());
 			
 			if (sponsor != null)
 				sponsor.setApprentice(apprenticeMember.getObjectId());
 			else // offline
-				sponsorMember.initApprenticeAndSponsor(apprenticeMember.getObjectId(), 0);
+				sponsorMember.setApprenticeAndSponsor(apprenticeMember.getObjectId(), 0);
 			
 			// saving to database even if online, since both must match
 			apprenticeMember.saveApprenticeAndSponsor(0, sponsorMember.getObjectId());