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
- Should ensure the server doesn't tick the chunksection while we're editing it
- Basically using the old issue with FAWE breaking block ticking by setting this to zero :)
- Similar to previous commit. If the chunksection was empty, then __reserved__ was parsed to the clipboard, and then not correctly identified as air
- Now assume all __reserved__ is air when writing to clipboards
- ChunkSections containing only air are technically null according to NMS Chunks
- Therefore if we're replacing air, we should ignore the result of get.hasSection(layer) by using "full = true" as it returns false if the chunksection is only air
- We also then need to ensure that the masks correctly identify that the block is "air"
- Revert back to default FAWE behaviour where placed blocks do not tick by default (until a restart, or another edit is done in the same chunksection without changing the block)
* Increase performance slightly when trimming.
If the chunk section is all one blocks (common in plotworlds) it'll be a nice little boost.
* Cache whether blocks are ticking or not. Greatly reduces the time required to create a palette
* collapse 5 lines to 2.
* Also apply to 14 and 15 for the numpties
* Cleanup
Actually ignore the exception - remove my debug print.
Remove double semi-colon
* Apparently 1.14/15 matter too still.
- You had to specifically use //schem load <schematic>.schematic mcedit to load legacy schematics, now if you're loading .schematic it assumes you're wanting mcedit format
- If you end up attempting to load an mcedit schematic with the sponge reader it now throws an exception.
* Fix FAWE killing chunk ticks. Also allow ticking for set blocks.
* Reduce for-loop to being one loop in createPalette
* set the value in the set array and break so we don't continue onwards in the set's ordinal switch statement