Jelajahi Sumber

BETA: Misc fixes:
* Unhardcoding Territory Ids at !TerritoryWarManager.
* Moving and renaming gameserver/Territory to gameserver/datatables/TerritoryTable
* Renaming addFortId(int) to addCastleId(int), it manages the parameters for Castles, Halls, Fortress, Contestable Clan Halls, Territories, couldn't find a better world using client file name as reference.
* Fixing !JavaDoc at !SystemMessage#addCastleId(int)
* Unhardcoding all Castle names in Siege, thanks UnAfraid for the tip.

Zoey76 12 tahun lalu
induk
melakukan
d9d4764ffb

+ 3 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/ai/L2AttackableAI.java

@@ -26,9 +26,9 @@ import java.util.concurrent.Future;
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.GameTimeController;
 import com.l2jserver.gameserver.GeoData;
-import com.l2jserver.gameserver.Territory;
 import com.l2jserver.gameserver.ThreadPoolManager;
 import com.l2jserver.gameserver.datatables.NpcTable;
+import com.l2jserver.gameserver.datatables.TerritoryTable;
 import com.l2jserver.gameserver.instancemanager.DimensionalRiftManager;
 import com.l2jserver.gameserver.model.L2CharPosition;
 import com.l2jserver.gameserver.model.L2Object;
@@ -583,7 +583,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
 			if (npc.getSpawn().getLocx() == 0 && npc.getSpawn().getLocy() == 0)
 			{
 				// Calculate a destination point in the spawn area
-				int p[] = Territory.getInstance().getRandomPoint(npc.getSpawn().getLocation());
+				int p[] = TerritoryTable.getInstance().getRandomPoint(npc.getSpawn().getLocation());
 				x1 = p[0];
 				y1 = p[1];
 				z1 = p[2];
@@ -600,7 +600,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
 				}
 				
 				// If NPC with random fixed coord, don't move (unless needs to return to spawnpoint)
-				if (Territory.getInstance().getProcMax(npc.getSpawn().getLocation()) > 0 && !npc.isReturningToSpawnPoint())
+				if (TerritoryTable.getInstance().getProcMax(npc.getSpawn().getLocation()) > 0 && !npc.isReturningToSpawnPoint())
 					return;
 			}
 			else

+ 34 - 17
L2J_Server_BETA/java/com/l2jserver/gameserver/Territory.java → L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/TerritoryTable.java

@@ -12,53 +12,61 @@
  * You should have received a copy of the GNU General Public License along with
  * this program. If not, see <http://www.gnu.org/licenses/>.
  */
-package com.l2jserver.gameserver;
+package com.l2jserver.gameserver.datatables;
 
+import java.util.HashMap;
 import java.util.Map;
 import java.util.logging.Logger;
 
-import javolution.util.FastMap;
-
 import com.l2jserver.gameserver.model.L2Territory;
 import com.l2jserver.util.lib.SqlUtils;
 
 /**
  * @author Balancer, Mr
  */
-public class Territory
+public class TerritoryTable
 {
-	private static Logger _log = Logger.getLogger(Territory.class.getName());
-	
-	private static final Map<Integer, L2Territory> _territory = new FastMap<>();
+	private static final Logger _log = Logger.getLogger(TerritoryTable.class.getName());
 	
-	public static Territory getInstance()
-	{
-		return SingletonHolder._instance;
-	}
+	private static final Map<Integer, L2Territory> _territory = new HashMap<>();
 	
-	protected Territory()
+	/**
+	 * Instantiates a new territory.
+	 */
+	protected TerritoryTable()
 	{
-		// load all data at server start
-		reload_data();
+		load();
 	}
 	
+	/**
+	 * Gets the random point.
+	 * @param terr the territory Id?
+	 * @return the random point
+	 */
 	public int[] getRandomPoint(int terr)
 	{
 		return _territory.get(terr).getRandomPoint();
 	}
 	
+	/**
+	 * Gets the proc max.
+	 * @param terr the territory Id?
+	 * @return the proc max
+	 */
 	public int getProcMax(int terr)
 	{
 		return _territory.get(terr).getProcMax();
 	}
 	
-	public void reload_data()
+	/**
+	 * Load the data from database.
+	 */
+	public void load()
 	{
 		_territory.clear();
 		Integer[][] point = SqlUtils.get2DIntArray(new String[] { "loc_id", "loc_x", "loc_y", "loc_zmin", "loc_zmax", "proc" }, "locations", "loc_id > 0");
 		for (Integer[] row : point)
 		{
-			//			_log.info("row = "+row[0]);
 			Integer terr = row[0];
 			if (terr == null)
 			{
@@ -75,8 +83,17 @@ public class Territory
 		}
 	}
 	
+	/**
+	 * Gets the single instance of Territory.
+	 * @return single instance of Territory
+	 */
+	public static TerritoryTable getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
 	private static class SingletonHolder
 	{
-		protected static final Territory _instance = new Territory();
+		protected static final TerritoryTable _instance = new TerritoryTable();
 	}
 }

+ 1 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/TerritoryWarManager.java

@@ -338,7 +338,6 @@ public class TerritoryWarManager implements Siegable
 			door.openMe();
 	}
 	
