Преглед на файлове

BETA: Enforcing load() method for DocumentParser.
* This will:
* Allow easy implementation of reload admin commands.
* Standardize the XML parsers.

Zoey76 преди 13 години
родител
ревизия
13d688f32f
променени са 16 файла, в които са добавени 139 реда и са изтрити 66 реда
  1. 41 38
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/AdminTable.java
  2. 6 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/ArmorSetsData.java
  3. 6 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/ClassListData.java
  4. 5 6
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/EnchantItemData.java
  5. 6 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/ExperienceTable.java
  6. 6 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/FishData.java
  7. 6 1
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/FishingRodsData.java
  8. 6 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/HennaData.java
  9. 6 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/HitConditionBonus.java
  10. 6 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/InitialEquipmentData.java
  11. 6 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/PetDataTable.java
  12. 4 4
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/SkillTreesData.java
  13. 6 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/StaticObjects.java
  14. 6 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/engines/DocumentParser.java
  15. 17 16
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/InstanceManager.java
  16. 6 0
      L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/MapRegionManager.java

+ 41 - 38
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/AdminTable.java

@@ -43,19 +43,28 @@ import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
  */
 public class AdminTable extends DocumentParser
 {
-	private Map<Integer, L2AccessLevel> _accessLevels;
-	private Map<String, L2AdminCommandAccessRight> _adminCommandAccessRights;
-	private Map<L2PcInstance, Boolean> _gmList;
+	private static final Map<Integer, L2AccessLevel> _accessLevels = new HashMap<>();
+	private static final Map<String, L2AdminCommandAccessRight> _adminCommandAccessRights = new HashMap<>();
+	private static final FastMap<L2PcInstance, Boolean> _gmList = new FastMap<L2PcInstance, Boolean>();
 	private int _highestLevel = 0;
 	
 	protected AdminTable()
 	{
-		_accessLevels = new HashMap<>();
-		_adminCommandAccessRights = new HashMap<>();
-		_gmList = new FastMap<L2PcInstance, Boolean>().shared();
+		_gmList.shared();
 		load();
 	}
 	
+	@Override
+	public void load()
+	{
+		_accessLevels.clear();
+		_adminCommandAccessRights.clear();
+		parseFile(new File(Config.DATAPACK_ROOT, "data/accessLevels.xml"));
+		_log.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _accessLevels.size() + " Access Levels");
+		parseFile(new File(Config.DATAPACK_ROOT, "data/adminCommands.xml"));
+		_log.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _adminCommandAccessRights.size() + " Access Commands");
+	}
+	
 	@Override
 	protected void parseDocument(Document doc)
 	{
@@ -80,7 +89,7 @@ public class AdminTable extends DocumentParser
 							set.set(attr.getNodeName(), attr.getNodeValue());
 						}
 						level = new L2AccessLevel(set);
-						if (level.getLevel() >  _highestLevel)
+						if (level.getLevel() > _highestLevel)
 						{
 							_highestLevel = level.getLevel();
 						}
@@ -103,30 +112,6 @@ public class AdminTable extends DocumentParser
 		}
 	}
 	
-	private void load()
-	{
-		parseFile(new File(Config.DATAPACK_ROOT, "data/accessLevels.xml"));
-		_log.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _accessLevels.size() + " Access Levels");
-		parseFile(new File(Config.DATAPACK_ROOT, "data/adminCommands.xml"));
-		_log.log(Level.INFO, getClass().getSimpleName() + ": Loaded: " + _adminCommandAccessRights.size() + " Access Commands");
-	}
-	
-	public void reload()
-	{
-		_accessLevels.clear();
-		_adminCommandAccessRights.clear();
-		load();
-	}
-	
-	/**
-	 * @return AccessLevels: the one and only instance of this class<br>
-	 */
-	public static AdminTable getInstance()
-	{
-		return SingletonHolder._instance;
-	}
-	
-	
 	/**
 	 * Returns the access level by characterAccessLevel<br>
 	 * <br>
@@ -158,13 +143,13 @@ public class AdminTable extends DocumentParser
 	}
 	
 	public boolean hasAccess(String adminCommand, L2AccessLevel accessLevel)
-	{	
+	{
 		L2AdminCommandAccessRight acar = _adminCommandAccessRights.get(adminCommand);
 		
 		if (acar == null)
 		{
 			// Trying to avoid the spam for next time when the gm would try to use the same command
-			if (accessLevel.getLevel() > 0 && accessLevel.getLevel() == _highestLevel)
+			if ((accessLevel.getLevel() > 0) && (accessLevel.getLevel() == _highestLevel))
 			{
 				acar = new L2AdminCommandAccessRight(adminCommand, true, accessLevel.getLevel());
 				_adminCommandAccessRights.put(adminCommand, acar);
@@ -225,23 +210,26 @@ public class AdminTable extends DocumentParser
 		return tmpGmList;
 	}
 	
-
 	/**
 	 * Add a L2PcInstance player to the Set _gmList
-	 * @param player 
-	 * @param hidden 
+	 * @param player
+	 * @param hidden
 	 */
 	public void addGm(L2PcInstance player, boolean hidden)
 	{
 		if (Config.DEBUG)
+		{
 			_log.fine("added gm: " + player.getName());
+		}
 		_gmList.put(player, hidden);
 	}
 	
 	public void deleteGm(L2PcInstance player)
 	{
 		if (Config.DEBUG)
+		{
 			_log.fine("deleted gm: " + player.getName());
+		}
 		
 		_gmList.remove(player);
 	}
