Slight update: with async disabled, the server no longer fails to write to the player data file, but instead it just
completely crashes when trying to write the data. I've uploaded a player data file and relevant crash log below - what happened is a player caught a mega, logged in and out multiple times with no issue, the server was then restarted, and upon the player logging in again the server hard crashed about a minute later with a similar error (exception in server tick loop, which the logs identify as a java.lang.NullPointerException at PlayerPartyStorage.getNames)
I think what's happening is when the MegasObtained data is read from disk, it comes back somewhat mangled and any attempts to re-write this new data to disk just break the writeToNBT function - or the error is happening upon writing to disk, I'm not sure if what I'm seeing in the .pk files is even close to correct since I don't know the format.
Relevant files are attached here:
https://drive.google.com/drive/folders/1lA4QttBMjzUEEUDG6qfTpDzw4OSl-jYz?usp=sharinglogfile.txt is the section of the server log pertaining to the crash (all subsequent crashes display the same errors), and crashing.pk is the player file for the player that is causing the crashes