-	@SuppressWarnings("null")
 	public L2Npc addTerritoryWard(int territoryId, int newOwnerId, int oldOwnerId, boolean broadcastMessage)
 	{
 		L2Npc ret = null;
@@ -385,8 +384,7 @@ public class TerritoryWarManager implements Siegable
 				{
 					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_S1_HAS_SUCCEDED_IN_CAPTURING_S2_TERRITORY_WARD);
 					sm.addString(terNew.getOwnerClan().getName());
-					// TODO: Unhardcode using territory Id.
-					sm.addString(ward.getNpc().getName().replaceAll(" Ward", ""));
+					sm.addCastleId(terNew.getTerritoryId());
 					announceToParticipants(sm, 135000, 13500);
 				}
 				if (terOld.getOwnerClan() != null)

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2GroupSpawn.java

@@ -18,7 +18,7 @@ import java.lang.reflect.Constructor;
 import java.util.logging.Level;
 
 import com.l2jserver.Config;
-import com.l2jserver.gameserver.Territory;
+import com.l2jserver.gameserver.datatables.TerritoryTable;
 import com.l2jserver.gameserver.idfactory.IdFactory;
 import com.l2jserver.gameserver.model.actor.L2Npc;
 import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
@@ -67,7 +67,7 @@ public class L2GroupSpawn extends L2Spawn
 				if (getLocation() == 0)
 					return null;
 				
-				int p[] = Territory.getInstance().getRandomPoint(getLocation());
+				int p[] = TerritoryTable.getInstance().getRandomPoint(getLocation());
 				newlocx = p[0];
 				newlocy = p[1];
 				newlocz = p[2];

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2Spawn.java

@@ -23,8 +23,8 @@ import javolution.util.FastList;
 
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.GeoData;
-import com.l2jserver.gameserver.Territory;
 import com.l2jserver.gameserver.ThreadPoolManager;
+import com.l2jserver.gameserver.datatables.TerritoryTable;
 import com.l2jserver.gameserver.idfactory.IdFactory;
 import com.l2jserver.gameserver.model.actor.L2Attackable;
 import com.l2jserver.gameserver.model.actor.L2Character;
@@ -503,7 +503,7 @@ public class L2Spawn
 				return mob;
 			
 			// Calculate the random position in the location area
-			int p[] = Territory.getInstance().getRandomPoint(getLocation());
+			int p[] = TerritoryTable.getInstance().getRandomPoint(getLocation());
 			
 			// Set the calculated position of the L2NpcInstance
 			newlocx = p[0];

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/entity/Fort.java

@@ -858,7 +858,7 @@ public class Fort
 				SystemMessage sm;
 				sm = SystemMessage.getSystemMessage(SystemMessageId.S1_CLAN_IS_VICTORIOUS_IN_THE_FORTRESS_BATTLE_OF_S2);
 				sm.addString(clan.getName());
-				sm.addFortId(getFortId());
+				sm.addCastleId(getFortId());
 				L2World.getInstance().forEachPlayer(new ForEachPlayerSendMessage(sm));
 				clan.broadcastToOnlineMembers(new PledgeShowInfoUpdate(clan));
 				clan.broadcastToOnlineMembers(new PlaySound(1, "Siege_Victory", 0, 0, 0, 0, 0));

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/entity/FortSiege.java

@@ -246,7 +246,7 @@ public class FortSiege implements Siegable
 		{
 			_isInProgress = false; // Flag so that siege instance can be started
 			final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_FORTRESS_BATTLE_OF_S1_HAS_FINISHED);
-			sm.addFortId(getFort().getFortId());
+			sm.addCastleId(getFort().getFortId());
 			announceToPlayer(sm);
 			
 			removeFlags(); // Removes all flags. Note: Remove flag before teleporting players
@@ -333,7 +333,7 @@ public class FortSiege implements Siegable
 			_siegeEnd = ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(), FortSiegeManager.getInstance().getSiegeLength() * 60 * 1000L); // Prepare auto end task
 			
 			final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.THE_FORTRESS_BATTLE_S1_HAS_BEGUN);
-			sm.addFortId(getFort().getFortId());
+			sm.addCastleId(getFort().getFortId());
 			announceToPlayer(sm);
 			saveFortSiege();
 			

+ 9 - 9
L2J_Server_BETA/java/com/l2jserver/gameserver/model/entity/Siege.java