@@ -253,7 +241,9 @@ public class AdminTable extends DocumentParser
 	public void showGm(L2PcInstance player)
 	{
 		if (_gmList.containsKey(player))
+		{
 			_gmList.put(player, false);
+		}
 	}
 	
 	/**
@@ -263,7 +253,9 @@ public class AdminTable extends DocumentParser
 	public void hideGm(L2PcInstance player)
 	{
 		if (_gmList.containsKey(player))
+		{
 			_gmList.put(player, true);
+		}
 	}
 	
 	public boolean isGmOnline(boolean includeHidden)
@@ -271,7 +263,9 @@ public class AdminTable extends DocumentParser
 		for (Entry<L2PcInstance, Boolean> entry : _gmList.entrySet())
 		{
 			if (includeHidden || !entry.getValue())
+			{
 				return true;
+			}
 		}
 		
 		return false;
@@ -298,7 +292,7 @@ public class AdminTable extends DocumentParser
 	
 	public void broadcastToGMs(L2GameServerPacket packet)
 	{
-		for (L2PcInstance gm : getInstance().getAllGms(true))
+		for (L2PcInstance gm : getAllGms(true))
 		{
 			gm.sendPacket(packet);
 		}
@@ -306,12 +300,21 @@ public class AdminTable extends DocumentParser
 	
 	public void broadcastMessageToGMs(String message)
 	{
-		for (L2PcInstance gm : getInstance().getAllGms(true))
+		for (L2PcInstance gm : getAllGms(true))
 		{
 			gm.sendMessage(message);
 		}
 	}
 	
+
+	/**
+	 * @return AccessLevels: the one and only instance of this class<br>
+	 */
+	public static AdminTable getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
 	private static class SingletonHolder
 	{
 		protected static final AdminTable _instance = new AdminTable();

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/ArmorSetsData.java

@@ -35,6 +35,12 @@ public final class ArmorSetsData extends DocumentParser
 	private static final Map<Integer, L2ArmorSet> _armorSets = new HashMap<>();
 	
 	protected ArmorSetsData()
+	{
+		load();
+	}
+	
+	@Override
+	public void load()
 	{
 		_armorSets.clear();
 		parseDirectory(new File(Config.DATAPACK_ROOT, "data/stats/armorsets"));

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/ClassListData.java

@@ -35,6 +35,12 @@ public final class ClassListData extends DocumentParser
 	private static final Map<ClassId, ClassInfo> _classData = new HashMap<>();
 	
 	protected ClassListData()
+	{
+		load();
+	}
+	
+	@Override
+	public void load()
 	{
 		_classData.clear();
 		parseDatapackFile("data/stats/chars/classList.xml");

+ 5 - 6
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/EnchantItemData.java

@@ -34,23 +34,22 @@ import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
  */
 public class EnchantItemData extends DocumentParser
 {
-	public final Map<Integer, EnchantScroll> _scrolls;
-	public final Map<Integer, EnchantItem> _supports;
+	public static final Map<Integer, EnchantScroll> _scrolls = new HashMap<>();
+	public static final Map<Integer, EnchantItem> _supports = new HashMap<>();
 	
 	public EnchantItemData()
 	{
-		_scrolls = new HashMap<>();
-		_supports = new HashMap<>();
 		load();
 	}
 	
+	@Override
 	public void load()
 	{
 		_scrolls.clear();
 		_supports.clear();
 		parseDatapackFile("data/enchantData.xml");
-		_log.info(getClass().getSimpleName() + ": Loaded " + _scrolls.size() + " Enchant Scrolls");
-		_log.info(getClass().getSimpleName() + ": Loaded " + _supports.size() + " Support Items");
+		_log.info(getClass().getSimpleName() + ": Loaded " + _scrolls.size() + " Enchant Scrolls.");
+		_log.info(getClass().getSimpleName() + ": Loaded " + _supports.size() + " Support Items.");
 	}
 	
 	@Override

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/ExperienceTable.java

@@ -35,6 +35,12 @@ public final class ExperienceTable extends DocumentParser
 	private byte MAX_PET_LEVEL;
 	
 	protected ExperienceTable()
+	{
+		load();
+	}
+	
+	@Override
+	public void load()
 	{
 		_expTable.clear();
 		parseDatapackFile("data/stats/experience.xml");

+ 6 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/FishData.java

@@ -38,11 +38,16 @@ public final class FishData extends DocumentParser
 	private static final Map<Integer, L2Fish> _fishsHard = new HashMap<>();
 	
 	protected FishData()
+	{
+		load();
+	}
+	
+	@Override
+	public void load()
 	{
 		_fishsEasy.clear();
 		_fishsNormal.clear();
 		_fishsHard.clear();
-		
 		parseDatapackFile("data/stats/items/fishing/fishes.xml");
 		_log.info(getClass().getSimpleName() + ": Loaded " + (_fishsEasy.size() + _fishsNormal.size() + _fishsHard.size()) + " Fishes.");
 	}

+ 6 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/FishingRodsData.java

@@ -34,9 +34,14 @@ public final class FishingRodsData extends DocumentParser
 	private static final Map<Integer, L2FishingRod> _fishingRods = new HashMap<>();
 	
 	protected FishingRodsData()
+	{
+		load();
+	}
+	
+	@Override
+	public void load()
 	{
 		_fishingRods.clear();
-		
 		parseDatapackFile("data/stats/items/fishing/fishingRods.xml");
 		_log.info(getClass().getSimpleName() + ": Loaded " + _fishingRods.size() + " Fishing Rods.");
 	}

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/HennaData.java

@@ -40,6 +40,12 @@ public final class HennaData extends DocumentParser
 	private static final Map<Integer, L2Henna> _hennaList = new HashMap<>();
 	
 	protected HennaData()
+	{
+		load();
+	}
+	
+	@Override
+	public void load()
 	{
 		_hennaList.clear();
 		parseDatapackFile("data/stats/hennaList.xml");

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/HitConditionBonus.java

@@ -38,6 +38,12 @@ public final class HitConditionBonus extends DocumentParser
 	private int rainBonus = 0;
 	
 	protected HitConditionBonus()
+	{
+		load();
+	}
+	
+	@Override
+	public void load()
 	{
 		parseDatapackFile("data/stats/hitConditionBonus.xml");
 		_log.info(getClass().getSimpleName() + ": Loaded Hit Condition bonuses.");

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/InitialEquipmentData.java

@@ -41,6 +41,12 @@ public final class InitialEquipmentData extends DocumentParser
 	private final Map<ClassId, List<PcItemTemplate>> _initialEquipmentList = new HashMap<>();
 	
 	protected InitialEquipmentData()
+	{
+		load();
+	}
+	
+	@Override
+	public void load()
 	{
 		_initialEquipmentList.clear();
 		parseDatapackFile(Config.INITIAL_EQUIPMENT_EVENT ? filePathEvent : filePathNormal);

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/PetDataTable.java

@@ -36,6 +36,12 @@ public final class PetDataTable extends DocumentParser
 	private static final Map<Integer, L2PetData> _pets = new HashMap<>();
 	
 	protected PetDataTable()
+	{
+		load();
+	}
+	
+	@Override
+	public void load()
 	{
 		_pets.clear();
 		parseDatapackFile("data/stats/npc/PetData.xml");

+ 4 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/SkillTreesData.java

@@ -103,9 +103,7 @@ public final class SkillTreesData extends DocumentParser
 		load();
 	}
 	
-	/**
-	 * Wrapper for required actions to clear and load all skill trees.
-	 */
+	@Override
 	public void load()
 	{
 		_loading = true;
@@ -123,11 +121,13 @@ public final class SkillTreesData extends DocumentParser
 		_gameMasterAuraSkillTree.clear();
 		
 		// Load files.
-		_loading = parseDirectory(new File(Config.DATAPACK_ROOT, "data/skillTrees/"));
+		parseDirectory(new File(Config.DATAPACK_ROOT, "data/skillTrees/"));
 		
 		// Generate check arrays.
 		generateCheckArrays();
 		
+		_loading = false;
+		
 		// Logs a report with skill trees info.
 		report();
 	}

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/StaticObjects.java

@@ -37,6 +37,12 @@ public final class StaticObjects extends DocumentParser
 	private static final Map<Integer, L2StaticObjectInstance> _staticObjects = new HashMap<>();
 	
 	protected StaticObjects()
+	{
+		load();
+	}
+	
+	@Override
+	public void load()
 	{
 		_staticObjects.clear();
 		parseDatapackFile("data/staticObjects.xml");

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/engines/DocumentParser.java

@@ -43,6 +43,12 @@ public abstract class DocumentParser
 	
 	private static final XMLFilter xmlFilter = new XMLFilter();
 	
+	/**
+	 * This method can be used to load/reload the data.<br>
+	 * It's highly recommended to clear the data storage, either the list or map.
+	 */
+	public abstract void load();
+	
 	/**
 	 * Wrapper for {@link #parseFile(File)} method.
 	 * @param path the relative path to the datapack root of the XML file to parse.

+ 17 - 16
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/InstanceManager.java

@@ -50,11 +50,26 @@ public class InstanceManager extends DocumentParser
 	private static final String DELETE_INSTANCE_TIME = "DELETE FROM character_instance_time WHERE charId=? AND instanceId=?";
 	
 	protected InstanceManager()
+	{
+		// Creates the multiverse.
+		final Instance multiverse = new Instance(-1);
+		multiverse.setName("multiverse");
+		_instanceList.put(-1, multiverse);
+		_log.info(getClass().getSimpleName() + ": Multiverse Instance created.");
+		// Creates the universe.
+		final Instance universe = new Instance(0);
+		universe.setName("universe");
+		_instanceList.put(0, universe);
+		_log.info(getClass().getSimpleName() + ": Universe Instance created.");
+		load();
+	}
+	
+	@Override
+	public void load()
 	{
 		_instanceIdNames.clear();
 		parseDatapackFile("data/instancenames.xml");
 		_log.info(getClass().getSimpleName() + ": Loaded " + _instanceIdNames.size() + " instance names.");
-		createWorld();
 	}
 	
 	/**
@@ -273,19 +288,6 @@ public class InstanceManager extends DocumentParser
 		return null;
 	}
 	
-	private void createWorld()
-	{
-		Instance themultiverse = new Instance(-1);
-		themultiverse.setName("multiverse");
-		_instanceList.put(-1, themultiverse);
-		_log.info("Multiverse Instance created");
-		
-		Instance universe = new Instance(0);
-		universe.setName("universe");
-		_instanceList.put(0, universe);
-		_log.info("Universe Instance created");
-	}
-	
 	/**
 	 * @param instanceid
 	 */
@@ -390,13 +392,12 @@ public class InstanceManager extends DocumentParser
 	 */
 	public int createDynamicInstance(String template)
 	{
-		
 		while (getInstance(_dynamic) != null)
 		{
 			_dynamic++;
 			if (_dynamic == Integer.MAX_VALUE)
 			{
-				_log.warning("InstanceManager: More then " + (Integer.MAX_VALUE - 300000) + " instances created");
+				_log.warning(getClass().getSimpleName() + ": More then " + (Integer.MAX_VALUE - 300000) + " instances created");
 				_dynamic = 300000;
 			}
 		}

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/MapRegionManager.java

@@ -64,6 +64,12 @@ public class MapRegionManager extends DocumentParser
 	}
 	
 	protected MapRegionManager()
+	{
+		load();
+	}
+	
+	@Override
+	public void load()
 	{
 		_regions.clear();
 		parseDirectory(new File(Config.DATAPACK_ROOT, "data/mapregion/"));