| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -5817,6 +5817,21 @@ public class PlayerCharacter extends AbstractCharacter { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    public void doRegen(){ | 
					 | 
					 | 
					 | 
					    public void doRegen(){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if(!this.timestamps.containsKey("SyncClient")) | 
					 | 
					 | 
					 | 
					        if(!this.timestamps.containsKey("SyncClient")) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            this.timestamps.put("SyncClient",System.currentTimeMillis()); | 
					 | 
					 | 
					 | 
					            this.timestamps.put("SyncClient",System.currentTimeMillis()); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        try { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            ReentrantReadWriteLock reentrantLock = (ReentrantReadWriteLock) this.updateLock; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            if(reentrantLock.writeLock().isHeldByCurrentThread()){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                this.updateLock.writeLock().unlock(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            // Check if the lock is currently held by another thread (either for reading or writing)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            if (reentrantLock.isWriteLocked() || reentrantLock.getReadLockCount() > 0) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                return; // Or throw an exception if needed
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        }catch(Exception e){ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            Logger.error(e); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        if (this.updateLock.writeLock().tryLock()) { | 
					 | 
					 | 
					 | 
					        if (this.updateLock.writeLock().tryLock()) { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            try { | 
					 | 
					 | 
					 | 
					            try { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if(!this.isAlive() || !this.enteredWorld || !this.isActive) { | 
					 | 
					 | 
					 | 
					                if(!this.isAlive() || !this.enteredWorld || !this.isActive) { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |