Преглед изворни кода

BETA: Moving Hellbound to Datapack:
* New Datapack sided Hellbound Engine.
* Using one class-loader for all Hellbound related scripts:
* Faster loading and allows "communication" between scripts.
* Allows disabling Hellbound completely by just removing the class-loader from scripts.cfg.
* Static Hellbound's spawn data moved from SQL to XML.
* Removed `HellboundManager`.
* Reviewed all the Hellbound related scripts:
* Finalized all classes and removed main method.
* Added !JavaDocs.
* Removed the usage of `QuestState`, it's not required at all at AIs.
* Moved constructor at the top of the class after fields declaration.

Zoey76 пре 11 година
родитељ
комит
7bbcfd2479

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

@@ -108,7 +108,6 @@ import com.l2jserver.gameserver.instancemanager.FourSepulchersManager;
 import com.l2jserver.gameserver.instancemanager.GlobalVariablesManager;
 import com.l2jserver.gameserver.instancemanager.GraciaSeedsManager;
 import com.l2jserver.gameserver.instancemanager.GrandBossManager;
-import com.l2jserver.gameserver.instancemanager.HellboundManager;
 import com.l2jserver.gameserver.instancemanager.InstanceManager;
 import com.l2jserver.gameserver.instancemanager.ItemAuctionManager;
 import com.l2jserver.gameserver.instancemanager.ItemsOnGroundManager;
@@ -285,7 +284,6 @@ public class GameServer
 		FortManager.getInstance().loadInstances();
 		NpcBufferTable.getInstance();
 		SpawnTable.getInstance();
-		HellboundManager.getInstance();
 		RaidBossSpawnManager.getInstance();
 		DayNightSpawnManager.getInstance().trim().notifyChangeMode();
 		GrandBossManager.getInstance().initZones();

+ 0 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/Shutdown.java

@@ -32,7 +32,6 @@ import com.l2jserver.gameserver.instancemanager.CastleManorManager;
 import com.l2jserver.gameserver.instancemanager.CursedWeaponsManager;
 import com.l2jserver.gameserver.instancemanager.GlobalVariablesManager;
 import com.l2jserver.gameserver.instancemanager.GrandBossManager;
-import com.l2jserver.gameserver.instancemanager.HellboundManager;
 import com.l2jserver.gameserver.instancemanager.ItemAuctionManager;
 import com.l2jserver.gameserver.instancemanager.ItemsOnGroundManager;
 import com.l2jserver.gameserver.instancemanager.QuestManager;
