* 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.
Javadoc and Formatting fixes.
Also, extremely minor code changes which have been tested.
This commit is only part one of two commits that aim to fix problems with formatting in our project. In part two I will modify the Google Java Style Guide (since it closely matches our code style) for our project so there is guidance on how to format and document.
* Updated PlotSquared URL
* Removed plugin acronyms
* Fixed a typo
* Fixed grammar
* Use modern block id's
* Update YouTube video URL
* 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
Shrinks the jar size since we no longer must bundle the Kotlin library. The downside is that some classes grew in size compared to their Kotlin versions.
Many contributors didn't care for Kotlin either.
* 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
* Add a #air mask, the opposite of #existing (#1511)
(cherry picked from commit 84fa2bbbc63de7bece01f41c0d5cb7d85cf129e6)
* Remove unused methods in Mask.java
* Remove `test(Extent, BlockVector3)` from Masks.
This was a poorly planned idea. This should save some memory too.
Authored-by: Matthew Miller <mnmiller1@me.com>
Masks Reimplemented:
- Adjacent (~): Adjacent to a specific number of other blocks.
- Example: ~[oak_log][1][4]
- Extrema (#extrema): Restrict to near specific terrain extrema. The "-o" flag will only overlay existing terrain.
- Example: #extrema[0d][45d][-o]
- ROC Angle (#roc): Restrict to near specific terrain slope rate of change. The "-o" flag will only overlay existing terrain.
- Example: #roc[0d][45d][-o]
- Surface (#surface): Restrict to surfaces (any solid block touching air).
- Example: #surface
- Wall (#wall): Restrict to walls (any block n,e,s,w of air).
- Example: #wall
Other Changes:
- Minor logic change to angle mask's overlay.
- Fixed negating air mask.
- Added overlay flag to angle (/) mask.
* Replace BlockStates reading with new 1.16 logic
* Account for running on older platforms
Splits out the new reading to AnvilChunk16, uses data version to detect
the appropriate version.
* Move data versions to Constants
Also fixes some logic hiccups that become obvious with the new names.
* Fix LegacyMapper DFU handling
* Fix factor indexing
(cherry picked from commit 8c171f0929e8530aab1731d122649adc58c5161f)
Allows cancellation information to be fed back into the ascend/descend
algorithms.
(cherry picked from commit 71e104bcb187a5313e88dda5df79059c8ffbc1fe)
First noticed incident of operations ruining ChunkSections. Do not build and use this unless you're testing.
Rushed some of the changes, gotta sleep. Would be nice to get a review of this one from @mattbdev and @dordsor21
- Very basic implementation of the SideEffects system. Will definitely need fine tuning for it to be functional, but is not considered a priority in my opinion.
- Minor changes to the World interface and World implementations related to the SideEffects system. Shouldn't be the cause of any new bugs but be on the lookout.
- Included debug in BukkitImplLoader.java to assist contributors in understanding what needs to be implemented for the adapter to load properly.
Still very WIP but we're a few steps closer. So far, this is coming along better than I anticipated. Hopefully we can keep the momentum.
First noticed incident of operations ruining ChunkSections. Do not build and use this unless you're testing.
Rushed some of the changes, gotta sleep. Would be nice to get a review of this one from @mattbdev and @dordsor21
- Very basic implementation of the SideEffects system. Will definitely need fine tuning for it to be functional, but is not considered a priority in my opinion.
- Minor changes to the World interface and World implementations related to the SideEffects system. Shouldn't be the cause of any new bugs but be on the lookout.
- Included debug in BukkitImplLoader.java to assist contributors in understanding what needs to be implemented for the adapter to load properly.
Still very WIP but we're a few steps closer. So far, this is coming along better than I anticipated. Hopefully we can keep the momentum.
* Use a long to refer to the volume of a region, and rename the method to getVolume
* Fixed issues noted in review
* Forgot to floor
* Fixed review notes
* Can use a long here rather than BigDecimal
* Improve javadocs
* style
(cherry picked from commit 328030fd6281e58a4ea1d0cdd0a2e274da90afbe)
The BlockMap tests got much faster, so there's no need to hide them
behind a flag.
(cherry picked from commit 1e2496af552891e3b43c5703bda8dc4129bbcc5d)
* 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