|
|
@ -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) { |
|
|
|