Ver código fonte

BETA: Fix for ticket #5705

Rumen Nikiforov 13 anos atrás
pai
commit
c69f2b8095

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/GameServer.java

@@ -246,8 +246,7 @@ public class GameServer
 		PetDataTable.getInstance();
 		CharSummonTable.getInstance().init();
 		
-		printSection("Clans");
-		CrestCache.getInstance(); // Must be initialized before ClanTable! 
+		printSection("Clans"); 
 		ClanTable.getInstance();
 		CHSiegeManager.getInstance();
 		ClanHallManager.getInstance();
@@ -294,6 +293,7 @@ public class GameServer
 		// Call to load caches
 		printSection("Cache");
 		HtmCache.getInstance();
+		CrestCache.getInstance();
 		TeleportLocationTable.getInstance();
 		UITable.getInstance();
 		PartyMatchWaitingList.getInstance();

+ 36 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/cache/CrestCache.java

@@ -41,11 +41,11 @@ public class CrestCache
 {
 	private static Logger _log = Logger.getLogger(CrestCache.class.getName());
 	
-	private FastMRUCache<Integer, byte[]> _cachePledge = new FastMRUCache<Integer, byte[]>();
+	private final FastMRUCache<Integer, byte[]> _cachePledge = new FastMRUCache<Integer, byte[]>();
 	
-	private FastMRUCache<Integer, byte[]> _cachePledgeLarge = new FastMRUCache<Integer, byte[]>();
+	private final FastMRUCache<Integer, byte[]> _cachePledgeLarge = new FastMRUCache<Integer, byte[]>();
 	
-	private FastMRUCache<Integer, byte[]> _cacheAlly = new FastMRUCache<Integer, byte[]>();
+	private final FastMRUCache<Integer, byte[]> _cacheAlly = new FastMRUCache<Integer, byte[]>();
 	
 	private int _loadedFiles;
 	
@@ -177,6 +177,37 @@ public class CrestCache
 			}
 		}
 		
+		for (L2Clan clan : clans)
+		{
+			if (clan.getCrestId() != 0)
+			{
+				if (getPledgeCrest(clan.getCrestId()) == null)
+				{
+					_log.log(Level.INFO, "Removing non-existent crest for clan " + clan.getName() + " [" + clan.getClanId() + "], crestId:" + clan.getCrestId());
+					clan.setCrestId(0);
+					clan.changeClanCrest(0);
+				}
+			}
+			if (clan.getCrestLargeId() != 0)
+			{
+				if (getPledgeCrestLarge(clan.getCrestLargeId()) == null)
+				{
+					_log.log(Level.INFO, "Removing non-existent large crest for clan " + clan.getName() + " [" + clan.getClanId() + "], crestLargeId:" + clan.getCrestLargeId());
+					clan.setCrestLargeId(0);
+					clan.changeLargeCrest(0);
+				}
+			}
+			if (clan.getAllyCrestId() != 0)
+			{
+				if (getAllyCrest(clan.getAllyCrestId()) == null)
+				{
+					_log.log(Level.INFO, "Removing non-existent ally crest for clan " + clan.getName() + " [" + clan.getClanId() + "], allyCrestId:" + clan.getAllyCrestId());
+					clan.setAllyCrestId(0);
+					clan.changeAllyCrest(0, true);
+				}
+			}
+		}
+		
 		_log.info("Cache[Crest]: " + String.format("%.3f", getMemoryUsage()) + "MB on " + getLoadedFiles()
 				+ " files loaded. (Forget Time: " + (_cachePledge.getForgetTime() / 1000) + "s , Capacity: " + _cachePledge.capacity()
 				+ ")");
