* Fix DelegateSemaphore synchronisation issues on Spigot
- Also effectively nullify it on paper - the synchronisation on the object is enough
* Remove unneeded imports
* Allow NBT stored in DiskOptimizedClipboards to be written to disk as a compressed byte array at the end of the file
* Add some deprecations/javadocs and provide the expected clipboard version on error
* Javadoc since tags and add location of clipboard folder to error
* Refactor load-from-file method into DOC class
* Refactor nbt loading code into separate method in DOC
* the set array given in NMSAdapter should have get data written to it
- Fixes#1664
- May fix#1700
* Having target size >= 2* parallel threads allows for adjacent chunks to be loaded with issues
* "empty" chunk section doesn't need to be localised to the chunk and may be static
* Switch to slightly more performant stream method for testing for non-empty sections
* Implement lock into ChunkHolder preventing any modification to occur whilst the edit is being applied to the world
(when ChunkHolder is called)
* Add config note about target-size
* set ordinal equal to air if both set and get are `__reserved__`
* Add note to checkAndWaitOnCalledLock method of its use
* Don't print exception and throw
* Switch to a wrapped StampedLock allowing reentrant behaviour
- StampedLock is not reentrent
- Allow unlock from a different thread only if it provides the correct stamp
- This stamp can only be retrieved by the thread owning the lock
* Avoid some "doubling-up" of using checkAndWaitOnCalledLock
* Unbloat `checkAndWaitOnCalledLock`
* Add since tags
* Fix SideEffectSet.none() being the default set (#1620)
* Fix SideEffectSet.none() being the default set
* Remove the unnecessary private empty constructor for SideEffectSet
* Back to ImmutableMap.of
* Speed up Fast Reorder Mode and make it default (#1653)
* Speed up Fast Reorder Mode and make it default
* Make non-exposed side effects internal
* Docs on isExposed
Co-authored-by: Matthew Miller <mnmiller1@me.com>
* Check cached bukkit player is the same as the current player online
- If plugins do silly things like teleport, deop (anything that requires a perm-recheck) (anything that ultimately requires a BukkitPlayer at some point) then the retention of metadata by the server (as it's stored based on a string value indescriminate of player a player relogging) means that a BukkitPlayer caching an old player object will be kept, cached and retrieved by FAWE. Adding a simple memory-based equality check when the player rejoins, and then "invaliding" (redoing) the cache if the players are not equal, fixes this.
- Fixes#1730
* Address comments
* Add comment explaining reference equality check to code
* Implement getNameUnsafe method to allow an unloaded world's name to be accessed
- Fixes#1671 and #504
* Add javadoc since tag
Co-authored-by: Alexander Brandes <mc.cache@web.de>
Co-authored-by: Alexander Brandes <mc.cache@web.de>