Jelajahi Sumber

BETA: NpcBufferTable fixes, thanks fakoykas for report and first fix.

Zoey76 13 tahun lalu
induk
melakukan
ac51f7d097

+ 36 - 31
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/NpcBufferTable.java

@@ -26,26 +26,25 @@ import java.util.logging.Logger;
 import com.l2jserver.Config;
 import com.l2jserver.L2DatabaseFactory;
 
-
 public class NpcBufferTable
 {
-	protected static Logger _log = Logger.getLogger(NpcBufferTable.class.getName());
+	private static Logger _log = Logger.getLogger(NpcBufferTable.class.getName());
 	
-	private TIntObjectHashMap<NpcBufferSkills> _buffers = new TIntObjectHashMap<NpcBufferSkills>();
+	private final TIntObjectHashMap<NpcBufferSkills> _buffers = new TIntObjectHashMap<NpcBufferSkills>();
 	
 	private static class NpcBufferSkills
 	{
-		private TIntIntHashMap _skillId = new TIntIntHashMap();
-		private TIntIntHashMap _skillLevels = new TIntIntHashMap();
-		private TIntIntHashMap _skillFeeIds = new TIntIntHashMap();
-		private TIntIntHashMap _skillFeeAmounts = new TIntIntHashMap();
+		private final TIntIntHashMap _skillId = new TIntIntHashMap();
+		private final TIntIntHashMap _skillLevels = new TIntIntHashMap();
+		private final TIntIntHashMap _skillFeeIds = new TIntIntHashMap();
+		private final TIntIntHashMap _skillFeeAmounts = new TIntIntHashMap();
 		
 		public NpcBufferSkills(int npcId)
 		{
+			//
 		}
 		
-		public void addSkill(int skillId, int skillLevel, int skillFeeId, int skillFeeAmount,
-				int buffGroup)
+		public void addSkill(int skillId, int skillLevel, int skillFeeId, int skillFeeAmount, int buffGroup)
 		{
 			_skillId.put(buffGroup, skillId);
 			_skillLevels.put(buffGroup, skillLevel);
@@ -55,16 +54,17 @@ public class NpcBufferTable
 		
 		public int[] getSkillGroupInfo(int buffGroup)
 		{
-			Integer skillId = _skillId.get(buffGroup);
-			Integer skillLevel = _skillLevels.get(buffGroup);
-			Integer skillFeeId = _skillFeeIds.get(buffGroup);
-			Integer skillFeeAmount = _skillFeeAmounts.get(buffGroup);
-			
-			if (skillId == null || skillLevel == null || skillFeeId == null
-					|| skillFeeAmount == null)
-				return null;
-			
-			return new int[] { skillId, skillLevel, skillFeeId, skillFeeAmount };
+			if (_skillId.containsKey(buffGroup) && _skillLevels.containsKey(buffGroup) && _skillFeeIds.containsKey(buffGroup) && _skillFeeAmounts.containsKey(buffGroup))
+			{
+				return new int[]
+				{
+					_skillId.get(buffGroup),
+					_skillLevels.get(buffGroup),
+					_skillFeeIds.get(buffGroup),
+					_skillFeeAmounts.get(buffGroup)
+				};
+			}
+			return null;
 		}
 	}
 	
@@ -72,7 +72,6 @@ public class NpcBufferTable
 	{
 		Connection con = null;
 		int skillCount = 0;
-		
 		try
 		{
 			try
@@ -97,20 +96,26 @@ public class NpcBufferTable
 					if (npcId != lastNpcId)
 					{
 						if (lastNpcId != 0)
+						{
 							_buffers.put(lastNpcId, skills);
+						}
 						
 						skills = new NpcBufferSkills(npcId);
 						skills.addSkill(skillId, skillLevel, skillFeeId, skillFeeAmount, buffGroup);
 					}
 					else
+					{
 						skills.addSkill(skillId, skillLevel, skillFeeId, skillFeeAmount, buffGroup);
+					}
 					
 					lastNpcId = npcId;
 					skillCount++;
 				}
 				
 				if (lastNpcId != 0)
+				{
 					_buffers.put(lastNpcId, skills);
+				}
 				rset.close();
 				statement.close();
 			}
@@ -141,20 +146,25 @@ public class NpcBufferTable
 						if (npcId != lastNpcId)
 						{
 							if (lastNpcId != 0)
+							{
 								_buffers.put(lastNpcId, skills);
+							}
 							
 							skills = new NpcBufferSkills(npcId);
 							skills.addSkill(skillId, skillLevel, skillFeeId, skillFeeAmount, buffGroup);
 						}
 						else
+						{
 							skills.addSkill(skillId, skillLevel, skillFeeId, skillFeeAmount, buffGroup);
-						
+						}
 						lastNpcId = npcId;
 						skillCount++;
 					}
 					
 					if (lastNpcId != 0)
+					{
 						_buffers.put(lastNpcId, skills);
+					}
 					rset.close();
 					statement.close();
 				}
@@ -168,23 +178,18 @@ public class NpcBufferTable
 		{
 			L2DatabaseFactory.close(con);
 		}
-		
 		_log.info("NpcBufferSkillIdsTable: Loaded " + _buffers.size() + " buffers and " + skillCount + " skills.");
 	}
 	
-	public static NpcBufferTable getInstance()
+	public int[] getSkillInfo(int npcId, int buffGroup)
 	{
-		return SingletonHolder._instance;
+		final NpcBufferSkills skills = _buffers.get(npcId);
+		return (skills == null) ? null : skills.getSkillGroupInfo(buffGroup);
 	}
 	
-	public int[] getSkillInfo(int npcId, int buffGroup)
+	public static NpcBufferTable getInstance()
 	{
-		NpcBufferSkills skills = _buffers.get(npcId);
-		
-		if (skills == null)
-			return null;
-		
-		return skills.getSkillGroupInfo(buffGroup);
+		return SingletonHolder._instance;
 	}
 	
 	@SuppressWarnings("synthetic-access")