@@ -537,8 +536,6 @@ public class Shutdown extends Thread
 		_log.info("RaidBossSpawnManager: All raidboss info saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
 		GrandBossManager.getInstance().cleanUp();
 		_log.info("GrandBossManager: All Grand Boss info saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
-		HellboundManager.getInstance().cleanUp();
-		_log.info("Hellbound Manager: Data saved(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
 		ItemAuctionManager.getInstance().shutdown();
 		_log.info("Item Auction Manager: All tasks stopped(" + tc.getEstimatedTimeAndRestartCounter() + "ms).");
 		Olympiad.getInstance().saveOlympiadStatus();

+ 0 - 340
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/HellboundManager.java

@@ -1,340 +0,0 @@
-/*
- * Copyright (C) 2004-2014 L2J Server
- * 
- * This file is part of L2J Server.
- * 
- * L2J Server is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- * 
- * L2J Server is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- * 
- * 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.instancemanager;
-
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.Statement;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ScheduledFuture;
-import java.util.logging.Logger;
-
-import com.l2jserver.Config;
-import com.l2jserver.L2DatabaseFactory;
-import com.l2jserver.gameserver.ThreadPoolManager;
-import com.l2jserver.gameserver.datatables.NpcData;
-import com.l2jserver.gameserver.datatables.SpawnTable;
-import com.l2jserver.gameserver.model.L2Spawn;
-import com.l2jserver.gameserver.model.actor.L2Npc;
-import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
-
-/**
- * @author _DS_, GKR
- */
-public class HellboundManager
-{
-	private static final Logger _log = Logger.getLogger(HellboundManager.class.getName());
-	
-	private static final String LOAD_SPAWNS = "SELECT npc_templateid, locx, locy, locz, heading, " + "respawn_delay, respawn_random, min_hellbound_level, " + "max_hellbound_level FROM hellbound_spawnlist ORDER BY npc_templateid";
-	
-	private int _level = 0;
-	private int _trust = 0;
-	private int _maxTrust = 0;
-	private int _minTrust = 0;
-	
-	private ScheduledFuture<?> _engine = null;
-	private final List<HellboundSpawn> _population = new ArrayList<>();
-	
-	protected HellboundManager()
-	{
-		loadData();
-		loadSpawns();
-	}
-	
-	public final int getLevel()
-	{
-		return _level;
-	}
-	
-	public final synchronized void updateTrust(int t, boolean useRates)
-	{
-		if (isLocked())
-		{
-			return;
-		}
-		
-		int reward = t;
-		if (useRates)
-		{
-			reward = (int) (t > 0 ? Config.RATE_HB_TRUST_INCREASE * t : Config.RATE_HB_TRUST_DECREASE * t);
-		}
-		
-		final int trust = Math.max(_trust + reward, _minTrust);
-		if (_maxTrust > 0)
-		{
-			_trust = Math.min(trust, _maxTrust);
-		}
-		else
-		{
-			_trust = trust;
-		}
-	}
-	
-	public final void setLevel(int lvl)
-	{
-		_level = lvl;
-	}
-	
-	public final int getTrust()
-	{
-		return _trust;
-	}
-	
-	public final int getMaxTrust()
-	{
-		return _maxTrust;
-	}
-	
-	public final int getMinTrust()
-	{
-		return _minTrust;
-	}
-	
-	public final void setMaxTrust(int trust)
-	{
-		_maxTrust = trust;
-		if ((_maxTrust > 0) && (_trust > _maxTrust))
-		{
-			_trust = _maxTrust;
-		}
-	}
-	
-	public final void setMinTrust(int trust)
-	{
-		_minTrust = trust;
-		
-		if (_trust >= _maxTrust)
-		{
-			_trust = _minTrust;
-		}
-	}
-	
-	/**
-	 * @return true if Hellbound is locked
-	 */
-	public final boolean isLocked()
-	{
-		return _level == 0;
-	}
-	
-	public final void unlock()
-	{
-		if (_level == 0)
-		{
-			setLevel(1);
-		}
-	}
-	
-	public final void registerEngine(Runnable r, int interval)
-	{
-		if (_engine != null)
-		{
-			_engine.cancel(false);
-		}
-		_engine = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(r, interval, interval);
-	}
-	
-	public final void doSpawn()
-	{
-		int added = 0;
-		int deleted = 0;
-		for (HellboundSpawn spawnDat : _population)
-		{
-			try
-			{
-				if (spawnDat == null)
-				{
-					continue;
-				}
-				
-				L2Npc npc = spawnDat.getLastSpawn();
-				if ((_level < spawnDat.getMinLvl()) || (_level > spawnDat.getMaxLvl()))
-				{
-					// npc should be removed
-					spawnDat.stopRespawn();
-					
-					if ((npc != null) && npc.isVisible())
-					{
-						npc.deleteMe();
-						deleted++;
-					}
-				}
-				else
-				{
-					// npc should be added
-					spawnDat.startRespawn();
-					npc = spawnDat.getLastSpawn();
-					if (npc == null)
-					{
-						npc = spawnDat.doSpawn();
-						added++;
-					}
-					else
-					{
-						if (npc.isDecayed())
-						{
-							npc.setDecayed(false);
-						}
-						if (npc.isDead())
-						{
-							npc.doRevive();
-						}
-						if (!npc.isVisible())
-						{
-							added++;
-						}
-						
-						npc.setCurrentHp(npc.getMaxHp());
-						npc.setCurrentMp(npc.getMaxMp());
-						// npc.spawnMe(spawnDat.getLocx(), spawnDat.getLocy(),
-						// spawnDat.getLocz());
-					}
-				}
-			}
-			catch (Exception e)
-			{
-				_log.warning(getClass().getSimpleName() + ": " + e.getMessage());
-			}
-		}
-		
-		if (added > 0)
-		{
-			_log.info(getClass().getSimpleName() + ": Spawned " + added + " NPCs.");
-		}
-		if (deleted > 0)
-		{
-			_log.info(getClass().getSimpleName() + ": Removed " + deleted + " NPCs.");
-		}
-	}
-	
-	public final void cleanUp()
-	{
-		saveData();
-		
-		if (_engine != null)
-		{
-			_engine.cancel(true);
-			_engine = null;
-		}
-		_population.clear();
-	}
-	
-	private final void loadData()
-	{
-		if (GlobalVariablesManager.getInstance().hasVariable("HBLevel"))
-		{
-			_level = GlobalVariablesManager.getInstance().getInt("HBLevel");
-			_trust = GlobalVariablesManager.getInstance().getInt("HBTrust");
-		}
-		else
-		{
-			saveData();
-		}
-	}
-	
-	public final void saveData()
-	{
-		GlobalVariablesManager.getInstance().set("HBLevel", _level);
-		GlobalVariablesManager.getInstance().set("HBTrust", _trust);
-	}
-	
-	private final void loadSpawns()
-	{
-		try (Connection con = L2DatabaseFactory.getInstance().getConnection();
-			Statement s = con.createStatement();
-			ResultSet rs = s.executeQuery(LOAD_SPAWNS))
-		{
-			HellboundSpawn spawnDat;
-			L2NpcTemplate template;
-			while (rs.next())
-			{
-				template = NpcData.getInstance().getTemplate(rs.getInt("npc_templateid"));
-				if (template != null)
-				{
-					spawnDat = new HellboundSpawn(template);
-					spawnDat.setAmount(1);
-					spawnDat.setX(rs.getInt("locx"));
-					spawnDat.setY(rs.getInt("locy"));
-					spawnDat.setZ(rs.getInt("locz"));
-					spawnDat.setHeading(rs.getInt("heading"));
-					spawnDat.setRespawnDelay(rs.getInt("respawn_delay"), rs.getInt("respawn_random"));
-					spawnDat.setMinLvl(rs.getInt("min_hellbound_level"));
-					spawnDat.setMaxLvl(rs.getInt("max_hellbound_level"));
-					
-					// _population.put(spawnDat, null);
-					_population.add(spawnDat);
-					SpawnTable.getInstance().addNewSpawn(spawnDat, false);
-				}
-				else
-				{
-					_log.warning(getClass().getSimpleName() + ": Data missing in NPC table for ID: " + rs.getInt("npc_templateid") + ".");
-				}
-			}
-			rs.close();
-			s.close();
-		}
-		catch (Exception e)
-		{
-			_log.warning(getClass().getSimpleName() + ": problem while loading spawns: " + e);
-		}
-		_log.info(getClass().getSimpleName() + ": Loaded " + _population.size() + " npc spawn locations.");
-	}
-	
-	public static final class HellboundSpawn extends L2Spawn
-	{
-		private int _minLvl;
-		private int _maxLvl;
-		
-		public HellboundSpawn(L2NpcTemplate mobTemplate) throws SecurityException, ClassNotFoundException, NoSuchMethodException
-		{
-			super(mobTemplate);
-		}
-		
-		public final int getMinLvl()
-		{
-			return _minLvl;
-		}
-		
-		public final void setMinLvl(int lvl)
-		{
-			_minLvl = lvl;
-		}
-		
-		public final int getMaxLvl()
-		{
-			return _maxLvl;
-		}
-		
-		public final void setMaxLvl(int lvl)
-		{
-			_maxLvl = lvl;
-		}
-	}
-	
-	public static final HellboundManager getInstance()
-	{
-		return SingletonHolder._instance;
-	}
-	
-	private static class SingletonHolder
-	{
-		protected static final HellboundManager _instance = new HellboundManager();
-	}
-}

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/QuestManager.java

@@ -196,7 +196,7 @@ public final class QuestManager extends ScriptManager<Quest>
 		if (old != null)
 		{
 			old.unload();
-			_log.info(getClass().getSimpleName() + ": Replaced: " + old.getName() + " with a new version!");
+			_log.info(getClass().getSimpleName() + ": Replaced quest " + old.getName() + " (" + old.getId() + ") with a new version!");
 			
 		}
 		
@@ -265,7 +265,7 @@ public final class QuestManager extends ScriptManager<Quest>
 		if (old != null)
 		{
 			old.unload();
-			_log.info(getClass().getSimpleName() + ": Replaced: " + old.getName() + " with a new version!");
+			_log.info(getClass().getSimpleName() + ": Replaced script " + old.getName() + " with a new version!");
 		}
 		
 		if (Config.ALT_DEV_SHOW_SCRIPTS_LOAD_IN_LOGS)