- Have both sponge and fast r/w available but default to "fast"
- Correctly "offset" entities in the schematic, and add a legacy mode for loading old FAWE schematics with entities required.
- Lazily reading means it's read in order of appearance in the inputstream so we need to read schematic version first (skip past everything) and then reset the stream. Fixes#740
- Add an FAWEVersion to the metadata
- Correctly actually return a BlockArrayClipboard when required. Fixes#454
* Full support for 3D biomes
Since we're only supporting 1.15+ there's no need to try anything other than compatibility
* this is not part of the PR
* Clipboards should still always be y 0 for biomes
(this "bug" has existed for ages)
* Several fixes to actual, probable and possible synchronocity issues
- Ensure that all edits are queued onto the same AsyncNotifyQueue by actually delegating to the parent player in PlayerProxy
- Ensure that the order editsessions are being remembered on the LocalSession is being respected by using a fair ReentrentLock
- Ensure a chunk cannot be called when an update is being called
* Don't add locks to GetBlocks
Synchronising on the LocalSession ends up being dangerous as it's a craftbukkit thread, leading to blocking issues if something goes wrong in an edit, made worse by the fact craftbukkit threads like to interfere with each other sometimes, and also cause OOMs and hanging when there are too many of them.
* begin allowing "post processing" of chunks
- restores legacy capability to continue saving edits in the background after sending the chunks
- speeds up the edit clientside
- nail in the coffin of the terrible and staticly coded coreedit
- We should totally make IronGolem work so Core* is no longer used by anyone
* begin allowing background history saving
* Handle post processors in queues properly
* Use futures for postprocessing so we're not waiting for them needlessly
* better use of closed boolean
* Reword
* Attempt to recover from incorrectly-extensioned schematic reads
- Should help avoid #605 (I'm assuming this is the issue)
- Possible issues with the InputStream being closed/pre-read or so? Thoughts:?
* more verbose checking in the first place
* accessing clipboards should not be synchronized to LocalSession
I believe this may be the issue causing thread locks when wrapping new players. If we're attempting to run a synchronised method within the LocalSesison when initialising it, it may go wrong..?
* nullcheck within synchronisation
* Allow parallelisation of masks
Increasing performance improvement with increased masking complexity and edit size.
* Address comments
- Rename Mask#clone to Mask#copy
- Rename Mask2D#copy to Mask2D#copy2D
- Correct formatting
* cx -> centerX
* Make various operations relying on a single SingleThreadQueueExtent instance (mainly brushes) thread safe
* Begin working on improved lighting to better match 1.14's "new" lighting engine
I guess the "new" lighting engine is somewhat old now lol
Also implement the remove first stuff to fixlight
* And then make it work
- bring fixes to 1.16
- Fix for all lighting where it only set sky lighting if not present, even if it was trying to set block lighting (unlikely to have caused issues as block lighting seems always to be present, but wrong nonetheless)
* Start work on lighting engine (does not build)
* Implement getLighting
* Setting, flushing light etc works. Getting light should be working..?
* Better queue/chunk handling
* Use correct location for lighting update
* Correct set location, remove debug
* cleanup a little
* Fix fixlight
* Apply to all versions for the numpties
* Remove lighting extent if not using
* Actually bitmask blocks when setting in chunks
* Initialise Maps and Dequeues with inital size
* format
* Documentation maybe