forked from MagicBane/Server
				
			
				 4 changed files with 83 additions and 10 deletions
			
			
		| @ -0,0 +1,74 @@@@ -0,0 +1,74 @@ | ||||
| // • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | ||||
| // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | ||||
| // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | ||||
| // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | ||||
| // ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | ||||
| //      Magicbane Emulator Project © 2013 - 2022
 | ||||
| //                www.magicbane.com
 | ||||
| 
 | ||||
| 
 | ||||
| // • ▌ ▄ ·.  ▄▄▄·  ▄▄ • ▪   ▄▄· ▄▄▄▄·  ▄▄▄·  ▐▄▄▄  ▄▄▄ .
 | ||||
| // ·██ ▐███▪▐█ ▀█ ▐█ ▀ ▪██ ▐█ ▌▪▐█ ▀█▪▐█ ▀█ •█▌ ▐█▐▌·
 | ||||
| // ▐█ ▌▐▌▐█·▄█▀▀█ ▄█ ▀█▄▐█·██ ▄▄▐█▀▀█▄▄█▀▀█ ▐█▐ ▐▌▐▀▀▀
 | ||||
| // ██ ██▌▐█▌▐█ ▪▐▌▐█▄▪▐█▐█▌▐███▌██▄▪▐█▐█ ▪▐▌██▐ █▌▐█▄▄▌
 | ||||
| // ▀▀  █▪▀▀▀ ▀  ▀ ·▀▀▀▀ ▀▀▀·▀▀▀ ·▀▀▀▀  ▀  ▀ ▀▀  █▪ ▀▀▀
 | ||||
| //      Magicbane Emulator Project © 2013 - 2022
 | ||||
| //                www.magicbane.com
 | ||||
| 
 | ||||
| 
 | ||||
| package engine.workthreads; | ||||
| 
 | ||||
| import engine.Enum.DispatchChannel; | ||||
| import engine.gameManager.ZoneManager; | ||||
| import engine.net.Dispatch; | ||||
| import engine.objects.Mob; | ||||
| import engine.objects.Zone; | ||||
| import org.pmw.tinylog.Logger; | ||||
| 
 | ||||
| import java.util.concurrent.ConcurrentLinkedQueue; | ||||
| 
 | ||||
| /** | ||||
|  * Thread blocks until MagicBane dispatch messages are | ||||
|  * enqueued then processes them in FIFO order. The collection | ||||
|  * is thread safe. | ||||
|  * <p> | ||||
|  * Any large messages not time sensitive such as load object | ||||
|  * sent to more than a single individual should be spawned | ||||
|  * individually on a DispatchMessageThread. | ||||
|  */ | ||||
| 
 | ||||
| public class MobRespawnThread implements Runnable { | ||||
| 
 | ||||
|     // Instance variables
 | ||||
| 
 | ||||
| 
 | ||||
|     // Thread constructor
 | ||||
| 
 | ||||
|     public MobRespawnThread() { | ||||
| 
 | ||||
|         Logger.info(" MobRespawnThread thread has started!"); | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void run() { | ||||
|         for (Zone zone : ZoneManager.getAllZones()) { | ||||
|             if (zone.respawnQue.isEmpty() == false && zone.lastRespawn + 100 < System.currentTimeMillis()) { | ||||
|                 if (zone.respawnQue.iterator().next() != null) { | ||||
|                     Mob respawner = zone.respawnQue.iterator().next(); | ||||
|                     respawner.respawn(); | ||||
|                     zone.respawnQue.remove(respawner); | ||||
|                     zone.lastRespawn = System.currentTimeMillis(); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     public static void startRespawnThread() { | ||||
| 
 | ||||
|         Thread respawnThread; | ||||
|         respawnThread = new Thread(new PurgeOprhans()); | ||||
| 
 | ||||
|         respawnThread.setName("respawnThread"); | ||||
|         respawnThread.start(); | ||||
|     } | ||||
| } | ||||
					Loading…
					
					
				
		Reference in new issue