- Even if we access (cache) the entities synchronously, we'd then be doing stuff asynchronously so adapters can override this and either use the world#getEntities normally (pre 1.17) or get entities async anyway.
* Consistenty use javax annotations.
- Unfortunately jetbrains annotations seem to be exposed transitively via core somewhere, but with the correct IDE settings, annotations can be defaulted to javax
- Cleaning up of import order in #1195
- Must be merged before #1195
* Add and apply .editorconfig from P2
- Does not rearrange entries
* Address some comments
* add back some javadoc comments
* Address final comments
Co-authored-by: NotMyFault <[email protected]>
- Add chunk preloading to RegionVisitor if supplied with a suitable Extent
- Where extents are used in masks, set EditSession as the extent as they are otherwise initialised with WorldWrapper that is very slow
- Fixes#1073
- Unfortunately jetbrains annotations seem to be exposed transitively via core somewhere, but with the correct IDE settings, annotations can be defaulted to javax
- Cleaning up of import order in #1195
- Must be merged before #1195
Co-authored-by: NotMyFault <[email protected]>
* start v6
* Update classes to v6 method signatures
* change rootVersion to signify p2v6 compat
* Use 16 as toolchain version but target 11 for build output
* add minimessage as api
* Require v6 and don't attempt to "setup" hook from FAWE
* Address comments
* *address /all/ comments
* FAWE classes should only act as a delegate
* Uppercase logger
* Settings for v6-hook have moved to P2-v6, remove unneeded if statements
* Rename classes to Delegate
* add whenDone task to setCuboids
* Remove bad spaces
* Fix plot swap
* Initial work on 1.17 support
* Remove data versions from the Bukkit adapters (#1507)
* Remove data versions from the Bukkit adapters
* Don't allow saving schematics without an adapter in place on Bukkit.
* Removed confusing line
(cherry picked from commit 2056218b4a8644836b1d127105dfa289e9cdbc1c)
* More progress
* Fix chunk sending
* Repackage from com.boydti to com.fastasyncworldedit.<module> (#1119)
* Preliminary work on repackaging
* Rename build artifacts matching our pattern
* Finish up repackaging
* Fix a few field accesses and old imports
* Dirty fix for chunks container ChunkSections outside of 0-15
* Correctly read from NibbleArrays for lighting
* Fix getSections and BlockMaterial for 1.17
* Fix writing blocks to the world.
- The issue isn't the presence of a "-1" chunk, it's the constructor for ChunkSection requiring the layer (0 to 15) rather than the y chord
* Fix more field accesses
* More work towards 1.17
* Update Upstream
a57f66f Fix watchdog, add negative y support. (1782)
* Add azalea tree to `/tool tree`
* Don't define toolchain twice
* Repackage GriefDefender
* Relocate under new namespace
* Bye bye ecma left overs
* Add 1.17 to issue templates and instructions
* Move to adventure-nbt (#918)
* Initial work for adventure-nbt
* Some more FAWE specific stuff
* Fix erroneous deprecation check
* Workflow change
* Continued merging all adventure NBT related changes
* Continued merging all adventure NBT related changes
* Made a constructor public again
This needs to be public for BlockTransformExtent.java
* Finished converting all NBT data to adventure.
* Make this compile
* Fix conflicts
Co-authored-by: Matt <[email protected]>
* Update adapters to 1.17
* Change build prefix to 1.17
* Move more nms classes to adapters
* Move left over nms classes
* Move Spigot 1.17 class
* Remove unneeded adapter loader code
The loader will find the appropriate class now itself
* Update adapters
* Update adapters
* Lazy fix tests
* Update adapters
* Update Upstream
43da91a Remove method reflection for getMinHeight in BukkitWorld. (1796)
* Relocate adventure-nbt under proper namespace
* Add LazyCompoundTag as a non-version-specific class to be used by adapters
* Better integration between old NBT and Adventure NBT - begin fixing the issues seen recently
* Correctly NBT conversion method
* LazyCompoundTags should actually be overriding and correctly returning a CompoundBinaryTag.
* Update worldedit-adapters
Fixes#1141
* Remove unnecessary massive lag machine
* Refactor apply to applyBlock in subclasses
* applyBlock should be overriden by all subclasses.
Default apply to applyBlock
* Closes#1130Closes#1132
* Squashed commit of the following:
commit a9bfa1a07c77083c844a0c3ba62f4bd94bed107c
Author: NotMyFault <[email protected]>
Date: Sun Jun 27 21:53:21 2021 +0200
[ci skip] Update gradle wrapper validation
commit aa7471f95317d28a16f62e4b200de8d0fea2fa95
Author: Matthew Miller <[email protected]>
Date: Sat Oct 10 15:49:13 2020 +1000
Add ^x,y,z relative offset support to the offset parser (#1545)
* Add ^x,y,z relative offset support to the offset parser
* Wrap in a try-catch
(cherry picked from commit 28bdf7ff9254bbc85bb4f5f792b303943a3930a8)
* Add `fawe.error.schematic.not.found` translation key
* Update Upstream
728a152 Skip notify if chunk section doesn't exist (1794)
* Fixed#1157
* Add a null check to prevent NPE in nbt code
* Update adapters
* Update Upstream
fbb047a Optimize legacy schematic loading (1808)
* Hurr durr I don't want to update Java
* Update Upstream
0790e6e Fix CLI Mess (1811)
* Fixes#1160
* Expose minimessage transitively thru PlotSquared
Touches #32
* [ci skip] Remove unneeded maven repository
* Steal tab completion from PlotSquared for P2 related commands
* Don't error on startup when building locally
Co-Authored-By: goldfishapp <[email protected]>
* [ci skip] Update gh actions to Java 16
* Update textures to grab 1.17 jar
Co-authored-by: NotMyFault <[email protected]>
Co-authored-by: SirYwell <[email protected]>
Co-authored-by: Matthew Miller <[email protected]>
Co-authored-by: Matt <[email protected]>
Co-authored-by: goldfishapp <[email protected]>
- Correctly handle block state limit checks.
- Don't quash exceptions thrown in a region operation by having a "max-fails" check that can only be hit once....
Fixes#1127
- ImmutableBaseBlock is no longer needed as NBT was made immutable previously
- BlanketBaseBlock represents to masks that the block has NBT, but does not need to match a specific state
- Allow FuzzyBlockState to create BaseBlocks without NBT data (fixed tab completion issues)
- Required new argument parser, which should ultimately be made into a singe blockstate parser for best results, and proper tab-completion
- The layer brush itself is broken because of the changes to internal block retrieval from legacy
**Add a null-check to CharBlocks FULL section layer-retrieval.**
- It is possible to trim CharBlocks whilst it is attempting to read data due to the batching of chunks to help reduce memory
- This is done when the number of chunks sitting loaded in memory with having been "submitted" to the queue for writing to disk becomes high
- Seconday operations such as heightmap processing and lighting will quickly load chunks, meaning many chunks are submitted early
- This leads to much higher chances of the chunk being submitted and subsequently trimmed given heightmap and light processing is done layer-by-layer over many chunks, rather than chunk-by-chunk - thus leading to NPEs.
- By adding synchronisation to and around only the specific sections when loading/updating, and not blocking the whole chunk, many access can still be thread-safe without causing deadlocks
- This allows removal of lots of the needless and very-slowing synchronisation on get**Block** methods
**Remove much of the synchronisation from ChunkHolder**
- We shouldn't be synchronising with call() and safety should be added elsewhere. (plus it's making edits very very slow when queue target size is hit)
- Also remove much of synchronisation because we've added the null-check and section-specific synchronisation to CharBlocks
**Some QOL/thread-safe data access changes**
- Replaces the Array#clone seen in the get blocks classes with System#arraycopy as deep cloning is not required, and is also slower than arraycopy
- Add System#arraycopy when accessing chunk section data via history to ensure it is not altered whilst being written
- Renaming EMPTY to empty means it is not implied to be a static variable
Fixes https://github.com/IntellectualSites/FastAsyncWorldEdit/issues/1028
Fixes https://github.com/IntellectualSites/FastAsyncWorldEdit/issues/1025
Fixes https://github.com/IntellectualSites/FastAsyncWorldEdit/issues/1089
Fixes https://github.com/IntellectualSites/FastAsyncWorldEdit/issues/1091
Fixes https://github.com/IntellectualSites/FastAsyncWorldEdit/issues/1097
similar to ChunkHolder, it represents an internal chunk for which operations should not be accepted by multiple threads at once.
Co-authored-by: NotMyFault <[email protected]>
This is basically the main "chunk" class for internal FAWE. Chunk operations should (and are) almost always single-threaded operations, however, under certain circumstances it is possible for the chunk to be "called" (flushed: written to the world and sent to the player) from a separate thread. This would specifically occur from SingleThreadQueueExtent when there are a lot of chunks being loaded in memory by FAWE (where the chunk would then be submitted to a multi-threaded queue). It would therefore be possible for a thread accessing the chunk to attempt to access it in the middle of the call, which can lead to a number of issues, and it is my opinion that the most frequent of these is the NPE seen during lighting operations, where new chunks can be accessed/loaded very quickly, increasing the likelihood for the aforementioned synchronisation issue to occur.
Co-authored-by: Matt <[email protected]>
Since there's no new NMS revision (we're still on R3...?!) but there were changes, it would be more difficult to maintain both 1.16.4 and 1.16.5. Therefore, let's just stop supporting 1.16.4 as 1.16.5 is a minor update regardless.
Fixes#859
- Add a "loadPrivately" method to be used when GetChunks are called to avoid synchronocity issues with super classes being used on different threads
- Synchronise the call method so we're not attempting to call whilst also loading/updating