Turnabout on Character stats concurrency + Null remote IP patch

Cleared the concurrency conflicts that started occuring after the abstract character's listener code was set to run on new thread, potentally leading to several onStatChange mishaps.
Added a check for remoteHost being possibly null when opening a new session with the client.
This commit is contained in:
ronancpl
2019-04-23 11:14:40 -03:00
parent 1376c295e1
commit e18061ffaf
7 changed files with 48 additions and 42 deletions

View File

@@ -8590,14 +8590,22 @@ public class MapleCharacter extends AbstractMapleCharacterObject {
}
}
}
final boolean chrDied = playerDied;
Runnable r = new Runnable() {
@Override
public void run() {
updatePartyMemberHP(); // thanks BHB (BHB88) for detecting a deadlock case within player stats.
updatePartyMemberHP();
if (playerDied) {
playerDead();
} else {
checkBerserk(isHidden());
}
if (chrDied) {
playerDead();
} else {
checkBerserk(isHidden());
}
}
};
map.registerCharacterStatUpdate(r);
}
private Pair<MapleStat, Integer> calcHpRatioUpdate(int newHp, int oldHp) {