@@ -64,7 +64,7 @@ public class Siege implements Siegable
 {
 	protected static final Logger _log = Logger.getLogger(Siege.class.getName());
 	
-	private static List<SiegeListener> siegeListeners = new FastList<SiegeListener>().shared();
+	private static final List<SiegeListener> siegeListeners = new FastList<SiegeListener>().shared();
 	
 	// typeId's
 	public static final byte OWNER = -1;
@@ -188,7 +188,7 @@ public class Siege implements Siegable
 				else if ((timeRemaining <= 86400000) && (timeRemaining > 13600000))
 				{
 					SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.REGISTRATION_TERM_FOR_S1_ENDED);
-					sm.addString(getCastle().getName());
+					sm.addCastleId(getCastle().getCastleId());
 					Announcements.getInstance().announceToAll(sm);
 					_isRegistrationOver = true;
 					clearSiegeWaitingClan();
@@ -253,7 +253,7 @@ public class Siege implements Siegable
 		if (getIsInProgress())
 		{
 			SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SIEGE_OF_S1_HAS_ENDED);
-			sm.addString(getCastle().getName());
+			sm.addCastleId(getCastle().getCastleId());
 			Announcements.getInstance().announceToAll(sm);
 			
 			if (getCastle().getOwnerId() > 0)
@@ -261,7 +261,7 @@ public class Siege implements Siegable
 				L2Clan clan = ClanTable.getInstance().getClan(getCastle().getOwnerId());
 				sm = SystemMessage.getSystemMessage(SystemMessageId.CLAN_S1_VICTORIOUS_OVER_S2_S_SIEGE);
 				sm.addString(clan.getName());
-				sm.addString(getCastle().getName());
+				sm.addCastleId(getCastle().getCastleId());
 				Announcements.getInstance().announceToAll(sm);
 				
 				if (clan.getClanId() == _firstOwnerClanId)
@@ -291,7 +291,7 @@ public class Siege implements Siegable
 			else
 			{
 				sm = SystemMessage.getSystemMessage(SystemMessageId.SIEGE_S1_DRAW);
-				sm.addString(getCastle().getName());
+				sm.addCastleId(getCastle().getCastleId());
 				Announcements.getInstance().announceToAll(sm);
 			}
 			
@@ -458,7 +458,7 @@ public class Siege implements Siegable
 					sm = SystemMessage.getSystemMessage(SystemMessageId.SIEGE_OF_S1_HAS_BEEN_CANCELED_DUE_TO_LACK_OF_INTEREST);
 				else
 					sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SIEGE_WAS_CANCELED_BECAUSE_NO_CLANS_PARTICIPATED);
-				sm.addString(getCastle().getName());
+				sm.addCastleId(getCastle().getCastleId());
 				Announcements.getInstance().announceToAll(sm);
 				saveCastleSiege();
 				return;
@@ -488,7 +488,7 @@ public class Siege implements Siegable
 			ThreadPoolManager.getInstance().scheduleGeneral(new ScheduleEndSiegeTask(getCastle()), 1000); // Prepare auto end task
 			
 			SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SIEGE_OF_S1_HAS_STARTED);
-			sm.addString(getCastle().getName());
+			sm.addCastleId(getCastle().getCastleId());
 			Announcements.getInstance().announceToAll(sm);
 		}
 	}
@@ -1049,7 +1049,7 @@ public class Siege implements Siegable
 		if (getIsRegistrationOver())
 		{
 			SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.DEADLINE_FOR_SIEGE_S1_PASSED);
-			sm.addString(getCastle().getName());
+			sm.addCastleId(getCastle().getCastleId());
 			player.sendPacket(sm);
 		}
 		else if (getIsInProgress())
@@ -1359,7 +1359,7 @@ public class Siege implements Siegable
 			getCastle().getSiegeDate().add(Calendar.DAY_OF_MONTH, 7);
 		
 		SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_ANNOUNCED_SIEGE_TIME);
-		sm.addString(getCastle().getName());
+		sm.addCastleId(getCastle().getCastleId());
 		Announcements.getInstance().announceToAll(sm);
 		
 		_isRegistrationOver = false; // Allow registration for next siege

+ 12 - 9
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/SystemMessage.java

@@ -88,7 +88,7 @@ public final class SystemMessage extends L2GameServerPacket
 		}
 	}
 	
-	// UnAfraid: TODO: Check/Implement id's: 14,15.
+	// TODO: UnAfraid: Check/Implement id's: 14,15.
 	// 15 exists in goddess of destruction but also may works in h5 needs to be verified!
 	// private static final byte TYPE_CLASS_ID = 15;
 	// id 14 unknown
@@ -187,15 +187,18 @@ public final class SystemMessage extends L2GameServerPacket
 	}
 	
 	/**
-	 * Castlename-e.dat<br>
-	 * 0-9 Castle names<br>
-	 * 21-64 CH names<br>
-	 * 81-89 Territory names<br>
-	 * 101-121 Fortress names<br>
-	 * @param number
-	 * @return
+	 * Appends a Castle name parameter type, the name will be read from CastleName-e.dat.<br>
+	 * <ul>
+	 * <li>0-8 Castle names</li>
+	 * <li>9-64 Clan Hall names</li>
+	 * <li>81-89 Territory names</li>
+	 * <li>90-100 null</li>
+	 * <li>101-121 Fortress names</li>
+	 * </ul>
+	 * @param number the conquerable entity
+	 * @return the system message with the proper parameter
 	 */
-	public final SystemMessage addFortId(final int number)
+	public final SystemMessage addCastleId(final int number)
 	{
 		append(new SMParam(TYPE_CASTLE_NAME, number));
 		return this;