diff --git a/src/engine/objects/PlayerCharacter.java b/src/engine/objects/PlayerCharacter.java index 4591fc51..4c421013 100644 --- a/src/engine/objects/PlayerCharacter.java +++ b/src/engine/objects/PlayerCharacter.java @@ -5817,6 +5817,21 @@ public class PlayerCharacter extends AbstractCharacter { public void doRegen(){ if(!this.timestamps.containsKey("SyncClient")) 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()) { try { if(!this.isAlive() || !this.enteredWorld || !this.isActive) {