@@ -397,6 +428,7 @@ public class CrestCache
 	
 	private static class BmpFilter implements FileFilter
 	{
+		@Override
 		public boolean accept(File file)
 		{
 			return (file.getName().endsWith(".bmp"));
@@ -405,6 +437,7 @@ public class CrestCache
 	
 	private static class OldPledgeFilter implements FileFilter
 	{
+		@Override
 		public boolean accept(File file)
 		{
 			return (file.getName().startsWith("Pledge_"));

+ 4 - 34
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/ClanTable.java

@@ -26,7 +26,6 @@ import javolution.util.FastMap;
 import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 import com.l2jserver.gameserver.ThreadPoolManager;
-import com.l2jserver.gameserver.cache.CrestCache;
 import com.l2jserver.gameserver.communitybbs.Manager.ForumsBBSManager;
 import com.l2jserver.gameserver.idfactory.IdFactory;
 import com.l2jserver.gameserver.instancemanager.CHSiegeManager;
@@ -60,7 +59,7 @@ public class ClanTable
 {
 	private static Logger _log = Logger.getLogger(ClanTable.class.getName());
 	
-	private Map<Integer, L2Clan> _clans;
+	private final Map<Integer, L2Clan> _clans;
 	
 	public static ClanTable getInstance()
 	{
@@ -262,9 +261,6 @@ public class ClanTable
 			clan.removeClanMember(member.getObjectId(), 0);
 		}
 		
-		if(Config.CLEAR_CREST_CACHE)
-			deleteClanCrests(clan);
-		
 		_clans.remove(clanId);
 		IdFactory.getInstance().releaseId(clanId);
 		
@@ -339,37 +335,11 @@ public class ClanTable
 		}
 	}
 	
-	private void deleteClanCrests(L2Clan clan)
-	{
-		try
-		{
-			CrestCache.getInstance().removePledgeCrest(clan.getCrestId());
-			CrestCache.getInstance().removePledgeCrestLarge(clan.getCrestLargeId());
-			
-			int allyCrestId = clan.getAllyCrestId();
-			if(allyCrestId > 0)
-			{
-				boolean erase = true;
-				for(L2Clan cln : getClans())
-					if(cln.getAllyId() == allyCrestId)
-					{
-						erase = false;
-						break;
-					}
-				if(erase)
-					CrestCache.getInstance().removeAllyCrest(allyCrestId);
-			}
-			
-		}
-		catch(Exception e)
-		{
-			_log.log(Level.WARNING, "ClanTable: Couldnt erased clan crests", e);
-		}
-	}
-	
 	public void scheduleRemoveClan(final int clanId)
 	{
-		ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() {
+		ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() 
+		{
+			@Override
 			public void run()
 			{
 				if (getClan(clanId) == null)

+ 7 - 39
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2Clan.java

@@ -77,7 +77,7 @@ public class L2Clan
 	private String _name;
 	private int _clanId;
 	private L2ClanMember _leader;
-	private Map<Integer, L2ClanMember> _members = new FastMap<Integer, L2ClanMember>();
+	private final Map<Integer, L2ClanMember> _members = new FastMap<Integer, L2ClanMember>();
 	
 	private String _allyName;
 	private int _allyId;
@@ -104,9 +104,9 @@ public class L2Clan
 	/** Leader clan dissolve ally */
 	public static final int PENALTY_TYPE_DISSOLVE_ALLY = 4;
 	
-	private ItemContainer _warehouse = new ClanWarehouse(this);
-	private List<Integer> _atWarWith = new FastList<Integer>();
-	private List<Integer> _atWarAttackers = new FastList<Integer>();
+	private final ItemContainer _warehouse = new ClanWarehouse(this);
+	private final List<Integer> _atWarWith = new FastList<Integer>();
+	private final List<Integer> _atWarAttackers = new FastList<Integer>();
 	
 	private Forum _forum;
 	
@@ -1030,7 +1030,6 @@ public class L2Clan
 			restoreRankPrivs();
 			restoreSkills();
 			restoreNotice();
-			checkCrests();
 		}
 		catch (Exception e)
 		{
@@ -1537,7 +1536,7 @@ public class L2Clan
 	
 	public static class SubPledge
 	{
-		private int _id;
+		private final int _id;
 		private String _subPledgeName;
 		private int _leaderId;
 		private final Map<Integer, L2Skill> _subPledgeSkills = new FastMap<Integer, L2Skill>();
@@ -1587,8 +1586,8 @@ public class L2Clan
 	
 	public static class RankPrivs
 	{
-		private int _rankId;
-		private int _party;// TODO find out what this stuff means and implement it
+		private final int _rankId;
+		private final int _party;// TODO find out what this stuff means and implement it
 		private int _rankPrivs;
 		
 		public RankPrivs(int rank, int party, int privs)
@@ -2887,35 +2886,4 @@ public class L2Clan
 		FastList.recycle(list);
 		return result;
 	}
-	
-	private void checkCrests()
-	{
-		if (getCrestId() != 0)
-		{
-			if (CrestCache.getInstance().getPledgeCrest(getCrestId()) == null)
-			{
-				_log.log(Level.INFO, "Removing non-existent crest for clan " + getName() + " [" + getClanId() + "], crestId:" + getCrestId());
-				setCrestId(0);
-				changeClanCrest(0);
-			}
-		}
-		if (getCrestLargeId() != 0)
-		{
-			if (CrestCache.getInstance().getPledgeCrestLarge(getCrestLargeId()) == null)
-			{
-				_log.log(Level.INFO, "Removing non-existent large crest for clan " + getName() + " [" + getClanId() + "], crestLargeId:" + getCrestLargeId());
-				setCrestLargeId(0);
-				changeLargeCrest(0);
-			}
-		}
-		if (getAllyCrestId() != 0)
-		{
-			if (CrestCache.getInstance().getAllyCrest(getAllyCrestId()) == null)
-			{
-				_log.log(Level.INFO, "Removing non-existent ally crest for clan " + getName() + " [" + getClanId() + "], allyCrestId:" + getAllyCrestId());
-				setAllyCrestId(0);
-				changeAllyCrest(0, true);
-			}
-		}
-	}
 }